-
Notifications
You must be signed in to change notification settings - Fork 327
Description
BC Idea Link
https://experience.dynamics.com/ideas/idea/?ideaid=af0de868-5207-f111-83da-6045bdb7b78a
Description
🎯 Goal
Improve flexibility in contract billing by allowing a subscription to be "paused" without termination. This requires enabling a Quantity of 0 for both manual entry and usage data imports.
👤 User Stories
- Manual Pause: In consultation with a customer, a subscription should not be invoiced for a specific period (e.g., the customer is temporarily not using the service).
- Usage-Based Pause: Currently, importing usage data with a quantity of 0 triggers an error. Users expect the import to succeed and the next billing date to increment, even if the resulting invoice line shows 0 consumption.
🛠 Technical Concept
1. Subscription Lines (Quantity 0)
- Enable the
Quantityfield in subscriptions to accept0. - New Dialog Logic:
- If Quantity is set to 0:
"If you set the quantity to 0, the billing will pause until further notice but the subscription lines are not terminated. Do you want to continue?"
- If Quantity is changed to any other value (<> 0):
"If you change the quantity, the amount for open subscription lines will be recalculated. Do you want to continue?"
2. Usage Data Processing
- Import: Allow "Create Imported Lines" to read CSV lines with quantity 0.
- Processing: * Update
Process Imported Linesto remove the error: "Usage data with quantity 0 cannot be processed." - Ensure
Create Usage Data BillingandProcess Usage Data Billinghandle quantity 0 identical to other values.
3. Billing & Invoicing Logic
-
Next Billing Date: When invoicing a line with quantity 0, the "Next Billing Date" must still be incremented to the next period to avoid billing gaps.
-
Billing Lines: * Non-usage lines: Created with quantity 0.
-
Usage-based lines: Created with the latest quantity before 0 and pricing retrieved from the usage data.
-
Posting: Document lines should reflect the billing lines (Quantity 0).
I will provide the implementation for this BC Idea
- I will provide the implementation for this BC Idea