I am trying to create a rental product class and this module seems to have many of customizable fields needed for a rental or service - in both cases they operate similarly. Can this module be used with UberCart Marketplace?

There is quite a bit of interest in this functionality:

The functionality I require is that the seller (person renting an item) can:

1) Set the rental period (days, weeks, months, years)
2) Set rental rate (daily, biweekly, weekly, monthly, yearly)
3) Set rental terms/contract (text field)

on the buyer's (renter) side

I would like them to be able to monitor their rental status from their user account such a display of "17 days remaining on rental..." etc.



larowlan’s picture

I'm starting on v3 of the module shortly that will split pricing from the module, I'm leaning towards splitting the availability/rental elements too so that other rental classes (eg car rentals etc) can use these elements of the module.
No it doesn't work with marketplace for a number of reasons including marketplace is hardcoded to use ubercart product classes and marketplace relies on the cost field to calculate commission - there is no cost field for these nodes (and if there was I'm not sure how you'd define it!)

Happy to receive other recommendations.
The pricing split will be sponsored but the other stuff will have to fit in around other work.


Stomper’s picture

That is great news, Lee. UberCart has been needing this for some time.

By commission (UC Marketplace) do you mean listing fees? At least for my application, I am running UC Marketplace and would to have a rental product class where each seller can rent an item on their terms - rental rate, rental period etc. The website itself would charge a listing fee as well as a percentage of the final contractual fee. So it may be helpful to have a calculated field of sorts.

How difficult would it be to allow it to integrate with UC Marketplace? I'd love to provide guidance but I am still unclear on what is currently making it difficult to integrate.


larowlan’s picture

WRT marketplace, it has hardcoded queries that collate the node types from the product classes defined by Ubercart (uc_product module).
As uc_hotel defines it's own node types (ie not defined by uc_product), Marketplace does not consider them in its queries. The fix requires patches for marketplace so it uses the hook hook_product_types function to gather product node types instead of the uc_product_node_info function.

It also requires uc_hotel to write a record in the uc_products table for each room type node as the queries used by marketplace are inner joins and hence with no uc_product record, the hotel room type nodes are not considered.

We can specify a commission of sorts on the products using hook_cart_item with op load. In this hook we set the price of the cart item based on the cart data regarding dates of stay and nightly rates, we'd need to also set the cost on the cart item and then marketplace wouldn't know the difference.

As you may be able to tell, I've been some way down the road of integrating a custom product node type with marketplace before (not this module) so I kind of know the route ahead.

Stomper’s picture

You definitely have an intimate knowledge of UCMP, much more than me. I always thought the "product class" that UCMP used was generic product type for all of UberCart.

Will the V3 version still be using a "uc_hotel" class? I think it may be better to have it be another "product class" as it would allow the use of rentals/services/hotels etc. do be used in different use cases, not just as a marketplace.

I have no module development experience but I have a very basic idea of what you are talking about with the use of hooks. For a marketplace application, the price displayed by marketplace could just be the rental rate such as "$7/week."

Another thing, there are some subtle differences and requirements between a rental/service/hotel, I think there should also be optional fields available such as a return deposit and perhaps as well as text field for the seller to add details about shipping, damages etc.

larowlan’s picture

uc_hotel will always define it's own node type using hook_node_info so the module has intimate control over node access, the node form, the node view and the node update and insert process.
If it were reverted to a standard product class we'd get all of the unrelated product fields like the weight, dimensions, list price etc. That said we can write dummy records in uc_products to repair the queries.
I've got a patch to marketplace to fix some of it's modules (not all of them).
I'll keep your comments regarding additional fields in mind. I think the way it would work is the rental api would be similar to the product class idea where you could define content types via an interface and then that way you customise the fields on each one.

Stomper’s picture

Good points.

I think it may actual be a benefit to have the standard product class fields like size and weight because in some use cases, they may be renting physical items like furniture, tools etc. And in the use case of a service, I think there should be an option to turn off certain fields that are irrelevant.


Stomper’s picture

Status update on the rental product class?

rustyblue100’s picture

Hi Stomper, have you find a solution for your rental service system in Drupal?
I'm looking for the same kind of functionalities, but I can't find anything that really works the way I want, they're all missing something. That's the kind of service i'm trying to achieve actually https://www.e-loue.com/

Thank you!

Stomper’s picture

Unfortunately not. I have yet to figure out a viable solution. With a rental or service product, there has to be a way for both parties to confirm whether a service has been performed or whether the item has been returned (if a rental). Maybe Rules can do some of it?