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 IDNameModelTypeStatus
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)
  • advance Boolean
    default=False string='Advance on 1st Invoice'
  • installment_date Date
    default=fields.Date.context_today required=True
  • interval Integer
    default=1 required=True
  • interval_type Selection
    default='month' required=True args: [('day', 'Day'), ('month', 'Month'), ('year', 'Year')]
  • num_installment Integer
    default=0 required=True string='Number of Installment'
Public methods (1)
  • sale_create_invoice_plan(self)

New fields (15)
  • amount Float
    compute='_compute_amount' digits='Product Price' help='This amount will be used to calculate the percent' inverse='_inverse_amount'
  • amount_invoiced Float
    compute='_compute_invoiced' store=True
  • distribution_analytic_account_ids Many2many → account.analytic.account
    compute='_compute_distribution_analytic_account_ids' store=True string='Distribution Analytic Accounts' args: 'account.analytic.account'
  • installment Integer
  • invoice_move_ids Many2many → account.move
    column1='plan_id' column2='move_id' readonly=True relation='sale_invoice_plan_invoice_rel' string='Invoices' args: 'account.move'
  • invoice_type Selection
    default='installment' required=True string='Type' args: [('advance', 'Advance'), ('installment', 'Installment')]
  • invoiced Boolean
    compute='_compute_invoiced' help='If this line already invoiced' store=True string='Invoice Created'
  • last Boolean
    compute='_compute_last' help='Last installment will create invoice use remaining amount' string='Last Installment'
  • no_edit Boolean
    compute='_compute_no_edit'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' index=True related='sale_id.partner_id' store=True string='Customer'
  • percent Float
    digits='Sales Invoice Plan Percent' help='This percent will be used to calculate new quantity'
  • plan_date Date
    required=True
  • sale_id Many2one → sale.order
    comodel_name='sale.order' index=True ondelete='cascade' readonly=True string='Sales Order'
  • state Selection
    index=True related='sale_id.state' store=True string='Status'
  • to_invoice Boolean
    compute='_compute_to_invoice' help='If this line is ready to create new invoice' string='Next Invoice'
Public methods (1)
  • unlink(self)

New fields (0)

No new fields.

Public methods (1)
  • create_invoices_by_plan(self)

New fields (5)
  • invoice_plan_ids One2many → sale.invoice.plan
    comodel_name='sale.invoice.plan' copy=False inverse_name='sale_id'
  • invoice_plan_process Boolean
    compute='_compute_invoice_plan_process' help='At least one invoice plan line pending to create invoice' string='Invoice Plan In Process'
  • invoice_plan_total_amount Monetary
    compute='_compute_invoice_plan_total' string='Total Plan Amount'
  • invoice_plan_total_percent Float
    compute='_compute_invoice_plan_total' string='Percent'
  • use_invoice_plan Boolean
    copy=False default=False
Public methods (3)
  • 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)