I am going to write about something that I should have written long time ago, when E-commerce module was first released. I hope the developer team on DNP will acknowledge and appreciate the effort we are putting into improving a vital aspect of DNP: a reliable and usable billing system.
Here is the design changes in E-commerce module that will accomodate the features that are currently lacking:
The ORDER:
The process of a service ordering (from the customer's side) and provisioning (from the service provider's side) and billing (invoice from service provider and payment from customer), all of this starts with an ORDER.
The customer places an order, with one or more items (and add-ons, generic term: options), each of this items (and options) MAY have a one time (initial, non recurring, cost: setup fee for example) and/or a recurring cost (based on the billing cycle selected). In addition to the items (and options), the following fields information are included in the order: Applicable discount (fixed or percentage), Tax/VAT, promotional coupons (when applied).
Based on this order from a customer, the first invoice is created by the service provider, which includes the line items, initial cost (setup fee) and recurring fee (first installment/cycle).
Once the initial invoice is paid, the services on the order are provisioned/activated by the system.
Based on the recurring charges on the order, subsequest Invoices will be created at the end of each billing cycle.
The customer has access to their ORDER history.
When a customer wishes to CANCEL AN ORDER, a CANCELLATION ORDER is issued by the customer, which includes line item (service to cancel) that refers to the line item on the ORIGINAL ORDER that initiated the service.
When the cancellation order is processed, the service is cancelled, the line item on the original order is marked cancelled, and the recurring charge/invoice will no longer be generated.
THE CUSTOMER HAS ACCES TO THE HISTORY OF ORDERING THE SERVICE, AND CANCELLING SERVICE in their ORDER HISTORY.
All invoices created based on an initial order are linked to the ORDER, so the customer knows it is based on which ORDER.
THE E-commerce module currently DOES NOT KEEP THE ORDER RECORDS. The order is placed by the customer alright, based on which the Invoice is generated, and then the order vanishes.
Lets quickly review the importance of this order thing:
- It is the reason for the whole business process.
- The customer and service provider needs access to the order history
- A cancellation request is also an order from customer (cancellation order) and the service provider needs keep a record of that. It also allowes the service provider to charge a cancellation fee (line item) if applicable.
- The important information like discount amount, promo-code applied and VAT/TAX is also kept with the original order, based on which the subsequent Invoices are generated by the service provider.
- The security and audit information are also kept with the order, like the IP Address, DateTime or Order etc.
The Invoice is from the service provider to the customer. The order is from customer to the service provider. Multiple invoices will be created based on the initial order if the order has any recurring charges.
I sincerely hope that I was able to make a point here. It has been several days we are discussing this on the forum and not one comment has been posted by the developer team. I remember the days when they used to promptly respond and aknowledge suggestions, and even implemented them as soon as possible. Things sure have changed a lot around here.