[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Towards a rental tracking module

Hi Chris,

On Tue, Feb 25, 2014 at 11:47 AM, Chris Travers <..hidden..> wrote:
Hi everyone,

I am beginning work on an add-on for 1.4 regarding tracking rental equipment, etc.  I wanted to toss my ideas in here for feedback.


I think the best way to model this would be to track rentals against fixed assets.  I.e. you rent out a fixed asset, and this should allow you to do more fine-grained profit/loss reporting on individual rentals than otherwise possible.

So my thinking is that you would have:

Fixed assets -> multiple "rental slots" (i.e. "units" available for rental).  For example, a building might be available to be rented for x events, but a piece of construction equipment might be available to be rented only once at a time.

I'm inclined to go with John here: decouple fixed assets and "rental means". Then, investments in fixed assets can be added to the list of rental means upon investment, if one needs to. However, there may be cases where a rental object doesn't become available through purchase/investment.

Rental slot -> Service. Each rental slot would be associated any number of services.  This could be changed over time to include more services, but for now I only expect to support a 1:1 mapping in the front-end

Rental slot -> Usage Contract.  Each rental slot can be associated with any number of usage contracts, but only one at a time.

One of the first things that came to mind - and is also noted by John - is a "regeneration period" where an asset is unavailable after a rented period. This seems like a nice addition to the model.

John also mentions a need to improve down payments handling - and probably associated returns. My idea would be that down payments would be handled by a different module. One that can be attached to orders, projects and rentals. This would be perfect to do administration of retainer-based project work, webshops which require payment to fullfil orders (and clear resulting invoices against the payment-to-order). And of course, it would also work wonders for the hotel description John is talking about.

Usage contract - Service.  The contract would contain all the information needed to fill out a line in the invoice and ar tables. A contract would be assumed to match to one line in orderitems or invoices.

Ok. Let me follow your example of the hotel room which is being rented. Lets say I rent a hotel room for a week and additionally, rent a bike for three days within the total rental period of the hotel room. Basically, the bike can be considered a "temporary add-on" to the room. Would those be two usage contracts? And would those two usage contracts lead to one invoice? Or two?

I have another example - I'm not sure if this is in scope or not, but let me just bring it out here - what if I want to buy an option onto the room; like: an extra bed. The hotel has enough of those, so doesn't use rental slots to rent them out, but rather supplies this as an option to the room. Would this lead to a second line on the invoice? or two invoices? (still: do we want to support the case?)


1.  Adding Rental Slots:
   a.  Rentals/Manage Slots
   b.  Enter asset tag, continue
   c.  Add slots as needed (number, label, services) and save
   d.  Slots can be retired here as well (basically an end date would be added).

2.  Renting Unit.
   a.  Rentals/Rent
   b.  Search for customer, enter asset tag, start and end dates
   c.  Select available slot
   d.  Enter information and save

I liked John's question on the multi-exclusive rooms here :-) While I think that question would be a bit hard to tackle, I'm thinking a rental can be bought with an option, however, there's a limited number of total options to be sold. I'm thinking of a car rental where I'd like to rent a baby seat. Now, the baby seat can be rented with any car, but even though there are 200 cars up for rental, there are only 30 baby seats in total. Do we want to take that into scope? Or maybe baby seats are the wrong example (they can still have an asset tag); what if you're renting VMs, like Istvan says; if the physical server has 100GB of storage, then each GB can't have an asset tag, but still, you can't rent out more than 100GB in total.

3.  Return of rental
  a.  Rentals/Search
  b.  Enter asset tag, date, and/or customer information.  Search
  c.  Enter date of return, check "Returned" and save.
  d.  If desired you can also click "bill," "generate order" or "renew" (in which case a new usage contract will be created).

The basic workflow sounds about right. Trying to search for the boundaries here, looking for what we can reasonably implement without going too much into one specific industry or customer.

SQL and Perl Interfaces:

1.  Wrapped in Asset/Rental.pm class:

2.  Wrapped in Asset/Rental/Slot.pm

3.  Wrapped in Asset/Rental/Contract.pm


PostgreSQL 9.2 (needed for range types and exclude constraints)
PGObject::Simple::Role 1.1 (not out yet, will probably be out tomorrow)
PGObject::Simple 1.6
PGObject::Util::DBMethod 1.0

The dependencies sound fine to me. 



http://efficito.com -- Hosted accounting and ERP.
Robust and Flexible. No vendor lock-in.