[Vtigercrm-developers] Selling Subscription Services

Alan Lord alanslists at gmail.com
Mon Jul 7 08:00:40 GMT 2014


On 06/07/14 20:01, Sreenivas Kanumuru wrote:
> Hi Alan,

Hi Sreenivas,

> As you noted, currently all items in the sales order are going to be
> invoiced at the same frequency for the same period (if recurring invoice
> is enabled in Salesorder). What you are looking for is to have different
> items in the Salesorder to be invoiced on different intervals. The
> alternative as it stands now is to create different Sales Orders for
> different recurring services.

Almost. This starts at the Quote stage. Some items on a quote may be of 
a recurring type, some may not.

I might, for example have a few items on a quote like this:

Item                 qty         Unit price       Total
Phone System	      1          $5000            $5000
Handsets              12         $100             $1200
Installation          1          $1000            $1000
Line Rental           2          $50              $100 (Needs to be a 
recurring monthly bill maybe on the 1st of each month)
Maintenance Contract  1          $100             $100 (Might be 
monthly, quarterly, annually...)

But the point is it needs to be able to deal with both one-off and 
recurring items on the same quote.

These then need to propagate through the system: Quote -> Sales Order -> 
Invoice.

At the appropriate time a new Invoice would need to be generated for the 
item(s) on the original SO (or first Invoice).

The customer who enquired about this feature last week, wanted to have 
two separate totals on the Quote/SQ/Invoice, keeping the one-off and 
recurring items in two separate "blocks" but still within the same 
Quote. This really does make sense as the values in the recurring area 
have a different meaning when it comes to reporting and forecasting your 
business going forward.

> Currently, Recurring frequency and Term are fields in the Sales Order.
> You are asking for these fields to be added to the Service record
> itself, so that when the Service is added to the Invoice, the Invoice is
> automatically created on a periodic basis. Currently, this is decided in
> the Sales Order. The invoices should be recreated by the system
> automatically if the Invoice is approved (status). If the invoice has 2
> items, and one of them is to be recurring on a monthly interval, and
> another on a quarterly interval, and the invoice status= approved, then
> every month an invoice for monthly item has to be created by the system,
> and every quarter another invoice has to be created by the system for
> quarterly item.
>
> Does the above match with your thinking.

Not quite. The frequency, interval, etc. need to be in the Quote itself, 
not in the Product or Service entity record. You might sell a Service 
(or Product) to one customer with a monthly frequency and to another 
quarterly. I think, the Product/Service record would need a simple flag 
to indicate if it can be sold as a recurring item, a one-off item or 
either. Then the person building the Quote can choose which of the two 
blocks to add the line item to and what the frequency, interval etc. 
should be.

Please do not assume that recurring items will *only* be Services. If a 
customer wants to sell a physical widget with a monthly recurring price 
who are we to say they shouldn't ;-)


> The issue with the proposed model is that the info to recreate an
> invoice is within the invoice. It will be hard to identify which invoice
> is the master. System should go through all invoices that have recurring
> services, to see if it needs to recreate the invoice. Currently, there
> is a checkbox in SalesOrder that indicates whether a recurring invoice
> is to be created, which is much simpler to identify.
>
> I am hoping we will get some good suggestions to address this need.

It would seem to me that some kind of "parentid" column could be added 
to the vtiger_invoice table for this purpose?

I would imagine the scheduler running each night and looking for 
recurring items that are due, taking the id of the invoice, then 
creating a new one with a parentid. Invoices with a parentid would be 
ignored by the scheduler.

It's just occurred to me that to make this work there would also need to 
be the option to configure a maximum qty of repeats. For example, 
perhaps the recurring item should only run for 12 months?

So we'd need to be able to specify:

Frequency, Interval, [date or other meta value], [quantity]

The date might need to be something like, the "Last Friday of the Month" 
or the "First Working Day of the Month" as opposed to a specific day of 
the month (and of course leap years and February make this even more 
troublesome), or something else...

HTH

Al





More information about the vtigercrm-developers mailing list