Repository
OCA/purchase-workflow · module folder · Try on Runboat
Module version
1.0.2
Category
Purchase
Folder size
0.15 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/purchase-workflow
Last tracking update
2026-08-07 08:42:58
Authors
Odoo Community Association (OCA), Ecosoft
Maintainers
Odoo Community Association (OCA), Ecosoft
Committers
Ricardoalso, Saran440, Weblate, OCA-git-bot, oca-ci, Rafael Lima
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
purchase_work_acceptance_invoice_plan
Description
By standard feature, user can gradually create partial invoices, one by
one and in step create invoice the standard call invoice. This module
add ability to create invoices based on the predefined invoice plan,
either all at once, or one by one.

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
purchase_order_form purchase_order_form purchase.order form Inherits purchase.purchase_order_form
view_purchase_create_invoice_plan Create Invoice Plan purchase.create.invoice.plan form New
view_purchase_invoice_plan_filter view.purchase.invoice.plan.filter purchase.invoice.plan search New
view_purchase_invoice_plan_form view.purchase.invoice.plan.form purchase.invoice.plan form New
view_purchase_invoice_plan_tree view.purchase.invoice.plan.tree purchase.invoice.plan list New
view_purchase_invoice_plan_tree_readonly view.purchase.invoice.plan.tree purchase.invoice.plan list New
view_purchase_make_planned_invoice view.purchase.make.planned.invoice purchase.make.planned.invoice form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (4)

New fields (4)
  • 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)
  • purchase_create_invoice_plan(self)

New fields (14)
  • 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' readonly=False store=True
  • installment Integer
  • invoice_ids Many2many → account.move
    column1='plan_id' column2='move_id' comodel_name='account.move' readonly=True relation='purchase_invoice_plan_invoice_rel' string='Invoices'
  • invoice_type Selection
    default='installment' required=True selection=[('installment', 'Installment')] string='Type'
  • 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='purchase_id.partner_id' store=True string='Supplier'
  • percent Float
    digits='Purchase Invoice Plan Percent' help='This percent will be used to calculate new quantity'
  • plan_date Date
    required=True
  • purchase_id Many2one → purchase.order
    comodel_name='purchase.order' index=True ondelete='cascade' readonly=True string='Purchases Order'
  • state Selection
    index=True related='purchase_id.state' store=True string='Status'
  • to_invoice Boolean
    compute='_compute_to_invoice' help='If this line is ready to create new invoice' store=True string='Next Invoice'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_invoices_by_plan(self)

New fields (5)
  • invoice_plan_ids One2many → purchase.invoice.plan
    comodel_name='purchase.invoice.plan' copy=False inverse_name='purchase_id' string='Invoice Plan'
  • ip_invoice_plan Boolean
    compute='_compute_ip_invoice_plan' help='At least one invoice plan line pending to create invoice' string='Invoice Plan In Process'
  • ip_total_amount Monetary
    compute='_compute_ip_total' string='Total Amount'
  • ip_total_percent Float
    compute='_compute_ip_total' string='Percent'
  • use_invoice_plan Boolean
    copy=False default=False
Public methods (4)
  • action_view_invoice(self, invoices=False)
  • button_confirm(self)
  • create_invoice_plan(self, num_installment, installment_date, interval, interval_type)
  • remove_invoice_plan(self)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…