Purchase partial invoicing

purchase_partial_invoicing
REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/10.0/purchase_partial_invoicing
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV, Agile Business Group
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV, Agile Business Group
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.agilebg.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
    - procurement
    - barcodes
    - web_planner
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
purchase_order_line_search purchase.order.line.search (purchase_partial_invoicing) purchase.order.line xpath Inherits purchase.purchase_order_line_search
purchase_order_line_tree purchase.order.line.tree purchase.order.line field Inherits purchase.purchase_order_line_tree
view_purchase_line_cancel Cancel Quantity purchase.order.line_cancel_quantity form New
view_purchase_line_invoice Create invoices purchase.order.line_invoice xpath Inherits purchase.view_purchase_line_invoice
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • invoice_validate(self)
    @api.multi

New fields (1)
  • invoiced Boolean
    compute='_compute_invoiced'
Public methods (0)

No public methods.

New fields (4)
  • all_invoices_approved Boolean
    compute='_compute_all_invoices_approved'
  • cancelled_qty Float
    copy=False digits_compute=dp.get_precision('Product Unit of Measure') string='Cancelled Quantity'
  • fully_invoiced Boolean
    compute='_compute_fully_invoiced' copy=False store=True
  • invoiced_qty Float
    compute='_compute_invoiced_qty' copy=False digits_compute=dp.get_precision('Product Unit of Measure') store=True
Public methods (0)

No public methods.

New fields (1)
  • line_ids One2many → purchase.order.line_cancel_quantity_line
    string='Lines' args: 'purchase.order.line_cancel_quantity_line', 'wizard_id'
Public methods (2)
  • cancel_quantity(self)
    @api.multi
  • default_get(self, fields)
    @api.model

New fields (5)
  • cancelled_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') string='Quantity to cancel'
  • po_line_id Many2one → purchase.order.line
    readonly=True args: 'purchase.order.line', 'Purchase order line'
  • price_unit Float
    readonly=True related='po_line_id.price_unit' string='Unit Price'
  • product_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') readonly=True args: 'Quantity'
  • wizard_id Many2one → purchase.order.line_cancel_quantity
    args: 'purchase.order.line_cancel_quantity', 'Wizard'
Public methods (0)

No public methods.

New fields (1)
  • line_ids One2many → purchase.order.line_invoice.line
    string='Lines' args: 'purchase.order.line_invoice.line', 'wizard_id'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • makeInvoices(self)
    @api.multi

New fields (5)
  • invoiced_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') string='Quantity to invoice'
  • po_line_id Many2one → purchase.order.line
    readonly=True args: 'purchase.order.line', 'Purchase order line'
  • price_unit Float
    readonly=True related='po_line_id.price_unit' string='Unit Price'
  • product_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') readonly=True args: 'Quantity'
  • wizard_id Many2one → purchase.order.line_invoice
    args: 'purchase.order.line_invoice', 'Wizard'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/9.0/purchase_partial_invoicing
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV, Agile Business Group
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV, Agile Business Group
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.agilebg.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - report
    - procurement
    - barcodes
    - web_planner
    - account
    - analytic
    - web_tip
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
purchase_order_line_search purchase.order.line.search (purchase_partial_invoicing) purchase.order.line xpath Inherits purchase.purchase_order_line_search
purchase_order_line_tree purchase.order.line.tree purchase.order.line field Inherits purchase.purchase_order_line_tree
view_purchase_line_cancel Cancel Quantity purchase.order.line_cancel_quantity form New
view_purchase_line_invoice Create invoices purchase.order.line_invoice xpath Inherits purchase.view_purchase_line_invoice
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • invoice_validate(self)
    @api.multi

New fields (1)
  • invoiced Boolean
    compute='_compute_invoiced'
Public methods (0)

No public methods.

New fields (4)
  • all_invoices_approved Boolean
    compute='_compute_all_invoices_approved'
  • cancelled_qty Float
    copy=False digits_compute=dp.get_precision('Product Unit of Measure') string='Cancelled Quantity'
  • fully_invoiced Boolean
    compute='_compute_fully_invoiced' copy=False store=True
  • invoiced_qty Float
    compute='_compute_invoiced_qty' copy=False digits_compute=dp.get_precision('Product Unit of Measure') store=True
Public methods (0)

No public methods.

New fields (1)
  • line_ids One2many → purchase.order.line_cancel_quantity_line
    string='Lines' args: 'purchase.order.line_cancel_quantity_line', 'wizard_id'
Public methods (2)
  • cancel_quantity(self)
    @api.multi
  • default_get(self, fields)
    @api.model

New fields (5)
  • cancelled_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') string='Quantity to cancel'
  • po_line_id Many2one → purchase.order.line
    readonly=True args: 'purchase.order.line', 'Purchase order line'
  • price_unit Float
    readonly=True related='po_line_id.price_unit' string='Unit Price'
  • product_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') readonly=True args: 'Quantity'
  • wizard_id Many2one → purchase.order.line_cancel_quantity
    args: 'purchase.order.line_cancel_quantity', 'Wizard'
Public methods (0)

No public methods.

New fields (1)
  • line_ids One2many → purchase.order.line_invoice.line
    string='Lines' args: 'purchase.order.line_invoice.line', 'wizard_id'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • makeInvoices(self)
    @api.multi

New fields (5)
  • invoiced_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') string='Quantity to invoice'
  • po_line_id Many2one → purchase.order.line
    readonly=True args: 'purchase.order.line', 'Purchase order line'
  • price_unit Float
    readonly=True related='po_line_id.price_unit' string='Unit Price'
  • product_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') readonly=True args: 'Quantity'
  • wizard_id Many2one → purchase.order.line_invoice
    args: 'purchase.order.line_invoice', 'Wizard'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/8.0/purchase_partial_invoicing
VERSION
VERSION 0.1.2
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV, Agile Business Group
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV, Agile Business Group
COMMITTERS
COMMITTERSStéphane Bidoul, Yannick Vaucher, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, Adrien Peiffer (ACSONE), Moises Lopez - https://www.vauxoo.com/, oca-travis, Weblate
WEBSITE
WEBSITEhttp://www.agilebg.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_suspend_security
odoo/odoo:
    - purchase
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - procurement
    - board
    - web_kanban_gauge
    - web_kanban_sparkline
    - account
    - analytic
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
purchase_order_line_search purchase.order.line.search (purchase_partial_invoicing) purchase.order.line xpath Inherits purchase.purchase_order_line_search
purchase_order_line_tree purchase.order.line.tree purchase.order.line field Inherits purchase.purchase_order_line_tree
view_purchase_line_cancel Cancel Quantity purchase.order.line_cancel_quantity form New
view_purchase_line_invoice Create invoices purchase.order.line_invoice xpath Inherits purchase.view_purchase_line_invoice
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • invoice_validate(self)
    @api.multi

New fields (1)
  • invoiced Boolean
    compute='_compute_invoiced'
Public methods (0)

No public methods.

New fields (4)
  • all_invoices_approved Boolean
    compute='_compute_all_invoices_approved'
  • cancelled_qty Float
    copy=False digits=dp.get_precision('Product Unit of Measure') string='Cancelled Quantity'
  • fully_invoiced Boolean
    compute='_compute_fully_invoiced' copy=False store=True
  • invoiced_qty Float
    compute='_compute_invoiced_qty' copy=False digits=dp.get_precision('Product Unit of Measure') store=True
Public methods (0)

No public methods.

New fields (1)
  • line_ids One2many → purchase.order.line_cancel_quantity_line
    string='Lines' args: 'purchase.order.line_cancel_quantity_line', 'wizard_id'
Public methods (2)
  • cancel_quantity(self)
    @api.multi
  • default_get(self, fields)
    @api.model

New fields (5)
  • cancelled_qty Float
    digits=dp.get_precision('Product Unit of Measure') string='Quantity to cancel'
  • po_line_id Many2one → purchase.order.line
    readonly=True args: 'purchase.order.line', 'Purchase order line'
  • price_unit Float
    readonly=True related='po_line_id.price_unit' string='Unit Price'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') readonly=True args: 'Quantity'
  • wizard_id Many2one → purchase.order.line_cancel_quantity
    args: 'purchase.order.line_cancel_quantity', 'Wizard'
Public methods (0)

No public methods.

New fields (1)
  • line_ids One2many → purchase.order.line_invoice.line
    string='Lines' args: 'purchase.order.line_invoice.line', 'wizard_id'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • makeInvoices(self)
    @api.multi

New fields (5)
  • invoiced_qty Float
    digits=dp.get_precision('Product Unit of Measure') string='Quantity to invoice'
  • po_line_id Many2one → purchase.order.line
    readonly=True args: 'purchase.order.line', 'Purchase order line'
  • price_unit Float
    readonly=True related='po_line_id.price_unit' string='Unit Price'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') readonly=True args: 'Quantity'
  • wizard_id Many2one → purchase.order.line_invoice
    args: 'purchase.order.line_invoice', 'Wizard'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/7.0/purchase_partial_invoicing
VERSION
VERSION 0.1
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Agile Business Group
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Agile Business Group
COMMITTERS
COMMITTERSYannick Vaucher, Lorenzo Battistini, Alexandre Fayolle, Leonardo Pistone, Launchpad Translations on behalf of purchase-core-editors, OCA Transbot, Rudolf Schnapka, moylop260, jbeficent
WEBSITE
WEBSITEhttp://www.agilebg.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock
    - product
    - base
    - process
    - web
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - account
    - analytic
    - board
    - edi
    - email_template
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to partially invoice purchase order lines.
The 'Create invoices' from PO lines wizard allows to specify,
for each line, the quantity to invoice.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
purchase_order_line_tree purchase.order.line.tree purchase.order.line field Inherits purchase.purchase_order_line_tree
view_purchase_line_invoice Create invoices purchase.order.line_invoice xpath Inherits purchase.view_purchase_line_invoice
Models touched (5)

New fields (0)

No new fields.

Public methods (1)
  • invoice_validate(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • makeInvoices(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.