How oca/contract works
This Odoo addon suite manages recurring contracts and subscriptions: users maintain contract terms and lines, then scheduled or manual actions generate invoices; a separate subscription app also supports lifecycle stages and pausing/closing. The map includes the documented addon capabilities, but several extension implementations are represented only by their exact addon directories because their source was not sampled. Edges are limited to relationships visible in excerpts or documented in the README.
Main entry points: contract.py Contracts and terms · sale_subscription.py Subscription records · contract_line.py Contract lines · contract_manually_create_invoice.py Manual invoicing
Components 27
Contract management
- Contracts and terms
contract/models/contract.py - Contract lines
contract/models/contract_line.py - Recurring rules
contract/models/contract_recurring_mixin.py - Contract templates
contract/models/contract_template.py - Template lines
contract/models/contract_template_line.py - Contract portal
contract/controllers/main.py
Contract extensions
- Line successor lifecycle
contract_line_successor/models/contract_line.py - Successor constraints
contract_line_successor/models/contract_line_constraints.py - Analytic tags
contract_analytic_tag - Delivery zone
contract_delivery_zone - Invoice auto-validation
contract_invoice_auto_validate - Payment modes
contract_payment_mode - Contracts from sales
contract_sale - Contract termination
contract_termination - Invoice date repair
contract_update_last_date_invoiced - Variable quantities
contract_variable_quantity - Prorated quantities
contract_variable_qty_prorated
Subscriptions
- Subscription records
subscription_oca/models/sale_subscription.py - Subscription lines
subscription_oca/models/sale_subscription_line.py - Subscription templates
subscription_oca/models/sale_subscription_template.py - Subscription stages
subscription_oca/models/sale_subscription_stage.py - Pause and close
subscription_oca/wizard - Sales orders
subscription_oca/models/sale_order.py
Billing
- Manual invoicing
contract/wizards/contract_manually_create_invoice.py - Invoices
Other components
- User
- Portal customer
Connections 29
- User → Contracts and terms: manages
- User → Manual invoicing: requests invoices
contract/wizards/contract_manually_create_invoice.py - Manual invoicing → Contracts and terms: selects due contracts
contract/wizards/contract_manually_create_invoice.py - Manual invoicing → Invoices: creates via recurring action
contract/wizards/contract_manually_create_invoice.py - Contracts and terms → Invoices: creates recurring invoices
contract/models/contract.py - Contracts and terms → Contract lines: uses contract lines
contract/models/contract.py - Contracts and terms → Recurring rules: uses recurring behavior
- Contracts and terms → Contract templates: uses templates
- Contract templates → Template lines: defines template lines
- Portal customer → Contract portal: views contracts
contract/controllers/main.py - Contract portal → Contracts and terms: searches contract records
contract/controllers/main.py - Contract lines → Analytic tags: adds analytic tags
- Contracts and terms → Delivery zone: supports delivery zone
- Contracts and terms → Invoice auto-validation: supports invoice validation
- Contracts and terms → Payment modes: supports payment mode
- Contracts from sales → Contracts and terms: creates contracts from sales
- Contract lines → Line successor lifecycle: extends lifecycle
contract_line_successor/models/contract_line.py - Line successor lifecycle → Successor constraints: checks allowed actions
contract_line_successor/models/contract_line.py - Contract termination → Contracts and terms: extends termination
- Invoice date repair → Contract lines: repairs invoiced date
- Variable quantities → Contract lines: extends quantity
- Prorated quantities → Contract lines: extends quantity
- User → Subscription records: manages subscriptions
- Subscription records → Subscription lines: uses subscription lines
subscription_oca/models/sale_subscription.py - Subscription records → Subscription templates: uses templates
- Subscription records → Subscription stages: tracks stages
- Subscription records → Invoices: creates invoices
subscription_oca/models/sale_subscription.py - Subscription records → Sales orders: creates sales orders
- Pause and close → Subscription records: updates lifecycle