Details
-
Type: Improvement
-
Status: Open
-
Priority: Major
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: Short Term
-
Component/s: None
-
Labels:None
Description
There should be a new company and client group setting, "Allow Prorated Credits to be Issued for Service Cancellations", which controls this task's behavior.
Upon a service cancellation (Services::cancel), the remaining time on the service should be prorated as a credit onto the client's account.
A credit would be determined as the number of days between the service cancellation date and the service renew date. One-time services would never generate a credit.
Because a service may be canceled at the beginning of the day it is set to renew, but at a different time of day (which is irrelevant), the time should be ignored, and prorated credits only created for time differences greater than 1 day. This will avoid the possibility of auto-cancellations issuing credits for end-of-term cancellations under normal operations, however, it has the adverse effect of not prorating credits for any services with 1 day terms.
The prorated amount will need to be reconciled with any service cancellation fee, so there are two possible outcomes:
- (Prorated credit > cancellation fee) - issue a credit of value (prorated credit - cancellation fee)
- (Prorated credit < cancellation fee) - create an invoice (as the system does now), but include a line item denoting the credit
The calculations should be performed by the pricing presenter (which may need to be updated), and totals determined by Invoices::getItemTotals. See Services::getRenewalPrice for an example.