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

Towards a rental tracking module



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.

MODELLING

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.

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.

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.

WORKFLOW

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

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).

INTERFACES

SQL and Perl Interfaces:

1.  Wrapped in Asset/Rental.pm class:
     asset__list_rental_slots(in_id)
     asset__list_rental_slots_by_tag(in_tag)

2.  Wrapped in Asset/Rental/Slot.pm
     rental_slot__list_services(in_id)
     rental_slot__add(...)
     rental_slot__search(...)
     rental_slot__retire(...)

3.  Wrapped in Asset/Rental/Contract.pm
     rental_contract__add(...)
     rental_contract__renew(...)
     rental_contract__generate_order(...)
     rental_contract__bill(...)

DEPENDENCIES

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

--
Best Wishes,
Chris Travers

Efficito:  Hosted Accounting and ERP.  Robust and Flexible.  No vendor lock-in.
http://www.efficito.com/learn_more