TIP: You can type at any time to perform a new search.
Sales Invoice Plan
sale_invoice_plan · OCA/sale-workflow
- Repository
- OCA/sale-workflow · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Sales
- Folder size
- 0.21 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/sale-workflow
- Last tracking update
- 2026-08-07 08:42:48
- Authors
- Odoo Community Association (OCA), Ecosoft
- Maintainers
- Odoo Community Association (OCA), Ecosoft
- Committers
- Weblate, Ruchir Shukla, OCA-git-bot, oca-ci
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- l10n_br_sale_invoice_plan, sale_invoice_plan_report
- Description
By standard feature, user can gradually create partial invoices, one by one. This module add ability to create invoices based on the predefined invoice plan, either all at once, or one by one. The plan support both advance invoice and installment invoices.
Code Analysis ⓘ
Views touched (7)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_order_form_invoice_plan |
view.order.form.invoice.plan | sale.order | form | Inherits sale.view_order_form |
view_sale_create_invoice_plan |
Create Invoice Plan | sale.create.invoice.plan | form | New |
view_sale_invoice_plan_filter |
view.sale.invoice.plan.filter | sale.invoice.plan | search | New |
view_sale_invoice_plan_form |
view.sale.invoice.plan.form | sale.invoice.plan | form | New |
view_sale_invoice_plan_list |
view.sale.invoice.plan.list | sale.invoice.plan | list | New |
view_sale_invoice_plan_list_readonly |
view.sale.invoice.plan.list | sale.invoice.plan | list | New |
view_sale_make_planned_invoice |
Invoice Orders | sale.make.planned.invoice | form | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (5)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (5)
-
advanceBooleandefault=Falsestring='Advance on 1st Invoice' -
installment_dateDatedefault=fields.Date.context_todayrequired=True -
intervalIntegerdefault=1required=True -
interval_typeSelectiondefault='month'required=True args: [('day', 'Day'), ('month', 'Month'), ('year', 'Year')] -
num_installmentIntegerdefault=0required=Truestring='Number of Installment'
-
sale_create_invoice_plan(self)
New fields (15)
-
amountFloatcompute='_compute_amount'digits='Product Price'help='This amount will be used to calculate the percent'inverse='_inverse_amount' -
amount_invoicedFloatcompute='_compute_invoiced'store=True -
distribution_analytic_account_idsMany2many → account.analytic.accountcompute='_compute_distribution_analytic_account_ids'store=Truestring='Distribution Analytic Accounts' args: 'account.analytic.account' -
installmentInteger -
invoice_move_idsMany2many → account.movecolumn1='plan_id'column2='move_id'readonly=Truerelation='sale_invoice_plan_invoice_rel'string='Invoices' args: 'account.move' -
invoice_typeSelectiondefault='installment'required=Truestring='Type' args: [('advance', 'Advance'), ('installment', 'Installment')] -
invoicedBooleancompute='_compute_invoiced'help='If this line already invoiced'store=Truestring='Invoice Created' -
lastBooleancompute='_compute_last'help='Last installment will create invoice use remaining amount'string='Last Installment' -
no_editBooleancompute='_compute_no_edit' -
partner_idMany2one → res.partnercomodel_name='res.partner'index=Truerelated='sale_id.partner_id'store=Truestring='Customer' -
percentFloatdigits='Sales Invoice Plan Percent'help='This percent will be used to calculate new quantity' -
plan_dateDaterequired=True -
sale_idMany2one → sale.ordercomodel_name='sale.order'index=Trueondelete='cascade'readonly=Truestring='Sales Order' -
stateSelectionindex=Truerelated='sale_id.state'store=Truestring='Status' -
to_invoiceBooleancompute='_compute_to_invoice'help='If this line is ready to create new invoice'string='Next Invoice'
-
unlink(self)
New fields (0)
No new fields.
Public methods (1)-
create_invoices_by_plan(self)
New fields (5)
-
invoice_plan_idsOne2many → sale.invoice.plancomodel_name='sale.invoice.plan'copy=Falseinverse_name='sale_id' -
invoice_plan_processBooleancompute='_compute_invoice_plan_process'help='At least one invoice plan line pending to create invoice'string='Invoice Plan In Process' -
invoice_plan_total_amountMonetarycompute='_compute_invoice_plan_total'string='Total Plan Amount' -
invoice_plan_total_percentFloatcompute='_compute_invoice_plan_total'string='Percent' -
use_invoice_planBooleancopy=Falsedefault=False
-
action_confirm(self) -
create_invoice_plan(self, num_installment, installment_date, interval, interval_type, advance) -
remove_invoice_plan(self)
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- green — ready to merge
- Open since
- 211 days ago
- Last activity
- 24 days ago
- Repository
- OCA/sale-workflow
- Pull request
- [19.0][MIG] `sale_invoice_plan` (#4121)