| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) • Project (project) • Sales (sale_management) • Employees (hr) |
| Lines of code | 3671 |
| Technical Name |
vpcs_progressive_payment_terms |
| License | LGPL-3 |
| Website | https://www.vperfectcs.com |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) • Project (project) • Sales (sale_management) • Employees (hr) |
| Lines of code | 3671 |
| Technical Name |
vpcs_progressive_payment_terms |
| License | LGPL-3 |
| Website | https://www.vperfectcs.com |
| Versions | 17.0 18.0 19.0 |
Progressive Payment Terms
A milestone-based payment management system for Odoo 18 Enterprise
Streamline sale order billing with progressive payments, delivered ratio analysis, milestone tracking, automated invoicing, balance Carryforward.
Key Features
🎯 Milestone Management
- Complete state workflow: Draft → Ready → Invoiced → Paid
- Sub-milestone support when ready for invoice material less than milestone percentage
- Automatic status updates from sub-milestones
- Real-time progress calculation with visual indicators
- Flexible configuration for different milestone types and categories
- Balance Carryforward to next milestones with maintain their total amount matching
- Automatically syncs milestones when sale order lines are added, removed, or modified — creates a new milestone if all existing ones are invoiced, or updates the last draft milestone's amount and percentage to keep the total in sync
- Create Submilestone when delivered ratio is less then milestone ratio to not to invoice more than the delivered ratio
💰 Smart Invoicing
- Dedicated sale order lines for each milestone
- Create Invoice of order lines for the ready to invoice materials
- Immediate payment terms for milestone invoices
- Automated invoice generation on milestone readiness
- Analytic distribution for project costing
- Full integration with Odoo's accounting system
🔧 Advanced Reset Functionality
- Reset invoices across draft, posted, and paid states
- Automatic payment cleanup and reconciliation removal
- Restore original sale order lines after reset
- Ensure accounting data integrity
- Independent reset for sub-milestones
📊 Real-time Tracking
- Track invoiced vs paid amounts directly from invoice residuals
- Automatic progress percentage calculation
- Visual indicators with progress bars and badges
- Dashboard integration with smart buttons for milestone tracking
⚖️ Balance Carryforward & Adjusted Amount / Percentage Engine
When the invoiceable amount for a milestone differs from the originally planned amount — due to partial delivery, sub-milestone splits, or manual adjustments — the system automatically redistributes the outstanding balance to subsequent milestones. Every adjustment is tracked through dedicated tracking fields: Adjusted Amount, Adjusted Percentage, and Balance, ensuring the sum of all milestones always equals the total sale order value.
📤 Balance Carryforward
- Automatically carries any over-invoiced balance forward to the next pending milestone
- Guarantees the sum of all milestones always matches the sale order total
- Cascades across multiple milestones until the full balance is absorbed
- Triggered on invoice confirmation, milestone reset, and sub-milestone closure
- Skips locked or paid milestones — carries to the next eligible one
- Carryforward amount is visible on both the milestone line and the sale order view
💲 Adjusted Amount
- Calculate amount based on original milestone amount ± carryforward received from the immediately preceeding invoiced milestone
- Reflects the actual invoiceable value after carryforward has been applied and milestone invoiced
- Used as the unit price on the milestone's sale order line at invoice time
- Automatically recalculated when any upstream milestone is reset or re-invoiced
- Preserves the original planned amount separately for full audit traceability
- Sub-milestones reflect their adjusted amount back to the parent milestone
📐 Adjusted Percentage
- Calculate percentage based on adjusted amount
- Always sums to exactly 100% across all active (non-cancelled) milestones
- Automatically recalculated whenever a carryforward changes any milestone's amount
- Shown in milestone list view and progress indicators
- Used to validate invoice readiness — warns if percentage would exceed delivered ratio
- At project end: adjusted percentage reaches 100%, confirming full reconciliation
📊 Balance ($)
- Show Difference between planned milestone amount − adjusted_amount
- Shows exactly how much was added or deducted by the carryforward on this milestone
- Positive balance: this milestone received extra amount from a previous milestone's shortfall
- Negative balance: this milestone gave up amount (partial delivery / sub-milestone split)
- Balance is nill (zero) at the end when all milestones are fully invoiced and reconciled
- Displayed in the milestone column view for instant at-a-glance reconciliation check
- Milestone triggered: A milestone reaches "Ready" state with a delivered ratio below its planned percentage.
- Sub-milestone created: Wizard call when the total delivered ratio of sale order lines ready for invoice is less than the milestone target percentage.
- Gap calculated: Difference between the planned milestone amount and actual invoice
amount is stored as
balance. - Balance distributed:
adjusted_amounton the next pending milestone is updated to absorb the carryforward balance. - Percentage re-computed:
adjusted_percentageis recalculated across all remaining milestones to maintain 100% integrity. - Balance column updated: The
balancecolumn reflects the difference (planned vs adjusted) for every affected milestone. - Invoice generated: Invoice uses
adjusted_amount— the final project total always reconciles with the sale order grand total. - End state: After all milestones are invoiced: adjusted percentage = 100%, adjusted amount = sale order total, balance = nill (zero).
Technical Requirements
- Odoo 18.0 Enterprise Edition
- Accounting and Analytics modules
- Sales modules
Installation
- Install the module through the Apps menu
- Set up payment terms as progressive payment term in sale order
- Begin creating milestones, based on payment terms
Configuration Flow
User Rights
Progressive Payment configuration

types of milestones like material delivery, advance payment etc. and no. of days etc.,
Sale Order

then it would update this balance in next milestone add/sub on adjusted amount field then adjusted percentage also update.
the balance carry-over from the immediately preceding invoiced milestone.
First Milestone Invoice

Milestone Payment


Other Milestones Invoice
current milestone and all sale order lines.


milestone advance payment amount deduct and amount reduce of invoice total.

Sub-Milestones
then wizard show of percentage exceeded.
so easy to match the all milestones total at the end.

All milestones view
reflected as the balance — ensuring full transparency throughout the billing cycle.
and the balance clears to zero — completing the workflow seamlessly.
Dynamic Order Line & Milestone Sync
syncs the milestone totals.
and If the last milestone is still in draft, its amount and percentage are updated automatically — keeping
the billing always in sync with the sale order total.

Please log in to comment on this module