Manufacturing
mrp · odoo/odoo
- Repository
- odoo/odoo · module folder
- Module version
- 2.0
- Category
- Supply Chain/Manufacturing
- Folder size
- 18.82 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://www.odoo.com/app/manufacturing
- Last tracking update
- 2026-08-15 22:44:20
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, Thibault Delavallée, odoo, Odoo Translation Bot, Aaron Bohy, Jorge Pinna Puissant, Arnold Moyaux, Julien Castiaux, Victor Feyens, William Henrotin, Julien Mougenot, svs-odoo, Prakash Prajapati, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, William Braeckman, JF Aubert, David (dafr), Aurelien van Delft (avd), Mathieu Walravens, luvi, Valentin Chevalier, Renaud Thiry, niyasraphy, Louis Wicket (wil), alsh-odoo, nda, Victor Piryns (pivi), Djamel Touati, Pieter Claeys (clpi), clesgow, Levi Siuzdak (sile), Dylan Kiss (dyki), Mayurrajsinh Rathod, Chong Wang (cwg), Martin Maes, Paweł Fertyk, omra-odoo, kdeb@odoo.com, lase@odoo.com, Quentin Wolfs, Aurelien MARIE (auma), Ethan Vincent, reka-odoo, Richard Prosser, AMZIL Ayoub, Nathaniel (naja), kcv-odoo, mega, Louis Gobert, nihp-odoo, Junqi Wu, Hussein Ebrahim(hyhe), aamo-odoo, Sanchit Gupta, Mohammad Abdulmoneim, Mathias Mathy (MAMA), Stéphane Diez, kawkb, dhha-odoo, gteboul, Pierre Pulinckx (PIPU), Julien Schwanen, EmilioPascual, Arthur Nanson, David Van Droogenbroeck (DROD), pkgu-odoo, Mohammad Abdulmoneim (abdu), djameltouati, Pierre Lamotte (pila), Pierre Pulinckx, Bastien PIERRE, Corentin Heinix (cohe), Corentin Lombard, Shrey Mehta, Carmine, Mahdi Alijani (malj), MaximeNoirhomme, chha-odoo, bona-odoo, plha-odoo, Krzysztof Magusiak (krma), Armin-FalDiS, krip-odoo, joseph, sagu-odoo, Hadi El Yakhni, Tyler Landivar (tylan), Ester Andreetto, bhna-odoo, defl, Duy (Đỗ Anh), MAGREMENT, temo-odoo, mohannedah, kinhosz, agbr-odoo, Elijah Tay (elct), Lulu Grimalkin (lugr), rare-odoo, sawer, Lancelot Semal, Tudor-Calin Panzaru (tupan), adip-odoo, Quentin Colla (qucol), ABE-Mark45, Laszlo Almasy (azl), josv-odoo, Waleed Elgamal, Ayush Modi, Amr Elkhatieb, assh-odoo, daiduongnguyen-odoo, Oskar Kosobucki, srap-odoo, saurabh, Abdelouahab Laaroussi (abla), Zachary (zavan), sako-odoo, tpma-odoo, Youssef (abyo), msho-odoo, lase, Moamen(msho), chpa-odoo, Youssef, Mathias Mathy, Stef Ossé, alwhi-odoo
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- mrp_account, mrp_attachment_mgmt, mrp_bom_component_menu, mrp_bom_image, mrp_bom_note, mrp_bom_tracking, mrp_landed_costs, mrp_multi_level, mrp_product_expiry, mrp_production_back_to_draft, mrp_production_generator_by_date_interval, mrp_production_note, mrp_repair, mrp_repair_order, mrp_subcontracting, mrp_tag, mrp_warehouse_calendar, pos_mrp, product_brand_mrp, project_mrp, purchase_mrp, sale_mrp, stock_replenishment_mrp_bom_selection, test_main_flows
- Description
Code Analysis ⓘ
Views touched (106)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
exception_on_mo |
exception_on_mo | ir.ui.view | qweb | New |
label_production_view |
label_production_view | ir.ui.view | qweb | New |
label_production_view_pdf |
label_production_view_pdf | ir.ui.view | qweb | New |
mo_overview_byproducts |
mo_overview_byproducts | ir.ui.view | qweb | New |
mo_overview_components |
mo_overview_components | ir.ui.view | qweb | New |
mo_overview_content |
mo_overview_content | ir.ui.view | qweb | New |
mo_overview_line |
mo_overview_line | ir.ui.view | qweb | New |
mo_overview_operations |
mo_overview_operations | ir.ui.view | qweb | New |
mrp_bom_byproduct_form_view |
mrp.bom.byproduct.form | mrp.bom.byproduct | form | New |
mrp_bom_form_view |
mrp.bom.form | mrp.bom | form | New |
mrp_bom_kanban_view |
mrp.bom.kanban | mrp.bom | kanban | New |
mrp_bom_line_view_form |
mrp.bom.line.view.form | mrp.bom.line | form | New |
mrp_bom_replenishment_tree_view |
mrp.bom.replenishment.list.view | mrp.bom | list | Inherits mrp.mrp_bom_tree_view |
mrp_bom_tree_view |
mrp.bom.list | mrp.bom | list | New |
mrp_product_product_search_view |
mrp.product.product.search | product.product | search | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | search | Inherits product.product_template_search_view |
mrp_production_form_view |
mrp.production.form | mrp.production | form | New |
mrp_production_kanban_view |
mrp.production.kanban | mrp.production | kanban | New |
mrp_production_tree_view |
mrp.production.list | mrp.production | list | New |
mrp_production_view_activity |
mrp.production.view.activity | mrp.production | activity | New |
mrp_production_workorder_form_view_inherit |
mrp.production.work.order.form | mrp.workorder | form | New |
mrp_production_workorder_tree_editable_view |
mrp.production.work.order.list.editable | mrp.workorder | list | New |
mrp_production_workorder_tree_editable_view_mo_form |
mrp.production.work.order.list.editable | mrp.workorder | list | Inherits mrp_production_workorder_tree_editable_view |
mrp_production_workorder_tree_view |
mrp.production.work.order.list | mrp.workorder | list | Inherits mrp.mrp_production_workorder_tree_editable_view |
mrp_report_stock_rule |
mrp_report_stock_rule | ir.ui.view | qweb | Inherits stock.report_stock_rule |
mrp_routing_workcenter_bom_tree_view |
mrp.routing.workcenter.bom.list | mrp.routing.workcenter | list | Inherits mrp_routing_workcenter_tree_view |
mrp_routing_workcenter_copy_to_bom_tree_view |
mrp.routing.workcenter.copy_to_bom.list | mrp.routing.workcenter | list | Inherits mrp_routing_workcenter_tree_view |
mrp_routing_workcenter_filter |
mrp.routing.workcenter.filter | mrp.routing.workcenter | search | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_kanban_view |
mrp.routing.workcenter.kanban | mrp.routing.workcenter | kanban | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.list | mrp.routing.workcenter | list | New |
mrp_unbuild_form_view |
mrp.unbuild.form | mrp.unbuild | form | New |
mrp_unbuild_form_view_simplified |
mrp.unbuild.form.simplified | mrp.unbuild | form | New |
mrp_unbuild_kanban_view |
mrp.unbuild.kanban | mrp.unbuild | kanban | New |
mrp_unbuild_search_view |
mrp.unbuild.search | mrp.unbuild | search | New |
mrp_unbuild_tree_view |
mrp.unbuild.list | mrp.unbuild | list | New |
mrp_workcenter_block_wizard_form |
mrp.workcenter.productivity.form | mrp.workcenter.productivity | form | New |
mrp_workcenter_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
mrp_workcenter_tree_view |
mrp.workcenter.list | mrp.workcenter | list | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workcenter_view_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
oee_form_view |
mrp.workcenter.productivity.form | mrp.workcenter.productivity | form | New |
oee_graph_view |
mrp.workcenter.productivity.graph | mrp.workcenter.productivity | graph | New |
oee_loss_form_view |
mrp.workcenter.productivity.loss.form | mrp.workcenter.productivity.loss | form | New |
oee_loss_search_view |
mrp.workcenter.productivity.loss.search | mrp.workcenter.productivity.loss | search | New |
oee_loss_tree_view |
mrp.workcenter.productivity.loss.list | mrp.workcenter.productivity.loss | list | New |
oee_pie_view |
mrp.workcenter.productivity.graph | mrp.workcenter.productivity | graph | New |
oee_pivot_view |
mrp.workcenter.productivity.pivot | mrp.workcenter.productivity | pivot | New |
oee_search_view |
mrp.workcenter.productivity.search | mrp.workcenter.productivity | search | New |
oee_tree_view |
mrp.workcenter.productivity.list | mrp.workcenter.productivity | list | New |
product_document_form |
product.document.form.mrp | product.document | form | Inherits product.product_document_form |
product_product_form_view_bom_button |
product.product.procurement | product.product | form | Inherits stock.product_form_view_procurement_button |
product_template_form_view_bom_button |
product.template.procurement | product.template | form | Inherits stock.product_template_form_view_procurement_button |
product_view_search_catalog |
product.view.search.catalog.inherit.mrp | product.product | search | Inherits product.product_view_search_catalog |
production_message |
production_message | ir.ui.view | qweb | New |
report_bom_structure |
report_bom_structure | ir.ui.view | qweb | New |
report_mo_overview |
report_mo_overview | ir.ui.view | qweb | New |
report_mrp_bom |
report_mrp_bom | ir.ui.view | qweb | New |
report_mrp_bom_pdf_line |
report_mrp_bom_pdf_line | ir.ui.view | qweb | New |
report_mrp_production_components |
report_mrp_production_components | ir.ui.view | qweb | New |
report_mrp_workorder |
report_mrp_workorder | ir.ui.view | qweb | New |
report_mrporder |
report_mrporder | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.mrp | res.config.settings | form | Inherits base.res_config_settings_view_form |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | search | Inherits stock.stock_move_line_view_search |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | Inherits stock.stock_picking_type_kanban |
stock_report_delivery_document_inherit_mrp |
stock_report_delivery_document_inherit_mrp | ir.ui.view | qweb | Inherits stock.report_delivery_document |
stock_report_delivery_kit_sections |
stock_report_delivery_kit_sections | ir.ui.view | qweb | New |
stock_report_delivery_no_kit_section |
stock_report_delivery_no_kit_section | ir.ui.view | qweb | New |
stock_scrap_search_view_inherit_mrp |
stock.scrap.search.inherit.mrp | stock.scrap | search | Inherits stock.stock_scrap_search_view |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | form | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | form | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | form | Inherits stock.stock_warn_insufficient_qty_form_view |
track_production_move_template |
track_production_move_template | ir.ui.view | qweb | New |
view_change_production_qty_wizard |
Change Quantity To Produce | change.production.qty | form | New |
view_move_line_tree |
stock.move.line.list | stock.move.line | list | Inherits stock.view_move_line_tree |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_consumption_warning_form |
Consumption Warning | mrp.consumption.warning | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | form | Inherits stock.view_template_property_form |
view_mrp_production_backorder_form |
Create Backorder | mrp.production.backorder | form | New |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | New |
view_mrp_production_serials_form |
mrp_production_serials | mrp.production.serials | form | New |
view_mrp_production_split_form |
Split Production | mrp.production.split | form | New |
view_mrp_production_split_multi_form |
mrp.production.split.multi.form | mrp.production.split.multi | form | New |
view_mrp_production_work_order_search |
mrp.production.work.order.search | mrp.workorder | search | New |
view_mrp_production_workorder_form_view_filter |
mrp.production.work.order.select | mrp.workorder | search | New |
view_mrp_stock_move_operations |
stock.move.mrp.operations.raw.form | stock.move | form | Inherits stock.view_stock_move_operations |
view_mrp_workcenter_productivity_loss_kanban |
mrp.workcenter.productivity.loss.kanban | mrp.workcenter.productivity.loss | kanban | New |
view_mrp_workcenter_search |
mrp.workcenter.search | mrp.workcenter | search | New |
view_picking_form_inherit_mrp |
view.picking.form.inherit.mrp | stock.picking | form | Inherits stock.view_picking_form |
view_picking_type_form_inherit_mrp |
Operation Types | stock.picking.type | form | Inherits stock.view_picking_type_form |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_production_pivot |
mrp.production.pivot | mrp.production | pivot | New |
view_stock_move_line_operation_tree_finished |
stock.move.line.operation.list.finished | stock.move.line | list | Inherits stock.view_stock_move_line_operation_tree |
view_stock_move_operations_finished |
stock.move.operations.finished.form | stock.move | form | Inherits stock.view_stock_move_operations |
view_stock_move_operations_raw |
stock.move.operations.raw.form | stock.move | form | Inherits stock.view_stock_move_operations |
view_stock_replenishment_info_stock_mrp_inherit |
stock.replenishment.information.mrp.stock.inherit | stock.replenishment.info | Inherits stock.view_stock_replenishment_info | |
view_stock_rule_form |
stock.rule.form.inherit.mrp | stock.rule | form | Inherits stock.view_stock_rule_form |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | Inherits stock.view_warehouse | |
view_warehouse_orderpoint_tree_editable_inherited_purchase |
stock.warehouse.orderpoint.list.editable.inherit.purchase | stock.warehouse.orderpoint | list | Inherits stock.view_warehouse_orderpoint_tree_editable |
view_work_center_load_graph |
report.workcenter.load.graph | mrp.workorder | graph | New |
view_workcenter_load_pivot |
report.workcenter.load.pivot | mrp.workorder | pivot | New |
workcenter_line_calendar |
mrp.production.work.order.calendar | mrp.workorder | calendar | New |
workcenter_line_graph |
mrp.production.work.order.graph | mrp.workorder | graph | New |
workcenter_line_kanban |
mrp.production.work.order.kanban | mrp.workorder | kanban | New |
workcenter_line_pivot |
mrp.production.work.order.pivot | mrp.workorder | pivot | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (53)
-
mo_idMany2one → mrp.productionondelete='cascade'required=True args: 'mrp.production', 'Manufacturing Order' -
product_qtyFloatdigits='Product Unit'required=True args: 'Quantity To Produce'
-
change_prod_qty(self) -
default_get(self, fields)@api.model
No new fields.
Public methods (0)No public methods.
-
activeBooleandefault=True args: 'Active' -
allow_operation_dependenciesBooleanhelp='Create operation level dependencies that will influence both planning and the status of work orders upon MO confirmation. If this feature is ticked, and nothing is specified, Odoo will assume that all operations can be started simultaneously.' args: 'Operation Dependencies' -
batch_sizeFloatdefault=1.0digits='Product Unit'help='All automatically generated manufacturing orders for this product will be of this size.' args: 'Batch Size' -
bom_line_idsOne2many → mrp.bom.linecopy=True args: 'mrp.bom.line', 'bom_id', 'BoM Lines' -
byproduct_idsOne2many → mrp.bom.byproductcopy=True args: 'mrp.bom.byproduct', 'bom_id', 'By-products' -
codeCharargs: 'Reference' -
company_idMany2one → res.companydefault=<expr>index=True args: 'res.company', 'Company' -
consumptionSelectiondefault='warning'help='Defines if you can consume more or less components than the quantity defined on the BoM:\n * Allowed: allowed for all manufacturing users.\n * Allowed with warning: allowed for all manufacturing users with summary of consumption differences when closing the manufacturing order.\n Note that in the case of component Highlight Consumption, where consumption is registered manually exclusively, consumption warnings will still be issued when appropriate also.\n * Blocked: only a manager can close a manufacturing order when the BoM consumption is not respected.'required=Truestring='Flexible Consumption' args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')] -
days_to_prepare_moIntegerdefault=0help='Create and confirm Manufacturing Orders this many days in advance, to have enough time to replenish components or manufacture semi-finished products.'string='Days to prepare Manufacturing Order' -
enable_batch_sizeBooleandefault=False -
operation_countIntegercompute='_compute_operation_count' args: 'Operations Count' -
operation_idsOne2many → mrp.routing.workcentercopy=True args: 'mrp.routing.workcenter', 'bom_id', 'Operations' -
picking_type_idMany2one → stock.picking.typecheck_company=Truedomain="[('code', '=', 'mrp_operation')]"help='When a procurement has a ‘produce’ route with a operation type set, it will try to create a Manufacturing Order for that product using a BoM of the same operation type.If not,the operation type is not taken into account in the BoM search. That allows to define stock rules which trigger different manufacturing orders with different BoMs.' args: 'stock.picking.type', 'Operation Type' -
possible_product_template_attribute_value_idsMany2many → product.template.attribute.valuecompute='_compute_possible_product_template_attribute_value_ids' args: 'product.template.attribute.value' -
produce_delayIntegerdefault=0help='Average lead time in days to manufacture this product. In the case of multi-level BOM, the manufacturing lead times of the components will be added. In case the product is subcontracted, this can be used to determine the date at which components should be sent to the subcontractor.' args: 'Manufacturing Lead Time' -
product_idMany2one → product.productcheck_company=Truedomain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', '=', 'consu')]"help='If a product variant is defined the BOM is available only for this product.'index=True args: 'product.product', 'Product Variant' -
product_qtyFloatdefault=1.0digits='Product Unit'help='This should be the smallest quantity that this product can be produced in. If the BOM contains operations, make sure the work center capacity is accurate.'required=True args: 'Quantity' -
product_tmpl_idMany2one → product.templatecheck_company=Truedomain="[('type', '=', 'consu')]"index=Truerequired=True args: 'product.template', 'Product' -
product_uom_idMany2one → uom.uomdefault=_get_default_product_uom_idhelp='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'required=True args: 'uom.uom', 'Unit' -
ready_to_produceSelectiondefault='all_available'required=Truestring='Manufacturing Readiness' args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')] -
sequenceIntegerargs: 'Sequence' -
show_copy_operations_buttonBooleancompute='_compute_show_copy_operations_button'help="Technical field used to control the visibility of the 'Copy Existing Operations' button." -
show_set_bom_buttonBooleancompute='_compute_show_set_bom_button' -
typeSelectiondefault='normal'required=True args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
-
action_archive(self) -
action_compute_bom_days(self) -
action_copy_existing_operations(self) -
action_open_operation_form(self) -
action_set_bom_on_orderpoint(self) -
action_unarchive(self) -
check_kit_has_not_orderpoint(self)@api.constrains('product_tmpl_id', 'product_id', 'type') -
copy(self, default=None) -
create(self, vals_list)@api.model_create_multi -
explode(self, product, quantity, picking_type=False, never_attribute_values=False)Explodes the BoM and creates two lists with all the information you need: bom_done and line_done Quantity describes the number of times you need the BoM: so the quantity divided by the number created by the BoM and converted into its UoM -
get_import_templates(self)@api.model -
name_create(self, name)@api.model -
onchange_bom_structure(self)@api.onchange('bom_line_ids', 'product_qty', 'product_id', 'product_tmpl_id') -
onchange_product_tmpl_id(self)@api.onchange('product_tmpl_id') -
write(self, vals)
-
allowed_operation_idsOne2many → mrp.routing.workcenterrelated='bom_id.operation_ids' args: 'mrp.routing.workcenter' -
bom_idMany2one → mrp.bomindex=Trueondelete='cascade' args: 'mrp.bom', 'BoM' -
bom_product_template_attribute_value_idsMany2many → product.template.attribute.valuedomain="[('id', 'in', possible_bom_product_template_attribute_value_ids)]"help='BOM Product Variants needed to apply this line.'ondelete='restrict'string='Apply on Variants' args: 'product.template.attribute.value' -
company_idMany2oneindex=Truereadonly=Truerelated='bom_id.company_id'store=True -
cost_shareFloatdigits=(5, 2)help="The percentage of the final production cost for this by-product line (divided between the quantity produced).The total of all by-products' cost share must be less than or equal to 100." args: 'Cost Share (%)' -
operation_idMany2one → mrp.routing.workcentercheck_company=Truedomain="[('id', 'in', allowed_operation_ids)]" args: 'mrp.routing.workcenter', 'Produced in Operation' -
possible_bom_product_template_attribute_value_idsMany2manyrelated='bom_id.possible_product_template_attribute_value_ids' -
product_idMany2one → product.productcheck_company=Truerequired=True args: 'product.product', 'By-product' -
product_qtyFloatdefault=1.0digits='Product Unit'required=True args: 'Quantity' -
product_uom_idMany2one → uom.uomcompute='_compute_product_uom_id'precompute=Truereadonly=Falserequired=Truestore=True args: 'uom.uom', 'Unit' -
sequenceIntegerargs: 'Sequence'
-
action_add_from_catalog(self)
-
allowed_operation_idsOne2many → mrp.routing.workcenterrelated='bom_id.operation_ids' args: 'mrp.routing.workcenter' -
attachments_countIntegercompute='_compute_attachments_count' args: 'Attachments Count' -
bom_idMany2one → mrp.bomindex=Trueondelete='cascade'required=True args: 'mrp.bom', 'Parent BoM' -
bom_product_template_attribute_value_idsMany2many → product.template.attribute.valuedomain="[('id', 'in', possible_bom_product_template_attribute_value_ids)]"help='BOM Product Variants needed to apply this line.'ondelete='restrict'string='Apply on Variants' args: 'product.template.attribute.value' -
child_bom_idMany2one → mrp.bomcompute='_compute_child_bom_id' args: 'mrp.bom', 'Sub BoM' -
child_line_idsOne2many → mrp.bom.linecompute='_compute_child_line_ids'string='BOM lines of the referred bom' args: 'mrp.bom.line' -
company_idMany2oneindex=Truereadonly=Truerelated='bom_id.company_id'store=True -
operation_idMany2one → mrp.routing.workcentercheck_company=Truedomain="[('id', 'in', allowed_operation_ids)]"help='The operation where the components are consumed, or the finished products created.' args: 'mrp.routing.workcenter', 'Consumed in Operation' -
parent_product_tmpl_idMany2one → product.templaterelated='bom_id.product_tmpl_id' args: 'product.template', 'Parent Product Template' -
possible_bom_product_template_attribute_value_idsMany2manyrelated='bom_id.possible_product_template_attribute_value_ids' -
product_idMany2one → product.productcheck_company=Trueindex=Truerequired=True args: 'product.product', 'Component' -
product_qtyFloatdefault=1.0digits='Product Unit'required=True args: 'Quantity' -
product_tmpl_idMany2one → product.templateindex=Truerelated='product_id.product_tmpl_id'store=True args: 'product.template', 'Product Template' -
product_uom_idMany2one → uom.uomdefault=_get_default_product_uom_idrequired=True args: 'uom.uom', 'Unit' -
sequenceIntegerdefault=1help='Gives the sequence order when displaying.' args: 'Sequence' -
trackingSelectionrelated='product_id.tracking'
-
action_add_from_catalog(self) -
action_see_attachments(self) -
create(self, vals_list)@api.model_create_multi -
onchange_product_id(self)@api.onchange('product_id')
-
consumptionSelectioncompute='_compute_consumption' args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')] -
mrp_consumption_warning_line_idsOne2many → mrp.consumption.warning.lineargs: 'mrp.consumption.warning.line', 'mrp_consumption_warning_id' -
mrp_production_countIntegercompute='_compute_mrp_production_count' -
mrp_production_idsMany2many → mrp.productionargs: 'mrp.production'
-
action_cancel(self) -
action_confirm(self) -
action_set_qty(self)
-
consumptionSelectionrelated='mrp_production_id.consumption' -
mrp_consumption_warning_idMany2one → mrp.consumption.warningondelete='cascade'readonly=Truerequired=True args: 'mrp.consumption.warning', 'Parent Wizard' -
mrp_production_idMany2one → mrp.productionondelete='cascade'readonly=Truerequired=True args: 'mrp.production', 'Manufacturing Order' -
product_consumed_qty_uomFloatreadonly=True args: 'Consumed' -
product_expected_qty_uomFloatreadonly=True args: 'To Consume' -
product_idMany2one → product.productreadonly=Truerequired=True args: 'product.product', 'Product' -
product_uom_idMany2one → uom.uomreadonly=Truerelated='product_id.uom_id' args: 'uom.uom', 'Unit'
No public methods.
-
all_move_idsOne2many → stock.moveargs: 'stock.move', 'production_id' -
all_move_raw_idsOne2many → stock.moveargs: 'stock.move', 'raw_material_production_id' -
allow_workorder_dependenciesBooleanargs: 'Allow Work Order Dependencies' -
allowed_uom_idsMany2many → uom.uomcompute='_compute_allowed_uom_ids' args: 'uom.uom' -
backorder_sequenceIntegercopy=Falsedefault=0help='Backorder sequence, if equals to 0 means there is not related backorder' args: 'Backorder Sequence' -
bom_idMany2one → mrp.bomcheck_company=Truecompute='_compute_bom_id'domain="[\n '&',\n '|',\n ('company_id', '=', False),\n ('company_id', '=', company_id),\n '&',\n '|',\n ('product_id','=',product_id),\n '&',\n ('product_tmpl_id.product_variant_ids','=',product_id),\n ('product_id','=',False),\n ('type', '=', 'normal')]"help='Bills of Materials, also called recipes, are used to autocomplete components and work order instructions.'precompute=Truereadonly=Falsestore=True args: 'mrp.bom', 'Bill of Material' -
company_idMany2one → res.companydefault=<expr>index=Truerequired=True args: 'res.company', 'Company' -
components_availabilityCharcompute='_compute_components_availability'help="Latest component availability status for this MO. If green, then the MO's readiness status is ready, as per BOM configuration."string='Component Status' -
components_availability_stateSelectioncompute='_compute_components_availability'search='_search_components_availability_state' args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late'), ('unavailable', 'Not Available')] -
consumptionSelectiondefault='flexible'readonly=Truerequired=True args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')] -
date_deadlineDatetimecompute='_compute_date_deadline'copy=Falsehelp='Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time.'readonly=Falsestore=True args: 'Deadline' -
date_finishedDatetimecompute='_compute_date_finished'copy=Falsedefault=_get_default_date_finishedhelp='Date you expect to finish production or actual date you finished production.'store=True args: 'End' -
date_startDatetimecopy=Falsedefault=_get_default_date_starthelp='Date you plan to start production or date you actually started production.'index=Truerequired=True args: 'Start' -
delay_alert_dateDatetimecompute='_compute_delay_alert_date'search='_search_delay_alert_date' args: 'Delay Alert Date' -
delivery_countIntegercompute='_compute_picking_ids'string='Delivery Orders' -
durationFloatcompute='_compute_duration'help='Total real duration (in minutes)' args: 'Real Duration' -
duration_expectedFloatcompute='_compute_duration_expected'help='Total expected duration (in minutes)' args: 'Expected Duration' -
finished_move_line_idsOne2many → stock.move.linecompute='_compute_lines'inverse='_inverse_lines'string='Finished Product' args: 'stock.move.line' -
forecasted_issueBooleancompute='_compute_forecasted_issue' -
is_delayedBooleancompute='_compute_is_delayed'search='_search_is_delayed' -
is_lockedBooleancopy=Falsedefault=_get_default_is_locked args: 'Is Locked' -
is_outdated_bomBooleanhelp='The BoM has been updated since creation of the MO' args: 'Outdated BoM' -
is_plannedBooleancompute='_compute_is_planned'store=True args: 'Its Operations are Planned' -
json_popoverCharcompute='_compute_json_popover' args: 'JSON data for the popover widget' -
location_dest_idMany2one → stock.locationcheck_company=Truecompute='_compute_locations'domain="[('usage','=','internal')]"help='Location where the system will stock the finished products.'precompute=Truereadonly=Falserequired=Truestore=True args: 'stock.location', 'Finished Products Location' -
location_final_idMany2one → stock.locationargs: 'stock.location', 'Final Location from procurement' -
location_src_idMany2one → stock.locationcheck_company=Truecompute='_compute_locations'domain="[('usage','=','internal')]"help='Location where the system will look for components.'precompute=Truereadonly=Falserequired=Truestore=True args: 'stock.location', 'Components Location' -
lot_producing_idsMany2many → stock.lotcheck_company=Truecopy=Falsedomain="[('product_id', '=', product_id)]"string='Lot/Serial Number' args: 'stock.lot' -
move_byproduct_idsOne2many → stock.movecompute='_compute_move_byproduct_ids'inverse='_set_move_byproduct_ids' args: 'stock.move' -
move_dest_idsOne2many → stock.movestring='Stock Movements of Produced Goods' args: 'stock.move', 'created_production_id' -
move_finished_idsOne2many → stock.movecompute='_compute_move_finished_ids'copy=Falsedomain=[('location_dest_usage', '!=', 'inventory')]readonly=Falsestore=True args: 'stock.move', 'production_id', 'Finished Products' -
move_raw_idsOne2many → stock.movecompute='_compute_move_raw_ids'copy=Falsedomain=[('location_dest_usage', '!=', 'inventory')]readonly=Falsestore=True args: 'stock.move', 'raw_material_production_id', 'Components' -
mrp_production_backorder_countIntegercompute='_compute_mrp_production_backorder' args: 'Count of linked backorder' -
mrp_production_child_countIntegercompute='_compute_mrp_production_child_count' args: 'Number of generated MO' -
mrp_production_source_countIntegercompute='_compute_mrp_production_source_count' args: 'Number of source MO' -
nameCharcopy=Falsedefault=<expr>readonly=True args: 'Reference' -
never_product_template_attribute_value_idsMany2many → product.template.attribute.valuedomain="[\n '&',\n ('attribute_line_id', 'in', valid_product_template_attribute_line_ids),\n ('attribute_id.create_variant', '=', 'no_variant')]"string='Never attribute values' args: 'product.template.attribute.value', 'template_attribute_value_mrp_production_rel', 'production_id', 'template_attribute_value_id' -
orderpoint_idMany2one → stock.warehouse.orderpointcopy=Falseindex='btree_not_null' args: 'stock.warehouse.orderpoint', 'Orderpoint' -
originCharcopy=Falsehelp='Reference of the document that generated this production order request.' args: 'Source' -
picking_idsMany2many → stock.pickingcompute='_compute_picking_ids'string='Picking associated to this manufacturing order' args: 'stock.picking' -
picking_type_idMany2one → stock.picking.typecheck_company=Truecompute='_compute_picking_type_id'copy=Truedomain="[('code', '=', 'mrp_operation')]"index=Trueprecompute=Truereadonly=Falserequired=Truestore=True args: 'stock.picking.type', 'Operation Type' -
prioritySelectiondefault='0'help='Components will be reserved first for the MO with the highest priorities.'string='Priority' args: PROCUREMENT_PRIORITIES -
product_description_variantsCharargs: 'Custom Description' -
product_idMany2one → product.productcheck_company=Truecompute='_compute_product_id'copy=Truedomain="[('type', '=', 'consu')]"precompute=Truereadonly=Falserequired=Truestore=True args: 'product.product', 'Product' -
product_qtyFloatcompute='_compute_product_qty'copy=Truedigits='Product Unit'precompute=Truereadonly=Falserequired=Truestore=Truetracking=True args: 'Quantity To Produce' -
product_tmpl_idMany2one → product.templaterelated='product_id.product_tmpl_id' args: 'product.template', 'Product Template' -
product_trackingSelectionrelated='product_id.tracking' -
product_uom_idMany2one → uom.uomcompute='_compute_uom_id'copy=Truedomain="[('id', 'in', allowed_uom_ids)]"precompute=Truereadonly=Falserequired=Truestore=True args: 'uom.uom', 'Unit' -
product_uom_qtyFloatcompute='_compute_product_uom_qty'store=Truestring='Total Quantity' -
product_variant_attributesMany2many → product.template.attribute.valuerelated='product_id.product_template_attribute_value_ids' args: 'product.template.attribute.value' -
production_capacityFloatcompute='_compute_production_capacity'help='Quantity that can be produced with the current stock of components' -
production_group_idMany2one → mrp.production.groupcopy=Falseindex=True args: 'mrp.production.group', 'Production Group' -
production_location_idMany2one → stock.locationcompute='_compute_production_location'store=True args: 'stock.location', 'Production Location' -
propagate_cancelBooleanhelp='If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too' args: 'Propagate cancel and split' -
qty_producedFloatcompute='_get_produced_qty'string='Quantity Produced' -
qty_producingFloatcopy=Falsedigits='Product Unit'string='Quantity Producing' -
reference_idsMany2many → stock.referencecopy=False args: 'stock.reference', 'stock_reference_production_rel', 'production_id', 'reference_id', 'References' -
reservation_stateSelectioncompute='_compute_reservation_state'copy=Falsehelp='Manufacturing readiness for this MO, as per bill of material configuration:\n * Ready: The material is available to start the production.\n * Waiting: The material is not available to start the production.\n'index=Truereadonly=Truestore=Truestring='MO Readiness'tracking=True args: [('confirmed', 'Waiting'), ('assigned', 'Ready'), ('waiting', 'Waiting Another Operation')] -
reserve_visibleBooleancompute='_compute_unreserve_visible'help='Technical field to check when we can reserve quantities' args: 'Allowed to Reserve Production' -
scrap_countIntegercompute='_compute_scrap_move_count'string='Scrap Move' -
scrap_idsOne2many → stock.scrapargs: 'stock.scrap', 'production_id', 'Scraps' -
search_date_categorySelectionreadonly=Truesearch='_search_date_category'store=Falsestring='Date Category' args: [('before', 'Before'), ('yesterday', 'Yesterday'), ('today', 'Today'), ('day_1', 'Tomorrow'), ('day_2', 'The day after tomorrow'), ('after', 'After')] -
serial_numbers_countIntegercompute='_compute_serial_numbers_count' args: 'Count of serial numbers' -
show_allocationBooleancompute='_compute_show_allocation'help='Technical Field used to decide whether the button "Allocation" should be displayed.' -
show_final_lotsBooleancompute='_compute_show_lots' args: 'Show Final Lots' -
show_generate_bomBooleancompute='_compute_show_generate_bom' args: 'Show Generate BOM' -
show_lockBooleancompute='_compute_show_lock' args: 'Show Lock/unlock buttons' -
show_lot_idsBooleancompute='_compute_show_lot_ids' args: 'Display the serial number shortcut on the moves' -
show_produceBooleancompute='_compute_show_produce'help='Technical field to check if produce button can be shown' -
show_produce_allBooleancompute='_compute_show_produce'help='Technical field to check if produce all button can be shown' -
stateSelectioncompute='_compute_state'copy=Falsehelp=" * Draft: The MO is not confirmed yet.\n * Confirmed: The MO is confirmed, the stock rules and the reordering of the components are trigerred.\n * In Progress: The production has started (on the MO or on the WO).\n * To Close: The production is done, the MO has to be closed.\n * Done: The MO is closed, the stock moves are posted. \n * Cancelled: The MO has been cancelled, can't be confirmed anymore."index=Truereadonly=Truestore=Truestring='State'tracking=True args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('progress', 'In Progress'), ('to_close', 'To Close'), ('done', 'Done'), ('cancel', 'Cancelled')] -
unbuild_countIntegercompute='_compute_unbuild_count'string='Number of Unbuilds' -
unbuild_idsOne2many → mrp.unbuildargs: 'mrp.unbuild', 'mo_id', 'Unbuilds' -
unreserve_visibleBooleancompute='_compute_unreserve_visible'help='Technical field to check when we can unreserve' args: 'Allowed to Unreserve Production' -
use_create_components_lotsBooleanrelated='picking_type_id.use_create_components_lots' -
user_idMany2one → res.usersdefault=<expr>domain=<expr> args: 'res.users', 'Responsible' -
valid_product_template_attribute_line_idsMany2manyrelated='product_tmpl_id.valid_product_template_attribute_line_ids' -
warehouse_idMany2onerelated='location_src_id.warehouse_id' -
workcenter_idMany2one → mrp.workcenterstore=False args: 'mrp.workcenter' -
workorder_idsOne2many → mrp.workordercompute='_compute_workorder_ids'copy=Truereadonly=Falsestore=True args: 'mrp.workorder', 'production_id', 'Work Orders'
-
action_assign(self) -
action_cancel(self)Cancels production order, unfinished stock moves and set procurement orders in exception -
action_clear_lot_producing_ids(self) -
action_confirm(self) -
action_generate_bom(self)Generates a new Bill of Material based on the Manufacturing Order's product, components, workorders and by-products, and assigns it to the MO. Returns a new BoM's form view action. -
action_generate_serial(self, workorder=False) -
action_merge(self) -
action_open_label_layout(self) -
action_open_label_type(self) -
action_plan_with_components_availability(self) -
action_product_forecast_report(self) -
action_see_move_scrap(self) -
action_split(self) -
action_start(self) -
action_toggle_is_locked(self) -
action_update_bom(self) -
action_view_mo_delivery(self)Returns an action that display picking related to manufacturing order. It can either be a list view or in a form view (if there is only one picking to show). -
action_view_mrp_production_backorders(self) -
action_view_mrp_production_childs(self) -
action_view_mrp_production_sources(self) -
action_view_mrp_production_unbuilds(self) -
action_view_reception_report(self) -
action_view_serial_numbers(self) -
button_mark_done(self) -
button_plan(self)Create work orders. And probably do stuff, like things. -
button_scrap(self) -
button_unbuild(self) -
button_unplan(self) -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
do_unreserve(self) -
get_empty_list_help(self, help_message)@api.model -
pre_button_mark_done(self) -
set_qty_producing(self) -
unlink(self) -
write(self, vals)
-
mrp_production_backorder_line_idsOne2many → mrp.production.backorder.linestring='Backorder Confirmation Lines' args: 'mrp.production.backorder.line', 'mrp_production_backorder_id' -
mrp_production_idsMany2many → mrp.productionargs: 'mrp.production' -
show_backorder_linesBooleancompute='_compute_show_backorder_lines' args: 'Show backorder lines'
-
action_backorder(self) -
action_close_mo(self)
-
mrp_production_backorder_idMany2one → mrp.production.backorderondelete='cascade'required=True args: 'mrp.production.backorder', 'MO Backorder' -
mrp_production_idMany2one → mrp.productionondelete='cascade'readonly=Truerequired=True args: 'mrp.production', 'Manufacturing Order' -
to_backorderBooleanargs: 'To Backorder'
No public methods.
-
child_idsMany2many → mrp.production.groupstring='Child Manufacturing Orders' args: 'mrp.production.group', 'mrp_production_group_rel', 'parent_group_id', 'child_group_id' -
nameCharindex='btree'required=True args: 'Name' -
parent_idsMany2many → mrp.production.groupstring='Parent Manufacturing Orders' args: 'mrp.production.group', 'mrp_production_group_rel', 'child_group_id', 'parent_group_id' -
production_idsOne2many → mrp.productionstring='Productions' args: 'mrp.production', 'production_group_id'
No public methods.
-
lot_nameCharcompute='_compute_lot_name'readonly=Falsestore=True args: 'First SN' -
lot_quantityIntegercompute='_compute_lot_quantity'readonly=Falsestore=True args: 'Number of SN' -
production_idMany2one → mrp.productionargs: 'mrp.production', 'Production' -
serial_numbersTextcompute='_compute_lot_name'readonly=Falsestore=True args: 'Produced Serial Numbers' -
workorder_idMany2one → mrp.workorderargs: 'mrp.workorder', 'Workorder'
-
action_apply(self) -
action_generate_serial_numbers(self) -
action_split_and_assign_serials(self)
-
max_batch_sizeFloatcompute='_compute_max_batch_size'digits='Product Unit'readonly=False args: 'Max Batch Size' -
num_splitsIntegercompute='_compute_num_splits'readonly=True args: '# Splits' -
product_idMany2onerelated='production_id.product_id' -
product_qtyFloatrelated='production_id.product_qty' -
product_uom_idMany2onerelated='production_id.product_uom_id' -
production_capacityFloatrelated='production_id.production_capacity' -
production_detailed_vals_idsOne2many → mrp.production.split.linecompute='_compute_details'readonly=Falsestore=True args: 'mrp.production.split.line', 'mrp_production_split_id', 'Split Details' -
production_idMany2one → mrp.productionreadonly=True args: 'mrp.production', 'Manufacturing Order' -
production_split_multi_idMany2one → mrp.production.split.multiargs: 'mrp.production.split.multi', 'Split Productions' -
valid_detailsBooleancompute='_compute_valid_details' args: 'Valid'
-
action_prepare_split(self) -
action_return_to_list(self) -
action_split(self)
-
dateDatetimeargs: 'Schedule Date' -
mrp_production_split_idMany2one → mrp.production.splitondelete='cascade'required=True args: 'mrp.production.split', 'Split Production' -
quantityFloatdigits='Product Unit'required=True args: 'Quantity To Produce' -
user_idMany2one → res.usersdomain=<expr> args: 'res.users', 'Responsible'
No public methods.
-
production_idsOne2many → mrp.production.splitargs: 'mrp.production.split', 'production_split_multi_id', 'Productions To Split'
No public methods.
-
activeBooleandefault=True -
allow_operation_dependenciesBooleanrelated='bom_id.allow_operation_dependencies' -
blocked_by_operation_idsMany2many → mrp.routing.workcentercolumn1='operation_id'column2='blocked_by_id'copy=Falsedomain="[('allow_operation_dependencies', '=', True), ('id', '!=', id), ('bom_id', '=', bom_id)]"help='Operations that need to be completed before this operation can start.'relation='mrp_routing_workcenter_dependencies_rel'string='Blocked By' args: 'mrp.routing.workcenter' -
bom_idMany2one → mrp.bomcheck_company=Trueindex=Trueondelete='cascade'required=True args: 'mrp.bom', 'Bill of Material' -
bom_product_template_attribute_value_idsMany2many → product.template.attribute.valuedomain="[('id', 'in', possible_bom_product_template_attribute_value_ids)]"help='BOM Product Variants needed to apply this line.'ondelete='restrict'string='Apply on Variants' args: 'product.template.attribute.value' -
company_idMany2one → res.companyrelated='bom_id.company_id' args: 'res.company', 'Company' -
costFloatcompute='_compute_cost' args: 'Cost' -
cost_modeSelectiondefault='actual'help='Determines the way Odoo calculates the cost of the operation:\n- Based on Actual time: the cost will be calculated based on tracked time and real employee costs.\n- Based on Estimated time: the cost will be calculated based on estimated time and costs.'string='Cost based on'tracking=True args: [('actual', 'Actual time'), ('estimated', 'Theorical time')] -
cycle_numberIntegercompute='_compute_time_cycle' args: 'Repetitions' -
nameCharrequired=True args: 'Operation' -
needed_by_operation_idsMany2many → mrp.routing.workcentercolumn1='blocked_by_id'column2='operation_id'copy=Falsedomain="[('allow_operation_dependencies', '=', True), ('id', '!=', id), ('bom_id', '=', bom_id)]"help='Operations that cannot start before this operation is completed.'relation='mrp_routing_workcenter_dependencies_rel'string='Blocks' args: 'mrp.routing.workcenter' -
possible_bom_product_template_attribute_value_idsMany2manyrelated='bom_id.possible_product_template_attribute_value_ids' -
sequenceIntegerdefault=100help='Gives the sequence order when displaying a list of routing Work Centers.' args: 'Sequence' -
show_time_totalBooleancompute='_compute_time_cycle' args: 'Show Total Duration?' -
time_computed_onCharcompute='_compute_time_computed_on' args: 'Computed on last' -
time_cycleFloatcompute='_compute_time_cycle' args: 'Cycles' -
time_cycle_manualFloatdefault=60help="Time in minutes:- In fixed mode, time used- In computed mode, supposed first time when there aren't any work orders yet"tracking=True args: 'Manual Duration' -
time_modeSelectiondefault='manual'string='Duration Computation'tracking=True args: [('manual', 'Fixed'), ('auto', 'Computed')] -
time_mode_batchIntegerdefault=10 args: 'Based on' -
time_totalFloatcompute='_compute_time_cycle' args: 'Total Duration' -
workcenter_idMany2one → mrp.workcentercheck_company=Trueindex=Truerequired=Truetracking=True args: 'mrp.workcenter', 'Work Center' -
workorder_countIntegercompute='_compute_workorder_count' args: '# Work Orders' -
workorder_idsOne2many → mrp.workorderstring='Work Orders' args: 'mrp.workorder', 'operation_id'
-
action_archive(self) -
action_open_operation_form(self) -
action_unarchive(self) -
copy_existing_operations(self) -
copy_to_bom(self) -
create(self, vals_list)@api.model_create_multi -
write(self, vals)
-
bom_idMany2one → mrp.bomcheck_company=Truecompute='_compute_bom_id'domain="[\n '|',\n ('product_id', '=', product_id),\n '&',\n ('product_tmpl_id.product_variant_ids', '=', product_id),\n ('product_id','=',False),\n ('type', '=', 'normal'),\n '|',\n ('company_id', '=', company_id),\n ('company_id', '=', False)\n ]"store=True args: 'mrp.bom', 'Bill of Material' -
company_idMany2one → res.companydefault=<expr>index=Truerequired=True args: 'res.company', 'Company' -
consume_line_idsOne2many → stock.movereadonly=Truestring='Consumed Disassembly Lines' args: 'stock.move', 'consume_unbuild_id' -
has_trackingSelectionreadonly=Truerelated='product_id.tracking' -
location_dest_idMany2one → stock.locationcheck_company=Truecompute='_compute_location_id'domain="[('usage','=','internal')]"help='Location where you want to send the components resulting from the unbuild order.'precompute=Truereadonly=Falserequired=Truestore=True args: 'stock.location', 'Destination Location' -
location_idMany2one → stock.locationcheck_company=Truecompute='_compute_location_id'domain="[('usage','=','internal')]"help='Location where the product you want to unbuild is.'precompute=Truereadonly=Falserequired=Truestore=True args: 'stock.location', 'Source Location' -
lot_idMany2one → stock.lotcheck_company=Truedomain="[('product_id', '=', product_id),('id', 'in', lot_producing_ids)]" args: 'stock.lot', 'Lot/Serial Number' -
lot_producing_idsMany2many → stock.lotrelated='mo_id.lot_producing_ids'string='Lot/Serial Numbers' args: 'stock.lot' -
mo_bom_idMany2one → mrp.bomrelated='mo_id.bom_id' args: 'mrp.bom', 'Bill of Material used on the Production Order' -
mo_idMany2one → mrp.productioncheck_company=Truedomain="[('state', '=', 'done'), ('product_id', '=?', product_id), ('bom_id', '=?', bom_id)]"index='btree_not_null' args: 'mrp.production', 'Manufacturing Order' -
nameCharcopy=Falsedefault=<expr>readonly=True args: 'Reference' -
produce_line_idsOne2many → stock.movereadonly=Truestring='Processed Disassembly Lines' args: 'stock.move', 'unbuild_id' -
product_idMany2one → product.productcheck_company=Truecompute='_compute_product_id'domain="[('type', '=', 'consu')]"precompute=Truereadonly=Falserequired=Truestore=True args: 'product.product', 'Product' -
product_qtyFloatcompute='_compute_product_qty'default=1.0digits='Product Unit'precompute=Truereadonly=Falserequired=Truestore=True args: 'Quantity' -
product_uom_idMany2one → uom.uomcompute='_compute_product_uom_id'precompute=Truereadonly=Falserequired=Truestore=True args: 'uom.uom', 'Unit' -
stateSelectiondefault='draft'string='Status' args: [('draft', 'Draft'), ('done', 'Done')]
-
action_unbuild(self) -
action_validate(self) -
create(self, vals_list)@api.model_create_multi
-
activeBooleandefault=Truereadonly=Falserelated='resource_id.active'store=True args: 'Active' -
alternative_workcenter_idsMany2many → mrp.workcentercheck_company=Truedomain="[('id', '!=', id), '|', ('company_id', '=', company_id), ('company_id', '=', False)]"help='Alternative workcenters that can be substituted to this one in order to dispatch production'string='Alternative Workcenters' args: 'mrp.workcenter', 'mrp_workcenter_alternative_rel', 'workcenter_id', 'alternative_workcenter_id' -
blocked_timeFloatcompute='_compute_blocked_time'digits=(16, 2)help='Blocked hours over the last month' args: 'Blocked Time' -
capacity_idsOne2many → mrp.workcenter.capacitycopy=Truehelp='Specific number of pieces that can be produced in parallel per product.'string='Product Capacities' args: 'mrp.workcenter.capacity', 'workcenter_id' -
codeCharcopy=False args: 'Code' -
colorIntegerargs: 'Color' -
costs_hourFloatdefault=0.0help='Hourly processing cost.'string='Cost per hour'tracking=True -
currency_idMany2one → res.currencyreadonly=Truerelated='company_id.currency_id'required=True args: 'res.currency', 'Currency' -
has_routing_linesBooleancompute='_compute_has_routing_lines'help='Technical field for workcenter views' -
kanban_dashboard_graphTextcompute='_compute_kanban_dashboard_graph' -
nameCharreadonly=Falserelated='resource_id.name'store=True args: 'Work Center' -
noteHtmlargs: 'Description' -
oeeFloatcompute='_compute_oee'help='Overall Equipment Effectiveness, based on the last month' -
oee_targetFloatdefault=90help='Overall Effective Efficiency Target in percentage'string='OEE Target' -
order_idsOne2many → mrp.workorderargs: 'mrp.workorder', 'workcenter_id', 'Orders' -
performanceIntegercompute='_compute_performance'help='Performance over the last month' args: 'Performance' -
productive_timeFloatcompute='_compute_productive_time'digits=(16, 2)help='Productive hours over the last month' args: 'Productive Time' -
resource_calendar_idMany2onecheck_company=True -
routing_line_idsOne2many → mrp.routing.workcenterargs: 'mrp.routing.workcenter', 'workcenter_id', 'Routing Lines' -
sequenceIntegerdefault=1help='Gives the sequence order when displaying a list of work centers.'required=True args: 'Sequence' -
tag_idsMany2many → mrp.workcenter.tagargs: 'mrp.workcenter.tag' -
time_efficiencyFloatdefault=100readonly=Falserelated='resource_id.time_efficiency'store=True args: 'Time Efficiency' -
time_idsOne2many → mrp.workcenter.productivityargs: 'mrp.workcenter.productivity', 'workcenter_id', 'Time Logs' -
time_startFloatargs: 'Setup Time' -
time_stopFloatargs: 'Cleanup Time' -
workcenter_loadFloatcompute='_compute_workorder_count' args: 'Work Center Load' -
working_stateSelectioncompute='_compute_working_state'store=True args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status' -
workorder_blocked_countIntegercompute='_compute_workorder_count' args: 'Total Pending Orders' -
workorder_countIntegercompute='_compute_workorder_count' args: '# Work Orders' -
workorder_late_countIntegercompute='_compute_workorder_count' args: 'Total Late Orders' -
workorder_progress_countIntegercompute='_compute_workorder_count' args: 'Total Running Orders' -
workorder_ready_countIntegercompute='_compute_workorder_count' args: '# To Do Work Orders'
-
action_archive(self) -
action_show_operations(self) -
action_work_order(self) -
action_work_order_alternatives(self) -
create(self, vals_list)@api.model_create_multi -
unblock(self) -
write(self, vals)
-
capacityFloathelp='Number of pieces that can be produced in parallel for this product or for all, depending on the unit.' args: 'Capacity' -
product_idMany2one → product.productstring='Product' args: 'product.product' -
product_uom_idMany2one → uom.uomcompute='_compute_product_uom_id'precompute=Truereadonly=Falserequired=Truestore=Truestring='Unit' args: 'uom.uom' -
time_startFloatdefault=_default_time_starthelp='Time in minutes for the setup.' args: 'Setup Time (minutes)' -
time_stopFloatdefault=_default_time_stophelp='Time in minutes for the cleaning.' args: 'Cleanup Time (minutes)' -
workcenter_idMany2one → mrp.workcenterindex=Truerequired=Truestring='Work Center' args: 'mrp.workcenter'
No public methods.
-
company_idMany2one → res.companydefault=<expr>index=Truerequired=True args: 'res.company' -
date_endDatetimeargs: 'End Date' -
date_startDatetimedefault=fields.Datetime.nowrequired=True args: 'Start Date' -
descriptionTextargs: 'Description' -
durationFloatcompute='_compute_duration'store=True args: 'Duration' -
loss_idMany2one → mrp.workcenter.productivity.lossondelete='restrict'required=True args: 'mrp.workcenter.productivity.loss', 'Loss Reason' -
loss_typeSelectionreadonly=Falserelated='loss_id.loss_type'string='Effectiveness' -
production_idMany2one → mrp.productionreadonly=Truerelated='workorder_id.production_id'string='Manufacturing Order' args: 'mrp.production' -
user_idMany2one → res.usersdefault=<expr> args: 'res.users', 'User' -
workcenter_idMany2one → mrp.workcentercheck_company=Trueindex=Truerequired=True args: 'mrp.workcenter', 'Work Center' -
workorder_idMany2one → mrp.workordercheck_company=Trueindex=True args: 'mrp.workorder', 'Work Order'
-
button_block(self)
-
loss_idMany2one → mrp.workcenter.productivity.loss.typedomain=[('loss_type', 'in', ['quality', 'availability'])]string='Category' args: 'mrp.workcenter.productivity.loss.type' -
loss_typeSelectionreadonly=Falserelated='loss_id.loss_type'string='Effectiveness Category' -
manualBooleandefault=True args: 'Is a Blocking Reason' -
nameCharrequired=Truetranslate=True args: 'Blocking Reason' -
sequenceIntegerdefault=1 args: 'Sequence'
No public methods.
-
loss_typeSelectiondefault='availability'required=Truestring='Category' args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
No public methods.
-
colorIntegerdefault=_get_default_color args: 'Color Index' -
nameCharrequired=True args: 'Tag Name'
No public methods.
-
allow_workorder_dependenciesBooleanrelated='production_id.allow_workorder_dependencies' -
barcodeCharcompute='_compute_barcode'store=True -
blocked_by_workorder_idsMany2many → mrp.workordercolumn1='workorder_id'column2='blocked_by_id'copy=Falsedomain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"relation='mrp_workorder_dependencies_rel'string='Blocked By' args: 'mrp.workorder' -
company_idMany2onerelated='production_id.company_id' -
consumptionSelectionrelated='production_id.consumption' -
cost_modeSelectiondefault='actual' args: [('actual', 'Actual'), ('estimated', 'Estimated')] -
costs_hourFloataggregator='avg'default=0.0string='Cost per hour' -
date_finishedDatetimecompute='_compute_dates'copy=Falseinverse='_set_dates'store=True args: 'End' -
date_startDatetimecompute='_compute_dates'copy=Falseinverse='_set_dates'store=True args: 'Start' -
durationFloatcompute='_compute_duration'copy=Falseinverse='_set_duration'readonly=Falsestore=True args: 'Real Duration' -
duration_expectedFloatcompute='_compute_duration_expected'digits=(16, 2)readonly=Falsestore=True args: 'Expected Duration' -
duration_percentIntegeraggregator='avg'compute='_compute_duration'readonly=Truestore=True args: 'Duration Deviation (%)' -
duration_unitFloataggregator='avg'compute='_compute_duration'readonly=Truestore=True args: 'Duration Per Unit' -
finished_lot_idsMany2many → stock.lotcheck_company=Truedomain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"readonly=Falserelated='production_id.lot_producing_ids'string='Lot/Serial Numbers' args: 'stock.lot' -
is_plannedBooleanrelated='production_id.is_planned' -
is_producedBooleancompute='_compute_is_produced'string='Has Been Produced' -
is_user_workingBooleancompute='_compute_working_users' args: 'Is the Current User Working' -
json_popoverCharcompute='_compute_json_popover' args: 'Popover Data JSON' -
last_working_user_idMany2one → res.userscompute='_compute_working_users'string='Last user that worked on this work order.' args: 'res.users' -
leave_idMany2one → resource.calendar.leavescheck_company=Truecopy=Falsehelp='Slot into workcenter calendar once planned' args: 'resource.calendar.leaves' -
move_finished_idsOne2many → stock.movedomain=[('raw_material_production_id', '=', False), ('production_id', '!=', False)] args: 'stock.move', 'workorder_id', 'Finished Moves' -
move_line_idsOne2many → stock.move.linehelp='Inventory moves for which you must scan a lot number at this work order' args: 'stock.move.line', 'workorder_id', 'Moves to Track' -
move_raw_idsOne2many → stock.movedomain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)] args: 'stock.move', 'workorder_id', 'Raw Moves' -
nameCharrequired=True args: 'Work Order' -
needed_by_workorder_idsMany2many → mrp.workordercolumn1='blocked_by_id'column2='workorder_id'copy=Falsedomain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"relation='mrp_workorder_dependencies_rel'string='Blocks' args: 'mrp.workorder' -
operation_idMany2one → mrp.routing.workcentercheck_company=Trueindex='btree_not_null' args: 'mrp.routing.workcenter', 'Operation' -
product_idMany2onerelated='production_id.product_id' -
product_trackingSelectionrelated='product_id.tracking' -
product_uom_idMany2onerelated='production_id.product_uom_id' -
product_variant_attributesMany2many → product.template.attribute.valuerelated='product_id.product_template_attribute_value_ids' args: 'product.template.attribute.value' -
production_availabilitySelectionreadonly=Truerelated='production_id.reservation_state'store=Truestring='Stock Availability' -
production_bom_idMany2one → mrp.bomrelated='production_id.bom_id' args: 'mrp.bom' -
production_dateDatetimecompute='_compute_production_date'store=True args: 'Production Date' -
production_idMany2one → mrp.productioncheck_company=Trueindex='btree'readonly=Truerequired=True args: 'mrp.production', 'Manufacturing Order' -
production_stateSelectionreadonly=Truerelated='production_id.state'string='Production State' -
progressFloatcompute='_compute_progress'digits=(16, 2) args: 'Progress Done (%)' -
qty_producedFloatcopy=Falsedefault=0.0digits='Product Unit'help='The number of products already handled by this work order' args: 'Quantity Done' -
qty_producingFloatcompute='_compute_qty_producing'digits='Product Unit'inverse='_set_qty_producing'string='Currently Produced Quantity' -
qty_productionFloatreadonly=Truerelated='production_id.product_qty' args: 'Original Production Quantity' -
qty_readyFloatcompute='_compute_qty_ready'digits='Product Unit' args: 'Quantity Ready' -
qty_remainingFloatcompute='_compute_qty_remaining'digits='Product Unit' args: 'Quantity To Be Produced' -
qty_reported_from_previous_woFloatcopy=Falsedigits='Product Unit'help='The quantity already produced awaiting allocation in the backorders chain.' args: 'Carried Quantity' -
scrap_countIntegercompute='_compute_scrap_move_count'string='Scrap Move' -
scrap_idsOne2many → stock.scrapargs: 'stock.scrap', 'workorder_id' -
sequenceIntegerdefault=_default_sequence args: 'Sequence' -
show_json_popoverBooleancompute='_compute_json_popover' args: 'Show Popover?' -
stateSelectioncompute='_compute_state'copy=Falsedefault='ready'index=Truestore=Truestring='Status' args: [('blocked', 'Blocked'), ('ready', 'To Do'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')] -
time_idsOne2many → mrp.workcenter.productivitycopy=False args: 'mrp.workcenter.productivity', 'workorder_id' -
workcenter_idMany2one → mrp.workcentercheck_company=Truegroup_expand='_read_group_workcenter_id'index=Truerequired=True args: 'mrp.workcenter', 'Work Center' -
working_stateSelectionrelated='workcenter_id.working_state'string='Workcenter Status' -
working_user_idsOne2many → res.userscompute='_compute_working_users'string='Working user on this work order.' args: 'res.users'
-
action_cancel(self) -
action_mark_as_done(self) -
action_open_wizard(self) -
action_replan(self)Replan a work order. It actually replans every "ready" or "blocked" work orders of the linked manufacturing orders. -
action_see_move_scrap(self) -
button_finish(self) -
button_pending(self) -
button_scrap(self) -
button_start(self, raise_on_invalid_state=False) -
button_unblock(self) -
create(self, vals_list)@api.model_create_multi -
end_all(self) -
end_previous(self, doall=False)@param: doall: This will close all open time lines on the open work orders when doall = True, otherwise only the one of the current user -
get_duration(self) -
get_working_duration(self)Get the additional duration for 'open times' i.e. productivity lines with no date_end. -
set_state(self, state) -
unlink(self) -
write(self, vals)
-
production_idsMany2many → mrp.productionargs: 'mrp.production'
-
process(self)
-
attached_on_mrpSelectiondefault=<expr>help='Leave hidden if document only accessible on product form.\nSelect Bill of Materials to visualise this document as a product attachment when this product is in a bill of material.'required=Trueselection=[('hidden', 'Hidden'), ('bom', 'Bill of Materials')]string='MRP : Visible at'
No public methods.
-
bom_countIntegercompute='_compute_bom_count'compute_sudo=False args: '# Bill of Material' -
bom_line_idsOne2many → mrp.bom.lineargs: 'mrp.bom.line', 'product_id', 'BoM Components' -
is_kitsBooleancompute='_compute_is_kits'search='_search_is_kits' -
mrp_product_qtyFloatcompute='_compute_mrp_product_qty'compute_sudo=Falsedigits='Product Unit' args: 'Manufactured' -
product_catalog_product_is_in_bomBooleancompute='_compute_product_is_in_bom_and_mo'search='_search_product_is_in_bom' -
product_catalog_product_is_in_moBooleancompute='_compute_product_is_in_bom_and_mo'search='_search_product_is_in_mo' -
used_in_bom_countIntegercompute='_compute_used_in_bom_count'compute_sudo=False args: '# BoM Where Used' -
variant_bom_idsOne2many → mrp.bomargs: 'mrp.bom', 'product_id', 'BOM Product Variants'
-
action_archive(self) -
action_open_quants(self) -
action_used_in_bom(self) -
action_view_bom(self) -
action_view_mos(self) -
get_components(self)Return the components list ids in case of kit product. Return the product itself otherwise -
get_total_routes(self) -
write(self, vals)
No new fields.
Public methods (0)No public methods.
-
bom_countIntegercompute='_compute_bom_count'compute_sudo=False args: '# Bill of Material' -
bom_idsOne2many → mrp.bomargs: 'mrp.bom', 'product_tmpl_id', 'Bill of Materials' -
bom_line_idsOne2many → mrp.bom.lineargs: 'mrp.bom.line', 'product_tmpl_id', 'BoM Components' -
is_kitsBooleancompute='_compute_is_kits'search='_search_is_kits' -
mrp_product_qtyFloatcompute='_compute_mrp_product_qty'compute_sudo=Falsedigits='Product Unit' args: 'Manufactured' -
used_in_bom_countIntegercompute='_compute_used_in_bom_count'compute_sudo=False args: '# of BoM Where is Used'
-
action_archive(self) -
action_used_in_bom(self) -
action_view_mos(self) -
write(self, vals)
No new fields.
Public methods (2)-
get_html(self, bom_id=False, searchQty=1, searchVariant=False)@api.model -
get_warehouses(self)@api.model
No new fields.
Public methods (1)-
get_report_values(self, production_id)@api.modelEndpoint for HTML display.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)-
create_missing_unbuild_sequences(self)@api.model
-
group_mrp_byproductsBooleanimplied_group='mrp.group_mrp_byproducts' args: 'By-Products' -
group_mrp_reception_reportBooleanimplied_group='mrp.group_mrp_reception_report' args: 'Allocation Report for Manufacturing Orders' -
group_mrp_routingsBooleanimplied_group='mrp.group_mrp_routings' args: 'MRP Work Orders' -
group_mrp_workorder_dependenciesBooleanimplied_group='mrp.group_mrp_workorder_dependencies' args: 'Work Order Dependencies' -
group_unlocked_by_defaultBooleanimplied_group='mrp.group_unlocked_by_default' args: 'Unlock Manufacturing Orders' -
module_mrp_mpsBooleanargs: 'Master Production Schedule' -
module_mrp_plmBooleanargs: 'Product Lifecycle Management (PLM)' -
module_mrp_subcontractingBooleanargs: 'Subcontracting' -
module_quality_controlBooleanargs: 'Quality' -
module_quality_control_worksheetBooleanargs: 'Quality Worksheet'
-
set_values(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
allowed_operation_idsOne2many → mrp.routing.workcenterrelated='raw_material_production_id.bom_id.operation_ids' args: 'mrp.routing.workcenter' -
bom_line_idMany2one → mrp.bom.linecheck_company=True args: 'mrp.bom.line', 'BoM Line' -
byproduct_idMany2one → mrp.bom.byproductcheck_company=Truehelp='By-product line that generated the move in a manufacturing order' args: 'mrp.bom.byproduct', 'By-products' -
consume_unbuild_idMany2one → mrp.unbuildcheck_company=Trueindex='btree_not_null' args: 'mrp.unbuild', 'Consumed Disassembly Order' -
cost_shareFloatdigits=0help="The percentage of the final production cost for this by-product. The total of all by-products' cost share must be smaller or equal to 100." args: 'Cost Share (%)' -
created_production_idMany2one → mrp.productioncheck_company=Trueindex=True args: 'mrp.production', 'Created Production Order' -
manual_consumptionBooleancompute='_compute_manual_consumption'help='When activated, then the registration of consumption for that component is recorded manually exclusively.\nIf not activated, and any of the components consumption is edited manually on the manufacturing order, Odoo assumes manual consumption also.'readonly=Falsestore=True args: 'Manual Consumption' -
operation_idMany2one → mrp.routing.workcentercheck_company=Truedomain="[('id', 'in', allowed_operation_ids)]" args: 'mrp.routing.workcenter', 'Operation To Consume' -
order_finished_lot_idsMany2many → stock.lotrelated='raw_material_production_id.lot_producing_ids'string='Finished Lot/Serial Number' args: 'stock.lot' -
product_qty_availableFloatdepends=['product_id']related='product_id.qty_available' args: 'Product On Hand Quantity' -
product_virtual_availableFloatdepends=['product_id']related='product_id.virtual_available' args: 'Product Forecasted Quantity' -
production_group_idMany2one → mrp.production.groupargs: 'mrp.production.group', 'Used for Productions' -
production_idMany2one → mrp.productioncheck_company=Trueindex='btree_not_null'ondelete='cascade' args: 'mrp.production', 'Production Order for finished products' -
raw_material_production_idMany2one → mrp.productioncheck_company=Trueindex='btree_not_null'ondelete='cascade' args: 'mrp.production', 'Production Order for components' -
should_consume_qtyFloatcompute='_compute_should_consume_qty'digits='Product Unit' args: 'Quantity To Consume' -
unbuild_idMany2one → mrp.unbuildcheck_company=Trueindex='btree_not_null' args: 'mrp.unbuild', 'Disassembly Order' -
unit_factorFloatcompute='_compute_unit_factor'store=True args: 'Unit Factor' -
workorder_idMany2one → mrp.workordercheck_company=Truecopy=Falseindex='btree_not_null' args: 'mrp.workorder', 'Work Order To Consume'
-
action_add_from_catalog_byproduct(self) -
action_add_from_catalog_raw(self) -
action_explode(self)Explodes pickings -
action_open_reference(self) -
action_show_details(self) -
create(self, vals_list)@api.model_create_multiEnforce consistent values (i.e. match _get_move_raw_values/_get_move_finished_values) for: - Manually added components/byproducts specifically values we can't set via view with "default_" - Moves from a copied MO - Backorders -
default_get(self, fields)@api.model -
write(self, vals)
-
production_idMany2one → mrp.productioncheck_company=True args: 'mrp.production', 'Production Order' -
workorder_idMany2one → mrp.workordercheck_company=Trueindex='btree_not_null' args: 'mrp.workorder', 'Work Order'
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
-
has_kitsBooleancompute='_compute_has_kits' -
production_countIntegercompute='_compute_mrp_production_ids'groups='mrp.group_mrp_user' args: 'Count of MO generated' -
production_group_idMany2one → mrp.production.grouprelated='move_ids.production_group_id'string='Production Group' args: 'mrp.production.group' -
production_idsOne2many → mrp.productioncompute='_compute_production_ids'groups='mrp.group_mrp_user'string='Manufacturing Orders' args: 'mrp.production'
-
action_detailed_operations(self) -
action_view_mrp_production(self) -
get_action_click_graph(self)@api.model
-
auto_print_done_mrp_lotBooleanhelp='If this checkbox is ticked, Odoo will automatically print the lot/SN label of a MO when it is done.' args: 'Auto Print Produced Lot Label' -
auto_print_done_mrp_product_labelsBooleanhelp='If this checkbox is ticked, Odoo will automatically print the product labels of a MO when it is done.' args: 'Auto Print Produced Product Labels' -
auto_print_done_production_orderBooleanhelp='If this checkbox is ticked, Odoo will automatically print the production order of a MO when it is done.' args: 'Auto Print Done Production Order' -
auto_print_generated_mrp_lotBooleanhelp='Automatically print the lot/SN label when the "Create a new serial/lot number" button is used.' args: 'Auto Print Generated Lot/SN Label' -
auto_print_mrp_reception_reportBooleanhelp='If this checkbox is ticked, Odoo will automatically print the allocation report of a MO when it is done and has assigned moves.' args: 'Auto Print Allocation Report' -
auto_print_mrp_reception_report_labelsBooleanhelp='If this checkbox is ticked, Odoo will automatically print the allocation report labels of a MO when it is done.' args: 'Auto Print Allocation Report Labels' -
codeSelectionondelete={'mrp_operation': <expr>}selection_add=[('mrp_operation', 'Manufacturing')] -
count_mo_in_progressIntegercompute='_get_mo_count'string='Number of Manufacturing Orders In Progress' -
count_mo_lateIntegercompute='_get_mo_count'string='Number of Manufacturing Orders Late' -
count_mo_to_closeIntegercompute='_get_mo_count'string='Number of Manufacturing Orders To Close' -
count_mo_todoIntegercompute='_get_mo_count'string='Number of Manufacturing Orders to Process' -
count_mo_waitingIntegercompute='_get_mo_count'string='Number of Manufacturing Orders Waiting' -
done_mrp_lot_label_to_printSelectiondefault='pdf' args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Lot/SN Label to Print' -
generated_mrp_lot_label_to_printSelectiondefault='pdf' args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Generated Lot/SN Label to Print' -
mrp_product_label_to_printSelectiondefault='pdf' args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Product Label to Print' -
use_create_components_lotsBooleandefault=Falsehelp='Allow to create new lot/serial numbers for the components'string='Create New Lots/Serial Numbers for Components'
-
get_mrp_stock_picking_action_picking_type(self)
No new fields.
Public methods (0)No public methods.
-
production_idsMany2many → mrp.productionstring='Productions' args: 'mrp.production', 'stock_reference_production_rel', 'reference_id', 'production_id'
No public methods.
-
bom_idMany2one → mrp.bomstring='Bill of Material' args: 'mrp.bom' -
show_bomBooleancompute='_compute_show_bom'
No public methods.
-
bom_idMany2onerelated='orderpoint_id.bom_id' -
bom_idsMany2many → mrp.bomcompute='_compute_bom_ids'store=True args: 'mrp.bom' -
show_bom_tabBooleancompute='_compute_show_bom_tab'
No public methods.
No new fields.
Public methods (0)No public methods.
-
actionSelectionondelete={'manufacture': 'cascade'}selection_add=[('manufacture', 'Manufacture')]
-
run(self, procurements, raise_user_error=True)@api.modelIf 'run' is called on a kit, this override is made in order to call the original 'run' method with the values of the components of that kit.
-
bom_idMany2one → mrp.bomcheck_company=Truedomain="[('type', '=', 'phantom'), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_template)]" args: 'mrp.bom', 'Kit' -
product_is_kitBooleanrelated='product_id.is_kits' -
product_templateMany2onerelated='product_id.product_tmpl_id' -
production_idMany2one → mrp.productioncheck_company=Trueindex='btree_not_null' args: 'mrp.production', 'Manufacturing Order' -
workorder_idMany2one → mrp.workordercheck_company=Trueindex='btree_not_null' args: 'mrp.workorder', 'Work Order'
-
do_replenish(self, values=False) -
do_scrap(self)
No new fields.
Public methods (0)No public methods.
-
manu_type_idMany2one → stock.picking.typecheck_company=Truecopy=Falsedomain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]" args: 'stock.picking.type', 'Manufacturing Operation Type' -
manufacture_mto_pull_idMany2one → stock.rulecopy=False args: 'stock.rule', 'Manufacture MTO Rule' -
manufacture_pull_idMany2one → stock.rulecopy=False args: 'stock.rule', 'Manufacture Rule' -
manufacture_stepsSelectiondefault='mrp_one_step'help='1 Step: Consume components from stock and produce.\n 2 Steps: Pick components from stock and then produce.\n 3 Steps: Pick components from stock, produce, and then move final product(s) from production area to stock.'required=True args: [('mrp_one_step', 'Manufacture (1 step)'), ('pbm', 'Pick components then manufacture (2 steps)'), ('pbm_sam', 'Pick components, manufacture, then store products (3 steps)')], 'Manufacture' -
manufacture_to_resupplyBooleancompute='_compute_manufacture_to_resupply'default=Truehelp='When products are manufactured, they can be manufactured in this warehouse.'inverse='_inverse_manufacture_to_resupply' args: 'Manufacture to Resupply' -
pbm_loc_idMany2one → stock.locationcheck_company=True args: 'stock.location', 'Picking before Manufacturing Location' -
pbm_mto_pull_idMany2one → stock.rulecopy=False args: 'stock.rule', 'Picking Before Manufacturing MTO Rule' -
pbm_route_idMany2one → stock.routecopy=Falseondelete='restrict' args: 'stock.route', 'Picking Before Manufacturing Route' -
pbm_type_idMany2one → stock.picking.typecheck_company=Truecopy=False args: 'stock.picking.type', 'Picking Before Manufacturing Operation Type' -
sam_loc_idMany2one → stock.locationcheck_company=True args: 'stock.location', 'Stock after Manufacturing Location' -
sam_rule_idMany2one → stock.rulecopy=False args: 'stock.rule', 'Stock After Manufacturing Rule' -
sam_type_idMany2one → stock.picking.typecheck_company=Truecopy=False args: 'stock.picking.type', 'Stock After Manufacturing Operation Type'
-
get_rules_dict(self) -
write(self, vals)
-
bom_idMany2one → mrp.bomcheck_company=Truedomain="[('type', '=', 'normal'), '&', '|', ('company_id', '=', company_id), ('company_id', '=', False), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_tmpl_id)]"inverse='_inverse_bom_id'string='Bill of Materials' args: 'mrp.bom' -
bom_id_placeholderCharcompute='_compute_bom_id_placeholder' -
effective_bom_idMany2one → mrp.bomcompute='_compute_effective_bom_id'help='Either the Bill of Materials set directly or the one computed to be used by this replenishment'search='_search_effective_bom_id'store=Falsestring='Effective Bill of Materials' args: 'mrp.bom' -
show_bomBooleancompute='_compute_show_bom' args: 'Show BoM column'
No public methods.
No new fields.
Public methods (1)-
check_product_is_not_kit(self)@api.constrains('product_id')
-
unbuild_idMany2one → mrp.unbuildargs: 'mrp.unbuild', 'Unbuild'
-
action_done(self)
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…