| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/18.0/purchase_manual_delivery |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow S.L. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow S.L. |
| COMMITTERS | |
| COMMITTERS | Stefan Rijnhart, Weblate, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/purchase-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:17 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/purchase-workflow: - purchase_order_line_menu odoo/odoo: - purchase_stock - stock_account - stock - product - base - base_setup - web - bus - web_tour - html_editor - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - onboarding - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | The goal of this module is to allow the manual creation of incoming shipments. When installed, a purchase order won't impact directly the stock. It will not create the pickings upon order confirmation. It allows the reception and the impact on stock to be done manually when needed. The goal is to be used when a supplier does not confirm the full order at once. As the supplier confirms the different purchase order lines, the user can manually create the incoming shipments for those specific lines. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_line_search |
purchase.order.line | group | Inherits purchase.purchase_order_line_search | |
purchase_order_line_tree |
purchase.order.line | xpath | Inherits purchase.purchase_order_line_tree | |
purchase_order_view_form_inherit |
purchase.order.form | purchase.order | xpath | Inherits purchase.purchase_order_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.manual.delivery | res.config.settings | block | Inherits purchase.res_config_settings_view_form_purchase |
view_create_stock_picking |
Create Stock Picking | create.stock.picking.wizard | form | New |
line_ids
One2many → create.stock.picking.wizard.line
comodel_name='create.stock.picking.wizard.line'
inverse_name='wizard_id'
string='Lines'
location_dest_id
Many2one → stock.location
default=_default_location_dest_id
help='Location where the system will stock the received products.'
args: 'stock.location', 'Destination Location'
partner_id
Many2one → res.partner
picking_id
Many2one → stock.picking
string='Stock Picking'
args: 'stock.picking'
purchase_id
Many2one → purchase.order
default=_default_purchase_order
readonly=True
string='Purchase Order'
args: 'purchase.order'
scheduled_date
Datetime
related='picking_id.scheduled_date'
args: 'Scheduled Date'
create_stock_picking(self)
default_get(self, fields)
fill_lines(self, po_lines)
onchange_picking_id(self)
currency_id
Many2one → res.currency
related='purchase_order_line_id.currency_id'
args: 'res.currency'
date_planned
Datetime
related='purchase_order_line_id.date_planned'
name
Text
readonly=True
string='Description'
partner_id
Many2one → res.partner
related='purchase_order_line_id.partner_id'
string='Vendor'
args: 'res.partner'
price_unit
Float
related='purchase_order_line_id.price_unit'
product_id
Many2one → product.product
related='purchase_order_line_id.product_id'
string='Product'
args: 'product.product'
product_qty
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.product_qty'
string='Quantity'
product_uom
Many2one → uom.uom
related='purchase_order_line_id.product_uom'
string='Unit of Measure'
args: 'uom.uom'
purchase_order_line_id
Many2one → purchase.order.line
qty
Float
digits='Product Unit of Measure'
help='This is the quantity taken into account to create the picking'
string='Quantity to Receive'
qty_in_receipt
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.qty_in_receipt'
qty_received
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.qty_received'
remaining_qty
Float
compute='_compute_remaining_qty'
digits='Product Unit of Measure'
string='Remaining Quantity'
taxes_id
Many2many → account.tax
related='purchase_order_line_id.taxes_id'
args: 'account.tax'
wizard_id
Many2one → create.stock.picking.wizard
comodel_name='create.stock.picking.wizard'
ondelete='cascade'
required=True
string='Wizard'
No public methods.
No new fields.
Public methods (0)No public methods.
manual_delivery
Boolean
compute='_compute_manual_delivery'
help="Stock transfers need to be created manually to receive this PO's products"
readonly=False
store=True
string='Manual delivery'
pending_to_receive
Boolean
compute='_compute_pending_to_receive'
No public methods.
pending_to_receive
Boolean
compute='_compute_qty_in_receipt'
help='There is pending quantity to receive not yet planned'
store=True
string='Pending Qty to Receive'
qty_in_receipt
Float
compute='_compute_qty_in_receipt'
digits='Product Unit of Measure'
help='Quantity for which there are pending stock moves'
store=True
No public methods.
purchase_manual_delivery
Boolean
required=False
string='Purchase manual delivery?'
No public methods.
purchase_manual_delivery
Boolean
readonly=False
related='company_id.purchase_manual_delivery'
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/17.0/purchase_manual_delivery |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow S.L. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow S.L. |
| COMMITTERS | |
| COMMITTERS | Stefan Rijnhart, Weblate, OCA-git-bot, oca-ci, len |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/purchase-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - purchase_stock - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - onboarding - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | The goal of this module is to allow the manual creation of incoming shipments. When installed, a purchase order won't impact directly the stock. It will not create the pickings upon order confirmation. It allows the reception and the impact on stock to be done manually when needed. The goal is to be used when a supplier does not confirm the full order at once. As the supplier confirms the different purchase order lines, the user can manually create the incoming shipments for those specific lines. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_line_tree |
purchase.order.line | xpath | Inherits purchase.purchase_order_line_tree | |
purchase_order_view_form_inherit |
purchase.order.form | purchase.order | xpath | Inherits purchase.purchase_order_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.manual.delivery | res.config.settings | block | Inherits purchase.res_config_settings_view_form_purchase |
view_create_stock_picking |
Create Stock Picking | create.stock.picking.wizard | form | New |
view_purchase_order_unreceived_line_filter |
purchase.order.unreceived.line | purchase.order.line | search | New |
line_ids
One2many → create.stock.picking.wizard.line
comodel_name='create.stock.picking.wizard.line'
inverse_name='wizard_id'
string='Lines'
location_dest_id
Many2one → stock.location
default=_default_location_dest_id
help='Location where the system will stock the received products.'
args: 'stock.location', 'Destination Location'
partner_id
Many2one → res.partner
picking_id
Many2one → stock.picking
string='Stock Picking'
args: 'stock.picking'
purchase_id
Many2one → purchase.order
default=_default_purchase_order
readonly=True
string='Purchase Order'
args: 'purchase.order'
scheduled_date
Datetime
related='picking_id.scheduled_date'
args: 'Scheduled Date'
create_stock_picking(self)
default_get(self, fields)
fill_lines(self, po_lines)
onchange_picking_id(self)
currency_id
Many2one → res.currency
related='purchase_order_line_id.currency_id'
args: 'res.currency'
date_planned
Datetime
related='purchase_order_line_id.date_planned'
name
Text
readonly=True
string='Description'
partner_id
Many2one → res.partner
related='purchase_order_line_id.partner_id'
string='Vendor'
args: 'res.partner'
price_unit
Float
related='purchase_order_line_id.price_unit'
product_id
Many2one → product.product
related='purchase_order_line_id.product_id'
string='Product'
args: 'product.product'
product_qty
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.product_qty'
string='Quantity'
product_uom
Many2one → uom.uom
related='purchase_order_line_id.product_uom'
string='Unit of Measure'
args: 'uom.uom'
purchase_order_line_id
Many2one → purchase.order.line
qty
Float
digits='Product Unit of Measure'
help='This is the quantity taken into account to create the picking'
string='Quantity to Receive'
qty_in_receipt
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.qty_in_receipt'
qty_received
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.qty_received'
remaining_qty
Float
compute='_compute_remaining_qty'
digits='Product Unit of Measure'
string='Remaining Quantity'
taxes_id
Many2many → account.tax
related='purchase_order_line_id.taxes_id'
args: 'account.tax'
wizard_id
Many2one → create.stock.picking.wizard
comodel_name='create.stock.picking.wizard'
ondelete='cascade'
required=True
string='Wizard'
No public methods.
No new fields.
Public methods (0)No public methods.
manual_delivery
Boolean
compute='_compute_manual_delivery'
help="Stock transfers need to be created manually to receive this PO's products"
readonly=False
store=True
string='Manual delivery'
pending_to_receive
Boolean
compute='_compute_pending_to_receive'
button_approve(self, force=False)
button_confirm_manual(self)
pending_to_receive
Boolean
compute='_compute_qty_in_receipt'
help='There is pending quantity to receive not yet planned'
store=True
string='Pending Qty to Receive'
qty_in_receipt
Float
compute='_compute_qty_in_receipt'
digits='Product Unit of Measure'
help='Quantity for which there are pending stock moves'
store=True
No public methods.
purchase_manual_delivery
Boolean
required=False
string='Purchase manual delivery?'
No public methods.
purchase_manual_delivery
Boolean
readonly=False
related='company_id.purchase_manual_delivery'
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/16.0/purchase_manual_delivery |
| VERSION | |
| VERSION | 2.0.3 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow S.L. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow S.L. |
| COMMITTERS | |
| COMMITTERS | Víctor Martínez, JordiMForgeFlow, Weblate, OCA-git-bot, oca-ci, Christopher Ormaza, ntsirintanis, AlexPForgeFlow, PauBForgeFlow, andrea, Christoph Abenthung |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/purchase-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:55 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - purchase_stock - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_line_tree |
purchase.order.line | xpath | Inherits purchase.purchase_order_line_tree | |
purchase_order_view_form_inherit |
purchase.order.form | purchase.order | xpath | Inherits purchase.purchase_order_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.manual.delivery | res.config.settings | div | Inherits purchase.res_config_settings_view_form_purchase |
view_create_stock_picking |
Create Stock Picking | create.stock.picking.wizard | form | New |
view_purchase_order_unreceived_line_filter |
purchase.order.unreceived.line | purchase.order.line | search | New |
line_ids
One2many → create.stock.picking.wizard.line
comodel_name='create.stock.picking.wizard.line'
inverse_name='wizard_id'
string='Lines'
location_dest_id
Many2one → stock.location
default=_default_location_dest_id
help='Location where the system will stock the received products.'
args: 'stock.location', 'Destination Location'
partner_id
Many2one → res.partner
picking_id
Many2one → stock.picking
string='Stock Picking'
args: 'stock.picking'
purchase_id
Many2one → purchase.order
default=_default_purchase_order
readonly=True
string='Purchase Order'
args: 'purchase.order'
scheduled_date
Datetime
related='picking_id.scheduled_date'
args: 'Scheduled Date'
create_stock_picking(self)
default_get(self, fields)
fill_lines(self, po_lines)
onchange_picking_id(self)
currency_id
Many2one → res.currency
related='purchase_order_line_id.currency_id'
args: 'res.currency'
date_planned
Datetime
related='purchase_order_line_id.date_planned'
existing_qty
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.existing_qty'
string='Existing Quantity'
name
Text
readonly=True
string='Description'
partner_id
Many2one → res.partner
related='purchase_order_line_id.partner_id'
string='Vendor'
args: 'res.partner'
price_unit
Float
readonly=True
related='purchase_order_line_id.price_unit'
product_id
Many2one → product.product
related='purchase_order_line_id.product_id'
string='Product'
args: 'product.product'
product_qty
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.product_qty'
string='Quantity'
product_uom
Many2one → uom.uom
related='purchase_order_line_id.product_uom'
string='Unit of Measure'
args: 'uom.uom'
purchase_order_line_id
Many2one → purchase.order.line
qty
Float
digits='Product Unit of Measure'
help='This is the quantity taken into account to create the picking'
string='Quantity to Receive'
remaining_qty
Float
compute='_compute_remaining_qty'
digits='Product Unit of Measure'
readonly=True
string='Remaining Quantity'
taxes_id
Many2many → account.tax
related='purchase_order_line_id.taxes_id'
args: 'account.tax'
wizard_id
Many2one → create.stock.picking.wizard
comodel_name='create.stock.picking.wizard'
ondelete='cascade'
required=True
string='Wizard'
No public methods.
No new fields.
Public methods (0)No public methods.
manual_delivery
Boolean
default=<expr>
string='Purchase manual delivery?'
pending_to_receive
Boolean
compute='_compute_pending_to_receive'
button_approve(self, force=False)
button_confirm_manual(self)
existing_qty
Float
compute='_compute_existing_qty'
digits='Product Unit of Measure'
help='Quantity already planned or shipped (stock movements already created)'
store=True
string='Existing Quantity'
pending_to_receive
Boolean
compute='_compute_existing_qty'
help='There is pending quantity to receive not yet planned'
store=True
string='Pending Qty to Receive'
No public methods.
No new fields.
Public methods (0)No public methods.
purchase_manual_delivery
Boolean
required=False
string='Purchase manual delivery?'
No public methods.
purchase_manual_delivery
Boolean
readonly=False
related='company_id.purchase_manual_delivery'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/14.0/purchase_manual_delivery |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow S.L. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow S.L. |
| COMMITTERS | |
| COMMITTERS | oca-travis, Weblate, OCA-git-bot, Christopher Ormaza |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/purchase-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - purchase_stock - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - account - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_line_tree |
purchase.order.line | xpath | Inherits purchase.purchase_order_line_tree | |
purchase_order_view_form_inherit |
purchase.order.form | purchase.order | xpath | Inherits purchase.purchase_order_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.manual.delivery | res.config.settings | div | Inherits purchase.res_config_settings_view_form_purchase |
view_create_stock_picking |
Create Stock Picking | create.stock.picking.wizard | form | New |
view_purchase_order_unreceived_line_filter |
purchase.order.unreceived.line | purchase.order.line | search | New |
line_ids
One2many → create.stock.picking.wizard.line
comodel_name='create.stock.picking.wizard.line'
inverse_name='wizard_id'
string='Lines'
location_dest_id
Many2one → stock.location
default=_default_location_dest_id
help='Location where the system will stock the received products.'
args: 'stock.location', 'Destination Location'
partner_id
Many2one → res.partner
picking_id
Many2one → stock.picking
string='Stock Picking'
args: 'stock.picking'
purchase_id
Many2one → purchase.order
default=_default_purchase_order
readonly=True
string='Purchase Order'
args: 'purchase.order'
scheduled_date
Datetime
related='picking_id.scheduled_date'
args: 'Scheduled Date'
create_stock_picking(self)
default_get(self, fields)
fill_lines(self, po_lines)
onchange_picking_id(self)
currency_id
Many2one → res.currency
related='purchase_order_line_id.currency_id'
args: 'res.currency'
date_planned
Datetime
related='purchase_order_line_id.date_planned'
existing_qty
Float
digits=dp.get_precision('Product Unit of Measure')
related='purchase_order_line_id.existing_qty'
string='Existing Quantity'
name
Text
readonly=True
string='Description'
partner_id
Many2one → res.partner
related='purchase_order_line_id.partner_id'
string='Vendor'
args: 'res.partner'
price_unit
Float
readonly=True
related='purchase_order_line_id.price_unit'
product_id
Many2one → product.product
related='purchase_order_line_id.product_id'
string='Product'
args: 'product.product'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
related='purchase_order_line_id.product_qty'
string='Quantity'
product_uom
Many2one → uom.uom
related='purchase_order_line_id.product_uom'
string='Unit of Measure'
args: 'uom.uom'
purchase_order_line_id
Many2one → purchase.order.line
qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='This is the quantity taken into account to create the picking'
string='Quantity to Receive'
remaining_qty
Float
compute='_compute_remaining_qty'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Remaining Quantity'
taxes_id
Many2many → account.tax
related='purchase_order_line_id.taxes_id'
args: 'account.tax'
wizard_id
Many2one → create.stock.picking.wizard
comodel_name='create.stock.picking.wizard'
ondelete='cascade'
required=True
string='Wizard'
No public methods.
manual_delivery
Boolean
default=<expr>
string='Purchase manual delivery?'
pending_to_receive
Boolean
compute='_compute_pending_to_receive'
button_confirm_manual(self)
existing_qty
Float
compute='_compute_existing_qty'
digits='Product Unit of Measure'
help='Quantity already planned or shipped (stock movements already created)'
string='Existing Qty'
pending_to_receive
Boolean
compute='_compute_existing_qty'
help='There is pending quantity to receive not yet planned'
store=True
string='Pending Qty to Receive'
No public methods.
purchase_manual_delivery
Boolean
required=False
string='Purchase manual delivery?'
No public methods.
purchase_manual_delivery
Boolean
readonly=False
related='company_id.purchase_manual_delivery'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/13.0/purchase_manual_delivery |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow S.L. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow S.L. |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Héctor Vi Or |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/purchase-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:18 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - purchase_stock - stock_account - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes - account - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_line_tree |
purchase.order.line | xpath | Inherits purchase.purchase_order_line_tree | |
purchase_order_view_form_inherit |
purchase.order.form | purchase.order | xpath | Inherits purchase.purchase_order_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.manual.delivery | res.config.settings | xpath | Inherits purchase.res_config_settings_view_form_purchase |
view_create_stock_picking |
Create Stock Picking | create.stock.picking.wizard | form | New |
view_purchase_order_unreceived_line_filter |
purchase.order.unreceived.line | purchase.order.line | search | New |
line_ids
One2many → create.stock.picking.wizard.line
comodel_name='create.stock.picking.wizard.line'
inverse_name='wizard_id'
string='Lines'
location_dest_id
Many2one → stock.location
default=_default_location_dest_id
help='Location where the system will stock the received products.'
args: 'stock.location', 'Destination Location'
partner_id
Many2one → res.partner
picking_id
Many2one → stock.picking
string='Stock Picking'
args: 'stock.picking'
purchase_id
Many2one → purchase.order
default=_default_purchase_order
readonly=True
string='Purchase Order'
args: 'purchase.order'
scheduled_date
Datetime
related='picking_id.scheduled_date'
args: 'Scheduled Date'
create_stock_picking(self)
default_get(self, fields)
fill_lines(self, po_lines)
onchange_picking_id(self)
currency_id
Many2one → res.currency
related='purchase_order_line_id.currency_id'
args: 'res.currency'
date_planned
Datetime
related='purchase_order_line_id.date_planned'
name
Text
readonly=True
string='Description'
partner_id
Many2one → res.partner
related='purchase_order_line_id.partner_id'
string='Vendor'
args: 'res.partner'
price_unit
Float
readonly=True
related='purchase_order_line_id.price_unit'
product_id
Many2one → product.product
related='purchase_order_line_id.product_id'
string='Product'
args: 'product.product'
product_qty
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.product_qty'
string='Quantity'
product_uom
Many2one → uom.uom
related='purchase_order_line_id.product_uom'
string='Unit of Measure'
args: 'uom.uom'
purchase_order_line_id
Many2one → purchase.order.line
qty
Float
digits='Product Unit of Measure'
help='This is the quantity taken into account to create the picking'
string='Quantity to Receive'
qty_in_receipt
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.qty_in_receipt'
string='In Receipt Quantity'
qty_received
Float
digits='Product Unit of Measure'
related='purchase_order_line_id.qty_received'
string='In Receipt Quantity'
remaining_qty
Float
compute='_compute_remaining_qty'
digits='Product Unit of Measure'
readonly=True
string='Remaining Quantity'
taxes_id
Many2many → account.tax
related='purchase_order_line_id.taxes_id'
args: 'account.tax'
wizard_id
Many2one → create.stock.picking.wizard
comodel_name='create.stock.picking.wizard'
ondelete='cascade'
required=True
string='Wizard'
No public methods.
manual_delivery
Boolean
default=<expr>
string='Purchase manual delivery?'
pending_to_receive
Boolean
compute='_compute_pending_to_receive'
button_confirm_manual(self)
pending_to_receive
Boolean
compute='_compute_qty_in_receipt'
compute_sudo=True
help='There is pending quantity to receive not yet planned'
store=True
string='Pending to Receive'
qty_in_receipt
Float
compute='_compute_qty_in_receipt'
compute_sudo=True
digits='Product Unit of Measure'
help='Quantity already planned to receive'
store=True
string='In Receipt Qty'
No public methods.
purchase_manual_delivery
Boolean
required=False
string='Purchase manual delivery?'
No public methods.
purchase_manual_delivery
Boolean
readonly=False
related='company_id.purchase_manual_delivery'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/12.0/purchase_manual_delivery |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow S.L. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow S.L. |
| COMMITTERS | |
| COMMITTERS | OCA Transbot, oca-travis, Weblate, OCA-git-bot, Adrià Gil Sorribes |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/purchase-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:23 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - purchase_stock - stock_account - stock - product - base - decimal_precision - base_setup - web - bus - web_tour - uom - barcodes - account - analytic - portal - http_routing - digest - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_line_tree |
purchase.order.line | xpath | Inherits purchase.purchase_order_line_tree | |
purchase_order_view_form_inherit |
purchase.order.form | purchase.order | xpath | Inherits purchase.purchase_order_form |
view_create_stock_picking |
Create Stock Picking | create.stock.picking.wizard | form | New |
view_purchase_order_unreceived_line_filter |
purchase.order.unreceived.line | purchase.order.line | search | New |
line_ids
One2many → create.stock.picking.wizard.line
comodel_name='create.stock.picking.wizard.line'
inverse_name='wizard_id'
string='Lines'
location_dest_id
Many2one → stock.location
default=_default_location_dest_id
help='Location where the system will stock the received products.'
args: 'stock.location', 'Destination Location'
partner_id
Many2one → res.partner
picking_id
Many2one → stock.picking
string='Stock Picking'
args: 'stock.picking'
purchase_id
Many2one → purchase.order
default=_default_purchase_order
readonly=True
string='Purchase Order'
args: 'purchase.order'
scheduled_date
Datetime
related='picking_id.scheduled_date'
args: 'Scheduled Date'
create_stock_picking(self)
default_get(self, fields)
fill_lines(self, po_lines)
onchange_picking_id(self)
currency_id
Many2one → res.currency
related='purchase_order_line_id.currency_id'
args: 'res.currency'
date_planned
Datetime
related='purchase_order_line_id.date_planned'
existing_qty
Float
digits=dp.get_precision('Product Unit of Measure')
related='purchase_order_line_id.existing_qty'
string='Existing Quantity'
name
Text
readonly=True
string='Description'
partner_id
Many2one → res.partner
related='purchase_order_line_id.partner_id'
string='Vendor'
args: 'res.partner'
price_unit
Float
readonly=True
related='purchase_order_line_id.price_unit'
product_id
Many2one → product.product
related='purchase_order_line_id.product_id'
string='Product'
args: 'product.product'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
related='purchase_order_line_id.product_qty'
string='Quantity'
product_uom
Many2one → uom.uom
related='purchase_order_line_id.product_uom'
string='Unit of Measure'
args: 'uom.uom'
purchase_order_line_id
Many2one → purchase.order.line
qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='This is the quantity taken into account to create the picking'
string='Quantity to Receive'
remaining_qty
Float
compute='_compute_remaining_qty'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Remaining Quantity'
taxes_id
Many2many → account.tax
related='purchase_order_line_id.taxes_id'
args: 'account.tax'
wizard_id
Many2one → create.stock.picking.wizard
comodel_name='create.stock.picking.wizard'
ondelete='cascade'
required=True
string='Wizard'
No public methods.
pending_to_receive
Boolean
compute='_compute_pending_to_receive'
button_confirm_manual(self)
existing_qty
Float
compute='_compute_existing_qty'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity already planned or shipped (stock movements already created)'
string='Existing Qty'
pending_to_receive
Boolean
compute='_compute_existing_qty'
help='There is pending quantity to receive not yet planned'
store=True
string='Pending Qty to Receive'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/purchase-workflow |
| GIT | |
| GIT | https://github.com/OCA/purchase-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/purchase-workflow/tree/11.0/purchase_manual_delivery |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow S.L. |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow S.L. |
| COMMITTERS | |
| COMMITTERS | AaronHForgeFlow, oca-travis, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/purchase-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:24:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - purchase - stock_account - stock - product - base - decimal_precision - base_setup - web - bus - web_tour - barcodes - web_planner - account - analytic - portal - http_routing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_line_tree |
purchase.order.line | xpath | Inherits purchase.purchase_order_line_tree | |
purchase_order_view_form_inherit |
purchase.order.form | purchase.order | xpath | Inherits purchase.purchase_order_form |
view_create_stock_picking |
Create Stock Picking | create.stock.picking.wizard | form | New |
view_purchase_order_unreceived_line_filter |
purchase.order.unreceived.line | purchase.order.line | search | New |
line_ids
One2many → create.stock.picking.wizard.line
comodel_name='create.stock.picking.wizard.line'
inverse_name='wizard_id'
string='Lines'
location_dest_id
Many2one → stock.location
default=_default_location_dest_id
help='Location where the system will stock the received products.'
args: 'stock.location', 'Destination Location'
partner_id
Many2one → res.partner
picking_id
Many2one → stock.picking
string='Stock Picking'
args: 'stock.picking'
purchase_id
Many2one → purchase.order
default=_default_purchase_order
readonly=True
string='Purchase Order'
args: 'purchase.order'
scheduled_date
Datetime
related='picking_id.scheduled_date'
args: 'Scheduled Date'
create_stock_picking(self)
default_get(self, fields)
fill_lines(self, po_lines)
onchange_picking_id(self)
currency_id
Many2one → res.currency
related='purchase_order_line_id.currency_id'
args: 'res.currency'
date_planned
Datetime
related='purchase_order_line_id.date_planned'
existing_qty
Float
digits=dp.get_precision('Product Unit of Measure')
related='purchase_order_line_id.existing_qty'
string='Existing Quantity'
name
Text
readonly=True
string='Description'
partner_id
Many2one → res.partner
related='purchase_order_line_id.partner_id'
string='Vendor'
args: 'res.partner'
price_unit
Float
readonly=True
related='purchase_order_line_id.price_unit'
product_id
Many2one → product.product
related='purchase_order_line_id.product_id'
string='Product'
args: 'product.product'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
related='purchase_order_line_id.product_qty'
string='Quantity'
product_uom
Many2one → product.uom
related='purchase_order_line_id.product_uom'
string='Unit of Measure'
args: 'product.uom'
purchase_order_line_id
Many2one → purchase.order.line
qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='This is the quantity taken into account to create the picking'
string='Quantity to Receive'
remaining_qty
Float
compute='_compute_remaining_qty'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Remaining Quantity'
taxes_id
Many2many → account.tax
related='purchase_order_line_id.taxes_id'
args: 'account.tax'
wizard_id
Many2one → create.stock.picking.wizard
comodel_name='create.stock.picking.wizard'
ondelete='cascade'
required=True
string='Wizard'
No public methods.
pending_to_receive
Boolean
compute='_compute_pending_to_receive'
button_confirm_manual(self)
existing_qty
Float
compute='_compute_existing_qty'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity already planned or shipped (stock movements already created)'
string='Existing Qty'
pending_to_receive
Boolean
compute='_compute_existing_qty'
help='There is pending quantity to receive not yet planned'
store=True
string='Pending Qty to Receive'
write(self, values)