| 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 | field | 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 | filter | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | filter | 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 | xpath | Inherits mrp_production_workorder_tree_editable_view |
mrp_production_workorder_tree_view |
mrp.production.work.order.list | mrp.workorder | xpath | 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 | xpath | Inherits mrp_routing_workcenter_tree_view |
mrp_routing_workcenter_copy_to_bom_tree_view |
mrp.routing.workcenter.copy_to_bom.list | mrp.routing.workcenter | xpath | 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 | sheet | Inherits product.product_document_form |
product_product_form_view_bom_button |
product.product.procurement | product.product | xpath | Inherits stock.product_form_view_procurement_button |
product_template_form_view_bom_button |
product.template.procurement | product.template | button | Inherits stock.product_template_form_view_procurement_button |
product_view_search_catalog |
product.view.search.catalog.inherit.mrp | product.product | filter | 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 | xpath | Inherits base.res_config_settings_view_form |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | filter | Inherits stock.stock_move_line_view_search |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | xpath | 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 | xpath | Inherits stock.stock_scrap_search_view |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | 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 | field | 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 | xpath | 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 | xpath | 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 | xpath | Inherits stock.view_picking_form |
view_picking_type_form_inherit_mrp |
Operation Types | stock.picking.type | xpath | 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 | xpath | Inherits stock.view_stock_move_line_operation_tree |
view_stock_move_operations_finished |
stock.move.operations.finished.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_stock_move_operations_raw |
stock.move.operations.raw.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_stock_replenishment_info_stock_mrp_inherit |
stock.replenishment.information.mrp.stock.inherit | stock.replenishment.info | xpath | Inherits stock.view_stock_replenishment_info |
view_stock_rule_form |
stock.rule.form.inherit.mrp | stock.rule | field | Inherits stock.view_stock_rule_form |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | xpath | Inherits stock.view_warehouse |
view_warehouse_orderpoint_tree_editable_inherited_purchase |
stock.warehouse.orderpoint.list.editable.inherit.purchase | stock.warehouse.orderpoint | field | 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 |
mo_id
Many2one → mrp.production
ondelete='cascade'
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits='Product Unit'
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
allow_operation_dependencies
Boolean
help='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_size
Float
default=1.0
digits='Product Unit'
help='All automatically generated manufacturing orders for this product will be of this size.'
args: 'Batch Size'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
byproduct_ids
One2many → mrp.bom.byproduct
copy=True
args: 'mrp.bom.byproduct', 'bom_id', 'By-products'
code
Char
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
consumption
Selection
default='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=True
string='Flexible Consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
days_to_prepare_mo
Integer
default=0
help='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_size
Boolean
default=False
operation_count
Integer
compute='_compute_operation_count'
args: 'Operations Count'
operation_ids
One2many → mrp.routing.workcenter
copy=True
args: 'mrp.routing.workcenter', 'bom_id', 'Operations'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('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_ids
Many2many → product.template.attribute.value
compute='_compute_possible_product_template_attribute_value_ids'
args: 'product.template.attribute.value'
produce_delay
Integer
default=0
help='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_id
Many2one → product.product
check_company=True
domain="['&', ('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_qty
Float
default=1.0
digits='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_id
Many2one → product.template
check_company=True
domain="[('type', '=', 'consu')]"
index=True
required=True
args: 'product.template', 'Product'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Unit'
ready_to_produce
Selection
default='all_available'
required=True
string='Manufacturing Readiness'
args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')]
sequence
Integer
show_copy_operations_button
Boolean
compute='_compute_show_copy_operations_button'
help="Technical field used to control the visibility of the 'Copy Existing Operations' button."
show_set_bom_button
Boolean
compute='_compute_show_set_bom_button'
type
Selection
default='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)
copy(self, default=None)
create(self, vals_list)
explode(self, product, quantity, picking_type=False, never_attribute_values=False)
get_import_templates(self)
name_create(self, name)
onchange_bom_structure(self)
onchange_product_tmpl_id(self)
write(self, vals)
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
args: 'mrp.bom', 'BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
cost_share
Float
digits=(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_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Produced in Operation'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'By-product'
product_qty
Float
default=1.0
digits='Product Unit'
required=True
args: 'Quantity'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit'
sequence
Integer
action_add_from_catalog(self)
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
attachments_count
Integer
compute='_compute_attachments_count'
args: 'Attachments Count'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('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_id
Many2one → product.template
related='bom_id.product_tmpl_id'
args: 'product.template', 'Parent Product Template'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
index=True
required=True
args: 'product.product', 'Component'
product_qty
Float
default=1.0
digits='Product Unit'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
index=True
related='product_id.product_tmpl_id'
store=True
args: 'product.template', 'Product Template'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
required=True
args: 'uom.uom', 'Unit'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
tracking
Selection
related='product_id.tracking'
action_add_from_catalog(self)
action_see_attachments(self)
create(self, vals_list)
onchange_product_id(self)
consumption
Selection
compute='_compute_consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
mrp_consumption_warning_line_ids
One2many → mrp.consumption.warning.line
mrp_production_count
Integer
compute='_compute_mrp_production_count'
mrp_production_ids
Many2many → mrp.production
action_cancel(self)
action_confirm(self)
action_set_qty(self)
consumption
Selection
related='mrp_production_id.consumption'
mrp_consumption_warning_id
Many2one → mrp.consumption.warning
ondelete='cascade'
readonly=True
required=True
args: 'mrp.consumption.warning', 'Parent Wizard'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
product_consumed_qty_uom
Float
readonly=True
args: 'Consumed'
product_expected_qty_uom
Float
readonly=True
args: 'To Consume'
product_id
Many2one → product.product
readonly=True
required=True
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit'
No public methods.
all_move_ids
One2many → stock.move
all_move_raw_ids
One2many → stock.move
allow_workorder_dependencies
Boolean
allowed_uom_ids
Many2many → uom.uom
compute='_compute_allowed_uom_ids'
args: 'uom.uom'
backorder_sequence
Integer
copy=False
default=0
help='Backorder sequence, if equals to 0 means there is not related backorder'
args: 'Backorder Sequence'
bom_id
Many2one → mrp.bom
check_company=True
compute='_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=True
readonly=False
store=True
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
components_availability
Char
compute='_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_state
Selection
compute='_compute_components_availability'
search='_search_components_availability_state'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late'), ('unavailable', 'Not Available')]
consumption
Selection
default='flexible'
readonly=True
required=True
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
date_deadline
Datetime
compute='_compute_date_deadline'
copy=False
help='Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time.'
readonly=False
store=True
args: 'Deadline'
date_finished
Datetime
compute='_compute_date_finished'
copy=False
default=_get_default_date_finished
help='Date you expect to finish production or actual date you finished production.'
store=True
args: 'End'
date_start
Datetime
copy=False
default=_get_default_date_start
help='Date you plan to start production or date you actually started production.'
index=True
required=True
args: 'Start'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
delivery_count
Integer
compute='_compute_picking_ids'
string='Delivery Orders'
duration
Float
compute='_compute_duration'
help='Total real duration (in minutes)'
args: 'Real Duration'
duration_expected
Float
compute='_compute_duration_expected'
help='Total expected duration (in minutes)'
args: 'Expected Duration'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
forecasted_issue
Boolean
compute='_compute_forecasted_issue'
is_delayed
Boolean
compute='_compute_is_delayed'
search='_search_is_delayed'
is_locked
Boolean
copy=False
default=_get_default_is_locked
args: 'Is Locked'
is_outdated_bom
Boolean
help='The BoM has been updated since creation of the MO'
args: 'Outdated BoM'
is_planned
Boolean
compute='_compute_is_planned'
store=True
args: 'Its Operations are Planned'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_locations'
domain="[('usage','=','internal')]"
help='Location where the system will stock the finished products.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Finished Products Location'
location_final_id
Many2one → stock.location
location_src_id
Many2one → stock.location
check_company=True
compute='_compute_locations'
domain="[('usage','=','internal')]"
help='Location where the system will look for components.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Components Location'
lot_producing_ids
Many2many → stock.lot
check_company=True
copy=False
domain="[('product_id', '=', product_id)]"
string='Lot/Serial Number'
args: 'stock.lot'
move_byproduct_ids
One2many → stock.move
compute='_compute_move_byproduct_ids'
inverse='_set_move_byproduct_ids'
args: 'stock.move'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
compute='_compute_move_finished_ids'
copy=False
domain=[('location_dest_usage', '!=', 'inventory')]
readonly=False
store=True
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
compute='_compute_move_raw_ids'
copy=False
domain=[('location_dest_usage', '!=', 'inventory')]
readonly=False
store=True
args: 'stock.move', 'raw_material_production_id', 'Components'
mrp_production_backorder_count
Integer
compute='_compute_mrp_production_backorder'
args: 'Count of linked backorder'
mrp_production_child_count
Integer
compute='_compute_mrp_production_child_count'
args: 'Number of generated MO'
mrp_production_source_count
Integer
compute='_compute_mrp_production_source_count'
args: 'Number of source MO'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
never_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[\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_id
Many2one → stock.warehouse.orderpoint
copy=False
index='btree_not_null'
args: 'stock.warehouse.orderpoint', 'Orderpoint'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
args: 'Source'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
string='Picking associated to this manufacturing order'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
copy=True
domain="[('code', '=', 'mrp_operation')]"
index=True
precompute=True
readonly=False
required=True
store=True
args: 'stock.picking.type', 'Operation Type'
priority
Selection
default='0'
help='Components will be reserved first for the MO with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
product_description_variants
Char
product_id
Many2one → product.product
check_company=True
compute='_compute_product_id'
copy=True
domain="[('type', '=', 'consu')]"
precompute=True
readonly=False
required=True
store=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=True
digits='Product Unit'
precompute=True
readonly=False
required=True
store=True
tracking=True
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
compute='_compute_uom_id'
copy=True
domain="[('id', 'in', allowed_uom_ids)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit'
product_uom_qty
Float
compute='_compute_product_uom_qty'
store=True
string='Total Quantity'
product_variant_attributes
Many2many → product.template.attribute.value
related='product_id.product_template_attribute_value_ids'
args: 'product.template.attribute.value'
production_capacity
Float
compute='_compute_production_capacity'
help='Quantity that can be produced with the current stock of components'
production_group_id
Many2one → mrp.production.group
copy=False
index=True
args: 'mrp.production.group', 'Production Group'
production_location_id
Many2one → stock.location
compute='_compute_production_location'
store=True
args: 'stock.location', 'Production Location'
propagate_cancel
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
qty_producing
Float
copy=False
digits='Product Unit'
string='Quantity Producing'
reference_ids
Many2many → stock.reference
copy=False
args: 'stock.reference', 'stock_reference_production_rel', 'production_id', 'reference_id', 'References'
reservation_state
Selection
compute='_compute_reservation_state'
copy=False
help='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=True
readonly=True
store=True
string='MO Readiness'
tracking=True
args: [('confirmed', 'Waiting'), ('assigned', 'Ready'), ('waiting', 'Waiting Another Operation')]
reserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can reserve quantities'
args: 'Allowed to Reserve Production'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
search_date_category
Selection
readonly=True
search='_search_date_category'
store=False
string='Date Category'
args: [('before', 'Before'), ('yesterday', 'Yesterday'), ('today', 'Today'), ('day_1', 'Tomorrow'), ('day_2', 'The day after tomorrow'), ('after', 'After')]
serial_numbers_count
Integer
compute='_compute_serial_numbers_count'
args: 'Count of serial numbers'
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
show_generate_bom
Boolean
compute='_compute_show_generate_bom'
args: 'Show Generate BOM'
show_lock
Boolean
compute='_compute_show_lock'
args: 'Show Lock/unlock buttons'
show_lot_ids
Boolean
compute='_compute_show_lot_ids'
args: 'Display the serial number shortcut on the moves'
show_produce
Boolean
compute='_compute_show_produce'
help='Technical field to check if produce button can be shown'
show_produce_all
Boolean
compute='_compute_show_produce'
help='Technical field to check if produce all button can be shown'
state
Selection
compute='_compute_state'
copy=False
help=" * 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=True
readonly=True
store=True
string='State'
tracking=True
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('progress', 'In Progress'), ('to_close', 'To Close'), ('done', 'Done'), ('cancel', 'Cancelled')]
unbuild_count
Integer
compute='_compute_unbuild_count'
string='Number of Unbuilds'
unbuild_ids
One2many → mrp.unbuild
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Production'
use_create_components_lots
Boolean
related='picking_type_id.use_create_components_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
args: 'res.users', 'Responsible'
valid_product_template_attribute_line_ids
Many2many
related='product_tmpl_id.valid_product_template_attribute_line_ids'
warehouse_id
Many2one
related='location_src_id.warehouse_id'
workcenter_id
Many2one → mrp.workcenter
store=False
args: 'mrp.workcenter'
workorder_ids
One2many → mrp.workorder
compute='_compute_workorder_ids'
copy=True
readonly=False
store=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_clear_lot_producing_ids(self)
action_confirm(self)
action_generate_bom(self)
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)
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)
button_scrap(self)
button_unbuild(self)
button_unplan(self)
copy_data(self, default=None)
create(self, vals_list)
default_get(self, fields)
do_unreserve(self)
get_empty_list_help(self, help_message)
pre_button_mark_done(self)
set_qty_producing(self)
unlink(self)
write(self, vals)
mrp_production_backorder_line_ids
One2many → mrp.production.backorder.line
string='Backorder Confirmation Lines'
args: 'mrp.production.backorder.line', 'mrp_production_backorder_id'
mrp_production_ids
Many2many → mrp.production
show_backorder_lines
Boolean
compute='_compute_show_backorder_lines'
args: 'Show backorder lines'
action_backorder(self)
action_close_mo(self)
mrp_production_backorder_id
Many2one → mrp.production.backorder
ondelete='cascade'
required=True
args: 'mrp.production.backorder', 'MO Backorder'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
to_backorder
Boolean
No public methods.
child_ids
Many2many → mrp.production.group
string='Child Manufacturing Orders'
args: 'mrp.production.group', 'mrp_production_group_rel', 'parent_group_id', 'child_group_id'
name
Char
index='btree'
required=True
args: 'Name'
parent_ids
Many2many → mrp.production.group
string='Parent Manufacturing Orders'
args: 'mrp.production.group', 'mrp_production_group_rel', 'child_group_id', 'parent_group_id'
production_ids
One2many → mrp.production
string='Productions'
args: 'mrp.production', 'production_group_id'
No public methods.
lot_name
Char
compute='_compute_lot_name'
readonly=False
store=True
args: 'First SN'
lot_quantity
Integer
compute='_compute_lot_quantity'
readonly=False
store=True
args: 'Number of SN'
production_id
Many2one → mrp.production
serial_numbers
Text
compute='_compute_lot_name'
readonly=False
store=True
args: 'Produced Serial Numbers'
workorder_id
Many2one → mrp.workorder
action_apply(self)
action_generate_serial_numbers(self)
action_split_and_assign_serials(self)
max_batch_size
Float
compute='_compute_max_batch_size'
digits='Product Unit'
readonly=False
args: 'Max Batch Size'
num_splits
Integer
compute='_compute_num_splits'
readonly=True
args: '# Splits'
product_id
Many2one
related='production_id.product_id'
product_qty
Float
related='production_id.product_qty'
product_uom_id
Many2one
related='production_id.product_uom_id'
production_capacity
Float
related='production_id.production_capacity'
production_detailed_vals_ids
One2many → mrp.production.split.line
compute='_compute_details'
readonly=False
store=True
args: 'mrp.production.split.line', 'mrp_production_split_id', 'Split Details'
production_id
Many2one → mrp.production
readonly=True
args: 'mrp.production', 'Manufacturing Order'
production_split_multi_id
Many2one → mrp.production.split.multi
valid_details
Boolean
compute='_compute_valid_details'
args: 'Valid'
action_prepare_split(self)
action_return_to_list(self)
action_split(self)
date
Datetime
mrp_production_split_id
Many2one → mrp.production.split
ondelete='cascade'
required=True
args: 'mrp.production.split', 'Split Production'
quantity
Float
digits='Product Unit'
required=True
args: 'Quantity To Produce'
user_id
Many2one → res.users
domain=<expr>
args: 'res.users', 'Responsible'
No public methods.
production_ids
One2many → mrp.production.split
No public methods.
active
Boolean
default=True
allow_operation_dependencies
Boolean
related='bom_id.allow_operation_dependencies'
blocked_by_operation_ids
Many2many → mrp.routing.workcenter
column1='operation_id'
column2='blocked_by_id'
copy=False
domain="[('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_id
Many2one → mrp.bom
check_company=True
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Bill of Material'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → res.company
related='bom_id.company_id'
args: 'res.company', 'Company'
cost
Float
compute='_compute_cost'
args: 'Cost'
cost_mode
Selection
default='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_number
Integer
compute='_compute_time_cycle'
args: 'Repetitions'
name
Char
required=True
args: 'Operation'
needed_by_operation_ids
Many2many → mrp.routing.workcenter
column1='blocked_by_id'
column2='operation_id'
copy=False
domain="[('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_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
show_time_total
Boolean
compute='_compute_time_cycle'
args: 'Show Total Duration?'
time_computed_on
Char
compute='_compute_time_computed_on'
args: 'Computed on last'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Cycles'
time_cycle_manual
Float
default=60
help="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_mode
Selection
default='manual'
string='Duration Computation'
tracking=True
args: [('manual', 'Fixed'), ('auto', 'Computed')]
time_mode_batch
Integer
default=10
args: 'Based on'
time_total
Float
compute='_compute_time_cycle'
args: 'Total Duration'
workcenter_id
Many2one → mrp.workcenter
check_company=True
index=True
required=True
tracking=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='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)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
compute='_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_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage','=','internal')]"
help='Location where you want to send the components resulting from the unbuild order.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage','=','internal')]"
help='Location where the product you want to unbuild is.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id),('id', 'in', lot_producing_ids)]"
args: 'stock.lot', 'Lot/Serial Number'
lot_producing_ids
Many2many → stock.lot
related='mo_id.lot_producing_ids'
string='Lot/Serial Numbers'
args: 'stock.lot'
mo_bom_id
Many2one → mrp.bom
related='mo_id.bom_id'
args: 'mrp.bom', 'Bill of Material used on the Production Order'
mo_id
Many2one → mrp.production
check_company=True
domain="[('state', '=', 'done'), ('product_id', '=?', product_id), ('bom_id', '=?', bom_id)]"
index='btree_not_null'
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
check_company=True
compute='_compute_product_id'
domain="[('type', '=', 'consu')]"
precompute=True
readonly=False
required=True
store=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
default=1.0
digits='Product Unit'
precompute=True
readonly=False
required=True
store=True
args: 'Quantity'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit'
state
Selection
default='draft'
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals_list)
active
Boolean
default=True
readonly=False
related='resource_id.active'
store=True
args: 'Active'
alternative_workcenter_ids
Many2many → mrp.workcenter
check_company=True
domain="[('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_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hours over the last month'
args: 'Blocked Time'
capacity_ids
One2many → mrp.workcenter.capacity
copy=True
help='Specific number of pieces that can be produced in parallel per product.'
string='Product Capacities'
args: 'mrp.workcenter.capacity', 'workcenter_id'
code
Char
copy=False
args: 'Code'
color
Integer
costs_hour
Float
default=0.0
help='Hourly processing cost.'
string='Cost per hour'
tracking=True
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
required=True
args: 'res.currency', 'Currency'
has_routing_lines
Boolean
compute='_compute_has_routing_lines'
help='Technical field for workcenter views'
kanban_dashboard_graph
Text
compute='_compute_kanban_dashboard_graph'
name
Char
readonly=False
related='resource_id.name'
store=True
args: 'Work Center'
note
Html
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='Overall Effective Efficiency Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hours over the last month'
args: 'Productive Time'
resource_calendar_id
Many2one
check_company=True
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
tag_ids
Many2many → mrp.workcenter.tag
time_efficiency
Float
default=100
readonly=False
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
time_stop
Float
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status'
workorder_blocked_count
Integer
compute='_compute_workorder_count'
args: 'Total Pending Orders'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_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)
unblock(self)
write(self, vals)
capacity
Float
help='Number of pieces that can be produced in parallel for this product or for all, depending on the unit.'
args: 'Capacity'
product_id
Many2one → product.product
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
precompute=True
readonly=False
required=True
store=True
string='Unit'
args: 'uom.uom'
time_start
Float
default=_default_time_start
help='Time in minutes for the setup.'
args: 'Setup Time (minutes)'
time_stop
Float
default=_default_time_stop
help='Time in minutes for the cleaning.'
args: 'Cleanup Time (minutes)'
workcenter_id
Many2one → mrp.workcenter
index=True
required=True
string='Work Center'
args: 'mrp.workcenter'
No public methods.
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company'
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
string='Effectiveness'
production_id
Many2one → mrp.production
readonly=True
related='workorder_id.production_id'
string='Manufacturing Order'
args: 'mrp.production'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
check_company=True
index=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
check_company=True
index=True
args: 'mrp.workorder', 'Work Order'
button_block(self)
loss_id
Many2one → mrp.workcenter.productivity.loss.type
domain=[('loss_type', 'in', ['quality', 'availability'])]
string='Category'
args: 'mrp.workcenter.productivity.loss.type'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
string='Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
translate=True
args: 'Blocking Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
loss_type
Selection
default='availability'
required=True
string='Category'
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
No public methods.
color
Integer
default=_get_default_color
args: 'Color Index'
name
Char
required=True
args: 'Tag Name'
No public methods.
allow_workorder_dependencies
Boolean
related='production_id.allow_workorder_dependencies'
barcode
Char
compute='_compute_barcode'
store=True
blocked_by_workorder_ids
Many2many → mrp.workorder
column1='workorder_id'
column2='blocked_by_id'
copy=False
domain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"
relation='mrp_workorder_dependencies_rel'
string='Blocked By'
args: 'mrp.workorder'
company_id
Many2one
related='production_id.company_id'
consumption
Selection
related='production_id.consumption'
cost_mode
Selection
default='actual'
args: [('actual', 'Actual'), ('estimated', 'Estimated')]
costs_hour
Float
aggregator='avg'
default=0.0
string='Cost per hour'
date_finished
Datetime
compute='_compute_dates'
copy=False
inverse='_set_dates'
store=True
args: 'End'
date_start
Datetime
compute='_compute_dates'
copy=False
inverse='_set_dates'
store=True
args: 'Start'
duration
Float
compute='_compute_duration'
copy=False
inverse='_set_duration'
readonly=False
store=True
args: 'Real Duration'
duration_expected
Float
compute='_compute_duration_expected'
digits=(16, 2)
readonly=False
store=True
args: 'Expected Duration'
duration_percent
Integer
aggregator='avg'
compute='_compute_duration'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
aggregator='avg'
compute='_compute_duration'
readonly=True
store=True
args: 'Duration Per Unit'
finished_lot_ids
Many2many → stock.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
readonly=False
related='production_id.lot_producing_ids'
string='Lot/Serial Numbers'
args: 'stock.lot'
is_planned
Boolean
related='production_id.is_planned'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_working_users'
args: 'Is the Current User Working'
json_popover
Char
compute='_compute_json_popover'
args: 'Popover Data JSON'
last_working_user_id
Many2one → res.users
compute='_compute_working_users'
string='Last user that worked on this work order.'
args: 'res.users'
leave_id
Many2one → resource.calendar.leaves
check_company=True
copy=False
help='Slot into workcenter calendar once planned'
args: 'resource.calendar.leaves'
move_finished_ids
One2many → stock.move
domain=[('raw_material_production_id', '=', False), ('production_id', '!=', False)]
args: 'stock.move', 'workorder_id', 'Finished Moves'
move_line_ids
One2many → stock.move.line
help='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_ids
One2many → stock.move
domain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)]
args: 'stock.move', 'workorder_id', 'Raw Moves'
name
Char
required=True
args: 'Work Order'
needed_by_workorder_ids
Many2many → mrp.workorder
column1='blocked_by_id'
column2='workorder_id'
copy=False
domain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"
relation='mrp_workorder_dependencies_rel'
string='Blocks'
args: 'mrp.workorder'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
index='btree_not_null'
args: 'mrp.routing.workcenter', 'Operation'
product_id
Many2one
related='production_id.product_id'
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one
related='production_id.product_uom_id'
product_variant_attributes
Many2many → product.template.attribute.value
related='product_id.product_template_attribute_value_ids'
args: 'product.template.attribute.value'
production_availability
Selection
readonly=True
related='production_id.reservation_state'
store=True
string='Stock Availability'
production_bom_id
Many2one → mrp.bom
related='production_id.bom_id'
args: 'mrp.bom'
production_date
Datetime
compute='_compute_production_date'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
check_company=True
index='btree'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
production_state
Selection
readonly=True
related='production_id.state'
string='Production State'
progress
Float
compute='_compute_progress'
digits=(16, 2)
args: 'Progress Done (%)'
qty_produced
Float
copy=False
default=0.0
digits='Product Unit'
help='The number of products already handled by this work order'
args: 'Quantity Done'
qty_producing
Float
compute='_compute_qty_producing'
digits='Product Unit'
inverse='_set_qty_producing'
string='Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_ready
Float
compute='_compute_qty_ready'
digits='Product Unit'
args: 'Quantity Ready'
qty_remaining
Float
compute='_compute_qty_remaining'
digits='Product Unit'
args: 'Quantity To Be Produced'
qty_reported_from_previous_wo
Float
copy=False
digits='Product Unit'
help='The quantity already produced awaiting allocation in the backorders chain.'
args: 'Carried Quantity'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
sequence
Integer
default=_default_sequence
args: 'Sequence'
show_json_popover
Boolean
compute='_compute_json_popover'
args: 'Show Popover?'
state
Selection
compute='_compute_state'
copy=False
default='ready'
index=True
store=True
string='Status'
args: [('blocked', 'Blocked'), ('ready', 'To Do'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
copy=False
args: 'mrp.workcenter.productivity', 'workorder_id'
workcenter_id
Many2one → mrp.workcenter
check_company=True
group_expand='_read_group_workcenter_id'
index=True
required=True
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
related='workcenter_id.working_state'
string='Workcenter Status'
working_user_ids
One2many → res.users
compute='_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)
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)
end_all(self)
end_previous(self, doall=False)
get_duration(self)
get_working_duration(self)
set_state(self, state)
unlink(self)
write(self, vals)
production_ids
Many2many → mrp.production
process(self)
attached_on_mrp
Selection
default=<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=True
selection=[('hidden', 'Hidden'), ('bom', 'Bill of Materials')]
string='MRP : Visible at'
No public methods.
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
search='_search_is_kits'
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
digits='Product Unit'
args: 'Manufactured'
product_catalog_product_is_in_bom
Boolean
compute='_compute_product_is_in_bom_and_mo'
search='_search_product_is_in_bom'
product_catalog_product_is_in_mo
Boolean
compute='_compute_product_is_in_bom_and_mo'
search='_search_product_is_in_mo'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# BoM Where Used'
variant_bom_ids
One2many → mrp.bom
action_archive(self)
action_open_quants(self)
action_used_in_bom(self)
action_view_bom(self)
action_view_mos(self)
get_components(self)
get_total_routes(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
search='_search_is_kits'
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
digits='Product Unit'
args: 'Manufactured'
used_in_bom_count
Integer
compute='_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)
get_warehouses(self)
No new fields.
Public methods (1)get_report_values(self, production_id)
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)
group_mrp_byproducts
Boolean
implied_group='mrp.group_mrp_byproducts'
args: 'By-Products'
group_mrp_reception_report
Boolean
implied_group='mrp.group_mrp_reception_report'
args: 'Allocation Report for Manufacturing Orders'
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'MRP Work Orders'
group_mrp_workorder_dependencies
Boolean
implied_group='mrp.group_mrp_workorder_dependencies'
args: 'Work Order Dependencies'
group_unlocked_by_default
Boolean
implied_group='mrp.group_unlocked_by_default'
args: 'Unlock Manufacturing Orders'
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_subcontracting
Boolean
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
set_values(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='raw_material_production_id.bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_line_id
Many2one → mrp.bom.line
check_company=True
args: 'mrp.bom.line', 'BoM Line'
byproduct_id
Many2one → mrp.bom.byproduct
check_company=True
help='By-product line that generated the move in a manufacturing order'
args: 'mrp.bom.byproduct', 'By-products'
consume_unbuild_id
Many2one → mrp.unbuild
check_company=True
index='btree_not_null'
args: 'mrp.unbuild', 'Consumed Disassembly Order'
cost_share
Float
digits=0
help="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_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Created Production Order'
manual_consumption
Boolean
compute='_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=False
store=True
args: 'Manual Consumption'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Operation To Consume'
order_finished_lot_ids
Many2many → stock.lot
related='raw_material_production_id.lot_producing_ids'
string='Finished Lot/Serial Number'
args: 'stock.lot'
product_qty_available
Float
depends=['product_id']
related='product_id.qty_available'
args: 'Product On Hand Quantity'
product_virtual_available
Float
depends=['product_id']
related='product_id.virtual_available'
args: 'Product Forecasted Quantity'
production_group_id
Many2one → mrp.production.group
production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
ondelete='cascade'
args: 'mrp.production', 'Production Order for finished products'
raw_material_production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
ondelete='cascade'
args: 'mrp.production', 'Production Order for components'
should_consume_qty
Float
compute='_compute_should_consume_qty'
digits='Product Unit'
args: 'Quantity To Consume'
unbuild_id
Many2one → mrp.unbuild
check_company=True
index='btree_not_null'
args: 'mrp.unbuild', 'Disassembly Order'
unit_factor
Float
compute='_compute_unit_factor'
store=True
args: 'Unit Factor'
workorder_id
Many2one → mrp.workorder
check_company=True
copy=False
index='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)
action_open_reference(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields)
write(self, vals)
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order'
workorder_id
Many2one → mrp.workorder
check_company=True
index='btree_not_null'
args: 'mrp.workorder', 'Work Order'
create(self, vals_list)
write(self, vals)
has_kits
Boolean
compute='_compute_has_kits'
production_count
Integer
compute='_compute_mrp_production_ids'
groups='mrp.group_mrp_user'
args: 'Count of MO generated'
production_group_id
Many2one → mrp.production.group
related='move_ids.production_group_id'
string='Production Group'
args: 'mrp.production.group'
production_ids
One2many → mrp.production
compute='_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)
auto_print_done_mrp_lot
Boolean
help='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_labels
Boolean
help='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_order
Boolean
help='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_lot
Boolean
help='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_report
Boolean
help='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_labels
Boolean
help='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'
code
Selection
ondelete={'mrp_operation': <expr>}
selection_add=[('mrp_operation', 'Manufacturing')]
count_mo_in_progress
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders In Progress'
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_to_close
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders To Close'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
done_mrp_lot_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Lot/SN Label to Print'
generated_mrp_lot_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Generated Lot/SN Label to Print'
mrp_product_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Product Label to Print'
use_create_components_lots
Boolean
default=False
help='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_ids
Many2many → mrp.production
string='Productions'
args: 'mrp.production', 'stock_reference_production_rel', 'reference_id', 'production_id'
No public methods.
bom_id
Many2one → mrp.bom
string='Bill of Material'
args: 'mrp.bom'
show_bom
Boolean
compute='_compute_show_bom'
No public methods.
bom_id
Many2one
related='orderpoint_id.bom_id'
bom_ids
Many2many → mrp.bom
compute='_compute_bom_ids'
store=True
args: 'mrp.bom'
show_bom_tab
Boolean
compute='_compute_show_bom_tab'
No public methods.
No new fields.
Public methods (0)No public methods.
action
Selection
ondelete={'manufacture': 'cascade'}
selection_add=[('manufacture', 'Manufacture')]
run(self, procurements, raise_user_error=True)
bom_id
Many2one → mrp.bom
check_company=True
domain="[('type', '=', 'phantom'), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_template)]"
args: 'mrp.bom', 'Kit'
product_is_kit
Boolean
related='product_id.is_kits'
product_template
Many2one
related='product_id.product_tmpl_id'
production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
check_company=True
index='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_id
Many2one → stock.picking.type
check_company=True
copy=False
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Manufacture MTO Rule'
manufacture_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Manufacture Rule'
manufacture_steps
Selection
default='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_resupply
Boolean
compute='_compute_manufacture_to_resupply'
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
inverse='_inverse_manufacture_to_resupply'
args: 'Manufacture to Resupply'
pbm_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Picking before Manufacturing Location'
pbm_mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Picking Before Manufacturing MTO Rule'
pbm_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Picking Before Manufacturing Route'
pbm_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Picking Before Manufacturing Operation Type'
sam_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Stock after Manufacturing Location'
sam_rule_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Stock After Manufacturing Rule'
sam_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Stock After Manufacturing Operation Type'
get_rules_dict(self)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
domain="[('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_placeholder
Char
compute='_compute_bom_id_placeholder'
effective_bom_id
Many2one → mrp.bom
compute='_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=False
string='Effective Bill of Materials'
args: 'mrp.bom'
show_bom
Boolean
compute='_compute_show_bom'
args: 'Show BoM column'
No public methods.
No new fields.
Public methods (1)check_product_is_not_kit(self)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| 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_tree_view |
mrp.bom.list | mrp.bom | list | New |
mrp_product_product_search_view |
mrp.product.product.search | product.product | filter | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | filter | 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 | xpath | Inherits mrp_production_workorder_tree_editable_view |
mrp_production_workorder_tree_view |
mrp.production.work.order.list | mrp.workorder | xpath | 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 | xpath | Inherits mrp_routing_workcenter_tree_view |
mrp_routing_workcenter_copy_to_bom_tree_view |
mrp.routing.workcenter.copy_to_bom.list | mrp.routing.workcenter | xpath | 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_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 | sheet | Inherits product.product_document_form |
product_product_form_view_bom_button |
product.product.procurement | product.product | xpath | Inherits stock.product_form_view_procurement_button |
product_template_form_view_bom_button |
product.template.procurement | product.template | button | Inherits stock.product_template_form_view_procurement_button |
product_view_search_catalog |
product.view.search.catalog.inherit.mrp | product.product | filter | 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 | xpath | Inherits base.res_config_settings_view_form |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | filter | Inherits stock.stock_move_line_view_search |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | xpath | 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 | xpath | Inherits stock.stock_scrap_search_view |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | 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_mrp_batch_produce_form |
view_mrp_batch_produce_form | mrp.batch.produce | form | New |
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 | xpath | 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_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 | xpath | 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 | xpath | Inherits stock.view_picking_form |
view_picking_type_form_inherit_mrp |
Operation Types | stock.picking.type | xpath | 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_detailed_operation_tree_mrp |
stock.move.line.operations.list.mrp | stock.move.line | xpath | Inherits stock.view_stock_move_line_detailed_operation_tree |
view_stock_move_line_operation_tree_finished |
stock.move.line.operation.list.finished | stock.move.line | xpath | Inherits stock.view_stock_move_line_operation_tree |
view_stock_move_operations_finished |
stock.move.operations.finished.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_stock_move_operations_raw |
stock.move.operations.raw.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_stock_rule_form |
stock.rule.form.inherit.mrp | stock.rule | field | Inherits stock.view_stock_rule_form |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | xpath | Inherits stock.view_warehouse |
view_warehouse_orderpoint_tree_editable_inherited_purchase |
stock.warehouse.orderpoint.list.editable.inherit.purchase | stock.warehouse.orderpoint | field | 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 |
mo_id
Many2one → mrp.production
ondelete='cascade'
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
component_separator
Char
default=','
required=True
args: 'Component separator'
lot_name
Char
compute='_compute_lot_name'
readonly=False
store=True
args: 'First Lot/SN'
lot_qty
Integer
compute='_compute_lot_qty'
readonly=False
store=True
args: 'Number of SN'
lots_quantity_separator
Char
default=';'
required=True
args: 'Lot quantity separator'
lots_separator
Char
default='|'
required=True
args: 'Lot separator'
production_id
Many2one → mrp.production
production_text
Text
production_text_help
Text
compute='_compute_production_text_help'
args: 'Explanation for batch production'
action_done(self)
action_generate_production_text(self)
action_prepare(self)
active
Boolean
default=True
args: 'Active'
allow_operation_dependencies
Boolean
help='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'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
byproduct_ids
One2many → mrp.bom.byproduct
copy=True
args: 'mrp.bom.byproduct', 'bom_id', 'By-products'
code
Char
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
consumption
Selection
default='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=True
string='Flexible Consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
days_to_prepare_mo
Integer
default=0
help='Create and confirm Manufacturing Orders this many days in advance, to have enough time to replenish components or manufacture semi-finished products.\nNote that security lead times will also be considered when appropriate.'
string='Days to prepare Manufacturing Order'
operation_ids
One2many → mrp.routing.workcenter
copy=True
args: 'mrp.routing.workcenter', 'bom_id', 'Operations'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('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. 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_ids
Many2many → product.template.attribute.value
compute='_compute_possible_product_template_attribute_value_ids'
args: 'product.template.attribute.value'
produce_delay
Integer
default=0
help='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_id
Many2one → product.product
check_company=True
domain="['&', ('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_qty
Float
default=1.0
digits='Product Unit of Measure'
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_id
Many2one → product.template
check_company=True
domain="[('type', '=', 'consu')]"
index=True
required=True
args: 'product.template', 'Product'
product_uom_category_id
Many2one
related='product_tmpl_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Unit of Measure'
ready_to_produce
Selection
default='all_available'
required=True
string='Manufacturing Readiness'
args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')]
sequence
Integer
type
Selection
default='normal'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
action_compute_bom_days(self)
check_kit_has_not_orderpoint(self)
copy(self, default=None)
create(self, vals_list)
explode(self, product, quantity, picking_type=False, never_attribute_values=False)
get_import_templates(self)
name_create(self, name)
onchange_bom_structure(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
toggle_active(self)
write(self, vals)
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
args: 'mrp.bom', 'BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
cost_share
Float
digits=(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_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Produced in Operation'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'By-product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
sequence
Integer
action_add_from_catalog(self)
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
attachments_count
Integer
compute='_compute_attachments_count'
args: 'Attachments Count'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
manual_consumption
Boolean
copy=True
default=False
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=False
store=True
args: 'Highlight Consumption'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('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_id
Many2one → product.template
related='bom_id.product_tmpl_id'
args: 'product.template', 'Parent Product Template'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'Component'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
index=True
related='product_id.product_tmpl_id'
store=True
args: 'product.template', 'Product Template'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Product Unit of Measure'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
tracking
Selection
related='product_id.tracking'
action_add_from_catalog(self)
action_see_attachments(self)
create(self, vals_list)
onchange_product_id(self)
onchange_product_uom_id(self)
consumption
Selection
compute='_compute_consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
mrp_consumption_warning_line_ids
One2many → mrp.consumption.warning.line
mrp_production_count
Integer
compute='_compute_mrp_production_count'
mrp_production_ids
Many2many → mrp.production
action_cancel(self)
action_confirm(self)
action_set_qty(self)
consumption
Selection
related='mrp_production_id.consumption'
mrp_consumption_warning_id
Many2one → mrp.consumption.warning
ondelete='cascade'
readonly=True
required=True
args: 'mrp.consumption.warning', 'Parent Wizard'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
product_consumed_qty_uom
Float
readonly=True
args: 'Consumed'
product_expected_qty_uom
Float
readonly=True
args: 'To Consume'
product_id
Many2one → product.product
readonly=True
required=True
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
No public methods.
all_move_ids
One2many → stock.move
all_move_raw_ids
One2many → stock.move
allow_workorder_dependencies
Boolean
backorder_sequence
Integer
copy=False
default=0
help='Backorder sequence, if equals to 0 means there is not related backorder'
args: 'Backorder Sequence'
bom_id
Many2one → mrp.bom
check_company=True
compute='_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=True
readonly=False
store=True
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
components_availability
Char
compute='_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_state
Selection
compute='_compute_components_availability'
search='_search_components_availability_state'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late'), ('unavailable', 'Not Available')]
consumption
Selection
default='flexible'
readonly=True
required=True
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
date_deadline
Datetime
compute='_compute_date_deadline'
copy=False
help='Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time.'
readonly=True
store=True
args: 'Deadline'
date_finished
Datetime
compute='_compute_date_finished'
copy=False
default=_get_default_date_finished
help='Date you expect to finish production or actual date you finished production.'
store=True
args: 'End'
date_start
Datetime
copy=False
default=_get_default_date_start
help='Date you plan to start production or date you actually started production.'
index=True
required=True
args: 'Start'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
delivery_count
Integer
compute='_compute_picking_ids'
string='Delivery Orders'
duration
Float
compute='_compute_duration'
help='Total real duration (in minutes)'
args: 'Real Duration'
duration_expected
Float
compute='_compute_duration_expected'
help='Total expected duration (in minutes)'
args: 'Expected Duration'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
forecasted_issue
Boolean
compute='_compute_forecasted_issue'
is_delayed
Boolean
compute='_compute_is_delayed'
search='_search_is_delayed'
is_locked
Boolean
copy=False
default=_get_default_is_locked
args: 'Is Locked'
is_outdated_bom
Boolean
help='The BoM has been updated since creation of the MO'
args: 'Outdated BoM'
is_planned
Boolean
compute='_compute_is_planned'
store=True
args: 'Its Operations are Planned'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_locations'
domain="[('usage','=','internal')]"
help='Location where the system will stock the finished products.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Finished Products Location'
location_final_id
Many2one → stock.location
location_src_id
Many2one → stock.location
check_company=True
compute='_compute_locations'
domain="[('usage','=','internal')]"
help='Location where the system will look for components.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Components Location'
lot_producing_id
Many2one → stock.lot
check_company=True
copy=False
domain="[('product_id', '=', product_id)]"
string='Lot/Serial Number'
args: 'stock.lot'
move_byproduct_ids
One2many → stock.move
compute='_compute_move_byproduct_ids'
inverse='_set_move_byproduct_ids'
args: 'stock.move'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
compute='_compute_move_finished_ids'
copy=False
domain=[('scrapped', '=', False)]
readonly=False
store=True
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
compute='_compute_move_raw_ids'
copy=False
domain=[('scrapped', '=', False)]
readonly=False
store=True
args: 'stock.move', 'raw_material_production_id', 'Components'
mrp_production_backorder_count
Integer
compute='_compute_mrp_production_backorder'
args: 'Count of linked backorder'
mrp_production_child_count
Integer
compute='_compute_mrp_production_child_count'
args: 'Number of generated MO'
mrp_production_source_count
Integer
compute='_compute_mrp_production_source_count'
args: 'Number of source MO'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
never_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[\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_id
Many2one → stock.warehouse.orderpoint
copy=False
index='btree_not_null'
args: 'stock.warehouse.orderpoint', 'Orderpoint'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
args: 'Source'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
string='Picking associated to this manufacturing order'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
copy=True
domain="[('code', '=', 'mrp_operation')]"
index=True
precompute=True
readonly=False
required=True
store=True
args: 'stock.picking.type', 'Operation Type'
priority
Selection
default='0'
help='Components will be reserved first for the MO with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
product_description_variants
Char
product_id
Many2one → product.product
check_company=True
compute='_compute_product_id'
copy=True
domain="[('type', '=', 'consu')]"
precompute=True
readonly=False
required=True
store=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=True
digits='Product Unit of Measure'
precompute=True
readonly=False
required=True
store=True
tracking=True
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_tracking
Selection
related='product_id.tracking'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_uom_id'
copy=True
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
compute='_compute_product_uom_qty'
store=True
string='Total Quantity'
product_variant_attributes
Many2many → product.template.attribute.value
related='product_id.product_template_attribute_value_ids'
args: 'product.template.attribute.value'
production_capacity
Float
compute='_compute_production_capacity'
help='Quantity that can be produced with the current stock of components'
production_location_id
Many2one → stock.location
compute='_compute_production_location'
store=True
args: 'stock.location', 'Production Location'
propagate_cancel
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
qty_producing
Float
copy=False
digits='Product Unit of Measure'
string='Quantity Producing'
reservation_state
Selection
compute='_compute_reservation_state'
copy=False
help='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=True
readonly=True
store=True
string='MO Readiness'
tracking=True
args: [('confirmed', 'Waiting'), ('assigned', 'Ready'), ('waiting', 'Waiting Another Operation')]
reserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can reserve quantities'
args: 'Allowed to Reserve Production'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
search_date_category
Selection
readonly=True
search='_search_date_category'
store=False
string='Date Category'
args: [('before', 'Before'), ('yesterday', 'Yesterday'), ('today', 'Today'), ('day_1', 'Tomorrow'), ('day_2', 'The day after tomorrow'), ('after', 'After')]
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
show_lock
Boolean
compute='_compute_show_lock'
args: 'Show Lock/unlock buttons'
show_lot_ids
Boolean
compute='_compute_show_lot_ids'
args: 'Display the serial number shortcut on the moves'
show_produce
Boolean
compute='_compute_show_produce'
help='Technical field to check if produce button can be shown'
show_produce_all
Boolean
compute='_compute_show_produce'
help='Technical field to check if produce all button can be shown'
state
Selection
compute='_compute_state'
copy=False
help=" * 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=True
readonly=True
store=True
string='State'
tracking=True
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('progress', 'In Progress'), ('to_close', 'To Close'), ('done', 'Done'), ('cancel', 'Cancelled')]
unbuild_count
Integer
compute='_compute_unbuild_count'
string='Number of Unbuilds'
unbuild_ids
One2many → mrp.unbuild
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Production'
use_create_components_lots
Boolean
related='picking_type_id.use_create_components_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
args: 'res.users', 'Responsible'
valid_product_template_attribute_line_ids
Many2many
related='product_tmpl_id.valid_product_template_attribute_line_ids'
warehouse_id
Many2one
related='location_src_id.warehouse_id'
workcenter_id
Many2one → mrp.workcenter
store=False
args: 'mrp.workcenter'
workorder_ids
One2many → mrp.workorder
compute='_compute_workorder_ids'
copy=True
readonly=False
store=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_generate_bom(self)
action_generate_serial(self)
action_mass_produce(self)
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)
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)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unbuild(self)
button_unplan(self)
copy_data(self, default=None)
create(self, vals_list)
do_unreserve(self)
get_empty_list_help(self, help_message)
pre_button_mark_done(self)
set_qty_producing(self)
unlink(self)
write(self, vals)
mrp_production_backorder_line_ids
One2many → mrp.production.backorder.line
string='Backorder Confirmation Lines'
args: 'mrp.production.backorder.line', 'mrp_production_backorder_id'
mrp_production_ids
Many2many → mrp.production
show_backorder_lines
Boolean
compute='_compute_show_backorder_lines'
args: 'Show backorder lines'
action_backorder(self)
action_close_mo(self)
mrp_production_backorder_id
Many2one → mrp.production.backorder
ondelete='cascade'
required=True
args: 'mrp.production.backorder', 'MO Backorder'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
to_backorder
Boolean
No public methods.
counter
Integer
compute='_compute_counter'
default=2
readonly=False
store=True
args: 'Split #'
product_id
Many2one
related='production_id.product_id'
product_qty
Float
related='production_id.product_qty'
product_uom_id
Many2one
related='production_id.product_uom_id'
production_capacity
Float
related='production_id.production_capacity'
production_detailed_vals_ids
One2many → mrp.production.split.line
compute='_compute_details'
readonly=False
store=True
args: 'mrp.production.split.line', 'mrp_production_split_id', 'Split Details'
production_id
Many2one → mrp.production
readonly=True
args: 'mrp.production', 'Manufacturing Order'
production_split_multi_id
Many2one → mrp.production.split.multi
valid_details
Boolean
compute='_compute_valid_details'
args: 'Valid'
action_prepare_split(self)
action_return_to_list(self)
action_split(self)
date
Datetime
mrp_production_split_id
Many2one → mrp.production.split
ondelete='cascade'
required=True
args: 'mrp.production.split', 'Split Production'
quantity
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
user_id
Many2one → res.users
domain=<expr>
args: 'res.users', 'Responsible'
No public methods.
production_ids
One2many → mrp.production.split
No public methods.
active
Boolean
default=True
allow_operation_dependencies
Boolean
related='bom_id.allow_operation_dependencies'
blocked_by_operation_ids
Many2many → mrp.routing.workcenter
column1='operation_id'
column2='blocked_by_id'
copy=False
domain="[('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_id
Many2one → mrp.bom
check_company=True
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Bill of Material'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → res.company
related='bom_id.company_id'
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
needed_by_operation_ids
Many2many → mrp.routing.workcenter
column1='blocked_by_id'
column2='operation_id'
copy=False
domain="[('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'
note
Html
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_computed_on
Char
compute='_compute_time_computed_on'
args: 'Computed on last'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help="Time in minutes:- In manual mode, time used- In automatic mode, supposed first time when there aren't any work orders yet"
tracking=True
args: 'Manual Duration'
time_mode
Selection
default='manual'
string='Duration Computation'
tracking=True
args: [('auto', 'Compute based on tracked time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
check_company=True
required=True
tracking=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
worksheet_google_slide
Char
help='Paste the url of your Google Slide. Make sure the access to the document is public.'
tracking=True
args: 'Google Slide'
worksheet_type
Selection
default='text'
string='Worksheet'
tracking=True
args: [('pdf', 'PDF'), ('google_slide', 'Google Slide'), ('text', 'Text')]
action_archive(self)
action_unarchive(self)
copy_existing_operations(self)
copy_to_bom(self)
create(self, vals_list)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
compute='_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_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage','=','internal')]"
help='Location where you want to send the components resulting from the unbuild order.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage','=','internal')]"
help='Location where the product you want to unbuild is.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
check_company=True
compute='_compute_lot_id'
domain="[('product_id', '=', product_id)]"
store=True
args: 'stock.lot', 'Lot/Serial Number'
mo_bom_id
Many2one → mrp.bom
related='mo_id.bom_id'
args: 'mrp.bom', 'Bill of Material used on the Production Order'
mo_id
Many2one → mrp.production
check_company=True
domain="[('state', '=', 'done'), ('product_id', '=?', product_id), ('bom_id', '=?', bom_id)]"
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
check_company=True
compute='_compute_product_id'
domain="[('type', '=', 'consu')]"
precompute=True
readonly=False
required=True
store=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
default=1.0
digits='Product Unit of Measure'
precompute=True
readonly=False
required=True
store=True
args: 'Quantity'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
state
Selection
default='draft'
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals_list)
active
Boolean
default=True
readonly=False
related='resource_id.active'
store=True
args: 'Active'
alternative_workcenter_ids
Many2many → mrp.workcenter
check_company=True
domain="[('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_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hours over the last month'
args: 'Blocked Time'
capacity_ids
One2many → mrp.workcenter.capacity
copy=True
help='Specific number of pieces that can be produced in parallel per product.'
string='Product Capacities'
args: 'mrp.workcenter.capacity', 'workcenter_id'
code
Char
copy=False
args: 'Code'
color
Integer
costs_hour
Float
default=0.0
help='Hourly processing cost.'
string='Cost per hour'
tracking=True
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
required=True
args: 'res.currency', 'Currency'
default_capacity
Float
default=1.0
help='Default number of pieces (in product UoM) that can be produced in parallel (at the same time) at this work center. For example: the capacity is 5 and you need to produce 10 units, then the operation time listed on the BOM will be multiplied by two. However, note that both time before and after production will only be counted once.'
args: 'Capacity'
has_routing_lines
Boolean
compute='_compute_has_routing_lines'
help='Technical field for workcenter views'
kanban_dashboard_graph
Text
compute='_compute_kanban_dashboard_graph'
name
Char
readonly=False
related='resource_id.name'
store=True
args: 'Work Center'
note
Html
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='Overall Effective Efficiency Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hours over the last month'
args: 'Productive Time'
resource_calendar_id
Many2one
check_company=True
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
tag_ids
Many2many → mrp.workcenter.tag
time_efficiency
Float
default=100
readonly=False
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
time_stop
Float
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Pending Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Ready Work Orders'
action_archive(self)
action_show_operations(self)
action_work_order(self)
action_work_order_alternatives(self)
create(self, vals_list)
unblock(self)
write(self, vals)
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel for this product.'
args: 'Capacity'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
time_start
Float
default=_default_time_start
help='Time in minutes for the setup.'
args: 'Setup Time (minutes)'
time_stop
Float
default=_default_time_stop
help='Time in minutes for the cleaning.'
args: 'Cleanup Time (minutes)'
workcenter_id
Many2one → mrp.workcenter
required=True
string='Work Center'
args: 'mrp.workcenter'
No public methods.
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company'
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness'
production_id
Many2one → mrp.production
readonly=True
related='workorder_id.production_id'
string='Manufacturing Order'
args: 'mrp.production'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
check_company=True
index=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
check_company=True
index=True
args: 'mrp.workorder', 'Work Order'
button_block(self)
loss_id
Many2one → mrp.workcenter.productivity.loss.type
domain=[('loss_type', 'in', ['quality', 'availability'])]
string='Category'
args: 'mrp.workcenter.productivity.loss.type'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
translate=True
args: 'Blocking Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
loss_type
Selection
default='availability'
required=True
string='Category'
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
No public methods.
color
Integer
default=_get_default_color
args: 'Color Index'
name
Char
required=True
args: 'Tag Name'
No public methods.
allow_workorder_dependencies
Boolean
related='production_id.allow_workorder_dependencies'
barcode
Char
compute='_compute_barcode'
store=True
blocked_by_workorder_ids
Many2many → mrp.workorder
column1='workorder_id'
column2='blocked_by_id'
copy=False
domain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"
relation='mrp_workorder_dependencies_rel'
string='Blocked By'
args: 'mrp.workorder'
company_id
Many2one
related='production_id.company_id'
consumption
Selection
related='production_id.consumption'
costs_hour
Float
aggregator='avg'
default=0.0
string='Cost per hour'
date_finished
Datetime
compute='_compute_dates'
copy=False
inverse='_set_dates'
store=True
args: 'End'
date_start
Datetime
compute='_compute_dates'
copy=False
inverse='_set_dates'
store=True
args: 'Start'
duration
Float
compute='_compute_duration'
copy=False
inverse='_set_duration'
readonly=False
store=True
args: 'Real Duration'
duration_expected
Float
compute='_compute_duration_expected'
digits=(16, 2)
readonly=False
store=True
args: 'Expected Duration'
duration_percent
Integer
aggregator='avg'
compute='_compute_duration'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
aggregator='avg'
compute='_compute_duration'
readonly=True
store=True
args: 'Duration Per Unit'
finished_lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
readonly=False
related='production_id.lot_producing_id'
string='Lot/Serial Number'
args: 'stock.lot'
has_worksheet
Boolean
compute='_compute_has_worksheet'
is_planned
Boolean
related='production_id.is_planned'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_working_users'
args: 'Is the Current User Working'
json_popover
Char
compute='_compute_json_popover'
args: 'Popover Data JSON'
last_working_user_id
One2many → res.users
compute='_compute_working_users'
string='Last user that worked on this work order.'
args: 'res.users'
leave_id
Many2one → resource.calendar.leaves
check_company=True
copy=False
help='Slot into workcenter calendar once planned'
args: 'resource.calendar.leaves'
move_finished_ids
One2many → stock.move
domain=[('raw_material_production_id', '=', False), ('production_id', '!=', False)]
args: 'stock.move', 'workorder_id', 'Finished Moves'
move_line_ids
One2many → stock.move.line
help='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_ids
One2many → stock.move
domain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)]
args: 'stock.move', 'workorder_id', 'Raw Moves'
name
Char
required=True
args: 'Work Order'
needed_by_workorder_ids
Many2many → mrp.workorder
column1='blocked_by_id'
column2='workorder_id'
copy=False
domain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"
relation='mrp_workorder_dependencies_rel'
string='Blocks'
args: 'mrp.workorder'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
args: 'mrp.routing.workcenter', 'Operation'
operation_note
Html
readonly=True
related='operation_id.note'
args: 'Description'
product_id
Many2one
check_company=True
readonly=True
related='production_id.product_id'
store=True
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
args: 'uom.uom', 'Unit of Measure'
production_availability
Selection
readonly=True
related='production_id.reservation_state'
store=True
string='Stock Availability'
production_bom_id
Many2one → mrp.bom
related='production_id.bom_id'
args: 'mrp.bom'
production_date
Datetime
compute='_compute_production_date'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
check_company=True
index='btree'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
production_state
Selection
readonly=True
related='production_id.state'
string='Production State'
progress
Float
compute='_compute_progress'
digits=(16, 2)
args: 'Progress Done (%)'
qty_produced
Float
copy=False
default=0.0
digits='Product Unit of Measure'
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_producing
Float
compute='_compute_qty_producing'
digits='Product Unit of Measure'
inverse='_set_qty_producing'
string='Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_remaining
Float
compute='_compute_qty_remaining'
digits='Product Unit of Measure'
args: 'Quantity To Be Produced'
qty_reported_from_previous_wo
Float
copy=False
digits='Product Unit of Measure'
help='The quantity already produced awaiting allocation in the backorders chain.'
args: 'Carried Quantity'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
sequence
Integer
default=_default_sequence
args: 'Sequence'
show_json_popover
Boolean
compute='_compute_json_popover'
args: 'Show Popover?'
state
Selection
compute='_compute_state'
copy=False
default='pending'
index=True
readonly=True
recursive=True
store=True
string='Status'
args: [('pending', 'Waiting for another WO'), ('waiting', 'Waiting for components'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
copy=False
args: 'mrp.workcenter.productivity', 'workorder_id'
workcenter_id
Many2one → mrp.workcenter
check_company=True
group_expand='_read_group_workcenter_id'
required=True
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
related='workcenter_id.working_state'
string='Workcenter Status'
working_user_ids
One2many → res.users
compute='_compute_working_users'
string='Working user on this work order.'
args: 'res.users'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
worksheet_google_slide
Char
readonly=True
related='operation_id.worksheet_google_slide'
args: 'Worksheet URL'
worksheet_type
Selection
readonly=True
related='operation_id.worksheet_type'
string='Worksheet Type'
action_cancel(self)
action_mark_as_done(self)
action_open_wizard(self)
action_replan(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self, raise_on_invalid_state=False)
button_unblock(self)
create(self, values)
end_all(self)
end_previous(self, doall=False)
get_duration(self)
get_working_duration(self)
unlink(self)
write(self, values)
production_ids
Many2many → mrp.production
process(self)
mrp_production_ids
One2many → mrp.production
run(self, procurements, raise_user_error=True)
attached_on_mrp
Selection
default=<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=True
selection=[('hidden', 'Hidden'), ('bom', 'Bill of Materials')]
string='MRP : Visible at'
No public methods.
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
search='_search_is_kits'
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
digits='Product Unit of Measure'
args: 'Manufactured'
product_catalog_product_is_in_bom
Boolean
compute='_compute_product_is_in_bom_and_mo'
search='_search_product_is_in_bom'
product_catalog_product_is_in_mo
Boolean
compute='_compute_product_is_in_bom_and_mo'
search='_search_product_is_in_mo'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# BoM Where Used'
variant_bom_ids
One2many → mrp.bom
action_archive(self)
action_open_quants(self)
action_used_in_bom(self)
action_view_bom(self)
action_view_mos(self)
get_components(self)
write(self, values)
No new fields.
Public methods (0)No public methods.
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
search='_search_is_kits'
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
digits='Product Unit of Measure'
args: 'Manufactured'
used_in_bom_count
Integer
compute='_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, values)
No new fields.
Public methods (2)get_html(self, bom_id=False, searchQty=1, searchVariant=False)
get_warehouses(self)
No new fields.
Public methods (1)get_report_values(self, production_id)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
create_missing_unbuild_sequences(self)
group_mrp_byproducts
Boolean
implied_group='mrp.group_mrp_byproducts'
args: 'By-Products'
group_mrp_reception_report
Boolean
implied_group='mrp.group_mrp_reception_report'
args: 'Allocation Report for Manufacturing Orders'
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'MRP Work Orders'
group_mrp_workorder_dependencies
Boolean
implied_group='mrp.group_mrp_workorder_dependencies'
args: 'Work Order Dependencies'
group_unlocked_by_default
Boolean
implied_group='mrp.group_unlocked_by_default'
args: 'Unlock Manufacturing Orders'
manufacturing_lead
Float
readonly=False
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time'
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_subcontracting
Boolean
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
use_manufacturing_lead
Boolean
config_parameter='mrp.use_manufacturing_lead'
string='Default Manufacturing Lead Time'
set_values(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='raw_material_production_id.bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_line_id
Many2one → mrp.bom.line
check_company=True
args: 'mrp.bom.line', 'BoM Line'
byproduct_id
Many2one → mrp.bom.byproduct
check_company=True
help='By-product line that generated the move in a manufacturing order'
args: 'mrp.bom.byproduct', 'By-products'
consume_unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Consumed Disassembly Order'
cost_share
Float
digits=0
help="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_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Created Production Order'
description_bom_line
Char
compute='_compute_description_bom_line'
args: 'Kit'
is_done
Boolean
compute='_compute_is_done'
store=True
args: 'Done'
manual_consumption
Boolean
compute='_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=False
store=True
args: 'Manual Consumption'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Operation To Consume'
order_finished_lot_id
Many2one → stock.lot
index='btree_not_null'
related='raw_material_production_id.lot_producing_id'
store=True
string='Finished Lot/Serial Number'
args: 'stock.lot'
product_qty_available
Float
depends=['product_id']
related='product_id.qty_available'
args: 'Product On Hand Quantity'
product_virtual_available
Float
depends=['product_id']
related='product_id.virtual_available'
args: 'Product Forecasted Quantity'
production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
args: 'mrp.production', 'Production Order for finished products'
raw_material_production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
args: 'mrp.production', 'Production Order for components'
should_consume_qty
Float
compute='_compute_should_consume_qty'
digits='Product Unit of Measure'
args: 'Quantity To Consume'
unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Disassembly Order'
unit_factor
Float
compute='_compute_unit_factor'
store=True
args: 'Unit Factor'
workorder_id
Many2one → mrp.workorder
check_company=True
copy=False
index='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)
action_open_reference(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
write(self, vals)
description_bom_line
Char
related='move_id.description_bom_line'
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
create(self, values)
write(self, vals)
has_kits
Boolean
compute='_compute_has_kits'
production_count
Integer
compute='_compute_mrp_production_ids'
groups='mrp.group_mrp_user'
args: 'Count of MO generated'
production_ids
Many2many → mrp.production
compute='_compute_mrp_production_ids'
groups='mrp.group_mrp_user'
args: 'mrp.production'
action_detailed_operations(self)
action_view_mrp_production(self)
get_action_click_graph(self)
auto_print_done_mrp_lot
Boolean
help='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_labels
Boolean
help='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_order
Boolean
help='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_lot
Boolean
help='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_report
Boolean
help='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_labels
Boolean
help='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'
code
Selection
ondelete={'mrp_operation': <expr>}
selection_add=[('mrp_operation', 'Manufacturing')]
count_mo_in_progress
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders In Progress'
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_to_close
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders To Close'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
done_mrp_lot_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Lot/SN Label to Print'
generated_mrp_lot_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Generated Lot/SN Label to Print'
mrp_product_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Product Label to Print'
use_create_components_lots
Boolean
default=False
help='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.
bom_id
Many2one → mrp.bom
string='Bill of Material'
args: 'mrp.bom'
show_bom
Boolean
compute='_compute_show_bom'
No public methods.
action
Selection
ondelete={'manufacture': 'cascade'}
selection_add=[('manufacture', 'Manufacture')]
No public methods.
bom_id
Many2one → mrp.bom
check_company=True
domain="[('type', '=', 'phantom'), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_template)]"
args: 'mrp.bom', 'Kit'
product_is_kit
Boolean
related='product_id.is_kits'
product_template
Many2one
related='product_id.product_tmpl_id'
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
do_replenish(self, values=False)
No new fields.
Public methods (0)No public methods.
manu_type_id
Many2one → stock.picking.type
check_company=True
copy=False
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Manufacture MTO Rule'
manufacture_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Manufacture Rule'
manufacture_steps
Selection
default='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_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture to Resupply'
pbm_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Picking before Manufacturing Location'
pbm_mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Picking Before Manufacturing MTO Rule'
pbm_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Picking Before Manufacturing Route'
pbm_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Picking Before Manufacturing Operation Type'
sam_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Stock after Manufacturing Location'
sam_rule_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Stock After Manufacturing Rule'
sam_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Stock After Manufacturing Operation Type'
get_rules_dict(self)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
domain="[('type', '=', 'normal'), '&', '|', ('company_id', '=', company_id), ('company_id', '=', False), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_tmpl_id)]"
string='Bill of Materials'
args: 'mrp.bom'
manufacturing_visibility_days
Float
default=0.0
help='Visibility Days applied on the manufacturing routes.'
show_bom
Boolean
compute='_compute_show_bom'
args: 'Show BoM column'
No public methods.
No new fields.
Public methods (1)check_product_is_not_kit(self)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| 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_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_product_product_search_view |
mrp.product.product.search | product.product | xpath | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | xpath | 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.tree | mrp.production | tree | 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.tree.editable | mrp.workorder | tree | New |
mrp_production_workorder_tree_view |
mrp.production.work.order.tree | mrp.workorder | xpath | 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.tree | mrp.routing.workcenter | xpath | Inherits mrp_routing_workcenter_tree_view |
mrp_routing_workcenter_copy_to_bom_tree_view |
mrp.routing.workcenter.copy_to_bom.tree | mrp.routing.workcenter | xpath | 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_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | 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.tree | mrp.unbuild | tree | 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.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workcenter_view_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
mrp_workorder_view_gantt |
mrp.workorder.view.gantt | mrp.workorder | gantt | 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.tree | mrp.workcenter.productivity.loss | tree | 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.tree | mrp.workcenter.productivity | tree | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | xpath | Inherits stock.product_form_view_procurement_button |
product_template_form_view_bom_button |
product.template.procurement | product.template | xpath | Inherits stock.product_template_form_view_procurement_button |
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 | xpath | Inherits base.res_config_settings_view_form |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | filter | Inherits stock.stock_move_line_view_search |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | field | 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 | xpath | Inherits stock.stock_scrap_search_view |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_production_move_template |
track_production_move_template | ir.ui.view | qweb | New |
view_assign_serial_numbers_production |
mrp_assign_serial_numbers | stock.assign.serial | form | New |
view_change_production_qty_wizard |
Change Quantity To Produce | change.production.qty | form | New |
view_document_file_kanban_mrp |
mrp.document kanban.mrp | mrp.document | kanban | New |
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_document_form |
mrp.document.form | mrp.document | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | xpath | 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_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_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 | xpath | Inherits stock.view_picking_form |
view_picking_type_form_inherit_mrp |
Operation Types | stock.picking.type | xpath | 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_detailed_operation_tree_mrp |
stock.move.line.operations.tree.mrp | stock.move.line | xpath | Inherits stock.view_stock_move_line_detailed_operation_tree |
view_stock_move_line_operation_tree_finished |
stock.move.line.operation.tree.finished | stock.move.line | xpath | Inherits stock.view_stock_move_line_operation_tree |
view_stock_move_operations_finished |
stock.move.operations.finished.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_stock_move_operations_raw |
stock.move.operations.raw.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | xpath | Inherits stock.view_warehouse |
view_warehouse_orderpoint_tree_editable_inherited_purchase |
stock.warehouse.orderpoint.tree.editable.inherit.purchase | stock.warehouse.orderpoint | field | 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_gantt_production |
mrp.production.work.order.gantt.production | mrp.workorder | gantt | 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 |
mo_id
Many2one → mrp.production
ondelete='cascade'
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
allow_operation_dependencies
Boolean
help='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'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
byproduct_ids
One2many → mrp.bom.byproduct
copy=True
args: 'mrp.bom.byproduct', 'bom_id', 'By-products'
code
Char
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
consumption
Selection
default='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 Manual 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=True
string='Flexible Consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
days_to_prepare_mo
Integer
default=0
help='Create and confirm Manufacturing Orders this many days in advance, to have enough time to replenish components or manufacture semi-finished products.\nNote that security lead times will also be considered when appropriate.'
string='Days to prepare Manufacturing Order'
operation_ids
One2many → mrp.routing.workcenter
copy=True
args: 'mrp.routing.workcenter', 'bom_id', 'Operations'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('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. 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_ids
Many2many → product.template.attribute.value
compute='_compute_possible_product_template_attribute_value_ids'
args: 'product.template.attribute.value'
produce_delay
Integer
default=0
help='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_id
Many2one → product.product
check_company=True
domain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', 'in', ['product', 'consu'])]"
help='If a product variant is defined the BOM is available only for this product.'
index=True
args: 'product.product', 'Product Variant'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
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_id
Many2one → product.template
check_company=True
domain="[('type', 'in', ['product', 'consu'])]"
index=True
required=True
args: 'product.template', 'Product'
product_uom_category_id
Many2one
related='product_tmpl_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Unit of Measure'
ready_to_produce
Selection
default='all_available'
required=True
string='Manufacturing Readiness'
args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')]
sequence
Integer
type
Selection
default='normal'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
action_compute_bom_days(self)
check_kit_has_not_orderpoint(self)
copy(self, default=None)
create(self, vals_list)
explode(self, product, quantity, picking_type=False)
get_import_templates(self)
name_create(self, name)
onchange_bom_structure(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
toggle_active(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
args: 'mrp.bom', 'BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
cost_share
Float
digits=(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_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Produced in Operation'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'By-product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
sequence
Integer
No public methods.
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
attachments_count
Integer
compute='_compute_attachments_count'
args: 'Attachments Count'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
manual_consumption
Boolean
compute='_compute_manual_consumption'
copy=True
default=False
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=False
store=True
args: 'Manual Consumption'
manual_consumption_readonly
Boolean
compute='_compute_manual_consumption_readonly'
args: 'Manual Consumption Readonly'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('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_id
Many2one → product.template
related='bom_id.product_tmpl_id'
args: 'product.template', 'Parent Product Template'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'Component'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
index=True
related='product_id.product_tmpl_id'
store=True
args: 'product.template', 'Product Template'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Product Unit of Measure'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
tracking
Selection
related='product_id.tracking'
action_see_attachments(self)
create(self, vals_list)
onchange_product_id(self)
onchange_product_uom_id(self)
consumption
Selection
compute='_compute_consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
mrp_consumption_warning_line_ids
One2many → mrp.consumption.warning.line
mrp_production_count
Integer
compute='_compute_mrp_production_count'
mrp_production_ids
Many2many → mrp.production
action_cancel(self)
action_confirm(self)
action_set_qty(self)
consumption
Selection
related='mrp_production_id.consumption'
mrp_consumption_warning_id
Many2one → mrp.consumption.warning
ondelete='cascade'
readonly=True
required=True
args: 'mrp.consumption.warning', 'Parent Wizard'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
product_consumed_qty_uom
Float
readonly=True
args: 'Consumed'
product_expected_qty_uom
Float
readonly=True
args: 'To Consume'
product_id
Many2one → product.product
readonly=True
required=True
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
No public methods.
active
Boolean
default=True
args: 'Active'
ir_attachment_id
Many2one → ir.attachment
ondelete='cascade'
required=True
string='Related attachment'
args: 'ir.attachment'
priority
Selection
string='Priority'
args: [('0', 'Normal'), ('1', 'Low'), ('2', 'High'), ('3', 'Very High')]
copy(self, default=None)
unlink(self)
No new fields.
Public methods (0)No public methods.
all_move_ids
One2many → stock.move
all_move_raw_ids
One2many → stock.move
allow_workorder_dependencies
Boolean
backorder_sequence
Integer
copy=False
default=0
help='Backorder sequence, if equals to 0 means there is not related backorder'
args: 'Backorder Sequence'
bom_id
Many2one → mrp.bom
check_company=True
compute='_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=True
readonly=False
store=True
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
components_availability
Char
compute='_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_state
Selection
compute='_compute_components_availability'
search='_search_components_availability_state'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late'), ('unavailable', 'Not Available')]
confirm_cancel
Boolean
compute='_compute_confirm_cancel'
consumption
Selection
default='flexible'
readonly=True
required=True
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
date_deadline
Datetime
compute='_compute_date_deadline'
copy=False
help='Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time.'
readonly=True
store=True
args: 'Deadline'
date_finished
Datetime
compute='_compute_date_finished'
copy=False
default=_get_default_date_finished
help='Date you expect to finish production or actual date you finished production.'
store=True
args: 'End'
date_start
Datetime
copy=False
default=_get_default_date_start
help='Date you plan to start production or date you actually started production.'
index=True
required=True
args: 'Start'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
delivery_count
Integer
compute='_compute_picking_ids'
string='Delivery Orders'
duration
Float
compute='_compute_duration'
help='Total real duration (in minutes)'
args: 'Real Duration'
duration_expected
Float
compute='_compute_duration_expected'
help='Total expected duration (in minutes)'
args: 'Expected Duration'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
forecasted_issue
Boolean
compute='_compute_forecasted_issue'
is_locked
Boolean
copy=False
default=_get_default_is_locked
args: 'Is Locked'
is_outdated_bom
Boolean
help='The BoM has been updated since creation of the MO'
args: 'Outdated BoM'
is_planned
Boolean
compute='_compute_is_planned'
store=True
args: 'Its Operations are Planned'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_locations'
domain="[('usage','=','internal')]"
help='Location where the system will stock the finished products.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Finished Products Location'
location_src_id
Many2one → stock.location
check_company=True
compute='_compute_locations'
domain="[('usage','=','internal')]"
help='Location where the system will look for components.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Components Location'
lot_producing_id
Many2one → stock.lot
check_company=True
copy=False
domain="[('product_id', '=', product_id)]"
string='Lot/Serial Number'
args: 'stock.lot'
move_byproduct_ids
One2many → stock.move
compute='_compute_move_byproduct_ids'
inverse='_set_move_byproduct_ids'
args: 'stock.move'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
compute='_compute_move_finished_ids'
copy=False
domain=[('scrapped', '=', False)]
readonly=False
store=True
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
compute='_compute_move_raw_ids'
copy=False
domain=[('scrapped', '=', False)]
readonly=False
store=True
args: 'stock.move', 'raw_material_production_id', 'Components'
mrp_production_backorder_count
Integer
compute='_compute_mrp_production_backorder'
args: 'Count of linked backorder'
mrp_production_child_count
Integer
compute='_compute_mrp_production_child_count'
args: 'Number of generated MO'
mrp_production_source_count
Integer
compute='_compute_mrp_production_source_count'
args: 'Number of source MO'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
orderpoint_id
Many2one → stock.warehouse.orderpoint
copy=False
index='btree_not_null'
args: 'stock.warehouse.orderpoint', 'Orderpoint'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
args: 'Source'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
string='Picking associated to this manufacturing order'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
copy=True
domain="[('code', '=', 'mrp_operation')]"
index=True
precompute=True
readonly=False
required=True
store=True
args: 'stock.picking.type', 'Operation Type'
priority
Selection
default='0'
help='Components will be reserved first for the MO with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
product_description_variants
Char
product_id
Many2one → product.product
check_company=True
compute='_compute_product_id'
copy=True
domain="[('type', 'in', ['product', 'consu'])]"
precompute=True
readonly=False
required=True
store=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=True
digits='Product Unit of Measure'
precompute=True
readonly=False
required=True
store=True
tracking=True
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_tracking
Selection
related='product_id.tracking'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_uom_id'
copy=True
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
compute='_compute_product_uom_qty'
store=True
string='Total Quantity'
product_variant_attributes
Many2many → product.template.attribute.value
related='product_id.product_template_attribute_value_ids'
args: 'product.template.attribute.value'
production_capacity
Float
compute='_compute_production_capacity'
help='Quantity that can be produced with the current stock of components'
production_location_id
Many2one → stock.location
compute='_compute_production_location'
store=True
args: 'stock.location', 'Production Location'
propagate_cancel
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
qty_producing
Float
copy=False
digits='Product Unit of Measure'
string='Quantity Producing'
reservation_state
Selection
compute='_compute_reservation_state'
copy=False
help='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=True
readonly=True
store=True
string='MO Readiness'
tracking=True
args: [('confirmed', 'Waiting'), ('assigned', 'Ready'), ('waiting', 'Waiting Another Operation')]
reserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can reserve quantities'
args: 'Allowed to Reserve Production'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
show_lock
Boolean
compute='_compute_show_lock'
args: 'Show Lock/unlock buttons'
show_lot_ids
Boolean
compute='_compute_show_lot_ids'
args: 'Display the serial number shortcut on the moves'
show_produce
Boolean
compute='_compute_show_produce'
help='Technical field to check if produce button can be shown'
show_produce_all
Boolean
compute='_compute_show_produce'
help='Technical field to check if produce all button can be shown'
show_serial_mass_produce
Boolean
compute='_compute_show_serial_mass_produce'
args: 'Display the serial mass produce wizard action'
state
Selection
compute='_compute_state'
copy=False
help=" * 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=True
readonly=True
store=True
string='State'
tracking=True
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('progress', 'In Progress'), ('to_close', 'To Close'), ('done', 'Done'), ('cancel', 'Cancelled')]
unbuild_count
Integer
compute='_compute_unbuild_count'
string='Number of Unbuilds'
unbuild_ids
One2many → mrp.unbuild
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Production'
use_auto_consume_components_lots
Boolean
related='picking_type_id.use_auto_consume_components_lots'
use_create_components_lots
Boolean
related='picking_type_id.use_create_components_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
args: 'res.users', 'Responsible'
warehouse_id
Many2one
related='location_src_id.warehouse_id'
workcenter_id
Many2one → mrp.workcenter
store=False
args: 'mrp.workcenter'
workorder_ids
One2many → mrp.workorder
compute='_compute_workorder_ids'
copy=True
readonly=False
store=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_generate_bom(self)
action_generate_serial(self)
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_serial_mass_produce_wizard(self, mark_as_done=False)
action_split(self)
action_toggle_is_locked(self)
action_update_bom(self)
action_view_mo_delivery(self)
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)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unbuild(self)
button_unplan(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
do_unreserve(self)
get_empty_list_help(self, help_message)
pre_button_mark_done(self)
set_qty_producing(self)
unlink(self)
write(self, vals)
mrp_production_backorder_line_ids
One2many → mrp.production.backorder.line
string='Backorder Confirmation Lines'
args: 'mrp.production.backorder.line', 'mrp_production_backorder_id'
mrp_production_ids
Many2many → mrp.production
show_backorder_lines
Boolean
compute='_compute_show_backorder_lines'
args: 'Show backorder lines'
action_backorder(self)
action_close_mo(self)
mrp_production_backorder_id
Many2one → mrp.production.backorder
ondelete='cascade'
required=True
args: 'mrp.production.backorder', 'MO Backorder'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
to_backorder
Boolean
No public methods.
counter
Integer
compute='_compute_counter'
default=0
readonly=False
store=True
args: 'Split #'
product_id
Many2one
related='production_id.product_id'
product_qty
Float
related='production_id.product_qty'
product_uom_id
Many2one
related='production_id.product_uom_id'
production_capacity
Float
related='production_id.production_capacity'
production_detailed_vals_ids
One2many → mrp.production.split.line
compute='_compute_details'
readonly=False
store=True
args: 'mrp.production.split.line', 'mrp_production_split_id', 'Split Details'
production_id
Many2one → mrp.production
readonly=True
args: 'mrp.production', 'Manufacturing Order'
production_split_multi_id
Many2one → mrp.production.split.multi
valid_details
Boolean
compute='_compute_valid_details'
args: 'Valid'
action_prepare_split(self)
action_return_to_list(self)
action_split(self)
date
Datetime
mrp_production_split_id
Many2one → mrp.production.split
ondelete='cascade'
required=True
args: 'mrp.production.split', 'Split Production'
quantity
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
user_id
Many2one → res.users
domain=<expr>
args: 'res.users', 'Responsible'
No public methods.
production_ids
One2many → mrp.production.split
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
allow_operation_dependencies
Boolean
related='bom_id.allow_operation_dependencies'
blocked_by_operation_ids
Many2many → mrp.routing.workcenter
column1='operation_id'
column2='blocked_by_id'
copy=False
domain="[('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_id
Many2one → mrp.bom
check_company=True
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Bill of Material'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → res.company
related='bom_id.company_id'
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
needed_by_operation_ids
Many2many → mrp.routing.workcenter
column1='blocked_by_id'
column2='operation_id'
copy=False
domain="[('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'
note
Html
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_computed_on
Char
compute='_compute_time_computed_on'
args: 'Computed on last'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help="Time in minutes:- In manual mode, time used- In automatic mode, supposed first time when there aren't any work orders yet"
args: 'Manual Duration'
time_mode
Selection
default='manual'
string='Duration Computation'
args: [('auto', 'Compute based on tracked time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
check_company=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
worksheet_google_slide
Char
help='Paste the url of your Google Slide. Make sure the access to the document is public.'
args: 'Google Slide'
worksheet_type
Selection
default='text'
string='Worksheet'
args: [('pdf', 'PDF'), ('google_slide', 'Google Slide'), ('text', 'Text')]
action_archive(self)
action_unarchive(self)
copy_existing_operations(self)
copy_to_bom(self)
create(self, vals_list)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
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 ]"
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage','=','internal')]"
help='Location where you want to send the components resulting from the unbuild order.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage','=','internal')]"
help='Location where the product you want to unbuild is.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id)]"
args: 'stock.lot', 'Lot/Serial Number'
mo_bom_id
Many2one → mrp.bom
related='mo_id.bom_id'
args: 'mrp.bom', 'Bill of Material used on the Production Order'
mo_id
Many2one → mrp.production
check_company=True
domain="[('state', '=', 'done'), ('product_id', '=?', product_id), ('bom_id', '=?', bom_id)]"
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu'])]"
required=True
args: 'product.product', 'Product'
product_qty
Float
default=1.0
required=True
args: 'Quantity'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
state
Selection
default='draft'
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals_list)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
readonly=False
related='resource_id.active'
store=True
args: 'Active'
alternative_workcenter_ids
Many2many → mrp.workcenter
check_company=True
domain="[('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_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hours over the last month'
args: 'Blocked Time'
capacity_ids
One2many → mrp.workcenter.capacity
copy=True
help='Specific number of pieces that can be produced in parallel per product.'
string='Product Capacities'
args: 'mrp.workcenter.capacity', 'workcenter_id'
code
Char
copy=False
args: 'Code'
color
Integer
costs_hour
Float
default=0.0
help='Hourly processing cost.'
string='Cost per hour'
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
required=True
args: 'res.currency', 'Currency'
default_capacity
Float
default=1.0
help='Default number of pieces (in product UoM) that can be produced in parallel (at the same time) at this work center. For example: the capacity is 5 and you need to produce 10 units, then the operation time listed on the BOM will be multiplied by two. However, note that both time before and after production will only be counted once.'
args: 'Capacity'
has_routing_lines
Boolean
compute='_compute_has_routing_lines'
help='Technical field for workcenter views'
name
Char
readonly=False
related='resource_id.name'
store=True
args: 'Work Center'
note
Html
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='Overall Effective Efficiency Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hours over the last month'
args: 'Productive Time'
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
tag_ids
Many2many → mrp.workcenter.tag
time_efficiency
Float
default=100
readonly=False
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
time_stop
Float
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Pending Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Read Work Orders'
action_archive(self)
action_show_operations(self)
action_work_order(self)
create(self, vals_list)
unblock(self)
write(self, vals)
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel for this product.'
args: 'Capacity'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
time_start
Float
default=_default_time_start
help='Time in minutes for the setup.'
args: 'Setup Time (minutes)'
time_stop
Float
default=_default_time_stop
help='Time in minutes for the cleaning.'
args: 'Cleanup Time (minutes)'
workcenter_id
Many2one → mrp.workcenter
required=True
string='Work Center'
args: 'mrp.workcenter'
No public methods.
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company'
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness'
production_id
Many2one → mrp.production
readonly=True
related='workorder_id.production_id'
string='Manufacturing Order'
args: 'mrp.production'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
check_company=True
index=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
check_company=True
index=True
args: 'mrp.workorder', 'Work Order'
button_block(self)
loss_id
Many2one → mrp.workcenter.productivity.loss.type
domain=[('loss_type', 'in', ['quality', 'availability'])]
string='Category'
args: 'mrp.workcenter.productivity.loss.type'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
translate=True
args: 'Blocking Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
loss_type
Selection
default='availability'
required=True
string='Category'
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
No public methods.
color
Integer
default=_get_default_color
args: 'Color Index'
name
Char
required=True
args: 'Tag Name'
No public methods.
allow_workorder_dependencies
Boolean
related='production_id.allow_workorder_dependencies'
barcode
Char
compute='_compute_barcode'
store=True
blocked_by_workorder_ids
Many2many → mrp.workorder
column1='workorder_id'
column2='blocked_by_id'
copy=False
domain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"
relation='mrp_workorder_dependencies_rel'
string='Blocked By'
args: 'mrp.workorder'
company_id
Many2one
related='production_id.company_id'
consumption
Selection
related='production_id.consumption'
costs_hour
Float
default=0.0
group_operator='avg'
string='Cost per hour'
date_finished
Datetime
compute='_compute_dates'
copy=False
inverse='_set_dates'
store=True
args: 'End'
date_start
Datetime
compute='_compute_dates'
copy=False
inverse='_set_dates'
store=True
args: 'Start'
duration
Float
compute='_compute_duration'
copy=False
inverse='_set_duration'
readonly=False
store=True
args: 'Real Duration'
duration_expected
Float
compute='_compute_duration_expected'
digits=(16, 2)
readonly=False
store=True
args: 'Expected Duration'
duration_percent
Integer
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Per Unit'
finished_lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
readonly=False
related='production_id.lot_producing_id'
string='Lot/Serial Number'
args: 'stock.lot'
has_worksheet
Boolean
compute='_compute_has_worksheet'
is_planned
Boolean
related='production_id.is_planned'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_working_users'
args: 'Is the Current User Working'
json_popover
Char
compute='_compute_json_popover'
args: 'Popover Data JSON'
last_working_user_id
One2many → res.users
compute='_compute_working_users'
string='Last user that worked on this work order.'
args: 'res.users'
leave_id
Many2one → resource.calendar.leaves
check_company=True
copy=False
help='Slot into workcenter calendar once planned'
args: 'resource.calendar.leaves'
move_finished_ids
One2many → stock.move
domain=[('raw_material_production_id', '=', False), ('production_id', '!=', False)]
args: 'stock.move', 'workorder_id', 'Finished Moves'
move_line_ids
One2many → stock.move.line
help='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_ids
One2many → stock.move
domain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)]
args: 'stock.move', 'workorder_id', 'Raw Moves'
name
Char
required=True
args: 'Work Order'
needed_by_workorder_ids
Many2many → mrp.workorder
column1='blocked_by_id'
column2='workorder_id'
copy=False
domain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"
relation='mrp_workorder_dependencies_rel'
string='Blocks'
args: 'mrp.workorder'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
args: 'mrp.routing.workcenter', 'Operation'
operation_note
Html
readonly=True
related='operation_id.note'
args: 'Description'
product_id
Many2one
check_company=True
readonly=True
related='production_id.product_id'
store=True
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
args: 'uom.uom', 'Unit of Measure'
production_availability
Selection
readonly=True
related='production_id.reservation_state'
store=True
string='Stock Availability'
production_bom_id
Many2one → mrp.bom
related='production_id.bom_id'
args: 'mrp.bom'
production_date
Datetime
related='production_id.date_start'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
check_company=True
index='btree'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
production_state
Selection
readonly=True
related='production_id.state'
string='Production State'
progress
Float
compute='_compute_progress'
digits=(16, 2)
args: 'Progress Done (%)'
qty_produced
Float
copy=False
default=0.0
digits='Product Unit of Measure'
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_producing
Float
compute='_compute_qty_producing'
digits='Product Unit of Measure'
inverse='_set_qty_producing'
string='Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_remaining
Float
compute='_compute_qty_remaining'
digits='Product Unit of Measure'
args: 'Quantity To Be Produced'
qty_reported_from_previous_wo
Float
copy=False
digits='Product Unit of Measure'
help='The quantity already produced awaiting allocation in the backorders chain.'
args: 'Carried Quantity'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_json_popover
Boolean
compute='_compute_json_popover'
args: 'Show Popover?'
state
Selection
compute='_compute_state'
copy=False
default='pending'
index=True
readonly=True
recursive=True
store=True
string='Status'
args: [('pending', 'Waiting for another WO'), ('waiting', 'Waiting for components'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
copy=False
args: 'mrp.workcenter.productivity', 'workorder_id'
workcenter_id
Many2one → mrp.workcenter
check_company=True
group_expand='_read_group_workcenter_id'
required=True
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
related='workcenter_id.working_state'
string='Workcenter Status'
working_user_ids
One2many → res.users
compute='_compute_working_users'
string='Working user on this work order.'
args: 'res.users'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
worksheet_google_slide
Char
readonly=True
related='operation_id.worksheet_google_slide'
args: 'Worksheet URL'
worksheet_type
Selection
readonly=True
related='operation_id.worksheet_type'
string='Worksheet Type'
action_cancel(self)
action_mark_as_done(self)
action_open_wizard(self)
action_replan(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self)
button_unblock(self)
create(self, values)
end_all(self)
end_previous(self, doall=False)
gantt_unavailability(self, start_date, end_date, scale, group_bys=None, rows=None)
get_duration(self)
get_working_duration(self)
unlink(self)
write(self, values)
production_ids
Many2many → mrp.production
process(self)
mrp_production_ids
One2many → mrp.production
run(self, procurements, raise_user_error=True)
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
search='_search_is_kits'
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
digits='Product Unit of Measure'
args: 'Manufactured'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# BoM Where Used'
variant_bom_ids
One2many → mrp.bom
action_archive(self)
action_open_quants(self)
action_used_in_bom(self)
action_view_bom(self)
action_view_mos(self)
get_components(self)
write(self, values)
No new fields.
Public methods (0)No public methods.
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
search='_search_is_kits'
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
digits='Product Unit of Measure'
args: 'Manufactured'
used_in_bom_count
Integer
compute='_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, values)
No new fields.
Public methods (2)get_html(self, bom_id=False, searchQty=1, searchVariant=False)
get_warehouses(self)
No new fields.
Public methods (1)get_report_values(self, production_id)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
create_missing_unbuild_sequences(self)
group_mrp_byproducts
Boolean
implied_group='mrp.group_mrp_byproducts'
args: 'By-Products'
group_mrp_reception_report
Boolean
implied_group='mrp.group_mrp_reception_report'
args: 'Allocation Report for Manufacturing Orders'
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'MRP Work Orders'
group_mrp_workorder_dependencies
Boolean
implied_group='mrp.group_mrp_workorder_dependencies'
args: 'Work Order Dependencies'
group_unlocked_by_default
Boolean
implied_group='mrp.group_unlocked_by_default'
args: 'Unlock Manufacturing Orders'
manufacturing_lead
Float
readonly=False
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time'
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_subcontracting
Boolean
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
use_manufacturing_lead
Boolean
config_parameter='mrp.use_manufacturing_lead'
string='Default Manufacturing Lead Time'
set_values(self)
expected_qty
Float
digits='Product Unit of Measure'
args: 'Expected Quantity'
mark_as_done
Boolean
multiple_lot_components_names
Text
produced_qty
Float
digits='Product Unit of Measure'
args: 'Produced Quantity'
production_id
Many2one → mrp.production
serial_numbers
Text
show_apply
Boolean
show_backorders
Boolean
apply(self)
create_backorder(self)
generate_serial_numbers_production(self)
no_backorder(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='raw_material_production_id.bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_line_id
Many2one → mrp.bom.line
check_company=True
args: 'mrp.bom.line', 'BoM Line'
byproduct_id
Many2one → mrp.bom.byproduct
check_company=True
help='By-product line that generated the move in a manufacturing order'
args: 'mrp.bom.byproduct', 'By-products'
consume_unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Consumed Disassembly Order'
cost_share
Float
digits=(5, 2)
help="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_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Created Production Order'
description_bom_line
Char
compute='_compute_description_bom_line'
args: 'Kit'
is_done
Boolean
compute='_compute_is_done'
store=True
args: 'Done'
manual_consumption
Boolean
compute='_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.'
store=True
args: 'Manual Consumption'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Operation To Consume'
order_finished_lot_id
Many2one → stock.lot
index='btree_not_null'
related='raw_material_production_id.lot_producing_id'
store=True
string='Finished Lot/Serial Number'
args: 'stock.lot'
product_qty_available
Float
depends=['product_id']
related='product_id.qty_available'
args: 'Product On Hand Quantity'
product_virtual_available
Float
depends=['product_id']
related='product_id.virtual_available'
args: 'Product Forecasted Quantity'
production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
args: 'mrp.production', 'Production Order for finished products'
raw_material_production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
args: 'mrp.production', 'Production Order for components'
should_consume_qty
Float
compute='_compute_should_consume_qty'
digits='Product Unit of Measure'
args: 'Quantity To Consume'
unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Disassembly Order'
unit_factor
Float
compute='_compute_unit_factor'
store=True
args: 'Unit Factor'
workorder_id
Many2one → mrp.workorder
check_company=True
copy=False
index='btree_not_null'
args: 'mrp.workorder', 'Work Order To Consume'
action_explode(self)
action_open_reference(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
write(self, vals)
description_bom_line
Char
related='move_id.description_bom_line'
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
create(self, values)
write(self, vals)
has_kits
Boolean
compute='_compute_has_kits'
action_detailed_operations(self)
auto_print_done_mrp_lot
Boolean
help='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_labels
Boolean
help='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_order
Boolean
help='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_lot
Boolean
help='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_report
Boolean
help='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_labels
Boolean
help='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'
code
Selection
ondelete={'mrp_operation': <expr>}
selection_add=[('mrp_operation', 'Manufacturing')]
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
done_mrp_lot_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Lot/SN Label to Print'
generated_mrp_lot_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Generated Lot/SN Label to Print'
mrp_product_label_to_print
Selection
default='pdf'
args: [('pdf', 'PDF'), ('zpl', 'ZPL')], 'Product Label to Print'
use_auto_consume_components_lots
Boolean
help='Allow automatic consumption of tracked components that are reserved'
string='Consume Reserved Lots/Serial Numbers automatically'
use_create_components_lots
Boolean
default=False
help='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 (1)action_apply_inventory(self)
action
Selection
ondelete={'manufacture': 'cascade'}
selection_add=[('manufacture', 'Manufacture')]
No public methods.
bom_id
Many2one → mrp.bom
check_company=True
domain="[('type', '=', 'phantom'), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_template)]"
args: 'mrp.bom', 'Kit'
product_is_kit
Boolean
related='product_id.is_kits'
product_template
Many2one
related='product_id.product_tmpl_id'
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
do_replenish(self, values=False)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
manu_type_id
Many2one → stock.picking.type
check_company=True
copy=False
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Manufacture MTO Rule'
manufacture_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Manufacture Rule'
manufacture_steps
Selection
default='mrp_one_step'
help='Produce: Move the components to the production location directly and start the manufacturing process.\nPick / Produce: Unload the components from the Stock to Input location first, and then transfer it to the Production location.'
required=True
args: [('mrp_one_step', 'Manufacture (1 step)'), ('pbm', 'Pick components and then manufacture (2 steps)'), ('pbm_sam', 'Pick components, manufacture and then store products (3 steps)')], 'Manufacture'
manufacture_to_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture to Resupply'
pbm_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Picking before Manufacturing Location'
pbm_mto_pull_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Picking Before Manufacturing MTO Rule'
pbm_route_id
Many2one → stock.route
copy=False
ondelete='restrict'
args: 'stock.route', 'Picking Before Manufacturing Route'
pbm_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Picking Before Manufacturing Operation Type'
sam_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Stock after Manufacturing Location'
sam_rule_id
Many2one → stock.rule
copy=False
args: 'stock.rule', 'Stock After Manufacturing Rule'
sam_type_id
Many2one → stock.picking.type
check_company=True
copy=False
args: 'stock.picking.type', 'Stock After Manufacturing Operation Type'
get_rules_dict(self)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
domain="[('type', '=', 'normal'), '&', '|', ('company_id', '=', company_id), ('company_id', '=', False), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_tmpl_id)]"
string='Bill of Materials'
args: 'mrp.bom'
manufacturing_visibility_days
Float
default=0.0
help='Visibility Days applied on the manufacturing routes.'
show_bom
Boolean
compute='_compute_show_bom'
args: 'Show BoM column'
No public methods.
No new fields.
Public methods (1)check_product_is_not_kit(self)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| 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 |
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_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_product_product_search_view |
mrp.product.product.search | product.product | xpath | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | xpath | 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.tree | mrp.production | tree | 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.tree.editable | mrp.workorder | tree | New |
mrp_production_workorder_tree_view |
mrp.production.work.order.tree | mrp.workorder | xpath | Inherits mrp.mrp_production_workorder_tree_editable_view |
mrp_report_product_product_replenishment |
mrp_report_product_product_replenishment | ir.ui.view | qweb | Inherits stock.report_product_product_replenishment |
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.tree | mrp.routing.workcenter | xpath | Inherits mrp_routing_workcenter_tree_view |
mrp_routing_workcenter_copy_to_bom_tree_view |
mrp.routing.workcenter.copy_to_bom.tree | mrp.routing.workcenter | xpath | 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_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | 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.tree | mrp.unbuild | tree | 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.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workcenter_view_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
mrp_workorder_view_gantt |
mrp.workorder.view.gantt | mrp.workorder | gantt | 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.tree | mrp.workcenter.productivity.loss | tree | 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.tree | mrp.workcenter.productivity | tree | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | xpath | Inherits stock.product_form_view_procurement_button |
product_template_form_view_bom_button |
product.template.procurement | product.template | xpath | Inherits stock.product_template_form_view_procurement_button |
production_message |
production_message | ir.ui.view | qweb | New |
report_bom_structure |
report_bom_structure | 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 | xpath | Inherits base.res_config_settings_view_form |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | filter | Inherits stock.stock_move_line_view_search |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | field | 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 | xpath | Inherits stock.stock_scrap_search_view |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_production_move_template |
track_production_move_template | ir.ui.view | qweb | New |
view_assign_serial_numbers_production |
mrp_assign_serial_numbers | stock.assign.serial | form | New |
view_change_production_qty_wizard |
Change Quantity To Produce | change.production.qty | form | New |
view_document_file_kanban_mrp |
mrp.document kanban.mrp | mrp.document | kanban | New |
view_immediate_production |
mrp.immediate.production.view.form | mrp.immediate.production | form | New |
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_document_form |
mrp.document.form | mrp.document | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | xpath | 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_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_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 | xpath | Inherits stock.view_picking_form |
view_picking_type_form_inherit_mrp |
Operation Types | stock.picking.type | field | 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_detailed_operation_tree_mrp |
stock.move.line.operations.tree.mrp | stock.move.line | xpath | Inherits stock.view_stock_move_line_detailed_operation_tree |
view_stock_move_line_operation_tree_finished |
stock.move.line.operation.tree.finished | stock.move.line | xpath | Inherits stock.view_stock_move_line_operation_tree |
view_stock_move_operations_finished |
stock.move.operations.finished.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_stock_move_operations_raw |
stock.move.operations.raw.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | xpath | Inherits stock.view_warehouse |
view_warehouse_orderpoint_tree_editable_inherited_purchase |
stock.warehouse.orderpoint.tree.editable.inherit.purchase | stock.warehouse.orderpoint | field | 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_gantt_production |
mrp.production.work.order.gantt.production | mrp.workorder | gantt | 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 |
mo_id
Many2one → mrp.production
ondelete='cascade'
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
allow_operation_dependencies
Boolean
help='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'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
byproduct_ids
One2many → mrp.bom.byproduct
copy=True
args: 'mrp.bom.byproduct', 'bom_id', 'By-products'
code
Char
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
consumption
Selection
default='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 Manual 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=True
string='Flexible Consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
operation_ids
One2many → mrp.routing.workcenter
copy=True
args: 'mrp.routing.workcenter', 'bom_id', 'Operations'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
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. 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_ids
Many2many → product.template.attribute.value
compute='_compute_possible_product_template_attribute_value_ids'
args: 'product.template.attribute.value'
product_id
Many2one → product.product
check_company=True
domain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='If a product variant is defined the BOM is available only for this product.'
index=True
args: 'product.product', 'Product Variant'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
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_id
Many2one → product.template
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
required=True
args: 'product.template', 'Product'
product_uom_category_id
Many2one
related='product_tmpl_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Unit of Measure'
ready_to_produce
Selection
default='all_available'
required=True
string='Manufacturing Readiness'
args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')]
sequence
Integer
type
Selection
default='normal'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
check_kit_has_not_orderpoint(self)
copy(self, default=None)
explode(self, product, quantity, picking_type=False)
get_import_templates(self)
name_create(self, name)
name_get(self)
onchange_bom_structure(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
toggle_active(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
args: 'mrp.bom', 'BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
cost_share
Float
digits=(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_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Produced in Operation'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'By-product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Unit of Measure'
sequence
Integer
No public methods.
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
attachments_count
Integer
compute='_compute_attachments_count'
args: 'Attachments Count'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
manual_consumption
Boolean
compute='_compute_manual_consumption'
copy=True
default=False
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=False
store=True
args: 'Manual Consumption'
manual_consumption_readonly
Boolean
compute='_compute_manual_consumption_readonly'
args: 'Manual Consumption Readonly'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('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_id
Many2one → product.template
related='bom_id.product_tmpl_id'
args: 'product.template', 'Parent Product Template'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'Component'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
index=True
related='product_id.product_tmpl_id'
store=True
args: 'product.template', 'Product Template'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Product Unit of Measure'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
tracking
Selection
related='product_id.tracking'
action_see_attachments(self)
create(self, vals_list)
onchange_product_id(self)
onchange_product_uom_id(self)
consumption
Selection
compute='_compute_consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
mrp_consumption_warning_line_ids
One2many → mrp.consumption.warning.line
mrp_production_count
Integer
compute='_compute_mrp_production_count'
mrp_production_ids
Many2many → mrp.production
action_cancel(self)
action_confirm(self)
action_set_qty(self)
consumption
Selection
related='mrp_production_id.consumption'
mrp_consumption_warning_id
Many2one → mrp.consumption.warning
ondelete='cascade'
readonly=True
required=True
args: 'mrp.consumption.warning', 'Parent Wizard'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
product_consumed_qty_uom
Float
readonly=True
args: 'Consumed'
product_expected_qty_uom
Float
readonly=True
args: 'To Consume'
product_id
Many2one → product.product
readonly=True
required=True
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
No public methods.
active
Boolean
default=True
args: 'Active'
ir_attachment_id
Many2one → ir.attachment
ondelete='cascade'
required=True
string='Related attachment'
args: 'ir.attachment'
priority
Selection
string='Priority'
args: [('0', 'Normal'), ('1', 'Low'), ('2', 'High'), ('3', 'Very High')]
copy(self, default=None)
unlink(self)
immediate_production_line_ids
One2many → mrp.immediate.production.line
string='Immediate Production Lines'
args: 'mrp.immediate.production.line', 'immediate_production_id'
mo_ids
Many2many → mrp.production
show_productions
Boolean
compute='_compute_show_production'
default_get(self, fields)
process(self)
immediate_production_id
Many2one → mrp.immediate.production
required=True
args: 'mrp.immediate.production', 'Immediate Production'
production_id
Many2one → mrp.production
required=True
args: 'mrp.production', 'Production'
to_immediate
Boolean
No public methods.
No new fields.
Public methods (0)No public methods.
allow_workorder_dependencies
Boolean
backorder_sequence
Integer
copy=False
default=0
help='Backorder sequence, if equals to 0 means there is not related backorder'
args: 'Backorder Sequence'
bom_id
Many2one → mrp.bom
check_company=True
compute='_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='Bill of Materials allow you to define the list of required components to make a finished product.'
precompute=True
readonly=False
store=True
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
components_availability
Char
compute='_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_state
Selection
compute='_compute_components_availability'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
confirm_cancel
Boolean
compute='_compute_confirm_cancel'
consumption
Selection
default='flexible'
readonly=True
required=True
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
date_deadline
Datetime
compute='_compute_date_deadline'
copy=False
help='Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time.'
readonly=True
store=True
args: 'Deadline'
date_finished
Datetime
copy=False
readonly=True
args: 'End Date'
date_planned_finished
Datetime
compute='_compute_date_planned_finished'
copy=False
help='Date at which you plan to finish the production.'
store=True
args: 'Scheduled End Date'
date_planned_start
Datetime
copy=False
default=_get_default_date_planned_start
help='Date at which you plan to start the production.'
index=True
required=True
args: 'Scheduled Date'
date_start
Datetime
copy=False
readonly=True
args: 'Start Date'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
delivery_count
Integer
compute='_compute_picking_ids'
string='Delivery Orders'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
forecasted_issue
Boolean
compute='_compute_forecasted_issue'
is_locked
Boolean
copy=False
default=_get_default_is_locked
args: 'Is Locked'
is_planned
Boolean
compute='_compute_is_planned'
store=True
args: 'Its Operations are Planned'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_locations'
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the system will stock the finished products.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Finished Products Location'
location_src_id
Many2one → stock.location
check_company=True
compute='_compute_locations'
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the system will look for components.'
precompute=True
readonly=False
required=True
store=True
args: 'stock.location', 'Components Location'
lot_producing_id
Many2one → stock.lot
check_company=True
copy=False
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
string='Lot/Serial Number'
args: 'stock.lot'
move_byproduct_ids
One2many → stock.move
compute='_compute_move_byproduct_ids'
inverse='_set_move_byproduct_ids'
args: 'stock.move'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
compute='_compute_move_finished_ids'
copy=False
domain=[('scrapped', '=', False)]
readonly=False
store=True
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
compute='_compute_move_raw_ids'
copy=False
domain=[('scrapped', '=', False)]
readonly=False
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
args: 'stock.move', 'raw_material_production_id', 'Components'
mrp_production_backorder_count
Integer
compute='_compute_mrp_production_backorder'
args: 'Count of linked backorder'
mrp_production_child_count
Integer
compute='_compute_mrp_production_child_count'
args: 'Number of generated MO'
mrp_production_source_count
Integer
compute='_compute_mrp_production_source_count'
args: 'Number of source MO'
name
Char
copy=False
readonly=True
args: 'Reference'
orderpoint_id
Many2one → stock.warehouse.orderpoint
copy=False
index='btree_not_null'
args: 'stock.warehouse.orderpoint', 'Orderpoint'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
string='Picking associated to this manufacturing order'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
check_company=True
compute='_compute_picking_type_id'
copy=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
index=True
precompute=True
readonly=False
required=True
store=True
args: 'stock.picking.type', 'Operation Type'
priority
Selection
default='0'
help='Components will be reserved first for the MO with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
product_description_variants
Char
product_id
Many2one → product.product
check_company=True
compute='_compute_product_id'
copy=True
domain="[\n ('type', 'in', ['product', 'consu']),\n '|',\n ('company_id', '=', False),\n ('company_id', '=', company_id)\n ]\n "
precompute=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=True
default=1.0
digits='Product Unit of Measure'
readonly=False
required=True
store=True
tracking=True
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_tracking
Selection
related='product_id.tracking'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
compute='_compute_uom_id'
copy=True
domain="[('category_id', '=', product_uom_category_id)]"
precompute=True
readonly=False
required=True
store=True
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
compute='_compute_product_uom_qty'
store=True
string='Total Quantity'
product_variant_attributes
Many2many → product.template.attribute.value
related='product_id.product_template_attribute_value_ids'
args: 'product.template.attribute.value'
production_capacity
Float
compute='_compute_production_capacity'
help='Quantity that can be produced with the current stock of components'
production_duration_expected
Float
compute='_compute_production_duration_expected'
help='Total expected duration (in minutes)'
args: 'Expected Duration'
production_location_id
Many2one → stock.location
compute='_compute_production_location'
store=True
args: 'stock.location', 'Production Location'
production_real_duration
Float
compute='_compute_production_real_duration'
help='Total real duration (in minutes)'
args: 'Real Duration'
propagate_cancel
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
qty_producing
Float
copy=False
digits='Product Unit of Measure'
string='Quantity Producing'
reservation_state
Selection
compute='_compute_reservation_state'
copy=False
help='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=True
readonly=True
store=True
string='MO Readiness'
tracking=True
args: [('confirmed', 'Waiting'), ('assigned', 'Ready'), ('waiting', 'Waiting Another Operation')]
reserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can reserve quantities'
args: 'Allowed to Reserve Production'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_allocation
Boolean
compute='_compute_show_allocation'
help='Technical Field used to decide whether the button "Allocation" should be displayed.'
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
show_lock
Boolean
compute='_compute_show_lock'
args: 'Show Lock/unlock buttons'
show_lot_ids
Boolean
compute='_compute_show_lot_ids'
args: 'Display the serial number shortcut on the moves'
show_serial_mass_produce
Boolean
compute='_compute_show_serial_mass_produce'
args: 'Display the serial mass produce wizard action'
state
Selection
compute='_compute_state'
copy=False
help=" * 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=True
readonly=True
store=True
string='State'
tracking=True
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('progress', 'In Progress'), ('to_close', 'To Close'), ('done', 'Done'), ('cancel', 'Cancelled')]
unbuild_count
Integer
compute='_compute_unbuild_count'
string='Number of Unbuilds'
unbuild_ids
One2many → mrp.unbuild
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Production'
use_auto_consume_components_lots
Boolean
related='picking_type_id.use_auto_consume_components_lots'
use_create_components_lots
Boolean
related='picking_type_id.use_create_components_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.users', 'Responsible'
warehouse_id
Many2one
related='location_src_id.warehouse_id'
workorder_ids
One2many → mrp.workorder
compute='_compute_workorder_ids'
copy=True
readonly=False
store=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_generate_serial(self)
action_merge(self)
action_product_forecast_report(self)
action_see_move_scrap(self)
action_serial_mass_produce_wizard(self)
action_split(self)
action_toggle_is_locked(self)
action_view_mo_delivery(self)
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)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unbuild(self)
button_unplan(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
do_unreserve(self)
get_empty_list_help(self, help)
unlink(self)
write(self, vals)
mrp_production_backorder_line_ids
One2many → mrp.production.backorder.line
string='Backorder Confirmation Lines'
args: 'mrp.production.backorder.line', 'mrp_production_backorder_id'
mrp_production_ids
Many2many → mrp.production
show_backorder_lines
Boolean
compute='_compute_show_backorder_lines'
args: 'Show backorder lines'
action_backorder(self)
action_close_mo(self)
mrp_production_backorder_id
Many2one → mrp.production.backorder
ondelete='cascade'
required=True
args: 'mrp.production.backorder', 'MO Backorder'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
to_backorder
Boolean
No public methods.
counter
Integer
compute='_compute_counter'
default=0
readonly=False
store=True
args: 'Split #'
product_id
Many2one
related='production_id.product_id'
product_qty
Float
related='production_id.product_qty'
product_uom_id
Many2one
related='production_id.product_uom_id'
production_capacity
Float
related='production_id.production_capacity'
production_detailed_vals_ids
One2many → mrp.production.split.line
compute='_compute_details'
readonly=False
store=True
args: 'mrp.production.split.line', 'mrp_production_split_id', 'Split Details'
production_id
Many2one → mrp.production
readonly=True
args: 'mrp.production', 'Manufacturing Order'
production_split_multi_id
Many2one → mrp.production.split.multi
valid_details
Boolean
compute='_compute_valid_details'
args: 'Valid'
action_prepare_split(self)
action_return_to_list(self)
action_split(self)
date
Datetime
mrp_production_split_id
Many2one → mrp.production.split
ondelete='cascade'
required=True
args: 'mrp.production.split', 'Split Production'
quantity
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
user_id
Many2one → res.users
domain=<expr>
args: 'res.users', 'Responsible'
No public methods.
production_ids
One2many → mrp.production.split
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
allow_operation_dependencies
Boolean
related='bom_id.allow_operation_dependencies'
blocked_by_operation_ids
Many2many → mrp.routing.workcenter
column1='operation_id'
column2='blocked_by_id'
copy=False
domain="[('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_id
Many2one → mrp.bom
check_company=True
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Bill of Material'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → res.company
related='bom_id.company_id'
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
needed_by_operation_ids
Many2many → mrp.routing.workcenter
column1='blocked_by_id'
column2='operation_id'
copy=False
domain="[('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'
note
Html
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_computed_on
Char
compute='_compute_time_computed_on'
args: 'Computed on last'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help="Time in minutes:- In manual mode, time used- In automatic mode, supposed first time when there aren't any work orders yet"
args: 'Manual Duration'
time_mode
Selection
default='manual'
string='Duration Computation'
args: [('auto', 'Compute based on tracked time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
check_company=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
worksheet_google_slide
Char
help='Paste the url of your Google Slide. Make sure the access to the document is public.'
args: 'Google Slide'
worksheet_type
Selection
default='text'
string='Worksheet'
args: [('pdf', 'PDF'), ('google_slide', 'Google Slide'), ('text', 'Text')]
action_archive(self)
copy_existing_operations(self)
copy_to_bom(self)
write(self, values)
bom_id
Many2one → mrp.bom
check_company=True
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 ]\n"
states={'done': [('readonly', True)]}
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
states={'done': [('readonly', True)]}
args: 'res.company', 'Company'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where you want to send the components resulting from the unbuild order.'
precompute=True
readonly=False
required=True
states={'done': [('readonly', True)]}
store=True
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
compute='_compute_location_id'
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the product you want to unbuild is.'
precompute=True
readonly=False
required=True
states={'done': [('readonly', True)]}
store=True
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
args: 'stock.lot', 'Lot/Serial Number'
mo_bom_id
Many2one → mrp.bom
related='mo_id.bom_id'
args: 'mrp.bom', 'Bill of Material used on the Production Order'
mo_id
Many2one → mrp.production
check_company=True
domain="[('state', '=', 'done'), ('company_id', '=', company_id), ('product_id', '=?', product_id), ('bom_id', '=?', bom_id)]"
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
product_uom_id
Many2one → uom.uom
compute='_compute_product_uom_id'
precompute=True
readonly=False
required=True
states={'done': [('readonly', True)]}
store=True
args: 'uom.uom', 'Unit of Measure'
state
Selection
default='draft'
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals_list)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
readonly=False
related='resource_id.active'
store=True
args: 'Active'
alternative_workcenter_ids
Many2many → mrp.workcenter
check_company=True
domain="[('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_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hours over the last month'
args: 'Blocked Time'
capacity_ids
One2many → mrp.workcenter.capacity
copy=True
help='Specific number of pieces that can be produced in parallel per product.'
string='Product Capacities'
args: 'mrp.workcenter.capacity', 'workcenter_id'
code
Char
copy=False
args: 'Code'
color
Integer
costs_hour
Float
default=0.0
help='Hourly processing cost.'
string='Cost per hour'
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
required=True
args: 'res.currency', 'Currency'
default_capacity
Float
default=1.0
help='Default number of pieces (in product UoM) that can be produced in parallel (at the same time) at this work center. For example: the capacity is 5 and you need to produce 10 units, then the operation time listed on the BOM will be multiplied by two. However, note that both time before and after production will only be counted once.'
args: 'Capacity'
name
Char
readonly=False
related='resource_id.name'
store=True
args: 'Work Center'
note
Html
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='Overall Effective Efficiency Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hours over the last month'
args: 'Productive Time'
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
tag_ids
Many2many → mrp.workcenter.tag
time_efficiency
Float
default=100
readonly=False
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
time_stop
Float
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Pending Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Read Work Orders'
action_archive(self)
action_show_operations(self)
action_work_order(self)
create(self, vals_list)
unblock(self)
write(self, vals)
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel for this product.'
args: 'Capacity'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
time_start
Float
help='Additional time in minutes for the setup.'
args: 'Setup Time (minutes)'
time_stop
Float
help='Additional time in minutes for the cleaning.'
args: 'Cleanup Time (minutes)'
workcenter_id
Many2one → mrp.workcenter
required=True
string='Work Center'
args: 'mrp.workcenter'
No public methods.
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company'
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness'
production_id
Many2one → mrp.production
readonly=True
related='workorder_id.production_id'
string='Manufacturing Order'
args: 'mrp.production'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
check_company=True
index=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
check_company=True
index=True
args: 'mrp.workorder', 'Work Order'
button_block(self)
loss_id
Many2one → mrp.workcenter.productivity.loss.type
domain=[('loss_type', 'in', ['quality', 'availability'])]
string='Category'
args: 'mrp.workcenter.productivity.loss.type'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
args: 'Blocking Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
loss_type
Selection
default='availability'
required=True
string='Category'
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
name_get(self)
color
Integer
default=_get_default_color
args: 'Color Index'
name
Char
required=True
args: 'Tag Name'
No public methods.
allow_workorder_dependencies
Boolean
related='production_id.allow_workorder_dependencies'
blocked_by_workorder_ids
Many2many → mrp.workorder
column1='workorder_id'
column2='blocked_by_id'
copy=False
domain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"
relation='mrp_workorder_dependencies_rel'
string='Blocked By'
args: 'mrp.workorder'
company_id
Many2one
related='production_id.company_id'
consumption
Selection
related='production_id.consumption'
costs_hour
Float
default=0.0
group_operator='avg'
string='Cost per hour'
date_finished
Datetime
copy=False
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'End Date'
date_planned_finished
Datetime
compute='_compute_dates_planned'
copy=False
inverse='_set_dates_planned'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
args: 'Scheduled End Date'
date_planned_start
Datetime
compute='_compute_dates_planned'
copy=False
inverse='_set_dates_planned'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
args: 'Scheduled Start Date'
date_start
Datetime
copy=False
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Start Date'
duration
Float
compute='_compute_duration'
copy=False
inverse='_set_duration'
readonly=False
store=True
args: 'Real Duration'
duration_expected
Float
compute='_compute_duration_expected'
digits=(16, 2)
readonly=False
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
args: 'Expected Duration'
duration_percent
Integer
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Per Unit'
finished_lot_id
Many2one → stock.lot
check_company=True
compute='_compute_finished_lot_id'
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
inverse='_set_finished_lot_id'
search='_search_finished_lot_id'
string='Lot/Serial Number'
args: 'stock.lot'
is_planned
Boolean
related='production_id.is_planned'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_working_users'
args: 'Is the Current User Working'
json_popover
Char
compute='_compute_json_popover'
args: 'Popover Data JSON'
last_working_user_id
One2many → res.users
compute='_compute_working_users'
string='Last user that worked on this work order.'
args: 'res.users'
leave_id
Many2one → resource.calendar.leaves
check_company=True
copy=False
help='Slot into workcenter calendar once planned'
args: 'resource.calendar.leaves'
move_finished_ids
One2many → stock.move
domain=[('raw_material_production_id', '=', False), ('production_id', '!=', False)]
args: 'stock.move', 'workorder_id', 'Finished Moves'
move_line_ids
One2many → stock.move.line
help='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_ids
One2many → stock.move
domain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)]
args: 'stock.move', 'workorder_id', 'Raw Moves'
name
Char
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Work Order'
needed_by_workorder_ids
Many2many → mrp.workorder
column1='blocked_by_id'
column2='workorder_id'
copy=False
domain="[('allow_workorder_dependencies', '=', True), ('id', '!=', id), ('production_id', '=', production_id)]"
relation='mrp_workorder_dependencies_rel'
string='Blocks'
args: 'mrp.workorder'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
args: 'mrp.routing.workcenter', 'Operation'
operation_note
Html
readonly=True
related='operation_id.note'
args: 'Description'
product_id
Many2one
check_company=True
readonly=True
related='production_id.product_id'
store=True
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
args: 'uom.uom', 'Unit of Measure'
production_availability
Selection
readonly=True
related='production_id.reservation_state'
store=True
string='Stock Availability'
production_bom_id
Many2one → mrp.bom
related='production_id.bom_id'
args: 'mrp.bom'
production_date
Datetime
related='production_id.date_planned_start'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
check_company=True
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
production_state
Selection
readonly=True
related='production_id.state'
string='Production State'
progress
Float
compute='_compute_progress'
digits=(16, 2)
args: 'Progress Done (%)'
qty_produced
Float
copy=False
default=0.0
digits='Product Unit of Measure'
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_producing
Float
compute='_compute_qty_producing'
digits='Product Unit of Measure'
inverse='_set_qty_producing'
string='Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_remaining
Float
compute='_compute_qty_remaining'
digits='Product Unit of Measure'
args: 'Quantity To Be Produced'
qty_reported_from_previous_wo
Float
copy=False
digits='Product Unit of Measure'
help='The quantity already produced awaiting allocation in the backorders chain.'
args: 'Carried Quantity'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_json_popover
Boolean
compute='_compute_json_popover'
args: 'Show Popover?'
state
Selection
compute='_compute_state'
copy=False
default='pending'
index=True
readonly=True
recursive=True
store=True
string='Status'
args: [('pending', 'Waiting for another WO'), ('waiting', 'Waiting for components'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
copy=False
args: 'mrp.workcenter.productivity', 'workorder_id'
workcenter_id
Many2one → mrp.workcenter
check_company=True
group_expand='_read_group_workcenter_id'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)], 'progress': [('readonly', True)]}
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
related='workcenter_id.working_state'
string='Workcenter Status'
working_user_ids
One2many → res.users
compute='_compute_working_users'
string='Working user on this work order.'
args: 'res.users'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
worksheet_google_slide
Char
readonly=True
related='operation_id.worksheet_google_slide'
args: 'Worksheet URL'
worksheet_type
Selection
readonly=True
related='operation_id.worksheet_type'
string='Worksheet Type'
action_cancel(self)
action_open_wizard(self)
action_replan(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self)
button_unblock(self)
create(self, values)
end_all(self)
end_previous(self, doall=False)
gantt_unavailability(self, start_date, end_date, scale, group_bys=None, rows=None)
get_working_duration(self)
name_get(self)
unlink(self)
write(self, values)
mrp_production_ids
One2many → mrp.production
run(self, procurements, raise_user_error=True)
No new fields.
Public methods (0)No public methods.
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
search='_search_is_kits'
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
digits='Product Unit of Measure'
args: 'Manufactured'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# BoM Where Used'
variant_bom_ids
One2many → mrp.bom
action_archive(self)
action_compute_bom_days(self)
action_open_quants(self)
action_used_in_bom(self)
action_view_bom(self)
action_view_mos(self)
get_components(self)
write(self, values)
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
bom_line_ids
One2many → mrp.bom.line
days_to_prepare_mo
Float
default=0.0
help='Create and confirm Manufacturing Orders this many days in advance, to have enough time to replenish components or manufacture semi-finished products.\nNote that security lead times will also be considered when appropriate.'
string='Days to prepare Manufacturing Order'
is_kits
Boolean
compute='_compute_is_kits'
search='_search_is_kits'
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
digits='Product Unit of Measure'
args: 'Manufactured'
produce_delay
Float
default=0.0
help='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'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# of BoM Where is Used'
action_archive(self)
action_compute_bom_days(self)
action_used_in_bom(self)
action_view_mos(self)
write(self, values)
No new fields.
Public methods (2)get_html(self, bom_id=False, searchQty=1, searchVariant=False)
get_warehouses(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
create_missing_unbuild_sequences(self)
group_mrp_byproducts
Boolean
implied_group='mrp.group_mrp_byproducts'
args: 'By-Products'
group_mrp_reception_report
Boolean
implied_group='mrp.group_mrp_reception_report'
args: 'Allocation Report for Manufacturing Orders'
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'MRP Work Orders'
group_mrp_workorder_dependencies
Boolean
implied_group='mrp.group_mrp_workorder_dependencies'
args: 'Work Order Dependencies'
group_unlocked_by_default
Boolean
implied_group='mrp.group_unlocked_by_default'
args: 'Unlock Manufacturing Orders'
manufacturing_lead
Float
readonly=False
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time'
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_subcontracting
Boolean
module_mrp_workorder
Boolean
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
use_manufacturing_lead
Boolean
config_parameter='mrp.use_manufacturing_lead'
string='Default Manufacturing Lead Time'
set_values(self)
expected_qty
Float
digits='Product Unit of Measure'
args: 'Expected Quantity'
multiple_lot_components_names
Text
produced_qty
Float
digits='Product Unit of Measure'
args: 'Produced Quantity'
production_id
Many2one → mrp.production
serial_numbers
Text
show_apply
Boolean
show_backorders
Boolean
apply(self)
create_backorder(self)
generate_serial_numbers_production(self)
no_backorder(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='raw_material_production_id.bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_line_id
Many2one → mrp.bom.line
check_company=True
args: 'mrp.bom.line', 'BoM Line'
byproduct_id
Many2one → mrp.bom.byproduct
check_company=True
help='By-product line that generated the move in a manufacturing order'
args: 'mrp.bom.byproduct', 'By-products'
consume_unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Consumed Disassembly Order'
cost_share
Float
digits=(5, 2)
help="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_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Created Production Order'
description_bom_line
Char
compute='_compute_description_bom_line'
args: 'Kit'
is_done
Boolean
compute='_compute_is_done'
store=True
args: 'Done'
manual_consumption
Boolean
compute='_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.'
store=True
args: 'Manual Consumption'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Operation To Consume'
order_finished_lot_id
Many2one → stock.lot
index='btree_not_null'
related='raw_material_production_id.lot_producing_id'
store=True
string='Finished Lot/Serial Number'
args: 'stock.lot'
product_qty_available
Float
depends=['product_id']
related='product_id.qty_available'
args: 'Product On Hand Quantity'
product_virtual_available
Float
depends=['product_id']
related='product_id.virtual_available'
args: 'Product Forecasted Quantity'
production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
args: 'mrp.production', 'Production Order for finished products'
raw_material_production_id
Many2one → mrp.production
check_company=True
index='btree_not_null'
args: 'mrp.production', 'Production Order for components'
should_consume_qty
Float
compute='_compute_should_consume_qty'
digits='Product Unit of Measure'
args: 'Quantity To Consume'
unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Disassembly Order'
unit_factor
Float
compute='_compute_unit_factor'
store=True
args: 'Unit Factor'
workorder_id
Many2one → mrp.workorder
check_company=True
copy=False
args: 'mrp.workorder', 'Work Order To Consume'
action_explode(self)
action_open_reference(self)
action_show_details(self)
create(self, vals_list)
default_get(self, fields_list)
write(self, vals)
description_bom_line
Char
related='move_id.description_bom_line'
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
create(self, values)
write(self, vals)
has_kits
Boolean
compute='_compute_has_kits'
No public methods.
code
Selection
ondelete={'mrp_operation': 'cascade'}
selection_add=[('mrp_operation', 'Manufacturing')]
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
use_auto_consume_components_lots
Boolean
help='Allow automatic consumption of tracked components that are reserved'
string='Consume Reserved Lots/Serial Numbers automatically'
use_create_components_lots
Boolean
default=False
help='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 (1)action_apply_inventory(self)
action
Selection
ondelete={'manufacture': 'cascade'}
selection_add=[('manufacture', 'Manufacture')]
No public methods.
production_id
Many2one → mrp.production
check_company=True
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
check_company=True
states={'done': [('readonly', True)]}
args: 'mrp.workorder', 'Work Order'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
manu_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_mto_pull_id
Many2one → stock.rule
manufacture_pull_id
Many2one → stock.rule
manufacture_steps
Selection
default='mrp_one_step'
help='Produce : Move the components to the production location directly and start the manufacturing process.\nPick / Produce : Unload the components from the Stock to Input location first, and then transfer it to the Production location.'
required=True
args: [('mrp_one_step', 'Manufacture (1 step)'), ('pbm', 'Pick components and then manufacture (2 steps)'), ('pbm_sam', 'Pick components, manufacture and then store products (3 steps)')], 'Manufacture'
manufacture_to_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture to Resupply'
pbm_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Picking before Manufacturing Location'
pbm_mto_pull_id
Many2one → stock.rule
pbm_route_id
Many2one → stock.route
ondelete='restrict'
args: 'stock.route', 'Picking Before Manufacturing Route'
pbm_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Picking Before Manufacturing Operation Type'
sam_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Stock after Manufacturing Location'
sam_rule_id
Many2one → stock.rule
sam_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Stock After Manufacturing Operation Type'
get_rules_dict(self)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
domain="[('type', '=', 'normal'), '&', '|', ('company_id', '=', company_id), ('company_id', '=', False), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_tmpl_id)]"
string='Bill of Materials'
args: 'mrp.bom'
manufacturing_visibility_days
Float
default=0.0
help='Visibility Days applied on the manufacturing routes.'
show_bom
Boolean
compute='_compute_show_bom'
args: 'Show BoM column'
No public methods.
No new fields.
Public methods (1)check_product_is_not_kit(self)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| 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 |
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_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_product_product_search_view |
mrp.product.product.search | product.product | xpath | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | xpath | 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.tree | mrp.production | tree | 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.tree.editable | mrp.workorder | tree | New |
mrp_production_workorder_tree_view |
mrp.production.work.order.tree | mrp.workorder | xpath | Inherits mrp.mrp_production_workorder_tree_editable_view |
mrp_report_product_product_replenishment |
mrp_report_product_product_replenishment | ir.ui.view | qweb | Inherits stock.report_product_product_replenishment |
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.tree | mrp.routing.workcenter | xpath | Inherits mrp_routing_workcenter_tree_view |
mrp_routing_workcenter_copy_to_bom_tree_view |
mrp.routing.workcenter.copy_to_bom.tree | mrp.routing.workcenter | xpath | 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_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | 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.tree | mrp.unbuild | tree | 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.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workcenter_view_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
mrp_workorder_view_gantt |
mrp.workorder.view.gantt | mrp.workorder | gantt | 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.tree | mrp.workcenter.productivity.loss | tree | 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.tree | mrp.workcenter.productivity | tree | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | xpath | Inherits stock.product_form_view_procurement_button |
product_template_form_view_bom_button |
product.template.procurement | product.template | xpath | Inherits stock.product_template_form_view_procurement_button |
production_message |
production_message | ir.ui.view | qweb | New |
report_bom_structure |
report_bom_structure | ir.ui.view | qweb | New |
report_mrp_bom |
report_mrp_bom | ir.ui.view | qweb | New |
report_mrp_bom_line |
report_mrp_bom_line | ir.ui.view | qweb | New |
report_mrp_bom_pdf |
report_mrp_bom_pdf | ir.ui.view | qweb | New |
report_mrp_bom_pdf_line |
report_mrp_bom_pdf_line | ir.ui.view | qweb | New |
report_mrp_byproduct_line |
report_mrp_byproduct_line | ir.ui.view | qweb | New |
report_mrp_operation_line |
report_mrp_operation_line | ir.ui.view | qweb | New |
report_mrporder |
report_mrporder | ir.ui.view | qweb | New |
report_reception_report_label_mrp |
report_reception_report_label_mrp | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.mrp | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | filter | Inherits stock.stock_move_line_view_search |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | field | 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 | xpath | Inherits stock.stock_scrap_search_view |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | Inherits stock.stock_warn_insufficient_qty_form_view |
track_production_move_template |
track_production_move_template | ir.ui.view | qweb | New |
view_assign_serial_numbers_production |
mrp_assign_serial_numbers | stock.assign.serial | form | New |
view_change_production_qty_wizard |
Change Quantity To Produce | change.production.qty | form | New |
view_document_file_kanban_mrp |
mrp.document kanban.mrp | mrp.document | kanban | New |
view_immediate_production |
mrp.immediate.production.view.form | mrp.immediate.production | form | New |
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_document_form |
mrp.document.form | mrp.document | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | xpath | 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_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_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 | xpath | Inherits stock.view_picking_form |
view_picking_type_form_inherit_mrp |
Operation Types | stock.picking.type | field | 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_detailed_operation_tree_mrp |
stock.move.line.operations.tree.mrp | stock.move.line | xpath | Inherits stock.view_stock_move_line_detailed_operation_tree |
view_stock_move_line_operation_tree_finished |
stock.move.line.operation.tree.finished | stock.move.line | xpath | Inherits stock.view_stock_move_line_operation_tree |
view_stock_move_operations_finished |
stock.move.operations.finished.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_stock_move_operations_raw |
stock.move.operations.raw.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | xpath | Inherits stock.view_warehouse |
view_warehouse_orderpoint_tree_editable_inherited_purchase |
stock.warehouse.orderpoint.tree.editable.inherit.purchase | stock.warehouse.orderpoint | field | 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_gantt_production |
mrp.production.work.order.gantt.production | mrp.workorder | gantt | 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 |
mo_id
Many2one → mrp.production
ondelete='cascade'
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the bills of material without removing it.'
args: 'Active'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
byproduct_ids
One2many → mrp.bom.byproduct
copy=True
args: 'mrp.bom.byproduct', 'bom_id', 'By-products'
code
Char
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
consumption
Selection
default='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 * Blocked: only a manager can close a manufacturing order when the BoM consumption is not respected.'
required=True
string='Flexible Consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
operation_ids
One2many → mrp.routing.workcenter
copy=True
args: 'mrp.routing.workcenter', 'bom_id', 'Operations'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
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. 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_ids
Many2many → product.template.attribute.value
compute='_compute_possible_product_template_attribute_value_ids'
args: 'product.template.attribute.value'
product_id
Many2one → product.product
check_company=True
domain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='If a product variant is defined the BOM is available only for this product.'
index=True
args: 'product.product', 'Product Variant'
product_qty
Float
default=1.0
digits='Unit of Measure'
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_id
Many2one → product.template
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
required=True
args: 'product.template', 'Product'
product_uom_category_id
Many2one
related='product_tmpl_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Unit of Measure'
ready_to_produce
Selection
default='all_available'
help='Defines when a Manufacturing Order is considered as ready to be started'
required=True
string='Manufacturing Readiness'
args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')]
sequence
Integer
help='Gives the sequence order when displaying a list of bills of material.'
args: 'Sequence'
type
Selection
default='normal'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
check_kit_has_not_orderpoint(self)
copy(self, default=None)
explode(self, product, quantity, picking_type=False)
get_import_templates(self)
name_create(self, name)
name_get(self)
onchange_bom_structure(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
toggle_active(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
args: 'mrp.bom', 'BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
cost_share
Float
digits=(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_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Produced in Operation'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'By-product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
required=True
args: 'uom.uom', 'Unit of Measure'
sequence
Integer
No public methods.
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='bom_id.operation_ids'
args: 'mrp.routing.workcenter'
attachments_count
Integer
compute='_compute_attachments_count'
args: 'Attachments Count'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('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_id
Many2one → product.template
related='bom_id.product_tmpl_id'
args: 'product.template', 'Parent Product Template'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'Component'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
index=True
related='product_id.product_tmpl_id'
store=True
args: 'product.template', 'Product Template'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Product Unit of Measure'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
action_see_attachments(self)
create(self, vals_list)
onchange_product_id(self)
onchange_product_uom_id(self)
consumption
Selection
compute='_compute_consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
mrp_consumption_warning_line_ids
One2many → mrp.consumption.warning.line
mrp_production_count
Integer
compute='_compute_mrp_production_count'
mrp_production_ids
Many2many → mrp.production
action_cancel(self)
action_confirm(self)
consumption
Selection
related='mrp_production_id.consumption'
mrp_consumption_warning_id
Many2one → mrp.consumption.warning
ondelete='cascade'
readonly=True
required=True
args: 'mrp.consumption.warning', 'Parent Wizard'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
product_consumed_qty_uom
Float
readonly=True
args: 'Consumed'
product_expected_qty_uom
Float
readonly=True
args: 'To Consume'
product_id
Many2one → product.product
readonly=True
required=True
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
No public methods.
active
Boolean
default=True
args: 'Active'
ir_attachment_id
Many2one → ir.attachment
ondelete='cascade'
required=True
string='Related attachment'
args: 'ir.attachment'
priority
Selection
help='Gives the sequence order when displaying a list of MRP documents.'
string='Priority'
args: [('0', 'Normal'), ('1', 'Low'), ('2', 'High'), ('3', 'Very High')]
copy(self, default=None)
unlink(self)
immediate_production_line_ids
One2many → mrp.immediate.production.line
string='Immediate Production Lines'
args: 'mrp.immediate.production.line', 'immediate_production_id'
mo_ids
Many2many → mrp.production
show_productions
Boolean
compute='_compute_show_production'
default_get(self, fields)
process(self)
immediate_production_id
Many2one → mrp.immediate.production
required=True
args: 'mrp.immediate.production', 'Immediate Production'
production_id
Many2one → mrp.production
required=True
args: 'mrp.production', 'Production'
to_immediate
Boolean
No public methods.
No new fields.
Public methods (0)No public methods.
backorder_sequence
Integer
copy=False
default=0
help='Backorder sequence, if equals to 0 means there is not related backorder'
args: 'Backorder Sequence'
bom_id
Many2one → mrp.bom
check_company=True
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='Bill of Materials allow you to define the list of required components to make a finished product.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
components_availability
Char
compute='_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_state
Selection
compute='_compute_components_availability'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
confirm_cancel
Boolean
compute='_compute_confirm_cancel'
consumption
Selection
default='flexible'
readonly=True
required=True
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
date_deadline
Datetime
compute='_compute_date_deadline'
copy=False
help='Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time.'
inverse='_set_date_deadline'
readonly=True
store=True
args: 'Deadline'
date_finished
Datetime
copy=False
help='Date when the MO has been close'
readonly=True
args: 'End Date'
date_planned_finished
Datetime
copy=False
default=_get_default_date_planned_finished
help='Date at which you plan to finish the production.'
args: 'Scheduled End Date'
date_planned_start
Datetime
copy=False
default=_get_default_date_planned_start
help='Date at which you plan to start the production.'
index=True
required=True
args: 'Scheduled Date'
date_start
Datetime
copy=False
help='Date of the WO'
readonly=True
args: 'Start Date'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
delivery_count
Integer
compute='_compute_picking_ids'
string='Delivery Orders'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
forecasted_issue
Boolean
compute='_compute_forecasted_issue'
is_locked
Boolean
copy=False
default=_get_default_is_locked
args: 'Is Locked'
is_planned
Boolean
compute='_compute_is_planned'
store=True
args: 'Its Operations are Planned'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
default=_get_default_location_dest_id
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the system will stock the finished products.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Finished Products Location'
location_src_id
Many2one → stock.location
check_company=True
default=_get_default_location_src_id
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the system will look for components.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Components Location'
lot_producing_id
Many2one → stock.production.lot
check_company=True
copy=False
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
string='Lot/Serial Number'
args: 'stock.production.lot'
move_byproduct_ids
One2many → stock.move
compute='_compute_move_byproduct_ids'
inverse='_set_move_byproduct_ids'
args: 'stock.move'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'raw_material_production_id', 'Components'
mrp_production_backorder_count
Integer
compute='_compute_mrp_production_backorder'
args: 'Count of linked backorder'
mrp_production_child_count
Integer
compute='_compute_mrp_production_child_count'
args: 'Number of generated MO'
mrp_production_source_count
Integer
compute='_compute_mrp_production_source_count'
args: 'Number of source MO'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
orderpoint_id
Many2one → stock.warehouse.orderpoint
copy=False
index=True
args: 'stock.warehouse.orderpoint', 'Orderpoint'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
string='Picking associated to this manufacturing order'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
check_company=True
default=_get_default_picking_type
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
priority
Selection
default='0'
help='Components will be reserved first for the MO with the highest priorities.'
string='Priority'
args: PROCUREMENT_PRIORITIES
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
product_description_variants
Char
product_id
Many2one → product.product
check_company=True
domain="[\n ('type', 'in', ['product', 'consu']),\n '|',\n ('company_id', '=', False),\n ('company_id', '=', company_id)\n ]\n "
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
readonly=True
required=True
states={'draft': [('readonly', False)]}
tracking=True
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_tracking
Selection
related='product_id.tracking'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
compute='_compute_product_uom_qty'
store=True
string='Total Quantity'
production_duration_expected
Float
compute='_compute_production_duration_expected'
help='Total expected duration (in minutes)'
args: 'Expected Duration'
production_location_id
Many2one → stock.location
compute='_compute_production_location'
store=True
args: 'stock.location', 'Production Location'
production_real_duration
Float
compute='_compute_production_real_duration'
help='Total real duration (in minutes)'
args: 'Real Duration'
propagate_cancel
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
qty_producing
Float
copy=False
digits='Product Unit of Measure'
string='Quantity Producing'
reservation_state
Selection
compute='_compute_reservation_state'
copy=False
help='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=True
readonly=True
store=True
string='MO Readiness'
tracking=True
args: [('confirmed', 'Waiting'), ('assigned', 'Ready'), ('waiting', 'Waiting Another Operation')]
reserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can reserve quantities'
args: 'Allowed to Reserve Production'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
show_lock
Boolean
compute='_compute_show_lock'
args: 'Show Lock/unlock buttons'
show_lot_ids
Boolean
compute='_compute_show_lot_ids'
args: 'Display the serial number shortcut on the moves'
show_serial_mass_produce
Boolean
compute='_compute_show_serial_mass_produce'
args: 'Display the serial mass product wizard action moves'
state
Selection
compute='_compute_state'
copy=False
help=" * 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=True
readonly=True
store=True
string='State'
tracking=True
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('progress', 'In Progress'), ('to_close', 'To Close'), ('done', 'Done'), ('cancel', 'Cancelled')]
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Production'
use_create_components_lots
Boolean
related='picking_type_id.use_create_components_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.users', 'Responsible'
workorder_ids
One2many → mrp.workorder
copy=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_generate_serial(self)
action_product_forecast_report(self)
action_see_move_scrap(self)
action_serial_mass_produce_wizard(self)
action_toggle_is_locked(self)
action_view_mo_delivery(self)
action_view_mrp_production_backorders(self)
action_view_mrp_production_childs(self)
action_view_mrp_production_sources(self)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unbuild(self)
button_unplan(self)
copy_data(self, default=None)
create(self, values)
do_unreserve(self)
get_empty_list_help(self, help)
unlink(self)
write(self, vals)
mrp_production_backorder_line_ids
One2many → mrp.production.backorder.line
string='Backorder Confirmation Lines'
args: 'mrp.production.backorder.line', 'mrp_production_backorder_id'
mrp_production_ids
Many2many → mrp.production
show_backorder_lines
Boolean
compute='_compute_show_backorder_lines'
args: 'Show backorder lines'
action_backorder(self)
action_close_mo(self)
mrp_production_backorder_id
Many2one → mrp.production.backorder
ondelete='cascade'
required=True
args: 'mrp.production.backorder', 'MO Backorder'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
to_backorder
Boolean
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
bom_id
Many2one → mrp.bom
check_company=True
help='The Bill of Material this operation is linked to'
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Bill of Material'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → res.company
related='bom_id.company_id'
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
note
Html
help='Text worksheet description'
args: 'Description'
possible_bom_product_template_attribute_value_ids
Many2many
related='bom_id.possible_product_template_attribute_value_ids'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_computed_on
Char
compute='_compute_time_computed_on'
args: 'Computed on last'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help="Time in minutes:- In manual mode, time used- In automatic mode, supposed first time when there aren't any work orders yet"
args: 'Manual Duration'
time_mode
Selection
default='manual'
string='Duration Computation'
args: [('auto', 'Compute based on tracked time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
check_company=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
worksheet_google_slide
Char
help='Paste the url of your Google Slide. Make sure the access to the document is public.'
args: 'Google Slide'
worksheet_type
Selection
default='text'
help='Defines if you want to use a PDF or a Google Slide as work sheet.'
string='Work Sheet'
args: [('pdf', 'PDF'), ('google_slide', 'Google Slide'), ('text', 'Text')]
copy_to_bom(self)
write(self, values)
bom_id
Many2one → mrp.bom
check_company=True
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 ]\n"
states={'done': [('readonly', True)]}
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
states={'done': [('readonly', True)]}
args: 'res.company', 'Company'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
check_company=True
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where you want to send the components resulting from the unbuild order.'
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the product you want to unbuild is.'
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
help='Lot/Serial Number of the product to unbuild.'
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial Number'
mo_bom_id
Many2one → mrp.bom
related='mo_id.bom_id'
args: 'mrp.bom', 'Bill of Material used on the Production Order'
mo_id
Many2one → mrp.production
check_company=True
domain="[('state', '=', 'done'), ('company_id', '=', company_id), ('product_id', '=?', product_id), ('bom_id', '=?', bom_id)]"
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
product_uom_id
Many2one → uom.uom
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
state
Selection
default='draft'
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
readonly=False
related='resource_id.active'
store=True
args: 'Active'
alternative_workcenter_ids
Many2many → mrp.workcenter
check_company=True
domain="[('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_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hours over the last month'
args: 'Blocked Time'
capacity
Float
default=1.0
help='Number of pieces (in product UoM) that can be produced in parallel (at the same time) at this work center. For example: the capacity is 5 and you need to produce 10 units, then the operation time listed on the BOM will be multiplied by two. However, note that both time before and after production will only be counted once.'
args: 'Capacity'
code
Char
copy=False
args: 'Code'
color
Integer
costs_hour
Float
default=0.0
help='Specify cost of work center per hour.'
string='Cost per hour'
name
Char
readonly=False
related='resource_id.name'
store=True
args: 'Work Center'
note
Html
help='Description of the Work Center.'
args: 'Description'
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='Overall Effective Efficiency Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hours over the last month'
args: 'Productive Time'
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
tag_ids
Many2many → mrp.workcenter.tag
time_efficiency
Float
default=100
readonly=False
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
help='Time in minutes for the setup.'
args: 'Setup Time'
time_stop
Float
help='Time in minutes for the cleaning.'
args: 'Cleanup Time'
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Pending Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Read Work Orders'
action_archive(self)
action_show_operations(self)
action_work_order(self)
create(self, vals_list)
unblock(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company'
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness'
production_id
Many2one → mrp.production
readonly=True
related='workorder_id.production_id'
string='Manufacturing Order'
args: 'mrp.production'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
check_company=True
index=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
check_company=True
index=True
args: 'mrp.workorder', 'Work Order'
button_block(self)
loss_id
Many2one → mrp.workcenter.productivity.loss.type
domain=[('loss_type', 'in', ['quality', 'availability'])]
string='Category'
args: 'mrp.workcenter.productivity.loss.type'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
args: 'Blocking Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
loss_type
Selection
default='availability'
required=True
string='Category'
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
name_get(self)
color
Integer
default=_get_default_color
args: 'Color Index'
name
Char
required=True
args: 'Tag Name'
No public methods.
company_id
Many2one
related='production_id.company_id'
consumption
Selection
related='production_id.consumption'
costs_hour
Float
default=0.0
group_operator='avg'
help='Technical field to store the hourly cost of workcenter at time of work order completion (i.e. to keep a consistent cost).'
string='Cost per hour'
date_finished
Datetime
copy=False
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'End Date'
date_planned_finished
Datetime
compute='_compute_dates_planned'
copy=False
inverse='_set_dates_planned'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
args: 'Scheduled End Date'
date_planned_start
Datetime
compute='_compute_dates_planned'
copy=False
inverse='_set_dates_planned'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
args: 'Scheduled Start Date'
date_start
Datetime
copy=False
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Start Date'
duration
Float
compute='_compute_duration'
copy=False
inverse='_set_duration'
readonly=False
store=True
args: 'Real Duration'
duration_expected
Float
default=60.0
digits=(16, 2)
help='Expected duration (in minutes)'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Expected Duration'
duration_percent
Integer
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Per Unit'
finished_lot_id
Many2one → stock.production.lot
check_company=True
compute='_compute_finished_lot_id'
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
inverse='_set_finished_lot_id'
search='_search_finished_lot_id'
string='Lot/Serial Number'
args: 'stock.production.lot'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_working_users'
help='Technical field indicating whether the current user is working. '
args: 'Is the Current User Working'
json_popover
Char
compute='_compute_json_popover'
args: 'Popover Data JSON'
last_working_user_id
One2many → res.users
compute='_compute_working_users'
string='Last user that worked on this work order.'
args: 'res.users'
leave_id
Many2one → resource.calendar.leaves
check_company=True
copy=False
help='Slot into workcenter calendar once planned'
args: 'resource.calendar.leaves'
move_finished_ids
One2many → stock.move
domain=[('raw_material_production_id', '=', False), ('production_id', '!=', False)]
args: 'stock.move', 'workorder_id', 'Finished Moves'
move_line_ids
One2many → stock.move.line
help='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_ids
One2many → stock.move
domain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)]
args: 'stock.move', 'workorder_id', 'Raw Moves'
name
Char
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Work Order'
next_work_order_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Next Work Order'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
args: 'mrp.routing.workcenter', 'Operation'
operation_note
Html
readonly=True
related='operation_id.note'
args: 'Description'
product_id
Many2one
check_company=True
readonly=True
related='production_id.product_id'
store=True
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
args: 'uom.uom', 'Unit of Measure'
production_availability
Selection
help='Technical: used in views and domains only.'
readonly=True
related='production_id.reservation_state'
store=True
string='Stock Availability'
production_bom_id
Many2one → mrp.bom
related='production_id.bom_id'
args: 'mrp.bom'
production_date
Datetime
related='production_id.date_planned_start'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
check_company=True
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
production_state
Selection
help='Technical: used in views only.'
readonly=True
related='production_id.state'
string='Production State'
progress
Float
compute='_compute_progress'
digits=(16, 2)
args: 'Progress Done (%)'
qty_produced
Float
copy=False
default=0.0
digits='Product Unit of Measure'
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_producing
Float
compute='_compute_qty_producing'
digits='Product Unit of Measure'
inverse='_set_qty_producing'
string='Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_remaining
Float
compute='_compute_qty_remaining'
digits='Product Unit of Measure'
args: 'Quantity To Be Produced'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_json_popover
Boolean
compute='_compute_json_popover'
args: 'Show Popover?'
state
Selection
compute='_compute_state'
copy=False
default='pending'
index=True
readonly=True
store=True
string='Status'
args: [('pending', 'Waiting for another WO'), ('waiting', 'Waiting for components'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
copy=False
args: 'mrp.workcenter.productivity', 'workorder_id'
workcenter_id
Many2one → mrp.workcenter
check_company=True
group_expand='_read_group_workcenter_id'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)], 'progress': [('readonly', True)]}
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
help='Technical: used in views only'
related='workcenter_id.working_state'
string='Workcenter Status'
working_user_ids
One2many → res.users
compute='_compute_working_users'
string='Working user on this work order.'
args: 'res.users'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
worksheet_google_slide
Char
readonly=True
related='operation_id.worksheet_google_slide'
args: 'Worksheet URL'
worksheet_type
Selection
readonly=True
related='operation_id.worksheet_type'
string='Worksheet Type'
action_cancel(self)
action_open_wizard(self)
action_replan(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self)
button_unblock(self)
create(self, values)
end_all(self)
end_previous(self, doall=False)
gantt_unavailability(self, start_date, end_date, scale, group_bys=None, rows=None)
name_get(self)
unlink(self)
write(self, values)
mrp_production_ids
One2many → mrp.production
run(self, procurements, raise_user_error=True)
No new fields.
Public methods (0)No public methods.
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
compute_sudo=True
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
args: 'Manufactured'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# BoM Where Used'
variant_bom_ids
One2many → mrp.bom
action_archive(self)
action_open_quants(self)
action_used_in_bom(self)
action_view_bom(self)
action_view_mos(self)
get_components(self)
write(self, values)
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
bom_line_ids
One2many → mrp.bom.line
is_kits
Boolean
compute='_compute_is_kits'
compute_sudo=True
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
args: 'Manufactured'
produce_delay
Float
default=0.0
help='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.'
args: 'Manufacturing Lead Time'
used_in_bom_count
Integer
compute='_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, values)
No new fields.
Public methods (4)get_bom(self, bom_id=False, product_id=False, line_qty=False, line_id=False, level=False)
get_byproducts(self, bom_id=False, qty=0, level=0, total=0)
get_html(self, bom_id=False, searchQty=1, searchVariant=False)
get_operations(self, product_id=False, bom_id=False, qty=0, level=0)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
create_missing_unbuild_sequences(self)
group_mrp_byproducts
Boolean
implied_group='mrp.group_mrp_byproducts'
args: 'By-Products'
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'MRP Work Orders'
group_unlocked_by_default
Boolean
implied_group='mrp.group_unlocked_by_default'
args: 'Unlock Manufacturing Orders'
manufacturing_lead
Float
readonly=False
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time'
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_subcontracting
Boolean
module_mrp_workorder
Boolean
module_quality_control
Boolean
module_quality_control_worksheet
Boolean
use_manufacturing_lead
Boolean
config_parameter='mrp.use_manufacturing_lead'
string='Default Manufacturing Lead Time'
No public methods.
expected_qty
Float
digits='Product Unit of Measure'
args: 'Expected Quantity'
produced_qty
Float
digits='Product Unit of Measure'
args: 'Produced Quantity'
production_id
Many2one → mrp.production
serial_numbers
Text
show_apply
Boolean
help='Technical field to show the Apply button'
show_backorders
Boolean
help='Technical field to show the Create Backorder and No Backorder buttons'
apply(self)
create_backorder(self)
generate_serial_numbers_production(self)
no_backorder(self)
No new fields.
Public methods (0)No public methods.
allowed_operation_ids
One2many → mrp.routing.workcenter
related='raw_material_production_id.bom_id.operation_ids'
args: 'mrp.routing.workcenter'
bom_line_id
Many2one → mrp.bom.line
check_company=True
args: 'mrp.bom.line', 'BoM Line'
byproduct_id
Many2one → mrp.bom.byproduct
check_company=True
help='By-product line that generated the move in a manufacturing order'
args: 'mrp.bom.byproduct', 'By-products'
consume_unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Consumed Disassembly Order'
cost_share
Float
digits=(5, 2)
help="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_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Created Production Order'
description_bom_line
Char
compute='_compute_description_bom_line'
args: 'Kit'
is_done
Boolean
compute='_compute_is_done'
help='Technical Field to order moves'
store=True
args: 'Done'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Operation To Consume'
order_finished_lot_ids
Many2many → stock.production.lot
compute='_compute_order_finished_lot_ids'
string='Finished Lot/Serial Number'
args: 'stock.production.lot'
product_qty_available
Float
depends=['product_id']
related='product_id.qty_available'
args: 'Product On Hand Quantity'
product_virtual_available
Float
depends=['product_id']
related='product_id.virtual_available'
args: 'Product Forecasted Quantity'
production_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Production Order for finished products'
raw_material_production_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Production Order for components'
should_consume_qty
Float
compute='_compute_should_consume_qty'
digits='Product Unit of Measure'
args: 'Quantity To Consume'
unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Disassembly Order'
unit_factor
Float
compute='_compute_unit_factor'
store=True
args: 'Unit Factor'
workorder_id
Many2one → mrp.workorder
check_company=True
copy=False
args: 'mrp.workorder', 'Work Order To Consume'
action_explode(self)
action_show_details(self)
default_get(self, fields_list)
write(self, vals)
description_bom_line
Char
related='move_id.description_bom_line'
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
create(self, values)
write(self, vals)
has_kits
Boolean
compute='_compute_has_kits'
No public methods.
code
Selection
ondelete={'mrp_operation': 'cascade'}
selection_add=[('mrp_operation', 'Manufacturing')]
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
use_create_components_lots
Boolean
default=False
help='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.
No new fields.
Public methods (1)action_apply_inventory(self)
action
Selection
ondelete={'manufacture': 'cascade'}
selection_add=[('manufacture', 'Manufacture')]
No public methods.
production_id
Many2one → mrp.production
check_company=True
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
check_company=True
help='Not to restrict or prefer quants, but informative.'
states={'done': [('readonly', True)]}
args: 'mrp.workorder', 'Work Order'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
manu_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_mto_pull_id
Many2one → stock.rule
manufacture_pull_id
Many2one → stock.rule
manufacture_steps
Selection
default='mrp_one_step'
help='Produce : Move the components to the production location directly and start the manufacturing process.\nPick / Produce : Unload the components from the Stock to Input location first, and then transfer it to the Production location.'
required=True
args: [('mrp_one_step', 'Manufacture (1 step)'), ('pbm', 'Pick components and then manufacture (2 steps)'), ('pbm_sam', 'Pick components, manufacture and then store products (3 steps)')], 'Manufacture'
manufacture_to_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture to Resupply'
pbm_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Picking before Manufacturing Location'
pbm_mto_pull_id
Many2one → stock.rule
pbm_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Picking Before Manufacturing Route'
pbm_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Picking Before Manufacturing Operation Type'
sam_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Stock after Manufacturing Location'
sam_rule_id
Many2one → stock.rule
sam_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Stock After Manufacturing Operation Type'
get_rules_dict(self)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
domain="[('type', '=', 'normal'), '&', '|', ('company_id', '=', company_id), ('company_id', '=', False), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_tmpl_id)]"
string='Bill of Materials'
args: 'mrp.bom'
show_bom
Boolean
compute='_compute_show_bom'
args: 'Show BoM column'
No public methods.
No new fields.
Public methods (1)check_product_is_not_kit(self)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mrp assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_common |
mrp bom common assets | ir.ui.view | qweb | Inherits web.assets_common |
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 |
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_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_product_product_search_view |
mrp.product.product.search | product.product | xpath | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | xpath | 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.tree | mrp.production | tree | 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.tree.editable | mrp.workorder | tree | New |
mrp_production_workorder_tree_view |
mrp.production.work.order.tree | mrp.workorder | xpath | Inherits mrp.mrp_production_workorder_tree_editable_view |
mrp_report_product_product_replenishment |
mrp_report_product_product_replenishment | ir.ui.view | qweb | Inherits stock.report_product_product_replenishment |
mrp_report_stock_rule |
mrp_report_stock_rule | ir.ui.view | qweb | Inherits stock.report_stock_rule |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | 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.tree | mrp.unbuild | tree | 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.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workcenter_view_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
mrp_workorder_view_gantt |
mrp.workorder.view.gantt | mrp.workorder | gantt | 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.tree | mrp.workcenter.productivity.loss | tree | 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.tree | mrp.workcenter.productivity | tree | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | xpath | Inherits stock.product_form_view_procurement_button |
product_template_form_view_bom_button |
product.template.procurement | product.template | xpath | Inherits stock.product_template_form_view_procurement_button |
production_message |
production_message | ir.ui.view | qweb | New |
qunit_suite |
qunit_suite | ir.ui.view | qweb | Inherits web.qunit_suite_tests |
report_bom_structure |
report_bom_structure | ir.ui.view | qweb | New |
report_mrp_bom |
report_mrp_bom | ir.ui.view | qweb | New |
report_mrp_bom_line |
report_mrp_bom_line | ir.ui.view | qweb | New |
report_mrp_bom_pdf |
report_mrp_bom_pdf | ir.ui.view | qweb | New |
report_mrp_bom_pdf_line |
report_mrp_bom_pdf_line | ir.ui.view | qweb | New |
report_mrp_operation_line |
report_mrp_operation_line | 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 | xpath | Inherits base.res_config_settings_view_form |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | filter | Inherits stock.stock_move_line_view_search |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | field | 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_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | 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_document_file_kanban_mrp |
mrp.document kanban.mrp | mrp.document | kanban | New |
view_immediate_production |
mrp.immediate.production.view.form | mrp.immediate.production | form | New |
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_document_form |
mrp.document.form | mrp.document | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | xpath | 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_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_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_type_form_inherit_mrp |
Operation Types | stock.picking.type | field | Inherits stock.view_picking_type_form |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | 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.tree.finished | stock.move.line | xpath | Inherits stock.view_stock_move_line_operation_tree |
view_stock_move_operations_finished |
stock.move.operations.finished.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_stock_move_operations_raw |
stock.move.operations.raw.form | stock.move | xpath | Inherits stock.view_stock_move_operations |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | xpath | Inherits stock.view_warehouse |
view_warehouse_orderpoint_tree_editable_inherited_purchase |
stock.warehouse.orderpoint.tree.editable.inherit.purchase | stock.warehouse.orderpoint | field | 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_gantt_production |
mrp.production.work.order.gantt.production | mrp.workorder | gantt | 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 |
mo_id
Many2one → mrp.production
ondelete='cascade'
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the bills of material without removing it.'
args: 'Active'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
byproduct_ids
One2many → mrp.bom.byproduct
copy=True
args: 'mrp.bom.byproduct', 'bom_id', 'By-products'
code
Char
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
consumption
Selection
default='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 * Blocked: only a manager can close a manufacturing order when the BoM consumption is not respected.'
required=True
string='Flexible Consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
operation_ids
One2many → mrp.routing.workcenter
copy=True
args: 'mrp.routing.workcenter', 'bom_id', 'Operations'
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
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. That allows to define stock rules which trigger different manufacturing orders with different BoMs.'
args: 'stock.picking.type', 'Operation Type'
product_id
Many2one → product.product
check_company=True
domain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='If a product variant is defined the BOM is available only for this product.'
index=True
args: 'product.product', 'Product Variant'
product_qty
Float
default=1.0
digits='Unit of Measure'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
index=True
required=True
args: 'product.template', 'Product'
product_uom_category_id
Many2one
related='product_tmpl_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Unit of Measure'
ready_to_produce
Selection
default='asap'
help='Defines when a Manufacturing Order is considered as ready to be started'
required=True
string='Manufacturing Readiness'
args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')]
sequence
Integer
help='Gives the sequence order when displaying a list of bills of material.'
args: 'Sequence'
type
Selection
default='normal'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
check_kit_has_not_orderpoint(self)
copy(self, default=None)
explode(self, product, quantity, picking_type=False)
get_import_templates(self)
name_create(self, name)
name_get(self)
onchange_bom_structure(self)
onchange_product_id(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
unlink(self)
allowed_operation_ids
Many2many → mrp.routing.workcenter
compute='_compute_allowed_operation_ids'
args: 'mrp.routing.workcenter'
bom_id
Many2one → mrp.bom
ondelete='cascade'
args: 'mrp.bom', 'BoM'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Produced in Operation'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'By-product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_uom_id
Many2one → uom.uom
required=True
args: 'uom.uom', 'Unit of Measure'
onchange_product_id(self)
onchange_uom(self)
allowed_operation_ids
Many2many → mrp.routing.workcenter
compute='_compute_allowed_operation_ids'
args: 'mrp.routing.workcenter'
attachments_count
Integer
compute='_compute_attachments_count'
args: 'Attachments Count'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('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_id
Many2one → product.template
related='bom_id.product_tmpl_id'
args: 'product.template', 'Parent Product Template'
possible_bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
compute='_compute_possible_bom_product_template_attribute_value_ids'
args: 'product.template.attribute.value'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'Component'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Product Unit of Measure'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
action_see_attachments(self)
create(self, vals_list)
onchange_product_id(self)
onchange_product_uom_id(self)
consumption
Selection
compute='_compute_consumption'
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
mrp_consumption_warning_line_ids
One2many → mrp.consumption.warning.line
mrp_production_count
Integer
compute='_compute_mrp_production_count'
mrp_production_ids
Many2many → mrp.production
action_cancel(self)
action_confirm(self)
consumption
Selection
related='mrp_production_id.consumption'
mrp_consumption_warning_id
Many2one → mrp.consumption.warning
ondelete='cascade'
readonly=True
required=True
args: 'mrp.consumption.warning', 'Parent Wizard'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
product_consumed_qty_uom
Float
readonly=True
args: 'Consumed'
product_expected_qty_uom
Float
readonly=True
args: 'To Consume'
product_id
Many2one → product.product
readonly=True
required=True
args: 'product.product', 'Product'
product_uom_id
Many2one → uom.uom
readonly=True
related='product_id.uom_id'
args: 'uom.uom', 'Unit of Measure'
No public methods.
active
Boolean
default=True
args: 'Active'
ir_attachment_id
Many2one → ir.attachment
ondelete='cascade'
required=True
string='Related attachment'
args: 'ir.attachment'
priority
Selection
help='Gives the sequence order when displaying a list of MRP documents.'
string='Priority'
args: [('0', 'Normal'), ('1', 'Low'), ('2', 'High'), ('3', 'Very High')]
copy(self, default=None)
immediate_production_line_ids
One2many → mrp.immediate.production.line
string='Immediate Production Lines'
args: 'mrp.immediate.production.line', 'immediate_production_id'
mo_ids
Many2many → mrp.production
show_productions
Boolean
compute='_compute_show_production'
default_get(self, fields)
process(self)
immediate_production_id
Many2one → mrp.immediate.production
required=True
args: 'mrp.immediate.production', 'Immediate Production'
production_id
Many2one → mrp.production
required=True
args: 'mrp.production', 'Production'
to_immediate
Boolean
No public methods.
allowed_product_ids
Many2many → product.product
compute='_compute_allowed_product_ids'
args: 'product.product'
backorder_sequence
Integer
copy=False
default=0
help='Backorder sequence, if equals to 0 means there is not related backorder'
args: 'Backorder Sequence'
bom_id
Many2one → mrp.bom
check_company=True
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='Bill of Materials allow you to define the list of required components to make a finished product.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
components_availability
Char
compute='_compute_components_availability'
string='Component Availability'
components_availability_state
Selection
compute='_compute_components_availability'
args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')]
confirm_cancel
Boolean
compute='_compute_confirm_cancel'
consumption
Selection
default='flexible'
readonly=True
required=True
args: [('flexible', 'Allowed'), ('warning', 'Allowed with warning'), ('strict', 'Blocked')]
date_deadline
Datetime
compute='_compute_date_deadline'
copy=False
help='Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time.'
inverse='_set_date_deadline'
readonly=True
store=True
args: 'Deadline'
date_finished
Datetime
copy=False
index=True
readonly=True
args: 'End Date'
date_planned_finished
Datetime
copy=False
default=_get_default_date_planned_finished
help='Date at which you plan to finish the production.'
args: 'Scheduled End Date'
date_planned_start
Datetime
copy=False
default=_get_default_date_planned_start
help='Date at which you plan to start the production.'
index=True
required=True
args: 'Scheduled Date'
date_start
Datetime
copy=False
index=True
readonly=True
args: 'Start Date'
delay_alert_date
Datetime
compute='_compute_delay_alert_date'
search='_search_delay_alert_date'
args: 'Delay Alert Date'
delivery_count
Integer
compute='_compute_picking_ids'
string='Delivery Orders'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
is_locked
Boolean
copy=False
default=_get_default_is_locked
args: 'Is Locked'
is_planned
Boolean
compute='_compute_is_planned'
search='_search_is_planned'
args: 'Its Operations are Planned'
json_popover
Char
compute='_compute_json_popover'
args: 'JSON data for the popover widget'
location_dest_id
Many2one → stock.location
check_company=True
default=_get_default_location_dest_id
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the system will stock the finished products.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Finished Products Location'
location_src_id
Many2one → stock.location
check_company=True
default=_get_default_location_src_id
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the system will look for components.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Components Location'
lot_producing_id
Many2one → stock.production.lot
check_company=True
copy=False
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
string='Lot/Serial Number'
args: 'stock.production.lot'
move_byproduct_ids
One2many → stock.move
compute='_compute_move_byproduct_ids'
inverse='_set_move_byproduct_ids'
args: 'stock.move'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'raw_material_production_id', 'Components'
mrp_production_backorder_count
Integer
compute='_compute_mrp_production_backorder'
args: 'Count of linked backorder'
mrp_production_child_count
Integer
compute='_compute_mrp_production_child_count'
args: 'Number of generated MO'
mrp_production_source_count
Integer
compute='_compute_mrp_production_source_count'
args: 'Number of source MO'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
orderpoint_id
Many2one → stock.warehouse.orderpoint
index=True
args: 'stock.warehouse.orderpoint', 'Orderpoint'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
string='Picking associated to this manufacturing order'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
check_company=True
default=_get_default_picking_type
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
priority
Selection
default='0'
help='Components will be reserved first for the MO with the highest priorities.'
index=True
string='Priority'
args: PROCUREMENT_PRIORITIES
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
product_description_variants
Char
product_id
Many2one → product.product
check_company=True
domain="[\n ('type', 'in', ['product', 'consu']),\n '|',\n ('company_id', '=', False),\n ('company_id', '=', company_id)\n ]\n "
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
readonly=True
required=True
states={'draft': [('readonly', False)]}
tracking=True
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_tracking
Selection
related='product_id.tracking'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
domain="[('category_id', '=', product_uom_category_id)]"
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
compute='_compute_product_uom_qty'
store=True
string='Total Quantity'
production_location_id
Many2one → stock.location
compute='_compute_production_location'
store=True
args: 'stock.location', 'Production Location'
propagate_cancel
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
qty_producing
Float
copy=False
digits='Product Unit of Measure'
string='Quantity Producing'
reservation_state
Selection
compute='_compute_state'
copy=False
help=' * Ready: The material is available to start the production.\n * Waiting: The material is not available to start the production.\n The material availability is impacted by the manufacturing readiness defined on the BoM.'
index=True
readonly=True
store=True
string='Material Availability'
tracking=True
args: [('confirmed', 'Waiting'), ('assigned', 'Ready'), ('waiting', 'Waiting Another Operation')]
reserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can reserve quantities'
args: 'Allowed to Reserve Production'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
show_lock
Boolean
compute='_compute_show_lock'
args: 'Show Lock/unlock buttons'
show_lot_ids
Boolean
compute='_compute_show_lot_ids'
args: 'Display the serial number shortcut on the moves'
state
Selection
compute='_compute_state'
copy=False
help=" * 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=True
readonly=True
store=True
string='State'
tracking=True
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('progress', 'In Progress'), ('to_close', 'To Close'), ('done', 'Done'), ('cancel', 'Cancelled')]
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Production'
use_create_components_lots
Boolean
related='picking_type_id.use_create_components_lots'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.users', 'Responsible'
workorder_done_count
Integer
compute='_compute_workorder_done_count'
args: '# Done Work Orders'
workorder_ids
One2many → mrp.workorder
copy=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_generate_serial(self)
action_see_move_scrap(self)
action_toggle_is_locked(self)
action_view_mo_delivery(self)
action_view_mrp_production_backorders(self)
action_view_mrp_production_childs(self)
action_view_mrp_production_sources(self)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unbuild(self)
button_unplan(self)
button_unreserve(self)
copy_data(self, default=None)
create(self, values)
do_unreserve(self)
get_empty_list_help(self, help)
onchange_company_id(self)
onchange_picking_type(self)
onchange_product_id(self)
unlink(self)
write(self, vals)
mrp_production_backorder_line_ids
One2many → mrp.production.backorder.line
string='Backorder Confirmation Lines'
args: 'mrp.production.backorder.line', 'mrp_production_backorder_id'
mrp_production_ids
Many2many → mrp.production
show_backorder_lines
Boolean
compute='_compute_show_backorder_lines'
args: 'Show backorder lines'
action_backorder(self)
action_close_mo(self)
mrp_production_backorder_id
Many2one → mrp.production.backorder
ondelete='cascade'
required=True
args: 'mrp.production.backorder', 'MO Backorder'
mrp_production_id
Many2one → mrp.production
ondelete='cascade'
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
to_backorder
Boolean
No public methods.
bom_id
Many2one → mrp.bom
check_company=True
help='The Bill of Material this operation is linked to'
index=True
ondelete='cascade'
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
note
Text
help='Text worksheet description'
args: 'Description'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help="Time in minutes:- In manual mode, time used- In automatic mode, supposed first time when there aren't any work orders yet"
args: 'Manual Duration'
time_mode
Selection
default='manual'
string='Duration Computation'
args: [('auto', 'Compute based on tracked time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
check_company=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
worksheet_google_slide
Char
help='Paste the url of your Google Slide. Make sure the access to the document is public.'
args: 'Google Slide'
worksheet_type
Selection
default='text'
help='Defines if you want to use a PDF or a Google Slide as work sheet.'
string='Work Sheet'
args: [('pdf', 'PDF'), ('google_slide', 'Google Slide'), ('text', 'Text')]
write(self, values)
allowed_mo_ids
One2many → mrp.production
compute='_compute_allowed_mo_ids'
args: 'mrp.production'
bom_id
Many2one → mrp.bom
check_company=True
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 ]\n"
states={'done': [('readonly', True)]}
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
states={'done': [('readonly', True)]}
args: 'res.company', 'Company'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
check_company=True
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where you want to send the components resulting from the unbuild order.'
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the product you want to unbuild is.'
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
help='Lot/Serial Number of the product to unbuild.'
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial Number'
mo_bom_id
Many2one → mrp.bom
related='mo_id.bom_id'
args: 'mrp.bom', 'Bill of Material used on the Production Order'
mo_id
Many2one → mrp.production
check_company=True
domain="[('state', '=', 'done'), ('company_id', '=', company_id), ('product_id', '=?', product_id)]"
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
product_uom_id
Many2one → uom.uom
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
state
Selection
default='draft'
index=True
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals)
unlink(self)
active
Boolean
default=True
readonly=False
related='resource_id.active'
store=True
args: 'Active'
alternative_workcenter_ids
Many2many → mrp.workcenter
check_company=True
domain="[('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_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hours over the last month'
args: 'Blocked Time'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel. In case the work center has a capacity of 5 and you have to produce 10 units on your work order, the usual operation time will be multiplied by 2.'
args: 'Capacity'
code
Char
copy=False
args: 'Code'
color
Integer
costs_hour
Float
default=0.0
help='Specify cost of work center per hour.'
string='Cost per hour'
name
Char
readonly=False
related='resource_id.name'
store=True
args: 'Work Center'
note
Text
help='Description of the Work Center.'
args: 'Description'
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='Overall Effective Efficiency Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hours over the last month'
args: 'Productive Time'
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
time_efficiency
Float
default=100
readonly=False
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
help='Time in minutes for the setup.'
args: 'Time before prod.'
time_stop
Float
help='Time in minutes for the cleaning.'
args: 'Time after prod.'
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Pending Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Read Work Orders'
action_archive(self)
action_work_order(self)
create(self, vals_list)
unblock(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company'
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness'
production_id
Many2one → mrp.production
readonly='True'
related='workorder_id.production_id'
string='Manufacturing Order'
args: 'mrp.production'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
check_company=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
button_block(self)
loss_id
Many2one → mrp.workcenter.productivity.loss.type
domain=[('loss_type', 'in', ['quality', 'availability'])]
string='Category'
args: 'mrp.workcenter.productivity.loss.type'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
args: 'Blocking Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
loss_type
Selection
default='availability'
required=True
string='Category'
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
name_get(self)
company_id
Many2one
related='production_id.company_id'
consumption
Selection
required=True
args: [('strict', 'Strict'), ('warning', 'Warning'), ('flexible', 'Flexible')]
date_finished
Datetime
copy=False
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'End Date'
date_planned_finished
Datetime
compute='_compute_dates_planned'
copy=False
inverse='_set_dates_planned'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
args: 'Scheduled End Date'
date_planned_start
Datetime
compute='_compute_dates_planned'
copy=False
inverse='_set_dates_planned'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
args: 'Scheduled Start Date'
date_start
Datetime
copy=False
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Start Date'
duration
Float
compute='_compute_duration'
copy=False
inverse='_set_duration'
readonly=False
store=True
args: 'Real Duration'
duration_expected
Float
default=60.0
digits=(16, 2)
help='Expected duration (in minutes)'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Expected Duration'
duration_percent
Integer
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Per Unit'
finished_lot_id
Many2one → stock.production.lot
check_company=True
compute='_compute_finished_lot_id'
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
inverse='_set_finished_lot_id'
string='Lot/Serial Number'
args: 'stock.production.lot'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_working_users'
help='Technical field indicating whether the current user is working. '
args: 'Is the Current User Working'
json_popover
Char
compute='_compute_json_popover'
args: 'Popover Data JSON'
last_working_user_id
One2many → res.users
compute='_compute_working_users'
string='Last user that worked on this work order.'
args: 'res.users'
leave_id
Many2one → resource.calendar.leaves
check_company=True
copy=False
help='Slot into workcenter calendar once planned'
args: 'resource.calendar.leaves'
move_finished_ids
One2many → stock.move
domain=[('raw_material_production_id', '=', False), ('production_id', '!=', False)]
args: 'stock.move', 'workorder_id', 'Finished Moves'
move_line_ids
One2many → stock.move.line
help='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_ids
One2many → stock.move
domain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)]
args: 'stock.move', 'workorder_id', 'Raw Moves'
name
Char
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Work Order'
next_work_order_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Next Work Order'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
args: 'mrp.routing.workcenter', 'Operation'
operation_note
Text
readonly=True
related='operation_id.note'
args: 'Description'
product_id
Many2one
check_company=True
readonly=True
related='production_id.product_id'
store=True
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
args: 'uom.uom', 'Unit of Measure'
production_availability
Selection
help='Technical: used in views and domains only.'
readonly=True
related='production_id.reservation_state'
store=True
string='Stock Availability'
production_bom_id
Many2one → mrp.bom
related='production_id.bom_id'
args: 'mrp.bom'
production_date
Datetime
readonly=False
related='production_id.date_planned_start'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
check_company=True
readonly=True
required=True
args: 'mrp.production', 'Manufacturing Order'
production_state
Selection
help='Technical: used in views only.'
readonly=True
related='production_id.state'
string='Production State'
progress
Float
compute='_compute_progress'
digits=(16, 2)
args: 'Progress Done (%)'
qty_produced
Float
copy=False
default=0.0
digits='Product Unit of Measure'
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_producing
Float
compute='_compute_qty_producing'
digits='Product Unit of Measure'
inverse='_set_qty_producing'
string='Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_remaining
Float
compute='_compute_qty_remaining'
digits='Product Unit of Measure'
args: 'Quantity To Be Produced'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_json_popover
Boolean
compute='_compute_json_popover'
args: 'Show Popover?'
state
Selection
copy=False
default='pending'
readonly=True
string='Status'
args: [('pending', 'Waiting for another WO'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
copy=False
args: 'mrp.workcenter.productivity', 'workorder_id'
use_create_components_lots
Boolean
related='production_id.picking_type_id.use_create_components_lots'
workcenter_id
Many2one → mrp.workcenter
check_company=True
group_expand='_read_group_workcenter_id'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)], 'progress': [('readonly', True)]}
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
help='Technical: used in views only'
readonly=False
related='workcenter_id.working_state'
string='Workcenter Status'
working_user_ids
One2many → res.users
compute='_compute_working_users'
string='Working user on this work order.'
args: 'res.users'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
worksheet_google_slide
Char
readonly=True
related='operation_id.worksheet_google_slide'
args: 'Worksheet URL'
worksheet_type
Selection
readonly=True
related='operation_id.worksheet_type'
string='Worksheet Type'
action_cancel(self)
action_open_wizard(self)
action_replan(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self)
button_unblock(self)
create(self, values)
end_all(self)
end_previous(self, doall=False)
gantt_unavailability(self, start_date, end_date, scale, group_bys=None, rows=None)
name_get(self)
unlink(self)
write(self, values)
mrp_production_ids
One2many → mrp.production
run(self, procurements, raise_user_error=True)
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_line_ids
One2many → mrp.bom.line
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
args: 'Manufactured'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# BoM Where Used'
variant_bom_ids
One2many → mrp.bom
action_archive(self)
action_open_quants(self)
action_used_in_bom(self)
action_view_bom(self)
action_view_mos(self)
get_components(self)
write(self, values)
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
bom_line_ids
One2many → mrp.bom.line
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
args: 'Manufactured'
produce_delay
Float
default=0.0
help='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.'
args: 'Manufacturing Lead Time'
used_in_bom_count
Integer
compute='_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, values)
No new fields.
Public methods (3)get_bom(self, bom_id=False, product_id=False, line_qty=False, line_id=False, level=False)
get_html(self, bom_id=False, searchQty=1, searchVariant=False)
get_operations(self, bom_id=False, qty=0, level=0)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
create_missing_unbuild_sequences(self)
group_locked_by_default
Boolean
implied_group='mrp.group_locked_by_default'
args: 'Lock Quantities To Consume'
group_mrp_byproducts
Boolean
implied_group='mrp.group_mrp_byproducts'
args: 'By-Products'
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'MRP Work Orders'
manufacturing_lead
Float
readonly=False
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time'
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_subcontracting
Boolean
module_mrp_workorder
Boolean
module_quality_control
Boolean
use_manufacturing_lead
Boolean
config_parameter='mrp.use_manufacturing_lead'
string='Default Manufacturing Lead Time'
No public methods.
allowed_operation_ids
Many2many → mrp.routing.workcenter
compute='_compute_allowed_operation_ids'
args: 'mrp.routing.workcenter'
bom_line_id
Many2one → mrp.bom.line
check_company=True
args: 'mrp.bom.line', 'BoM Line'
byproduct_id
Many2one → mrp.bom.byproduct
check_company=True
help='By-product line that generated the move in a manufacturing order'
args: 'mrp.bom.byproduct', 'By-products'
consume_unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Consumed Disassembly Order'
created_production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Created Production Order'
is_done
Boolean
compute='_compute_is_done'
help='Technical Field to order moves'
store=True
args: 'Done'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('id', 'in', allowed_operation_ids)]"
args: 'mrp.routing.workcenter', 'Operation To Consume'
order_finished_lot_ids
Many2many → stock.production.lot
compute='_compute_order_finished_lot_ids'
string='Finished Lot/Serial Number'
args: 'stock.production.lot'
production_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Production Order for finished products'
raw_material_production_id
Many2one → mrp.production
check_company=True
index=True
args: 'mrp.production', 'Production Order for components'
should_consume_qty
Float
compute='_compute_should_consume_qty'
digits='Product Unit of Measure'
args: 'Quantity To Consume'
unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Disassembly Order'
unit_factor
Float
compute='_compute_unit_factor'
store=True
args: 'Unit Factor'
workorder_id
Many2one → mrp.workorder
check_company=True
copy=False
args: 'mrp.workorder', 'Work Order To Consume'
action_explode(self)
action_show_details(self)
default_get(self, fields_list)
unlink(self)
write(self, vals)
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
create(self, values)
write(self, vals)
No new fields.
Public methods (0)No public methods.
code
Selection
ondelete={'mrp_operation': 'cascade'}
selection_add=[('mrp_operation', 'Manufacturing')]
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
use_create_components_lots
Boolean
default=False
help='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.
action
Selection
ondelete={'manufacture': 'cascade'}
selection_add=[('manufacture', 'Manufacture')]
No public methods.
production_id
Many2one → mrp.production
check_company=True
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
check_company=True
help='Not to restrict or prefer quants, but informative.'
states={'done': [('readonly', True)]}
args: 'mrp.workorder', 'Work Order'
No public methods.
No new fields.
Public methods (0)No public methods.
manu_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_mto_pull_id
Many2one → stock.rule
manufacture_pull_id
Many2one → stock.rule
manufacture_steps
Selection
default='mrp_one_step'
help='Produce : Move the components to the production location directly and start the manufacturing process.\nPick / Produce : Unload the components from the Stock to Input location first, and then transfer it to the Production location.'
required=True
args: [('mrp_one_step', 'Manufacture (1 step)'), ('pbm', 'Pick components and then manufacture (2 steps)'), ('pbm_sam', 'Pick components, manufacture and then store products (3 steps)')], 'Manufacture'
manufacture_to_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture to Resupply'
pbm_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Picking before Manufacturing Location'
pbm_mto_pull_id
Many2one → stock.rule
pbm_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Picking Before Manufacturing Route'
pbm_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Picking Before Manufacturing Operation Type'
sam_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Stock after Manufacturing Location'
sam_rule_id
Many2one → stock.rule
sam_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Stock After Manufacturing Operation Type'
get_rules_dict(self)
write(self, vals)
bom_id
Many2one → mrp.bom
check_company=True
domain="[('type', '=', 'normal'), '&', '|', ('company_id', '=', company_id), ('company_id', '=', False), '|', ('product_id', '=', product_id), '&', ('product_id', '=', False), ('product_tmpl_id', '=', product_tmpl_id)]"
string='Bill of Materials'
args: 'mrp.bom'
show_bom
Boolean
compute='_compute_show_bom'
args: 'Show BoM column'
No public methods.
No new fields.
Public methods (1)check_product_is_not_kit(self)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mrp assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_common |
mrp bom common assets | ir.ui.view | qweb | Inherits web.assets_common |
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 |
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_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_product_produce_line_form |
MRP Product Produce Line | mrp.product.produce.line | form | New |
mrp_product_produce_line_kanban |
MRP Product Produce Line | mrp.product.produce.line | kanban | New |
mrp_product_product_search_view |
mrp.product.product.search | product.product | xpath | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | xpath | 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.tree | mrp.production | tree | New |
mrp_production_workorder_form_view_inherit |
mrp.production.work.order.form | mrp.workorder | form | New |
mrp_production_workorder_tree_view_inherit |
mrp.production.work.order.tree | mrp.workorder | tree | New |
mrp_report_stock_rule |
mrp_report_stock_rule | ir.ui.view | qweb | Inherits stock.report_stock_rule |
mrp_routing_form_view |
mrp.routing.form | mrp.routing | form | New |
mrp_routing_kanban_view |
mrp.routing.kanban | mrp.routing | kanban | New |
mrp_routing_search_view |
mrp.routing.search | mrp.routing | search | New |
mrp_routing_tree_view |
mrp.routing.tree | mrp.routing | tree | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | New |
mrp_unbuild_form_view |
mrp.unbuild.form | 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.tree | mrp.unbuild | tree | 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.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workcenter_view_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
mrp_workorder_view_gantt |
mrp.workorder.view.gantt | mrp.workorder | gantt | 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.tree | mrp.workcenter.productivity.loss | tree | 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.tree | mrp.workcenter.productivity | tree | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | xpath | Inherits stock.product_form_view_procurement_button |
product_template_form_view_bom_button |
product.template.procurement | product.template | xpath | Inherits stock.product_template_form_view_procurement_button |
production_message |
production_message | ir.ui.view | qweb | New |
qunit_suite |
qunit_suite | ir.ui.view | qweb | Inherits web.qunit_suite |
report_bom_structure |
report_bom_structure | ir.ui.view | qweb | New |
report_mrp_bom |
report_mrp_bom | ir.ui.view | qweb | New |
report_mrp_bom_line |
report_mrp_bom_line | ir.ui.view | qweb | New |
report_mrp_bom_pdf |
report_mrp_bom_pdf | ir.ui.view | qweb | New |
report_mrp_bom_pdf_line |
report_mrp_bom_pdf_line | ir.ui.view | qweb | New |
report_mrp_operation_line |
report_mrp_operation_line | 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 | xpath | Inherits base.res_config_settings_view_form |
stock_move_line_view_search |
stock.move.line.search | stock.move.line | filter | Inherits stock.stock_move_line_view_search |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | field | Inherits stock.stock_picking_type_kanban |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | 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_document_file_kanban_mrp |
mrp.document kanban.mrp | mrp.document | kanban | New |
view_document_form |
mrp.document.form | mrp.document | xpath | Inherits base.view_attachment_form |
view_finisehd_move_line |
mrp.finished.move.line.form | stock.move.line | form | New |
view_move_kanban_inherit_mrp |
stock.move.kanban.inherit.mrp | stock.move | xpath | Inherits stock.view_move_kandan |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_product_produce_wizard |
MRP Product Produce | mrp.product.produce | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | xpath | Inherits stock.view_template_property_form |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | 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_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_type_form_inherit_mrp |
Operation Types | stock.picking.type | field | Inherits stock.view_picking_type_form |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_production_pivot |
mrp.production.pivot | mrp.production | pivot | New |
view_stock_move_lots |
stock.move.lots.form | stock.move | form | New |
view_stock_move_raw_tree |
stock.move.raw.tree | stock.move | tree | New |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | xpath | Inherits stock.view_warehouse |
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_gantt_production |
mrp.production.work.order.gantt.production | mrp.workorder | gantt | 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 |
mo_id
Many2one → mrp.production
ondelete='cascade'
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits='Product Unit of Measure'
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
company_id
Many2one
related='production_id.company_id'
consumption
Selection
required=True
args: [('strict', 'Strict'), ('flexible', 'Flexible')]
finished_lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
string='Lot/Serial Number'
args: 'stock.production.lot'
product_id
Many2one
check_company=True
readonly=True
related='production_id.product_id'
store=True
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
args: 'uom.uom', 'Unit of Measure'
production_id
Many2one → mrp.production
check_company=True
required=True
args: 'mrp.production', 'Manufacturing Order'
qty_producing
Float
digits='Product Unit of Measure'
string='Currently Produced Quantity'
use_create_components_lots
Boolean
related='production_id.picking_type_id.use_create_components_lots'
No public methods.
company_id
Many2one → res.company
compute='_compute_company_id'
args: 'res.company'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), '|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]"
args: 'stock.production.lot', 'Lot/Serial Number'
move_id
Many2one → stock.move
check_company=True
args: 'stock.move'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'Product'
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
string='Unit of Measure'
args: 'uom.uom'
qty_done
Float
digits='Product Unit of Measure'
args: 'Consumed'
qty_reserved
Float
digits='Product Unit of Measure'
args: 'Reserved'
qty_to_consume
Float
digits='Product Unit of Measure'
args: 'To Consume'
No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the bills of material without removing it.'
args: 'Active'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
byproduct_ids
One2many → mrp.bom.byproduct
copy=True
args: 'mrp.bom.byproduct', 'bom_id', 'By-products'
code
Char
company_id
Many2one → res.company
default=<expr>
index=True
args: 'res.company', 'Company'
consumption
Selection
default='strict'
help='Defines if you can consume more or less components than the quantity defined on the BoM.'
string='Consumption'
args: [('strict', 'Strict'), ('flexible', 'Flexible')]
picking_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
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. That allows to define stock rules which trigger different manufacturing orders with different BoMs.'
args: 'stock.picking.type', 'Operation Type'
product_id
Many2one → product.product
check_company=True
domain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='If a product variant is defined the BOM is available only for this product.'
args: 'product.product', 'Product Variant'
product_qty
Float
default=1.0
digits='Unit of Measure'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
check_company=True
domain="[('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
args: 'product.template', 'Product'
product_uom_category_id
Many2one
related='product_tmpl_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Unit of Measure'
ready_to_produce
Selection
default='asap'
help='Defines when a Manufacturing Order is considered as ready to be started'
required=True
string='Manufacturing Readiness'
args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')]
routing_id
Many2one → mrp.routing
check_company=True
help='The operations for producing this BoM. When a routing is specified, the production orders will be executed through work orders, otherwise everything is processed in the production order itself. '
tracking=True
args: 'mrp.routing', 'Routing'
sequence
Integer
help='Gives the sequence order when displaying a list of bills of material.'
args: 'Sequence'
type
Selection
default='normal'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
check_kit_has_not_orderpoint(self)
create(self, vals_list)
explode(self, product, quantity, picking_type=False)
get_import_templates(self)
name_create(self, name)
name_get(self)
onchange_bom_structure(self)
onchange_product_id(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
onchange_routing_id(self)
unlink(self)
write(self, values)
bom_id
Many2one → mrp.bom
ondelete='cascade'
args: 'mrp.bom', 'BoM'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('routing_id', '=', routing_id), '|', ('company_id', '=', company_id), ('company_id', '=', False)]"
args: 'mrp.routing.workcenter', 'Produced in Operation'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'By-product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_uom_id
Many2one → uom.uom
required=True
args: 'uom.uom', 'Unit of Measure'
routing_id
Many2one → mrp.routing
related='bom_id.routing_id'
store=True
args: 'mrp.routing', 'Routing'
onchange_product_id(self)
onchange_uom(self)
attachments_count
Integer
compute='_compute_attachments_count'
args: 'Attachments Count'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
domain="[('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_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
company_id
Many2one
index=True
readonly=True
related='bom_id.company_id'
store=True
operation_id
Many2one → mrp.routing.workcenter
check_company=True
domain="[('routing_id', '=', routing_id), '|', ('company_id', '=', company_id), ('company_id', '=', False)]"
help='The operation where the components are consumed, or the finished products created.'
args: 'mrp.routing.workcenter', 'Consumed in Operation'
parent_product_tmpl_id
Many2one → product.template
related='bom_id.product_tmpl_id'
args: 'product.template', 'Parent Product Template'
possible_bom_product_template_attribute_value_ids
Many2many → product.template.attribute.value
compute='_compute_possible_bom_product_template_attribute_value_ids'
args: 'product.template.attribute.value'
product_id
Many2one → product.product
check_company=True
required=True
args: 'product.product', 'Component'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom_category_id
Many2one
related='product_id.uom_id.category_id'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
domain="[('category_id', '=', product_uom_category_id)]"
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
required=True
args: 'uom.uom', 'Product Unit of Measure'
routing_id
Many2one → mrp.routing
help='The list of operations to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning.'
readonly=False
related='bom_id.routing_id'
store=True
args: 'mrp.routing', 'Routing'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
action_see_attachments(self)
create(self, vals_list)
onchange_product_id(self)
onchange_product_uom_id(self)
active
Boolean
default=True
args: 'Active'
ir_attachment_id
Many2one → ir.attachment
ondelete='cascade'
required=True
string='Related attachment'
args: 'ir.attachment'
priority
Selection
help='Gives the sequence order when displaying a list of MRP documents.'
string='Priority'
args: [('0', 'Normal'), ('1', 'Low'), ('2', 'High'), ('3', 'Very High')]
copy(self, default=None)
finished_workorder_line_ids
One2many → mrp.product.produce.line
string='By-products'
args: 'mrp.product.produce.line', 'finished_product_produce_id'
is_pending_production
Boolean
compute='_compute_pending_production'
move_finished_ids
One2many
related='production_id.move_finished_ids'
move_raw_ids
One2many
related='production_id.move_raw_ids'
string='PO Components'
product_tracking
Selection
related='product_id.tracking'
production_id
Many2one → mrp.production
ondelete='cascade'
required=True
args: 'mrp.production', 'Manufacturing Order'
raw_workorder_line_ids
One2many → mrp.product.produce.line
string='Components'
args: 'mrp.product.produce.line', 'raw_product_produce_id'
serial
Boolean
action_generate_serial(self)
continue_production(self)
default_get(self, fields)
do_produce(self)
finished_product_produce_id
Many2one → mrp.product.produce
raw_product_produce_id
Many2one → mrp.product.produce
No public methods.
bom_id
Many2one → mrp.bom
check_company=True
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='Bill of Materials allow you to define the list of required components to make a finished product.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company', 'Company'
confirm_cancel
Boolean
compute='_compute_confirm_cancel'
date_deadline
Datetime
copy=False
help='Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time.'
index=True
args: 'Deadline'
date_finished
Datetime
copy=False
index=True
readonly=True
args: 'End Date'
date_planned_finished
Datetime
copy=False
default=_get_default_date_planned_finished
help='Date at which you plan to finish the production.'
store=True
args: 'Planned End Date'
date_planned_start
Datetime
copy=False
default=fields.Datetime.now
help='Date at which you plan to start the production.'
index=True
required=True
store=True
args: 'Planned Date'
date_start
Datetime
copy=False
index=True
readonly=True
args: 'Start Date'
date_start_wo
Datetime
copy=False
help='Work orders will be planned based on the availability of the work centers starting from this date. If empty, the work orders will be planned as soon as possible.'
readonly=True
args: 'Plan From'
delivery_count
Integer
compute='_compute_picking_ids'
string='Delivery Orders'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
is_locked
Boolean
copy=False
default=True
args: 'Is Locked'
location_dest_id
Many2one → stock.location
check_company=True
default=_get_default_location_dest_id
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the system will stock the finished products.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Finished Products Location'
location_src_id
Many2one → stock.location
check_company=True
default=_get_default_location_src_id
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the system will look for components.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Components Location'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
copy=True
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'raw_material_production_id', 'Components'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
orderpoint_id
Many2one → stock.warehouse.orderpoint
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Source'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
string='Picking associated to this manufacturing order'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
check_company=True
default=_get_default_picking_type
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.picking.type', 'Operation Type'
post_visible
Boolean
compute='_compute_post_visible'
help='Technical field to check when we can post'
args: 'Allowed to Post Inventory'
priority
Selection
default='1'
readonly=True
states={'draft': [('readonly', False)]}
args: [('0', 'Not urgent'), ('1', 'Normal'), ('2', 'Urgent'), ('3', 'Very Urgent')], 'Priority'
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
check_company=True
domain="[('bom_ids', '!=', False), ('bom_ids.active', '=', True), ('bom_ids.type', '=', 'normal'), ('type', 'in', ['product', 'consu']), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
digits='Product Unit of Measure'
readonly=True
required=True
states={'draft': [('readonly', False)]}
tracking=True
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom_id
Many2one → uom.uom
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
compute='_compute_product_uom_qty'
store=True
string='Total Quantity'
production_location_id
Many2one → stock.location
readonly=False
related='product_id.property_stock_production'
related_sudo=False
args: 'stock.location', 'Production Location'
propagate_cancel
Boolean
help='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'
propagate_date
Boolean
help='The rescheduling is propagated to the next move.'
string='Propagate Rescheduling'
propagate_date_minimum_delta
Integer
help='The change must be higher than this value to be propagated'
string='Reschedule if Higher Than'
qty_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
reservation_state
Selection
compute='_compute_state'
copy=False
help=' * Ready: The material is available to start the production.\n * Waiting: The material is not available to start the production.\n The material availability is impacted by the manufacturing readiness defined on the BoM.'
index=True
readonly=True
store=True
string='Material Availability'
tracking=True
args: [('confirmed', 'Waiting'), ('assigned', 'Ready'), ('waiting', 'Waiting Another Operation')]
routing_id
Many2one → mrp.routing
compute='_compute_routing'
help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning.'
readonly=True
store=True
args: 'mrp.routing', 'Routing'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
state
Selection
compute='_compute_state'
copy=False
help=" * 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 * Planned: The WO are planned.\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=True
readonly=True
store=True
string='State'
tracking=True
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('planned', 'Planned'), ('progress', 'In Progress'), ('to_close', 'To Close'), ('done', 'Done'), ('cancel', 'Cancelled')]
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Inventory'
user_id
Many2one → res.users
default=<expr>
domain=<expr>
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'res.users', 'Responsible'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_done_count
Integer
compute='_compute_workorder_done_count'
args: '# Done Work Orders'
workorder_ids
One2many → mrp.workorder
copy=False
readonly=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_confirm(self)
action_see_move_scrap(self)
action_toggle_is_locked(self)
action_view_mo_delivery(self)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unplan(self)
button_unreserve(self)
copy(self, default=None)
create(self, values)
do_unreserve(self)
get_empty_list_help(self, help)
onchange_company_id(self)
onchange_picking_type(self)
onchange_product_id(self)
open_produce_product(self)
post_inventory(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the routing without removing it.'
args: 'Active'
code
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
name
Char
required=True
args: 'Routing'
note
Text
operation_ids
One2many → mrp.routing.workcenter
copy=True
args: 'mrp.routing.workcenter', 'routing_id', 'Operations'
create(self, vals)
batch
Selection
default='no'
required=True
string='Start Next Operation'
args: [('no', 'Once all products are processed'), ('yes', 'Once some products are processed')]
batch_size
Float
default=1.0
args: 'Quantity to Process'
company_id
Many2one → res.company
readonly=True
related='routing_id.company_id'
store=True
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
note
Text
routing_id
Many2one → mrp.routing
help='The routing contains all the Work Centers used and for how long. This will create work orders afterwards which alters the execution of the manufacturing order.'
index=True
ondelete='cascade'
required=True
args: 'mrp.routing', 'Parent Routing'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help='Time in minutes. Is the time used in manual mode, or the first time supposed in real time when there are not any work orders yet.'
args: 'Manual Duration'
time_mode
Selection
default='manual'
string='Duration Computation'
args: [('auto', 'Compute based on real time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
check_company=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
help='Upload your PDF file.'
args: 'PDF'
worksheet_google_slide
Char
help='Paste the url of your Google Slide. Make sure the access to the document is public.'
args: 'Google Slide'
worksheet_type
Selection
default='pdf'
help='Defines if you want to use a PDF or a Google Slide as work sheet.'
string='Work Sheet'
args: [('pdf', 'PDF'), ('google_slide', 'Google Slide')]
No public methods.
bom_id
Many2one → mrp.bom
check_company=True
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 ]\n"
required=True
states={'done': [('readonly', True)]}
args: 'mrp.bom', 'Bill of Material'
company_id
Many2one → res.company
default=<expr>
index=True
required=True
states={'done': [('readonly', True)]}
args: 'res.company', 'Company'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
check_company=True
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where you want to send the components resulting from the unbuild order.'
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
check_company=True
domain="[('usage','=','internal'), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Location where the product you want to unbuild is.'
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Source Location'
lot_id
Many2one → stock.production.lot
check_company=True
domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]"
help='Lot/Serial Number of the product to unbuild.'
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial Number'
mo_id
Many2one → mrp.production
check_company=True
domain="[('state', 'in', ['done', 'cancel']), ('company_id', '=', company_id)]"
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
check_company=True
domain="[('bom_ids', '!=', False), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
product_uom_id
Many2one → uom.uom
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
state
Selection
default='draft'
index=True
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals)
unlink(self)
active
Boolean
default=True
readonly=False
related='resource_id.active'
store=True
args: 'Active'
alternative_workcenter_ids
Many2many → mrp.workcenter
check_company=True
domain="[('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_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hours over the last month'
args: 'Blocked Time'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel. In case the work center has a capacity of 5 and you have to produce 10 units on your work order, the usual operation time will be multiplied by 2.'
args: 'Capacity'
code
Char
copy=False
args: 'Code'
color
Integer
costs_hour
Float
default=0.0
help='Specify cost of work center per hour.'
string='Cost per hour'
name
Char
readonly=False
related='resource_id.name'
store=True
args: 'Work Center'
note
Text
help='Description of the Work Center.'
args: 'Description'
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='Overall Effective Efficiency Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hours over the last month'
args: 'Productive Time'
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
time_efficiency
Float
default=100
readonly=False
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
help='Time in minutes for the setup.'
args: 'Time before prod.'
time_stop
Float
help='Time in minutes for the cleaning.'
args: 'Time after prod.'
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Pending Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Read Work Orders'
action_work_order(self)
create(self, vals_list)
unblock(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
index=True
required=True
args: 'res.company'
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
args: 'Effectiveness'
production_id
Many2one → mrp.production
readonly='True'
related='workorder_id.production_id'
string='Manufacturing Order'
args: 'mrp.production'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
check_company=True
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
button_block(self)
loss_id
Many2one → mrp.workcenter.productivity.loss.type
domain=[('loss_type', 'in', ['quality', 'availability'])]
string='Category'
args: 'mrp.workcenter.productivity.loss.type'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
args: 'Blocking Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
loss_type
Selection
default='availability'
required=True
string='Category'
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
name_get(self)
allowed_lots_domain
One2many → stock.production.lot
comodel_name='stock.production.lot'
compute='_compute_allowed_lots_domain'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel.'
args: 'Capacity'
color
Integer
compute='_compute_color'
args: 'Color'
company_id
Many2one → res.company
default=<expr>
index=True
readonly=True
required=True
args: 'res.company', 'Company'
date_finished
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Effective End Date'
date_planned_finished
Datetime
compute='_compute_dates_planned'
inverse='_set_dates_planned'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
tracking=True
args: 'Scheduled Date Finished'
date_planned_start
Datetime
compute='_compute_dates_planned'
inverse='_set_dates_planned'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
tracking=True
args: 'Scheduled Date Start'
date_start
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Effective Start Date'
duration
Float
compute='_compute_duration'
readonly=True
store=True
args: 'Real Duration'
duration_expected
Float
digits=(16, 2)
help='Expected duration (in minutes)'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Expected Duration'
duration_percent
Integer
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Per Unit'
finished_lot_id
Many2one → stock.production.lot
check_company=True
domain="[('id', 'in', allowed_lots_domain)]"
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial Number'
finished_workorder_line_ids
One2many → mrp.workorder.line
string='By-products'
args: 'mrp.workorder.line', 'finished_workorder_id'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_working_users'
help='Technical field indicating whether the current user is working. '
args: 'Is the Current User Working'
last_working_user_id
One2many → res.users
compute='_compute_working_users'
string='Last user that worked on this work order.'
args: 'res.users'
leave_id
Many2one → resource.calendar.leaves
check_company=True
help='Slot into workcenter calendar once planned'
args: 'resource.calendar.leaves'
move_finished_ids
One2many → stock.move
domain=[('raw_material_production_id', '=', False), ('production_id', '!=', False)]
args: 'stock.move', 'workorder_id', 'Finished Moves'
move_line_ids
One2many → stock.move.line
help='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_ids
One2many → stock.move
domain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)]
args: 'stock.move', 'workorder_id', 'Raw Moves'
name
Char
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Work Order'
next_work_order_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Next Work Order'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
args: 'mrp.routing.workcenter', 'Operation'
production_availability
Selection
help='Technical: used in views and domains only.'
readonly=True
related='production_id.reservation_state'
store=True
args: 'Stock Availability'
production_date
Datetime
readonly=False
related='production_id.date_planned_start'
store=True
args: 'Production Date'
production_state
Selection
help='Technical: used in views only.'
readonly=True
related='production_id.state'
args: 'Production State'
progress
Float
compute='_compute_progress'
digits=(16, 2)
args: 'Progress Done (%)'
qty_produced
Float
default=0.0
digits='Product Unit of Measure'
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_remaining
Float
compute='_compute_qty_remaining'
digits='Product Unit of Measure'
args: 'Quantity To Be Produced'
raw_workorder_line_ids
One2many → mrp.workorder.line
string='Components'
args: 'mrp.workorder.line', 'raw_workorder_id'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
state
Selection
default='pending'
string='Status'
args: [('pending', 'Waiting for another WO'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
workcenter_id
Many2one → mrp.workcenter
check_company=True
group_expand='_read_group_workcenter_id'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
help='Technical: used in views only'
readonly=False
related='workcenter_id.working_state'
args: 'Workcenter Status'
working_user_ids
One2many → res.users
compute='_compute_working_users'
string='Working user on this work order.'
args: 'res.users'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
worksheet_google_slide
Char
readonly=True
related='operation_id.worksheet_google_slide'
args: 'Worksheet URL'
worksheet_type
Selection
readonly=True
related='operation_id.worksheet_type'
args: 'Worksheet Type'
action_cancel(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self)
button_unblock(self)
end_all(self)
end_previous(self, doall=False)
name_get(self)
record_production(self)
unlink(self)
write(self, values)
finished_workorder_id
Many2one → mrp.workorder
ondelete='cascade'
args: 'mrp.workorder', 'Finished Product for Workorder'
raw_workorder_id
Many2one → mrp.workorder
ondelete='cascade'
args: 'mrp.workorder', 'Component for Workorder'
No public methods.
No new fields.
Public methods (1)run(self, procurements)
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_line_ids
One2many → mrp.bom.line
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
args: 'Manufactured'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# BoM Where Used'
variant_bom_ids
One2many → mrp.bom
action_open_quants(self)
action_used_in_bom(self)
action_view_bom(self)
action_view_mos(self)
get_components(self)
bom_count
Integer
compute='_compute_bom_count'
compute_sudo=False
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
bom_line_ids
One2many → mrp.bom.line
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
compute_sudo=False
args: 'Manufactured'
produce_delay
Float
default=0.0
help='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.'
args: 'Manufacturing Lead Time'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
compute_sudo=False
args: '# of BoM Where is Used'
action_used_in_bom(self)
action_view_mos(self)
No new fields.
Public methods (3)get_bom(self, bom_id=False, product_id=False, line_qty=False, line_id=False, level=False)
get_html(self, bom_id=False, searchQty=1, searchVariant=False)
get_operations(self, bom_id=False, qty=0, level=0)
No new fields.
Public methods (0)No public methods.
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
create_missing_unbuild_sequences(self)
group_mrp_byproducts
Boolean
implied_group='mrp.group_mrp_byproducts'
args: 'By-Products'
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'MRP Work Orders'
manufacturing_lead
Float
readonly=False
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time'
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_subcontracting
Boolean
module_mrp_workorder
Boolean
module_quality_control
Boolean
use_manufacturing_lead
Boolean
config_parameter='mrp.use_manufacturing_lead'
string='Default Manufacturing Lead Time'
No public methods.
bom_line_id
Many2one → mrp.bom.line
check_company=True
args: 'mrp.bom.line', 'BoM Line'
byproduct_id
Many2one → mrp.bom.byproduct
check_company=True
help='By-product line that generated the move in a manufacturing order'
args: 'mrp.bom.byproduct', 'By-products'
consume_unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Consumed Disassembly Order'
created_production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Created Production Order'
finished_lots_exist
Boolean
compute='_compute_order_finished_lot_ids'
args: 'Finished Lots Exist'
is_done
Boolean
compute='_compute_is_done'
help='Technical Field to order moves'
store=True
args: 'Done'
needs_lots
Boolean
compute='_compute_needs_lots'
args: 'Tracking'
operation_id
Many2one → mrp.routing.workcenter
check_company=True
args: 'mrp.routing.workcenter', 'Operation To Consume'
order_finished_lot_ids
Many2many → stock.production.lot
compute='_compute_order_finished_lot_ids'
args: 'stock.production.lot'
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order for finished products'
raw_material_production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order for components'
unbuild_id
Many2one → mrp.unbuild
check_company=True
args: 'mrp.unbuild', 'Disassembly Order'
unit_factor
Float
default=1
args: 'Unit Factor'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order To Consume'
action_explode(self)
default_get(self, fields_list)
done_move
Boolean
readonly=False
related='move_id.is_done'
store=True
args: 'Move Done'
lot_produced_ids
Many2many → stock.production.lot
check_company=True
string='Finished Lot/Serial Number'
args: 'stock.production.lot'
lot_produced_qty
Float
digits='Product Unit of Measure'
help='Informative, not used in matching'
args: 'Quantity Finished Product'
production_id
Many2one → mrp.production
check_company=True
args: 'mrp.production', 'Production Order'
workorder_id
Many2one → mrp.workorder
check_company=True
args: 'mrp.workorder', 'Work Order'
write(self, vals)
No new fields.
Public methods (0)No public methods.
code
Selection
selection_add=[('mrp_operation', 'Manufacturing')]
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
use_create_components_lots
Boolean
default=False
help='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.
action
Selection
selection_add=[('manufacture', 'Manufacture')]
No public methods.
production_id
Many2one → mrp.production
check_company=True
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
check_company=True
help='Not to restrict or prefer quants, but informative.'
states={'done': [('readonly', True)]}
args: 'mrp.workorder', 'Work Order'
No public methods.
No new fields.
Public methods (0)No public methods.
manu_type_id
Many2one → stock.picking.type
check_company=True
domain="[('code', '=', 'mrp_operation'), ('company_id', '=', company_id)]"
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_mto_pull_id
Many2one → stock.rule
manufacture_pull_id
Many2one → stock.rule
manufacture_steps
Selection
default='mrp_one_step'
help='Produce : Move the components to the production location directly and start the manufacturing process.\nPick / Produce : Unload the components from the Stock to Input location first, and then transfer it to the Production location.'
required=True
args: [('mrp_one_step', 'Manufacture (1 step)'), ('pbm', 'Pick components and then manufacture (2 steps)'), ('pbm_sam', 'Pick components, manufacture and then store products (3 steps)')], 'Manufacture'
manufacture_to_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture to Resupply'
pbm_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Picking before Manufacturing Location'
pbm_mto_pull_id
Many2one → stock.rule
pbm_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Picking Before Manufacturing Route'
pbm_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Picking Before Manufacturing Operation Type'
sam_loc_id
Many2one → stock.location
check_company=True
args: 'stock.location', 'Stock after Manufacturing Location'
sam_rule_id
Many2one → stock.rule
sam_type_id
Many2one → stock.picking.type
check_company=True
args: 'stock.picking.type', 'Stock After Manufacturing Operation Type'
get_rules_dict(self)
write(self, vals)
No new fields.
Public methods (1)check_product_is_not_kit(self)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mrp assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_common |
mrp bom common assets | ir.ui.view | qweb | Inherits web.assets_common |
exception_on_mo |
exception_on_mo | ir.ui.view | qweb | New |
label_production_view_pdf |
label_production_view_pdf | ir.ui.view | qweb | 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_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_product_product_search_view |
mrp.product.product.search | product.product | xpath | Inherits product.product_search_form_view |
mrp_product_template_search_view |
mrp.product.template.search | product.template | xpath | 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.tree | mrp.production | tree | New |
mrp_production_workorder_form_view_inherit |
mrp.production.work.order.form | mrp.workorder | form | New |
mrp_production_workorder_tree_view_inherit |
mrp.production.work.order.tree | mrp.workorder | tree | New |
mrp_report_stock_rule |
mrp_report_stock_rule | ir.ui.view | qweb | Inherits stock.report_stock_rule |
mrp_routing_form_view |
mrp.routing.form | mrp.routing | form | New |
mrp_routing_kanban_view |
mrp.routing.kanban | mrp.routing | kanban | New |
mrp_routing_search_view |
mrp.routing.search | mrp.routing | search | New |
mrp_routing_tree_view |
mrp.routing.tree | mrp.routing | tree | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | New |
mrp_unbuild_form_view |
mrp.unbuild.form | 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.tree | mrp.unbuild | tree | 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.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workcenter_view_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
mrp_workorder_view_gantt |
mrp.workorder.view.gantt | mrp.workorder | gantt | 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.tree | mrp.workcenter.productivity.loss | tree | 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.tree | mrp.workcenter.productivity | tree | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | button | Inherits product.product_normal_form_view |
product_template_form_view_bom_button |
product.template.procurement | product.template | button | Inherits product.product_template_only_form_view |
production_message |
production_message | ir.ui.view | qweb | New |
qunit_suite |
qunit_suite | ir.ui.view | qweb | Inherits web.qunit_suite |
report_bom_structure |
report_bom_structure | ir.ui.view | qweb | New |
report_mrp_bom |
report_mrp_bom | ir.ui.view | qweb | New |
report_mrp_bom_line |
report_mrp_bom_line | ir.ui.view | qweb | New |
report_mrp_bom_pdf |
report_mrp_bom_pdf | ir.ui.view | qweb | New |
report_mrp_bom_pdf_line |
report_mrp_bom_pdf_line | ir.ui.view | qweb | New |
report_mrp_operation_line |
report_mrp_operation_line | 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 | xpath | Inherits base.res_config_settings_view_form |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | field | Inherits stock.stock_picking_type_kanban |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | 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_document_file_kanban_mrp |
mrp.document kanban.mrp | mrp.document | kanban | New |
view_document_form |
mrp.document.form | mrp.document | xpath | Inherits base.view_attachment_form |
view_finisehd_move_line |
mrp.finished.move.line.form | stock.move.line | form | New |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_product_produce_wizard |
MRP Product Produce | mrp.product.produce | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | xpath | Inherits stock.view_template_property_form |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | 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_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_type_form_inherit_mrp |
Operation Types | stock.picking.type | field | Inherits stock.view_picking_type_form |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_production_pivot |
mrp.production.pivot | mrp.production | pivot | New |
view_stock_move_lots |
stock.move.lots.form | stock.move | form | New |
view_warehouse_inherit_mrp |
Stock Warehouse Inherit MRP | stock.warehouse | xpath | Inherits stock.view_warehouse |
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_gantt_production |
mrp.production.work.order.gantt.production | mrp.workorder | gantt | 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 |
mo_id
Many2one → mrp.production
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the bills of material without removing it.'
args: 'Active'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
code
Char
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
picking_type_id
Many2one → stock.picking.type
domain=[('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. That allows to define stock rules which trigger different manufacturing orders with different BoMs.'
args: 'stock.picking.type', 'Operation Type'
product_id
Many2one → product.product
domain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', 'in', ['product', 'consu'])]"
help='If a product variant is defined the BOM is available only for this product.'
args: 'product.product', 'Product Variant'
product_qty
Float
default=1.0
digits=dp.get_precision('Unit of Measure')
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
domain="[('type', 'in', ['product', 'consu'])]"
required=True
args: 'product.template', 'Product'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
oldname='product_uom'
required=True
args: 'uom.uom', 'Product Unit of Measure'
ready_to_produce
Selection
default='asap'
help='Defines when a Manufacturing Order is considered as ready to be started'
required=True
string='Manufacturing Readiness'
args: [('all_available', ' When all components are available'), ('asap', 'When components for 1st operation are available')]
routing_id
Many2one → mrp.routing
help='The operations for producing this BoM. When a routing is specified, the production orders will be executed through work orders, otherwise everything is processed in the production order itself. '
track_visibility='onchange'
args: 'mrp.routing', 'Routing'
sequence
Integer
help='Gives the sequence order when displaying a list of bills of material.'
args: 'Sequence'
type
Selection
default='normal'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
check_kit_has_not_orderpoint(self)
explode(self, product, quantity, picking_type=False)
get_import_templates(self)
name_create(self, name)
name_get(self)
onchange_product_id(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
onchange_routing_id(self)
unlink(self)
attribute_value_ids
Many2many → product.attribute.value
help='BOM Product Variants needed form apply this line.'
string='Apply on Variants'
args: 'product.attribute.value'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
child_bom_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
has_attachments
Boolean
compute='_compute_has_attachments'
args: 'Has Attachments'
operation_id
Many2one → mrp.routing.workcenter
help='The operation where the components are consumed, or the finished products created.'
args: 'mrp.routing.workcenter', 'Consumed in Operation'
parent_product_tmpl_id
Many2one → product.template
related='bom_id.product_tmpl_id'
args: 'product.template', 'Parent Product Template'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Component'
product_qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom_id
Many2one → uom.uom
default=_get_default_product_uom_id
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
oldname='product_uom'
required=True
args: 'uom.uom', 'Product Unit of Measure'
routing_id
Many2one → mrp.routing
help='The list of operations to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning.'
readonly=False
related='bom_id.routing_id'
store=True
args: 'mrp.routing', 'Routing'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
valid_product_attribute_value_ids
Many2many → product.attribute.value
related='bom_id.product_tmpl_id.valid_product_attribute_value_ids'
args: 'product.attribute.value'
valid_product_attribute_value_wnva_ids
Many2many → product.attribute.value
related='bom_id.product_tmpl_id.valid_product_attribute_value_wnva_ids'
args: 'product.attribute.value'
action_see_attachments(self)
create(self, vals_list)
onchange_parent_product(self)
onchange_product_id(self)
onchange_product_uom_id(self)
active
Boolean
default=True
args: 'Active'
ir_attachment_id
Many2one → ir.attachment
ondelete='cascade'
required=True
string='Related attachment'
args: 'ir.attachment'
priority
Selection
help='Gives the sequence order when displaying a list of MRP documents.'
string='Priority'
args: [('0', 'Normal'), ('1', 'Low'), ('2', 'High'), ('3', 'Very High')]
No public methods.
lot_id
Many2one → stock.production.lot
string='Lot/Serial Number'
args: 'stock.production.lot'
produce_line_ids
One2many → mrp.product.produce.line
string='Product to Track'
args: 'mrp.product.produce.line', 'product_produce_id'
product_id
Many2one → product.product
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
string='Quantity'
product_tracking
Selection
readonly=True
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
production_id
Many2one → mrp.production
serial
Boolean
check_finished_move_lots(self)
default_get(self, fields)
do_produce(self)
lot_id
Many2one → stock.production.lot
move_id
Many2one → stock.move
product_id
Many2one → product.product
product_produce_id
Many2one → mrp.product.produce
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
qty_done
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'Consumed'
qty_reserved
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'Reserved'
qty_to_consume
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'To Consume'
No public methods.
availability
Selection
compute='_compute_availability'
store=True
string='Materials Availability'
args: [('assigned', 'Available'), ('partially_available', 'Partially Available'), ('waiting', 'Waiting'), ('none', 'None')]
bom_id
Many2one → mrp.bom
help='Bill of Materials allow you to define the list of required raw materials to make a finished product.'
readonly=True
states={'confirmed': [('readonly', False)]}
args: 'mrp.bom', 'Bill of Material'
check_to_done
Boolean
compute='_get_produced_qty'
help="Technical Field to see if we can show 'Mark as Done' button"
string='Check Produced Qty'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
consumed_less_than_planned
Boolean
compute='_compute_consumed_less_than_planned'
help='Technical field used to see if we have to display a warning or not when confirming an order.'
date_finished
Datetime
copy=False
index=True
readonly=True
args: 'End Date'
date_planned_finished
Datetime
copy=False
default=fields.Datetime.now
index=True
states={'confirmed': [('readonly', False)]}
args: 'Deadline End'
date_planned_start
Datetime
copy=False
default=fields.Datetime.now
index=True
oldname='date_planned'
required=True
states={'confirmed': [('readonly', False)]}
args: 'Deadline Start'
date_start
Datetime
copy=False
index=True
readonly=True
args: 'Start Date'
delivery_count
Integer
compute='_compute_picking_ids'
string='Delivery Orders'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
has_moves
Boolean
compute='_has_moves'
is_locked
Boolean
copy=False
default=True
args: 'Is Locked'
location_dest_id
Many2one → stock.location
default=_get_default_location_dest_id
help='Location where the system will stock the finished products.'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'stock.location', 'Finished Products Location'
location_src_id
Many2one → stock.location
default=_get_default_location_src_id
help='Location where the system will look for components.'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'stock.location', 'Raw Materials Location'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
oldname='move_lines'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'raw_material_production_id', 'Raw Materials'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
args: 'Source'
picking_ids
Many2many → stock.picking
compute='_compute_picking_ids'
string='Picking associated to this manufacturing order'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
default=_get_default_picking_type
required=True
args: 'stock.picking.type', 'Operation Type'
post_visible
Boolean
compute='_compute_post_visible'
help='Technical field to check when we can post'
args: 'Allowed to Post Inventory'
priority
Selection
default='1'
readonly=True
states={'confirmed': [('readonly', False)]}
args: [('0', 'Not urgent'), ('1', 'Normal'), ('2', 'Urgent'), ('3', 'Very Urgent')], 'Priority'
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
track_visibility='onchange'
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom_id
Many2one → uom.uom
oldname='product_uom'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
compute='_compute_product_uom_qty'
store=True
string='Total Quantity'
production_location_id
Many2one → stock.location
readonly=False
related='product_id.property_stock_production'
related_sudo=False
args: 'stock.location', 'Production Location'
propagate
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
routing_id
Many2one → mrp.routing
compute='_compute_routing'
help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning.'
readonly=True
store=True
args: 'mrp.routing', 'Routing'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
state
Selection
copy=False
default='confirmed'
string='State'
track_visibility='onchange'
args: [('confirmed', 'Confirmed'), ('planned', 'Planned'), ('progress', 'In Progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Inventory'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'Responsible'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_done_count
Integer
compute='_compute_workorder_done_count'
args: '# Done Work Orders'
workorder_ids
One2many → mrp.workorder
copy=False
oldname='workcenter_lines'
readonly=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_see_move_scrap(self)
action_toggle_is_locked(self)
action_view_mo_delivery(self)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unreserve(self)
create(self, values)
do_unreserve(self)
get_empty_list_help(self, help)
onchange_picking_type(self)
onchange_product_id(self)
open_produce_product(self)
post_inventory(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the routing without removing it.'
args: 'Active'
code
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
location_id
Many2one → stock.location
help='Keep empty if you produce at the location where you find the raw materials. Set a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
args: 'stock.location', 'Raw Materials Location'
name
Char
required=True
args: 'Routing'
note
Text
operation_ids
One2many → mrp.routing.workcenter
copy=True
oldname='workcenter_lines'
args: 'mrp.routing.workcenter', 'routing_id', 'Operations'
create(self, vals)
batch
Selection
default='no'
help="Set 'no' to schedule the next work order after the previous one. Set 'yes' to produce after the quantity set in 'Quantity To Process' has been produced."
required=True
string='Next Operation'
args: [('no', 'Once all products are processed'), ('yes', 'Once a minimum number of products is processed')]
batch_size
Float
default=1.0
args: 'Quantity to Process'
company_id
Many2one → res.company
readonly=True
related='routing_id.company_id'
store=True
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
note
Text
routing_id
Many2one → mrp.routing
help='The routing contains all the Work Centers used and for how long. This will create work orders afterwards which alters the execution of the manufacturing order.'
index=True
ondelete='cascade'
required=True
args: 'mrp.routing', 'Parent Routing'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help='Time in minutes. Is the time used in manual mode, or the first time supposed in real time when there are not any work orders yet.'
args: 'Manual Duration'
time_mode
Selection
default='auto'
string='Duration Computation'
args: [('auto', 'Compute based on real time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
No public methods.
bom_id
Many2one → mrp.bom
domain=[('product_tmpl_id', '=', 'product_id.product_tmpl_id')]
required=True
states={'done': [('readonly', True)]}
args: 'mrp.bom', 'Bill of Material'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
default=_get_default_location_dest_id
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
default=_get_default_location_id
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot'
mo_id
Many2one → mrp.production
domain="[('product_id', '=', product_id), ('state', 'in', ['done', 'cancel'])]"
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
product_uom_id
Many2one → uom.uom
required=True
states={'done': [('readonly', True)]}
args: 'uom.uom', 'Unit of Measure'
state
Selection
default='draft'
index=True
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals)
onchange_mo_id(self)
onchange_product_id(self)
unlink(self)
active
Boolean
default=True
readonly=False
related='resource_id.active'
store=True
args: 'Active'
blocked_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hour(s) over the last month'
args: 'Blocked Time'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel.'
oldname='capacity_per_cycle'
args: 'Capacity'
code
Char
copy=False
args: 'Code'
color
Integer
costs_hour
Float
default=0.0
help='Specify cost of work center per hour.'
string='Cost per hour'
name
Char
readonly=False
related='resource_id.name'
store=True
args: 'Work Center'
note
Text
help='Description of the Work Center.'
args: 'Description'
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='OEE Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hour(s) over the last month'
args: 'Productive Time'
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
time_efficiency
Float
default=100
readonly=False
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
help='Time in minutes for the setup.'
args: 'Time before prod.'
time_stop
Float
help='Time in minutes for the cleaning.'
args: 'Time after prod.'
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Workcenter Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Pending Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Read Work Orders'
create(self, vals)
unblock(self)
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
args: 'Effectiveness'
production_id
Many2one → mrp.production
readonly='True'
related='workorder_id.production_id'
string='Manufacturing Order'
args: 'mrp.production'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
button_block(self)
loss_id
Many2one → mrp.workcenter.productivity.loss.type
domain=[('loss_type', 'in', ['quality', 'availability'])]
string='Category'
args: 'mrp.workcenter.productivity.loss.type'
loss_type
Selection
readonly=False
related='loss_id.loss_type'
store=True
string='Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
args: 'Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
loss_type
Selection
default='availability'
required=True
string='Category'
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')]
name_get(self)
active_move_line_ids
One2many → stock.move.line
domain=[('done_wo', '=', False)]
args: 'stock.move.line', 'workorder_id'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel.'
args: 'Capacity'
color
Integer
compute='_compute_color'
args: 'Color'
date_finished
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Effective End Date'
date_planned_finished
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Scheduled Date Finished'
date_planned_start
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Scheduled Date Start'
date_start
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Effective Start Date'
duration
Float
compute='_compute_duration'
readonly=True
store=True
args: 'Real Duration'
duration_expected
Float
digits=(16, 2)
help='Expected duration (in minutes)'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Expected Duration'
duration_percent
Integer
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Per Unit'
final_lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial Number'
is_first_wo
Boolean
compute='_compute_is_first_wo'
string='Is the first WO to produce'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_working_users'
help='Technical field indicating whether the current user is working. '
args: 'Is the Current User Working'
last_working_user_id
One2many → res.users
compute='_compute_working_users'
string='Last user that worked on this work order.'
args: 'res.users'
move_line_ids
One2many → stock.move.line
domain=[('done_wo', '=', True)]
help='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_ids
One2many → stock.move
name
Char
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Work Order'
next_work_order_id
Many2one → mrp.workorder
operation_id
Many2one → mrp.routing.workcenter
product_id
Many2one → product.product
help='Technical: used in views only.'
readonly=True
related='production_id.product_id'
store=True
args: 'product.product', 'Product'
product_tracking
Selection
help='Technical: used in views only.'
readonly=False
related='production_id.product_id.tracking'
args: 'Product Tracking'
product_uom_id
Many2one → uom.uom
help='Technical: used in views only.'
readonly=True
related='production_id.product_uom_id'
args: 'uom.uom', 'Unit of Measure'
production_availability
Selection
help='Technical: used in views and domains only.'
readonly=True
related='production_id.availability'
store=True
args: 'Stock Availability'
production_date
Datetime
readonly=False
related='production_id.date_planned_start'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
index=True
ondelete='cascade'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
track_visibility='onchange'
args: 'mrp.production', 'Manufacturing Order'
production_state
Selection
help='Technical: used in views only.'
readonly=True
related='production_id.state'
args: 'Production State'
qty_produced
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_producing
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_remaining
Float
compute='_compute_qty_remaining'
digits=dp.get_precision('Product Unit of Measure')
args: 'Quantity To Be Produced'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
state
Selection
default='pending'
string='Status'
args: [('pending', 'Pending'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
workcenter_id
Many2one → mrp.workcenter
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
help='Technical: used in views only'
readonly=False
related='workcenter_id.working_state'
args: 'Workcenter Status'
working_user_ids
One2many → res.users
compute='_compute_working_users'
string='Working user on this work order.'
args: 'res.users'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
action_cancel(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self)
button_unblock(self)
end_all(self)
end_previous(self, doall=False)
name_get(self)
record_production(self)
write(self, values)
No new fields.
Public methods (0)No public methods.
bom_count
Integer
compute='_compute_bom_count'
args: '# Bill of Material'
bom_line_ids
One2many → mrp.bom.line
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
args: 'Manufactured'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
args: '# BoM Where Used'
variant_bom_ids
One2many → mrp.bom
action_used_in_bom(self)
action_view_bom(self)
action_view_mos(self)
bom_count
Integer
compute='_compute_bom_count'
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
bom_line_ids
One2many → mrp.bom.line
mrp_product_qty
Float
compute='_compute_mrp_product_qty'
args: 'Manufactured'
produce_delay
Float
default=0.0
help='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.'
args: 'Manufacturing Lead Time'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
args: '# of BoM Where is Used'
action_used_in_bom(self)
action_view_mos(self)
No new fields.
Public methods (3)get_bom(self, bom_id=False, product_id=False, line_qty=False, line_id=False, level=False)
get_html(self, bom_id=False, searchQty=1, searchVariant=False)
get_operations(self, bom_id=False, qty=0, level=0)
No new fields.
Public methods (0)No public methods.
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
No public methods.
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'MRP Work Orders'
manufacturing_lead
Float
readonly=False
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time'
module_mrp_byproduct
Boolean
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_workorder
Boolean
module_quality_control
Boolean
use_manufacturing_lead
Boolean
config_parameter='mrp.use_manufacturing_lead'
oldname='default_use_manufacturing_lead'
string='Default Manufacturing Lead Time'
No public methods.
active_move_line_ids
One2many → stock.move.line
domain=[('done_wo', '=', True)]
string='Lots'
args: 'stock.move.line', 'move_id'
bom_line_id
Many2one → mrp.bom.line
consume_unbuild_id
Many2one → mrp.unbuild
created_production_id
Many2one → mrp.production
finished_lots_exist
Boolean
compute='_compute_order_finished_lot_ids'
args: 'Finished Lots Exist'
is_done
Boolean
compute='_compute_is_done'
help='Technical Field to order moves'
store=True
args: 'Done'
needs_lots
Boolean
compute='_compute_needs_lots'
args: 'Tracking'
operation_id
Many2one → mrp.routing.workcenter
order_finished_lot_ids
Many2many → stock.production.lot
compute='_compute_order_finished_lot_ids'
args: 'stock.production.lot'
production_id
Many2one → mrp.production
raw_material_production_id
Many2one → mrp.production
unbuild_id
Many2one → mrp.unbuild
unit_factor
Float
workorder_id
Many2one → mrp.workorder
action_explode(self)
default_get(self, fields_list)
done_move
Boolean
readonly=False
related='move_id.is_done'
store=True
args: 'Move Done'
done_wo
Boolean
default=True
help='Technical Field which is False when temporarily filled in in work order'
args: 'Done for Work Order'
lot_produced_id
Many2one → stock.production.lot
lot_produced_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='Informative, not used in matching'
args: 'Quantity Finished Product'
production_id
Many2one → mrp.production
workorder_id
Many2one → mrp.workorder
write(self, vals)
No new fields.
Public methods (0)No public methods.
code
Selection
selection_add=[('mrp_operation', 'Manufacturing Operation')]
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
get_mrp_stock_picking_action_picking_type(self)
use_next_on_work_order_id
Many2one → mrp.workorder
help='Technical: used to figure out default serial number on work orders'
string='Next Work Order to Use'
args: 'mrp.workorder'
No public methods.
action
Selection
selection_add=[('manufacture', 'Manufacture')]
No public methods.
production_id
Many2one → mrp.production
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
help='Not to restrict or prefer quants, but informative.'
states={'done': [('readonly', True)]}
args: 'mrp.workorder', 'Work Order'
No public methods.
No new fields.
Public methods (0)No public methods.
manu_type_id
Many2one → stock.picking.type
domain=[('code', '=', 'mrp_operation')]
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_pull_id
Many2one → stock.rule
manufacture_steps
Selection
default='mrp_one_step'
help='Produce : Move the raw materials to the production location directly and start the manufacturing process.\nPick / Produce : Unload the raw materials from the Stock to Input location first, and then transfer it to the Production location.'
required=True
args: [('mrp_one_step', 'Manufacture (1 step)'), ('pbm', 'Pick components and then manufacture (2 steps)'), ('pbm_sam', 'Pick components, manufacture and then store products (3 steps)')], 'Manufacture'
manufacture_to_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture to Resupply'
pbm_loc_id
Many2one → stock.location
pbm_mto_pull_id
Many2one → stock.rule
pbm_route_id
Many2one → stock.location.route
ondelete='restrict'
args: 'stock.location.route', 'Picking Before Manufacturing Route'
pbm_type_id
Many2one → stock.picking.type
sam_loc_id
Many2one → stock.location
sam_rule_id
Many2one → stock.rule
sam_type_id
Many2one → stock.picking.type
get_rules_dict(self)
write(self, vals)
No new fields.
Public methods (1)check_product_is_not_kit(self)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/11.0/mrp |
| VERSION | |
| VERSION | 2.0 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, David Monjoie, Xavier Morel, Joren Van Onder, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, qdp-odoo, Géry Debongnie, Aaron Bohy, GitHub, Damien Bouvy, Olivier Colson, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, Pierre Masereel, Laurent Smet, Denis Vermylen (dve), Adrien Dieudonne, len-odoo, Jorge Pinna Puissant, Nans Lefebvre, amoyaux, Arnold Moyaux, jvm-odoo, jerome hanke (jhk), Fanny He, William Henrotin, Khoi Nguyen, fw-bot, svs-odoo, Andrii Skrypka |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/manufacturing |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:53:43 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web - bus - web_tour - stock - barcodes - web_planner - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mrp assets | ir.ui.view | qweb | Inherits web.assets_backend |
mrp_bom_component_tree_view |
mrp.bom.component.tree | mrp.bom.line | tree | New |
mrp_bom_cost_report |
mrp_bom_cost_report | ir.ui.view | qweb | 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_structure_report |
mrp_bom_structure_report | ir.ui.view | qweb | New |
mrp_bom_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_message_view_form |
mrp.message.view.form | mrp.message | form | New |
mrp_message_view_form_embedded_bom |
mrp.message.view.form.embedded.bom | mrp.message | form | New |
mrp_message_view_form_embedded_product |
mrp.message.view.form.embedded.product | mrp.message | form | New |
mrp_message_view_search |
mrp.message.view.search | mrp.message | search | New |
mrp_message_view_tree |
mrp.message.view.tree | mrp.message | tree | New |
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.tree | mrp.production | tree | New |
mrp_production_workcenter_form_view_inherit |
mrp.production.work.order.form | mrp.workorder | form | New |
mrp_production_workcenter_tree_view_inherit |
mrp.production.work.order.tree | mrp.workorder | tree | New |
mrp_routing_form_view |
mrp.routing.form | mrp.routing | form | New |
mrp_routing_kanban_view |
mrp.routing.kanban | mrp.routing | kanban | New |
mrp_routing_search_view |
mrp.routing.search | mrp.routing | search | New |
mrp_routing_tree_view |
mrp.routing.tree | mrp.routing | tree | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | New |
mrp_unbuild_form_view |
mrp.unbuild.form | 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.tree | mrp.unbuild | tree | 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.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workcenter_view_kanban |
mrp.workcenter.kanban | mrp.workcenter | kanban | New |
mrp_workorder_view_gantt |
mrp.workorder.view.gantt | mrp.workorder | gantt | 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.tree | mrp.workcenter.productivity.loss | tree | 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.tree | mrp.workcenter.productivity | tree | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | button | Inherits product.product_normal_form_view |
product_template_form_view_bom_button |
product.template.procurement | product.template | button | Inherits product.product_template_only_form_view |
product_template_search_view_procurment |
product.template.search.bom | product.template | xpath | Inherits product.product_template_search_view |
production_message |
production_message | ir.ui.view | qweb | New |
qunit_suite |
qunit_suite | ir.ui.view | qweb | Inherits web.qunit_suite |
report_mrporder |
report_mrporder | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.mrp | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | field | Inherits stock.stock_picking_type_kanban |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
stock_warn_insufficient_qty_unbuild_form_view |
stock.warn.insufficient.qty.unbuild | stock.warn.insufficient.qty.unbuild | xpath | 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_document_file_kanban_mrp |
mrp.document kanban.mrp | mrp.document | kanban | New |
view_document_form |
mrp.document.form | mrp.document | xpath | Inherits base.view_attachment_form |
view_finisehd_move_line |
mrp.finished.move.line.form | stock.move.line | form | New |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_bom_line_filter |
mrp.bom.line.select | mrp.bom.line | search | New |
view_mrp_message_kanban |
mrp.message.kanban | mrp.message | kanban | New |
view_mrp_product_produce_wizard |
MRP Product Produce | mrp.product.produce | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | xpath | Inherits stock.view_template_property_form |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | New |
view_mrp_production_work_order_search |
mrp.production.work.order.search | mrp.workorder | search | New |
view_mrp_production_workcenter_form_view_filter |
mrp.production.work.order.select | mrp.workorder | search | New |
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_type_form_inherit_mrp |
Operation Types | stock.picking.type | field | Inherits stock.view_picking_type_form |
view_procurement_rule_form_stock_inherit_mrp |
procurement.rule.form.stock.inherit.mrp | procurement.rule | field | Inherits stock.view_procurement_rule_form |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_production_pivot |
mrp.production.pivot | mrp.production | pivot | New |
view_stock_move_lots |
stock.move.lots.form | stock.move | form | New |
view_warehouse_inherited |
Stock Warehouse Inherited | stock.warehouse | xpath | Inherits stock.view_warehouse |
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_gantt_production |
mrp.production.work.order.gantt.production | mrp.workorder | gantt | 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 |
mo_id
Many2one → mrp.production
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the bills of material without removing it.'
args: 'Active'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
code
Char
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
picking_type_id
Many2one → stock.picking.type
domain=[('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. That allows to define procurement rules which trigger different manufacturing orders with different BoMs.'
args: 'stock.picking.type', 'Operation Type'
product_id
Many2one → product.product
domain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', 'in', ['product', 'consu'])]"
help='If a product variant is defined the BOM is available only for this product.'
args: 'product.product', 'Product Variant'
product_qty
Float
default=1.0
digits=dp.get_precision('Unit of Measure')
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
domain="[('type', 'in', ['product', 'consu'])]"
required=True
args: 'product.template', 'Product'
product_uom_id
Many2one → product.uom
default=_get_default_product_uom_id
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
oldname='product_uom'
required=True
args: 'product.uom', 'Product Unit of Measure'
ready_to_produce
Selection
default='asap'
required=True
string='Manufacturing Readiness'
args: [('all_available', 'All components available'), ('asap', 'The components of 1st operation')]
routing_id
Many2one → mrp.routing
help='The operations for producing this BoM. When a routing is specified, the production orders will be executed through work orders, otherwise everything is processed in the production order itself. '
args: 'mrp.routing', 'Routing'
sequence
Integer
help='Gives the sequence order when displaying a list of bills of material.'
args: 'Sequence'
type
Selection
default='normal'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Kit')], 'BoM Type'
explode(self, product, quantity, picking_type=False)
name_get(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
onchange_routing_id(self)
unlink(self)
attribute_value_ids
Many2many → product.attribute.value
help='BOM Product Variants needed form apply this line.'
string='Variants'
args: 'product.attribute.value'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
child_bom_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
has_attachments
Boolean
compute='_compute_has_attachments'
args: 'Has Attachments'
operation_id
Many2one → mrp.routing.workcenter
help='The operation where the components are consumed, or the finished products created.'
args: 'mrp.routing.workcenter', 'Consumed in Operation'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Product Quantity'
product_uom_id
Many2one → product.uom
default=_get_default_product_uom_id
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
oldname='product_uom'
required=True
args: 'product.uom', 'Product Unit of Measure'
routing_id
Many2one → mrp.routing
help='The list of operations to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning.'
related='bom_id.routing_id'
store=True
args: 'mrp.routing', 'Routing'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
action_see_attachments(self)
create(self, values)
onchange_product_id(self)
onchange_product_uom_id(self)
active
Boolean
default=True
args: 'Active'
ir_attachment_id
Many2one → ir.attachment
ondelete='cascade'
required=True
string='Related attachment'
args: 'ir.attachment'
priority
Selection
help='Gives the sequence order when displaying a list of MRP documents.'
string='Priority'
args: [('0', 'Normal'), ('1', 'Low'), ('2', 'High'), ('3', 'Very High')]
No public methods.
bom_id
Many2one → mrp.bom
domain="['|', ('product_id', '=', product_id), ('product_tmpl_id.product_variant_ids','=', product_id)]"
args: 'mrp.bom', 'Bill of Material'
message
Html
required=True
name
Text
compute='_get_note_first_line'
store=True
product_id
Many2one → product.product
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
routing_id
Many2one → mrp.routing
string='Routing'
args: 'mrp.routing'
valid_until
Date
default=_default_valid_until
required=True
args: 'Validity Date'
workcenter_id
Many2one → mrp.workcenter
string='Work Center'
args: 'mrp.workcenter'
save(self)
lot_id
Many2one → stock.production.lot
string='Lot'
args: 'stock.production.lot'
produce_line_ids
One2many → mrp.product.produce.line
string='Product to Track'
args: 'mrp.product.produce.line', 'product_produce_id'
product_id
Many2one → product.product
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
string='Quantity'
product_tracking
Selection
readonly=True
related='product_id.tracking'
product_uom_id
Many2one → product.uom
production_id
Many2one → mrp.production
serial
Boolean
check_finished_move_lots(self)
default_get(self, fields)
do_produce(self)
lot_id
Many2one → stock.production.lot
move_id
Many2one → stock.move
product_id
Many2one → product.product
product_produce_id
Many2one → mrp.product.produce
product_uom_id
Many2one → product.uom
qty_done
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'Done'
qty_to_consume
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'To Consume'
No public methods.
availability
Selection
compute='_compute_availability'
store=True
string='Materials Availability'
args: [('assigned', 'Available'), ('partially_available', 'Partially Available'), ('waiting', 'Waiting'), ('none', 'None')]
bom_id
Many2one → mrp.bom
help='Bill of Materials allow you to define the list of required raw materials to make a finished product.'
readonly=True
states={'confirmed': [('readonly', False)]}
args: 'mrp.bom', 'Bill of Material'
check_to_done
Boolean
compute='_get_produced_qty'
help="Technical Field to see if we can show 'Mark as Done' button"
string='Check Produced Qty'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
consumed_less_than_planned
Boolean
compute='_compute_consumed_less_than_planned'
help='Technical field used to see if we have to display a warning or not when confirming an order.'
date_finished
Datetime
copy=False
index=True
readonly=True
args: 'End Date'
date_planned_finished
Datetime
copy=False
default=fields.Datetime.now
index=True
states={'confirmed': [('readonly', False)]}
args: 'Deadline End'
date_planned_start
Datetime
copy=False
default=fields.Datetime.now
index=True
oldname='date_planned'
required=True
states={'confirmed': [('readonly', False)]}
args: 'Deadline Start'
date_start
Datetime
copy=False
index=True
readonly=True
args: 'Start Date'
finished_move_line_ids
One2many → stock.move.line
compute='_compute_lines'
inverse='_inverse_lines'
string='Finished Product'
args: 'stock.move.line'
has_moves
Boolean
compute='_has_moves'
is_locked
Boolean
copy=False
default=True
args: 'Is Locked'
location_dest_id
Many2one → stock.location
default=_get_default_location_dest_id
help='Location where the system will stock the finished products.'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'stock.location', 'Finished Products Location'
location_src_id
Many2one → stock.location
default=_get_default_location_src_id
help='Location where the system will look for components.'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'stock.location', 'Raw Materials Location'
move_dest_ids
One2many → stock.move
string='Stock Movements of Produced Goods'
args: 'stock.move', 'created_production_id'
move_finished_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
oldname='move_lines'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'raw_material_production_id', 'Raw Materials'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
args: 'Source'
picking_type_id
Many2one → stock.picking.type
default=_get_default_picking_type
required=True
args: 'stock.picking.type', 'Operation Type'
post_visible
Boolean
compute='_compute_post_visible'
help='Technical field to check when we can post'
args: 'Allowed to Post Inventory'
priority
Selection
default='1'
readonly=True
states={'confirmed': [('readonly', False)]}
args: [('0', 'Not urgent'), ('1', 'Normal'), ('2', 'Urgent'), ('3', 'Very Urgent')], 'Priority'
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
track_visibility='onchange'
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom_id
Many2one → product.uom
oldname='product_uom'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'product.uom', 'Product Unit of Measure'
production_location_id
Many2one → stock.location
related='product_id.property_stock_production'
args: 'stock.location', 'Production Location'
propagate
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
routing_id
Many2one → mrp.routing
compute='_compute_routing'
help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning.'
readonly=True
store=True
args: 'mrp.routing', 'Routing'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
show_final_lots
Boolean
compute='_compute_show_lots'
args: 'Show Final Lots'
state
Selection
copy=False
default='confirmed'
string='State'
track_visibility='onchange'
args: [('confirmed', 'Confirmed'), ('planned', 'Planned'), ('progress', 'In Progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Allowed to Unreserve Inventory'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'Responsible'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_done_count
Integer
compute='_compute_workorder_done_count'
args: '# Done Work Orders'
workorder_ids
One2many → mrp.workorder
copy=False
oldname='workcenter_lines'
readonly=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_see_move_scrap(self)
action_toggle_is_locked(self)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unreserve(self)
create(self, values)
do_unreserve(self)
onchange_picking_type(self)
onchange_product_id(self)
open_produce_product(self)
post_inventory(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the routing without removing it.'
args: 'Active'
code
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
location_id
Many2one → stock.location
help='Keep empty if you produce at the location where you find the raw materials. Set a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
args: 'stock.location', 'Raw Materials Location'
name
Char
required=True
args: 'Routing Name'
note
Text
operation_ids
One2many → mrp.routing.workcenter
copy=True
oldname='workcenter_lines'
args: 'mrp.routing.workcenter', 'routing_id', 'Operations'
create(self, vals)
batch
Selection
default='no'
help="Set 'no' to schedule the next work order after the previous one. Set 'yes' to produce after the quantity set in 'Quantity To Process' has been produced."
required=True
string='Next Operation'
args: [('no', 'Once all products are processed'), ('yes', 'Once a minimum number of products is processed')]
batch_size
Float
default=1.0
args: 'Quantity to Process'
company_id
Many2one → res.company
readonly=True
related='routing_id.company_id'
store=True
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
note
Text
routing_id
Many2one → mrp.routing
help='The routing contains all the Work Centers used and for how long. This will create work orders afterwards which alters the execution of the manufacturing order.'
index=True
ondelete='cascade'
required=True
args: 'mrp.routing', 'Parent Routing'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help='Time in minutes. Is the time used in manual mode, or the first time supposed in real time when there are not any work orders yet.'
args: 'Manual Duration'
time_mode
Selection
default='auto'
string='Duration Computation'
args: [('auto', 'Compute based on real time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
No public methods.
bom_id
Many2one → mrp.bom
domain=[('product_tmpl_id', '=', 'product_id.product_tmpl_id')]
required=True
states={'done': [('readonly', True)]}
args: 'mrp.bom', 'Bill of Material'
consume_line_ids
One2many → stock.move
readonly=True
string='Consumed Disassembly Lines'
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
default=_get_default_location_dest_id
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
default=_get_default_location_id
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot'
mo_id
Many2one → mrp.production
domain="[('product_id', '=', product_id), ('state', 'in', ['done', 'cancel'])]"
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
readonly=True
string='Processed Disassembly Lines'
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
product_uom_id
Many2one → product.uom
required=True
states={'done': [('readonly', True)]}
args: 'product.uom', 'Unit of Measure'
state
Selection
default='draft'
index=True
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
action_validate(self)
create(self, vals)
onchange_mo_id(self)
onchange_product_id(self)
active
Boolean
default=True
related='resource_id.active'
store=True
args: 'Active'
blocked_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hour(s) over the last month'
args: 'Blocked Time'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel.'
oldname='capacity_per_cycle'
args: 'Capacity'
code
Char
copy=False
args: 'Code'
color
Integer
name
Char
related='resource_id.name'
store=True
note
Text
help='Description of the Work Center.'
args: 'Description'
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='OEE Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hour(s) over the last month'
args: 'Productive Time'
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
time_efficiency
Float
default=100
related='resource_id.time_efficiency'
store=True
args: 'Time Efficiency'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
help='Time in minutes for the setup.'
args: 'Time before prod.'
time_stop
Float
help='Time in minutes for the cleaning.'
args: 'Time after prod.'
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Read Work Orders'
unblock(self)
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
related='loss_id.loss_type'
store=True
args: 'Effectiveness'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
button_block(self)
loss_type
Selection
default='availability'
required=True
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')], 'Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
args: 'Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
active_move_line_ids
One2many → stock.move.line
domain=[('done_wo', '=', False)]
args: 'stock.move.line', 'workorder_id'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel.'
args: 'Capacity'
color
Integer
compute='_compute_color'
args: 'Color'
date_finished
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Effective End Date'
date_planned_finished
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Scheduled Date Finished'
date_planned_start
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Scheduled Date Start'
date_start
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Effective Start Date'
duration
Float
compute='_compute_duration'
readonly=True
store=True
args: 'Real Duration'
duration_expected
Float
digits=(16, 2)
help='Expected duration (in minutes)'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Expected Duration'
duration_percent
Integer
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
compute='_compute_duration'
readonly=True
store=True
args: 'Duration Per Unit'
final_lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.production.lot', 'Lot/Serial Number'
is_produced
Boolean
compute='_compute_is_produced'
string='Has Been Produced'
is_user_working
Boolean
compute='_compute_is_user_working'
help='Technical field indicating whether the current user is working. '
args: 'Is the Current User Working'
move_line_ids
One2many → stock.move.line
domain=[('done_wo', '=', True)]
help='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_ids
One2many → stock.move
name
Char
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Work Order'
next_work_order_id
Many2one → mrp.workorder
operation_id
Many2one → mrp.routing.workcenter
product_id
Many2one → product.product
help='Technical: used in views only.'
readonly=True
related='production_id.product_id'
store=True
args: 'product.product', 'Product'
product_tracking
Selection
help='Technical: used in views only.'
related='production_id.product_id.tracking'
args: 'Product Tracking'
product_uom_id
Many2one → product.uom
help='Technical: used in views only.'
readonly=True
related='production_id.product_uom_id'
args: 'product.uom', 'Unit of Measure'
production_availability
Selection
help='Technical: used in views and domains only.'
readonly=True
related='production_id.availability'
store=True
args: 'Stock Availability'
production_date
Datetime
related='production_id.date_planned_start'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
index=True
ondelete='cascade'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
track_visibility='onchange'
args: 'mrp.production', 'Manufacturing Order'
production_messages
Html
compute='_compute_production_messages'
args: 'Workorder Message'
production_state
Selection
help='Technical: used in views only.'
readonly=True
related='production_id.state'
args: 'Production State'
qty_produced
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_producing
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
qty_remaining
Float
compute='_compute_qty_remaining'
digits=dp.get_precision('Product Unit of Measure')
args: 'Quantity To Be Produced'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
state
Selection
default='pending'
string='Status'
args: [('pending', 'Pending'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
tracking
Selection
related='production_id.product_id.tracking'
workcenter_id
Many2one → mrp.workcenter
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
help='Technical: used in views only'
related='workcenter_id.working_state'
args: 'Workcenter Status'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
action_cancel(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self)
button_unblock(self)
end_all(self)
end_previous(self, doall=False)
name_get(self)
record_production(self)
write(self, values)
action
Selection
selection_add=[('manufacture', 'Manufacture')]
No public methods.
bom_count
Integer
compute='_compute_bom_count'
args: '# Bill of Material'
mo_count
Integer
compute='_compute_mo_count'
args: '# Manufacturing Orders'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
args: '# BoM Where Used'
action_used_in_bom(self)
action_view_bom(self)
bom_count
Integer
compute='_compute_bom_count'
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
mo_count
Integer
compute='_compute_mo_count'
args: '# Manufacturing Orders'
produce_delay
Float
default=0.0
help='Average delay in days to produce this product. In the case of multi-level BOM, the manufacturing lead times of the components will be added.'
args: 'Manufacturing Lead Time'
used_in_bom_count
Integer
compute='_compute_used_in_bom_count'
args: '# of BoM Where is Used'
action_used_in_bom(self)
action_view_mos(self)
No new fields.
Public methods (2)get_lines(self, boms)
get_report_values(self, docids, data=None)
No new fields.
Public methods (2)get_children(self, records, level=0)
get_report_values(self, docids, data=None)
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
No public methods.
group_mrp_routings
Boolean
implied_group='mrp.group_mrp_routings'
args: 'Work Orders & Quality'
manufacturing_lead
Float
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time'
module_mrp_byproduct
Boolean
module_mrp_maintenance
Boolean
module_mrp_mps
Boolean
module_mrp_plm
Boolean
module_mrp_repair
Boolean
module_quality_mrp
Boolean
use_manufacturing_lead
Boolean
oldname='default_use_manufacturing_lead'
string='Default Manufacturing Lead Time'
get_values(self)
set_values(self)
No new fields.
Public methods (0)No public methods.
active_move_line_ids
One2many → stock.move.line
domain=[('done_wo', '=', True)]
string='Lots'
args: 'stock.move.line', 'move_id'
bom_line_id
Many2one → mrp.bom.line
consume_unbuild_id
Many2one → mrp.unbuild
created_production_id
Many2one → mrp.production
finished_lots_exist
Boolean
compute='_compute_order_finished_lot_ids'
args: 'Finished Lots Exist'
is_done
Boolean
compute='_compute_is_done'
help='Technical Field to order moves'
store=True
args: 'Done'
needs_lots
Boolean
compute='_compute_needs_lots'
args: 'Tracking'
operation_id
Many2one → mrp.routing.workcenter
order_finished_lot_ids
Many2many → stock.production.lot
compute='_compute_order_finished_lot_ids'
args: 'stock.production.lot'
production_id
Many2one → mrp.production
raw_material_production_id
Many2one → mrp.production
unbuild_id
Many2one → mrp.unbuild
unit_factor
Float
workorder_id
Many2one → mrp.workorder
action_explode(self)
default_get(self, fields_list)
done_move
Boolean
related='move_id.is_done'
store=True
args: 'Move Done'
done_wo
Boolean
default=True
help='Technical Field which is False when temporarily filled in in work order'
args: 'Done for Work Order'
lot_produced_id
Many2one → stock.production.lot
lot_produced_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='Informative, not used in matching'
args: 'Quantity Finished Product'
production_id
Many2one → mrp.production
workorder_id
Many2one → mrp.workorder
write(self, vals)
code
Selection
selection_add=[('mrp_operation', 'Manufacturing Operation')]
count_mo_late
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Late'
count_mo_todo
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders to Process'
count_mo_waiting
Integer
compute='_get_mo_count'
string='Number of Manufacturing Orders Waiting'
get_mrp_stock_picking_action_picking_type(self)
use_next_on_work_order_id
Many2one → mrp.workorder
help='Technical: used to figure out default serial number on work orders'
args: 'mrp.workorder'
No public methods.
production_id
Many2one → mrp.production
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
help='Not to restrict or prefer quants, but informative.'
states={'done': [('readonly', True)]}
args: 'mrp.workorder', 'Work Order'
No public methods.
No new fields.
Public methods (1)get_links(self, move_line)
manu_type_id
Many2one → stock.picking.type
domain=[('code', '=', 'mrp_operation')]
args: 'stock.picking.type', 'Manufacturing Operation Type'
manufacture_pull_id
Many2one → procurement.rule
manufacture_to_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture in this Warehouse'
create_routes(self)
create_sequences_and_picking_types(self)
get_routes_dict(self)
write(self, vals)
unbuild_id
Many2one → mrp.unbuild
action_done(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/10.0/mrp |
| VERSION | |
| VERSION | 2.0 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Julien Legros, qdp-odoo, Jeremy Kersten, Yannick Tivisse, qsm-odoo, Martin Geubelle, Pierre Masereel, len-odoo, amoyaux |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/manufacturing |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:50:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - bus - web_tour - report - stock - procurement - barcodes - web_planner - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage the Manufacturing process in Odoo
===========================================
The manufacturing module allows you to cover planning, ordering, stocks and the manufacturing or assembly of products from raw materials and components. It handles the consumption and production of products according to a bill of materials and the necessary operations on machinery, tools or human resources according to routings.
It supports complete integration and planification of stockable goods, consumables or services. Services are completely integrated with the rest of the software. For instance, you can set up a sub-contracting service in a bill of materials to automatically purchase on order the assembly of your production.
Key Features
------------
* Make to Stock/Make to Order
* Multi-level bill of materials, no limit
* Multi-level routing, no limit
* Routings and work center integrated with analytic accounting
* Periodical scheduler computation
* Allows to browse bills of materials in a complete structure that includes child and phantom bills of materials
Dashboard / Reports for MRP will include:
-----------------------------------------
* Procurements in Exception (Graph)
* Stock Value Variation (Graph)
* Work Order Analysis
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mrp assets | ir.ui.view | qweb | Inherits web.assets_backend |
mrp_bom_component_tree_view |
mrp.bom.component.tree | mrp.bom.line | tree | New |
mrp_bom_cost_report |
mrp_bom_cost_report | ir.ui.view | qweb | New |
mrp_bom_form_view |
mrp.bom.form | mrp.bom | form | New |
mrp_bom_line_tree_view |
mrp.bom.tree | mrp.bom.line | tree | New |
mrp_bom_line_view_form |
mrp.bom.line.view.form | mrp.bom.line | form | New |
mrp_bom_structure_report |
mrp_bom_structure_report | ir.ui.view | qweb | New |
mrp_bom_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_message_view_form |
mrp.message.view.form | mrp.message | form | New |
mrp_message_view_form_embedded_bom |
mrp.message.view.form.embedded.bom | mrp.message | form | New |
mrp_message_view_form_embedded_product |
mrp.message.view.form.embedded.product | mrp.message | form | New |
mrp_message_view_search |
mrp.message.view.search | mrp.message | search | New |
mrp_message_view_tree |
mrp.message.view.tree | mrp.message | tree | New |
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.tree | mrp.production | tree | New |
mrp_production_workcenter_form_view_inherit |
mrp.production.work.order.form | mrp.workorder | form | New |
mrp_production_workcenter_tree_view_inherit |
mrp.production.work.order.tree | mrp.workorder | tree | New |
mrp_routing_form_view |
mrp.routing.form | mrp.routing | form | New |
mrp_routing_search_view |
mrp.routing.search | mrp.routing | search | New |
mrp_routing_tree_view |
mrp.routing.tree | mrp.routing | tree | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | New |
mrp_unbuild_form_view |
mrp.unbuild.form | mrp.unbuild | form | New |
mrp_unbuild_search_view |
mrp.unbuild.search | mrp.unbuild | search | New |
mrp_unbuild_tree_view |
mrp.unbuild.tree | mrp.unbuild | tree | 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.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
mrp_workorder_view_gantt |
mrp.workorder.view.gantt | mrp.workorder | gantt | 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.tree | mrp.workcenter.productivity.loss | tree | 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.tree | mrp.workcenter.productivity | tree | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | div | Inherits product.product_normal_form_view |
product_template_form_view_bom_button |
product.template.procurement | product.template | div | Inherits product.product_template_only_form_view |
product_template_search_view_procurment |
product.template.search.bom | product.template | xpath | Inherits product.product_template_search_view |
report_mrporder |
report_mrporder | ir.ui.view | qweb | New |
stock_production_type_kanban |
stock.picking.type.kanban | stock.picking.type | field | Inherits stock.stock_picking_type_kanban |
stock_scrap_view_form2_mrp_inherit_mrp |
stock.scrap.view.form2.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view2 |
stock_scrap_view_form_mrp_inherit_mrp |
stock.scrap.view.form.inherit.mrp | stock.scrap | field | Inherits stock.stock_scrap_form_view |
view_change_production_qty_wizard |
Change Quantity To Produce | change.production.qty | form | New |
view_document_file_kanban_mrp |
ir.attachment kanban.mrp | ir.attachment | kanban | New |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_bom_line_filter |
mrp.bom.line.select | mrp.bom.line | search | New |
view_mrp_config |
mrp settings | mrp.config.settings | form | New |
view_mrp_product_produce_wizard |
MRP Product Produce | mrp.product.produce | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | group | Inherits stock.view_template_property_form |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | New |
view_mrp_production_work_order_search |
mrp.production.work.order.search | mrp.workorder | search | New |
view_mrp_production_workcenter_form_view_filter |
mrp.production.work.order.select | mrp.workorder | search | New |
view_mrp_workcenter_search |
mrp.workcenter.search | mrp.workcenter | search | New |
view_procurement_form_inherit |
procurement.order.form.inherit | procurement.order | data | Inherits procurement.procurement_form_view |
view_procurement_rule_form_stock_inherit_mrp |
procurement.rule.form.stock.inherit.mrp | procurement.rule | field | Inherits stock.view_procurement_rule_form_stock_inherit |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_production_pivot |
mrp.production.pivot | mrp.production | pivot | New |
view_stock_move_lots |
stock.move.lots.form | stock.move | form | New |
view_warehouse_inherited |
Stock Warehouse Inherited | stock.warehouse | xpath | Inherits stock.view_warehouse |
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_gantt_production |
mrp.production.work.order.gantt.production | mrp.workorder | gantt | 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 |
mo_id
Many2one → mrp.production
required=True
args: 'mrp.production', 'Manufacturing Order'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Quantity To Produce'
change_prod_qty(self)
default_get(self, fields)
priority
Selection
help='Gives the sequence order when displaying a list of tasks.'
string='Priority'
args: [('0', 'Normal'), ('1', 'Low'), ('2', 'High'), ('3', 'Very High')]
No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the bills of material without removing it.'
args: 'Active'
bom_line_ids
One2many → mrp.bom.line
copy=True
args: 'mrp.bom.line', 'bom_id', 'BoM Lines'
code
Char
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
picking_type_id
Many2one → stock.picking.type
domain=[('code', '=', 'mrp_operation')]
help='When a procurement has a ‘produce’ route with a picking type set, it will try to create a Manufacturing Order for that product using a BoM of the same picking type. That allows to define procurement rules which trigger different manufacturing orders with different BoMs. '
args: 'stock.picking.type', 'Picking Type'
product_id
Many2one → product.product
domain="['&', ('product_tmpl_id', '=', product_tmpl_id), ('type', 'in', ['product', 'consu'])]"
help='If a product variant is defined the BOM is available only for this product.'
args: 'product.product', 'Product Variant'
product_qty
Float
default=1.0
digits=dp.get_precision('Unit of Measure')
required=True
args: 'Quantity'
product_tmpl_id
Many2one → product.template
domain="[('type', 'in', ['product', 'consu'])]"
required=True
args: 'product.template', 'Product'
product_uom_id
Many2one → product.uom
default=_get_default_product_uom_id
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
oldname='product_uom'
required=True
args: 'product.uom', 'Product Unit of Measure'
ready_to_produce
Selection
default='asap'
required=True
string='Manufacturing Readiness'
args: [('all_available', 'All components available'), ('asap', 'The components of 1st operation')]
routing_id
Many2one → mrp.routing
help='The operations for producing this BoM. When a routing is specified, the production orders will be executed through work orders, otherwise everything is processed in the production order itself. '
args: 'mrp.routing', 'Routing'
sequence
Integer
help='Gives the sequence order when displaying a list of bills of material.'
args: 'Sequence'
type
Selection
default='normal'
help='Kit (Phantom): When processing a sales order for this product, the delivery order will contain the raw materials, instead of the finished product.'
required=True
args: [('normal', 'Manufacture this product'), ('phantom', 'Ship this product as a set of components (kit)')], 'BoM Type'
explode(self, product, quantity, picking_type=False)
name_get(self)
onchange_product_tmpl_id(self)
onchange_product_uom_id(self)
onchange_routing_id(self)
unlink(self)
attribute_value_ids
Many2many → product.attribute.value
help='BOM Product Variants needed form apply this line.'
string='Variants'
args: 'product.attribute.value'
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
required=True
args: 'mrp.bom', 'Parent BoM'
child_bom_id
Many2one → mrp.bom
compute='_compute_child_bom_id'
args: 'mrp.bom', 'Sub BoM'
child_line_ids
One2many → mrp.bom.line
compute='_compute_child_line_ids'
string='BOM lines of the referred bom'
args: 'mrp.bom.line'
has_attachments
Boolean
compute='_compute_has_attachments'
args: 'Has Attachments'
operation_id
Many2one → mrp.routing.workcenter
help='The operation where the components are consumed, or the finished products created.'
args: 'mrp.routing.workcenter', 'Consumed in Operation'
product_id
Many2one → product.product
required=True
args: 'product.product', 'Product'
product_qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
required=True
args: 'Product Quantity'
product_uom_id
Many2one → product.uom
default=_get_default_product_uom_id
help='Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control'
oldname='product_uom'
required=True
args: 'product.uom', 'Product Unit of Measure'
routing_id
Many2one → mrp.routing
help='The list of operations to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning.'
related='bom_id.routing_id'
store=True
args: 'mrp.routing', 'Routing'
sequence
Integer
default=1
help='Gives the sequence order when displaying.'
args: 'Sequence'
action_see_attachments(self)
create(self, values)
onchange_product_id(self)
onchange_product_uom_id(self)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
group_mrp_routings
Selection
help='Work Order Operations allow you to create and manage the manufacturing operations that should be followed within your work centers in order to produce a product. They are attached to bills of materials that will define the required raw materials.'
implied_group='mrp.group_mrp_routings'
args: [(0, 'Manage production by manufacturing orders'), (1, 'Manage production by work orders')], 'Routings & Planning'
group_product_variant
Selection
help='Work with product variant allows you to define some variant of the same products, an ease the product management in the ecommerce for example'
implied_group='product.group_product_variant'
args: [(0, 'No variants on products'), (1, 'Products can have several attributes, defining variants (Example: size, color,...)')], 'Product Variants'
manufacturing_lead
Float
related='company_id.manufacturing_lead'
string='Manufacturing Lead Time *'
module_mrp_byproduct
Selection
help='You can configure by-products in the bill of material.\nWithout this module: A + B + C -> D.\nWith this module: A + B + C -> D + E.\n-This installs the module mrp_byproduct.'
args: [(0, 'No by-products in bills of materials (A + B --> C)'), (1, 'Bills of materials may produce residual products (A + B --> C + D)')], 'By-Products'
module_mrp_maintenance
Selection
string='Maintenance'
args: [(0, 'No maintenance machine and work centers'), (1, 'Preventive and Corrective maintenance management')]
module_mrp_mps
Selection
string='Master Production Schedule'
args: [(0, 'No need for Master Production Schedule as products have short lead times'), (1, 'Use Master Production Schedule in order to create procurements based on forecasts')]
module_mrp_plm
Selection
string='PLM'
args: [(0, 'No product lifecycle management'), (1, 'Manage engineering changes, versions and documents')]
module_quality_mrp
Selection
string='Quality'
args: [(0, 'No quality control'), (1, 'Manage quality control points, checks and measures')]
No public methods.
bom_id
Many2one → mrp.bom
domain="['|', ('product_id', '=', product_id), ('product_tmpl_id.product_variant_ids','=', product_id)]"
args: 'mrp.bom', 'Bill of Material'
message
Html
required=True
name
Text
compute='_get_note_first_line'
store=True
product_id
Many2one → product.product
string='Product'
args: 'product.product'
product_tmpl_id
Many2one → product.template
routing_id
Many2one → mrp.routing
string='Routing'
args: 'mrp.routing'
valid_until
Date
default=_default_valid_until
required=True
args: 'Validity Date'
workcenter_id
Many2one → mrp.workcenter
string='Work Center'
args: 'mrp.workcenter'
save(self)
consume_line_ids
Many2many → stock.move.lots
string='Product to Track'
args: 'stock.move.lots', 'mrp_produce_stock_move_lots'
lot_id
Many2one → stock.production.lot
string='Lot'
args: 'stock.production.lot'
product_id
Many2one → product.product
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
required=True
string='Quantity'
product_tracking
Selection
related='product_id.tracking'
product_uom_id
Many2one → product.uom
production_id
Many2one → mrp.production
serial
Boolean
check_finished_move_lots(self)
default_get(self, fields)
do_produce(self)
availability
Selection
compute='_compute_availability'
store=True
string='Availability'
args: [('assigned', 'Available'), ('partially_available', 'Partially Available'), ('waiting', 'Waiting'), ('none', 'None')]
bom_id
Many2one → mrp.bom
help='Bill of Materials allow you to define the list of required raw materials to make a finished product.'
readonly=True
states={'confirmed': [('readonly', False)]}
args: 'mrp.bom', 'Bill of Material'
check_to_done
Boolean
compute='_get_produced_qty'
help="Technical Field to see if we can show 'Mark as Done' button"
string='Check Produced Qty'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
date_finished
Datetime
copy=False
index=True
readonly=True
args: 'End Date'
date_planned_finished
Datetime
copy=False
default=fields.Datetime.now
index=True
states={'confirmed': [('readonly', False)]}
args: 'Deadline End'
date_planned_start
Datetime
copy=False
default=fields.Datetime.now
index=True
oldname='date_planned'
required=True
states={'confirmed': [('readonly', False)]}
args: 'Deadline Start'
date_start
Datetime
copy=False
index=True
readonly=True
args: 'Start Date'
has_moves
Boolean
compute='_has_moves'
location_dest_id
Many2one → stock.location
default=_get_default_location_dest_id
help='Location where the system will stock the finished products.'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'stock.location', 'Finished Products Location'
location_src_id
Many2one → stock.location
default=_get_default_location_src_id
help='Location where the system will look for components.'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'stock.location', 'Raw Materials Location'
move_finished_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'production_id', 'Finished Products'
move_raw_ids
One2many → stock.move
copy=False
domain=[('scrapped', '=', False)]
oldname='move_lines'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.move', 'raw_material_production_id', 'Raw Materials'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
origin
Char
copy=False
help='Reference of the document that generated this production order request.'
args: 'Source'
picking_type_id
Many2one → stock.picking.type
default=_get_default_picking_type
required=True
args: 'stock.picking.type', 'Picking Type'
post_visible
Boolean
compute='_compute_post_visible'
help='Technical field to check when we can post'
args: 'Inventory Post Visible'
priority
Selection
default='1'
readonly=True
states={'confirmed': [('readonly', False)]}
args: [('0', 'Not urgent'), ('1', 'Normal'), ('2', 'Urgent'), ('3', 'Very Urgent')], 'Priority'
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
procurement_ids
One2many → procurement.order
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'product.product', 'Product'
product_qty
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'Quantity To Produce'
product_tmpl_id
Many2one → product.template
readonly=True
related='product_id.product_tmpl_id'
args: 'product.template', 'Product Template'
product_uom_id
Many2one → product.uom
oldname='product_uom'
readonly=True
required=True
states={'confirmed': [('readonly', False)]}
args: 'product.uom', 'Product Unit of Measure'
propagate
Boolean
help='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_produced
Float
compute='_get_produced_qty'
string='Quantity Produced'
routing_id
Many2one → mrp.routing
compute='_compute_routing'
help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning.'
readonly=True
store=True
args: 'mrp.routing', 'Routing'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
state
Selection
copy=False
default='confirmed'
string='State'
track_visibility='onchange'
args: [('confirmed', 'Confirmed'), ('planned', 'Planned'), ('progress', 'In Progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
unreserve_visible
Boolean
compute='_compute_unreserve_visible'
help='Technical field to check when we can unreserve'
args: 'Inventory Unreserve Visible'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'Responsible'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_done_count
Integer
compute='_compute_workorder_done_count'
args: '# Done Work Orders'
workorder_ids
One2many → mrp.workorder
copy=False
oldname='workcenter_lines'
readonly=True
args: 'mrp.workorder', 'production_id', 'Work Orders'
action_assign(self)
action_cancel(self)
action_see_move_scrap(self)
button_mark_done(self)
button_plan(self)
button_scrap(self)
button_unreserve(self)
create(self, values)
do_unreserve(self)
onchange_picking_type(self)
onchange_product_id(self)
open_produce_product(self)
post_inventory(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the routing without removing it.'
args: 'Active'
code
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
location_id
Many2one → stock.location
help='Keep empty if you produce at the location where you find the raw materials.Set a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations.'
args: 'stock.location', 'Production Location'
name
Char
required=True
args: 'Routing Name'
note
Text
operation_ids
One2many → mrp.routing.workcenter
copy=True
oldname='workcenter_lines'
args: 'mrp.routing.workcenter', 'routing_id', 'Operations'
create(self, vals)
batch
Selection
default='no'
help='Will determine if the next work order will be planned after the previous one or after the first Quantity To Process of the previous one.'
required=True
string='Next Operation'
args: [('no', 'Once all products are processed'), ('yes', 'Once a minimum number of products is processed')]
batch_size
Float
default=1.0
args: 'Quantity to Process'
company_id
Many2one → res.company
readonly=True
related='routing_id.company_id'
store=True
args: 'res.company', 'Company'
name
Char
required=True
args: 'Operation'
note
Text
routing_id
Many2one → mrp.routing
help='The routing contains all the Work Centers used and for how long. This will create work orders afterwardswhich alters the execution of the manufacturing order. '
index=True
ondelete='cascade'
required=True
args: 'mrp.routing', 'Parent Routing'
sequence
Integer
default=100
help='Gives the sequence order when displaying a list of routing Work Centers.'
args: 'Sequence'
time_cycle
Float
compute='_compute_time_cycle'
args: 'Duration'
time_cycle_manual
Float
default=60
help='Time in minutes. Is the time used in manual mode, or the first time supposed in real time when there are not any work orders yet.'
args: 'Manual Duration'
time_mode
Selection
default='auto'
string='Duration Computation'
args: [('auto', 'Compute based on real time'), ('manual', 'Set duration manually')]
time_mode_batch
Integer
default=10
args: 'Based on'
workcenter_id
Many2one → mrp.workcenter
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_ids
One2many → mrp.workorder
string='Work Orders'
args: 'mrp.workorder', 'operation_id'
worksheet
Binary
No public methods.
bom_id
Many2one → mrp.bom
domain=[('product_tmpl_id', '=', 'product_id.product_tmpl_id')]
required=True
states={'done': [('readonly', True)]}
args: 'mrp.bom', 'Bill of Material'
consume_line_ids
One2many → stock.move
help=''
readonly=True
args: 'stock.move', 'consume_unbuild_id'
has_tracking
Selection
readonly=True
related='product_id.tracking'
location_dest_id
Many2one → stock.location
default=_get_default_location_dest_id
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Destination Location'
location_id
Many2one → stock.location
default=_get_default_location_id
required=True
states={'done': [('readonly', True)]}
args: 'stock.location', 'Location'
lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)]}
args: 'stock.production.lot', 'Lot'
mo_id
Many2one → mrp.production
domain="[('product_id', '=', product_id), ('state', 'in', ['done', 'cancel'])]"
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
name
Char
copy=False
default=<expr>
readonly=True
args: 'Reference'
produce_line_ids
One2many → stock.move
help=''
readonly=True
args: 'stock.move', 'unbuild_id'
product_id
Many2one → product.product
required=True
states={'done': [('readonly', True)]}
args: 'product.product', 'Product'
product_qty
Float
required=True
states={'done': [('readonly', True)]}
args: 'Quantity'
product_uom_id
Many2one → product.uom
required=True
states={'done': [('readonly', True)]}
args: 'product.uom', 'Unit of Measure'
state
Selection
default='draft'
index=True
string='Status'
args: [('draft', 'Draft'), ('done', 'Done')]
action_unbuild(self)
create(self, vals)
onchange_mo_id(self)
onchange_product_id(self)
blocked_time
Float
compute='_compute_blocked_time'
digits=(16, 2)
help='Blocked hour(s) over the last month'
args: 'Blocked Time'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel.'
oldname='capacity_per_cycle'
args: 'Capacity'
color
Integer
note
Text
help='Description of the Work Center.'
args: 'Description'
oee
Float
compute='_compute_oee'
help='Overall Equipment Effectiveness, based on the last month'
oee_target
Float
default=90
help='OEE Target in percentage'
string='OEE Target'
order_ids
One2many → mrp.workorder
performance
Integer
compute='_compute_performance'
help='Performance over the last month'
args: 'Performance'
productive_time
Float
compute='_compute_productive_time'
digits=(16, 2)
help='Productive hour(s) over the last month'
args: 'Productive Time'
resource_id
Many2one → resource.resource
ondelete='cascade'
required=True
args: 'resource.resource', 'Resource'
routing_line_ids
One2many → mrp.routing.workcenter
sequence
Integer
default=1
help='Gives the sequence order when displaying a list of work centers.'
required=True
args: 'Sequence'
time_ids
One2many → mrp.workcenter.productivity
time_start
Float
help='Time in minutes for the setup.'
args: 'Time before prod.'
time_stop
Float
help='Time in minutes for the cleaning.'
args: 'Time after prod.'
workcenter_load
Float
compute='_compute_workorder_count'
args: 'Work Center Load'
working_state
Selection
compute='_compute_working_state'
store=True
args: [('normal', 'Normal'), ('blocked', 'Blocked'), ('done', 'In Progress')], 'Status'
workorder_count
Integer
compute='_compute_workorder_count'
args: '# Work Orders'
workorder_late_count
Integer
compute='_compute_workorder_count'
args: 'Total Late Orders'
workorder_pending_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_progress_count
Integer
compute='_compute_workorder_count'
args: 'Total Running Orders'
workorder_ready_count
Integer
compute='_compute_workorder_count'
args: '# Read Work Orders'
unblock(self)
date_end
Datetime
date_start
Datetime
default=fields.Datetime.now
required=True
args: 'Start Date'
description
Text
duration
Float
compute='_compute_duration'
store=True
args: 'Duration'
loss_id
Many2one → mrp.workcenter.productivity.loss
ondelete='restrict'
required=True
args: 'mrp.workcenter.productivity.loss', 'Loss Reason'
loss_type
Selection
related='loss_id.loss_type'
store=True
args: 'Effectiveness'
user_id
Many2one → res.users
default=<expr>
args: 'res.users', 'User'
workcenter_id
Many2one → mrp.workcenter
required=True
args: 'mrp.workcenter', 'Work Center'
workorder_id
Many2one → mrp.workorder
button_block(self)
loss_type
Selection
default='availability'
required=True
args: [('availability', 'Availability'), ('performance', 'Performance'), ('quality', 'Quality'), ('productive', 'Productive')], 'Effectiveness Category'
manual
Boolean
default=True
args: 'Is a Blocking Reason'
name
Char
required=True
args: 'Reason'
sequence
Integer
default=1
args: 'Sequence'
No public methods.
active_move_lot_ids
One2many → stock.move.lots
domain=[('done_wo', '=', False)]
args: 'stock.move.lots', 'workorder_id'
capacity
Float
default=1.0
help='Number of pieces that can be produced in parallel.'
args: 'Capacity'
color
Integer
compute='_compute_color'
args: 'Color'
date_finished
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Effective End Date'
date_planned_finished
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Scheduled Date Finished'
date_planned_start
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Scheduled Date Start'
date_start
Datetime
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Effective Start Date'
duration
Float
compute='_compute_duration'
readonly=True
store=True
args: 'Real Duration'
duration_expected
Float
digits=(16, 2)
help='Expected duration (in minutes)'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Expected Duration'
duration_percent
Integer
compute='_compute_duration'
group_operator='avg'
readonly=True
store=True
args: 'Duration Deviation (%)'
duration_unit
Float
compute='_compute_duration'
readonly=True
store=True
args: 'Duration Per Unit'
final_lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'stock.production.lot', 'Current Lot'
is_produced
Boolean
compute='_compute_is_produced'
is_user_working
Boolean
compute='_compute_is_user_working'
help='Technical field indicating whether the current user is working. '
args: 'Is Current User Working'
move_lot_ids
One2many → stock.move.lots
domain=[('done_wo', '=', True)]
help='Inventory moves for which you must scan a lot number at this work order'
args: 'stock.move.lots', 'workorder_id', 'Moves to Track'
move_raw_ids
One2many → stock.move
name
Char
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Work Order'
next_work_order_id
Many2one → mrp.workorder
operation_id
Many2one → mrp.routing.workcenter
product_id
Many2one → product.product
help='Technical: used in views only.'
readonly=True
related='production_id.product_id'
args: 'product.product', 'Product'
product_tracking
Selection
help='Technical: used in views only.'
related='production_id.product_id.tracking'
args: 'Product Tracking'
product_uom_id
Many2one → product.uom
help='Technical: used in views only.'
readonly=True
related='production_id.product_uom_id'
args: 'product.uom', 'Unit of Measure'
production_availability
Selection
help='Technical: used in views and domains only.'
readonly=True
related='production_id.availability'
store=True
args: 'Stock Availability'
production_date
Datetime
related='production_id.date_planned_start'
store=True
args: 'Production Date'
production_id
Many2one → mrp.production
index=True
ondelete='cascade'
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
track_visibility='onchange'
args: 'mrp.production', 'Manufacturing Order'
production_messages
Html
compute='_compute_production_messages'
args: 'Workorder Message'
production_state
Selection
help='Technical: used in views only.'
readonly=True
related='production_id.state'
args: 'Production State'
qty_produced
Float
default=0.0
digits=dp.get_precision('Product Unit of Measure')
help='The number of products already handled by this work order'
readonly=True
args: 'Quantity'
qty_producing
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'Currently Produced Quantity'
qty_production
Float
readonly=True
related='production_id.product_qty'
args: 'Original Production Quantity'
scrap_count
Integer
compute='_compute_scrap_move_count'
string='Scrap Move'
scrap_ids
One2many → stock.scrap
state
Selection
default='pending'
string='Status'
args: [('pending', 'Pending'), ('ready', 'Ready'), ('progress', 'In Progress'), ('done', 'Finished'), ('cancel', 'Cancelled')]
time_ids
One2many → mrp.workcenter.productivity
workcenter_id
Many2one → mrp.workcenter
required=True
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
args: 'mrp.workcenter', 'Work Center'
working_state
Selection
help='Technical: used in views only'
related='workcenter_id.working_state'
args: 'Workcenter Status'
worksheet
Binary
readonly=True
related='operation_id.worksheet'
args: 'Worksheet'
action_cancel(self)
action_see_move_scrap(self)
button_done(self)
button_finish(self)
button_pending(self)
button_scrap(self)
button_start(self)
button_unblock(self)
end_all(self)
end_previous(self, doall=False)
record_production(self)
write(self, values)
bom_id
Many2one → mrp.bom
index=True
ondelete='cascade'
args: 'mrp.bom', 'BoM'
production_id
Many2one → mrp.production
make_mo(self)
propagate_cancels(self)
No new fields.
Public methods (0)No public methods.
bom_count
Integer
compute='_compute_bom_count'
args: '# Bill of Material'
mo_count
Integer
compute='_compute_mo_count'
args: '# Manufacturing Orders'
action_view_bom(self)
bom_count
Integer
compute='_compute_bom_count'
args: '# Bill of Material'
bom_ids
One2many → mrp.bom
mo_count
Integer
compute='_compute_mo_count'
args: '# Manufacturing Orders'
produce_delay
Float
default=0.0
help='Average delay in days to produce this product. In the case of multi-level BOM, the manufacturing lead times of the components will be added.'
args: 'Manufacturing Lead Time'
action_view_mos(self)
No new fields.
Public methods (2)get_children(self, object, level=0)
render_html(self, docids, data=None)
No new fields.
Public methods (2)get_lines(self, boms)
render_html(self, docids, data=None)
manufacturing_lead
Float
default=0.0
help='Security days for each manufacturing operation.'
required=True
args: 'Manufacturing Lead Time'
No public methods.
No new fields.
Public methods (0)No public methods.
active_move_lot_ids
One2many → stock.move.lots
domain=[('done_wo', '=', True)]
string='Lots'
args: 'stock.move.lots', 'move_id'
bom_line_id
Many2one → mrp.bom.line
consume_unbuild_id
Many2one → mrp.unbuild
has_tracking
Selection
related='product_id.tracking'
string='Product with Tracking'
is_done
Boolean
compute='_compute_is_done'
help='Technical Field to order moves'
store=True
args: 'Done'
move_lot_ids
One2many → stock.move.lots
string='Lots'
args: 'stock.move.lots', 'move_id'
operation_id
Many2one → mrp.routing.workcenter
production_id
Many2one → mrp.production
quantity_available
Float
compute='_qty_available'
digits=dp.get_precision('Product Unit of Measure')
args: 'Quantity Available'
quantity_done
Float
compute='_qty_done_compute'
digits=dp.get_precision('Product Unit of Measure')
inverse='_qty_done_set'
args: 'Quantity'
quantity_done_store
Float
digits=0
args: 'Quantity done store'
raw_material_production_id
Many2one → mrp.production
unbuild_id
Many2one → mrp.unbuild
unit_factor
Float
workorder_id
Many2one → mrp.workorder
action_assign(self, no_prepare=False)
action_cancel(self)
action_confirm(self)
action_done(self)
action_explode(self)
check_move_lots(self)
create_lots(self)
move_validate(self)
save(self)
split_move_lot(self)
done_move
Boolean
related='move_id.is_done'
store=True
args: 'Move Done'
done_wo
Boolean
default=True
help='Technical Field which is False when temporarily filled in in work order'
args: 'Done for Work Order'
lot_id
Many2one → stock.production.lot
domain="[('product_id', '=', product_id)]"
args: 'stock.production.lot', 'Lot'
lot_produced_id
Many2one → stock.production.lot
lot_produced_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='Informative, not used in matching'
args: 'Quantity Finished Product'
move_id
Many2one → stock.move
plus_visible
Boolean
compute='_compute_plus'
args: 'Plus Visible'
product_id
Many2one → product.product
readonly=True
related='move_id.product_id'
store=True
args: 'product.product', 'Product'
production_id
Many2one → mrp.production
quantity
Float
default=1.0
digits=dp.get_precision('Product Unit of Measure')
args: 'To Do'
quantity_done
Float
digits=dp.get_precision('Product Unit of Measure')
args: 'Done'
workorder_id
Many2one → mrp.workorder
do_minus(self)
do_plus(self)
write(self, vals)
code
Selection
selection_add=[('mrp_operation', 'Manufacturing Operation')]
count_mo_late
Integer
compute='_get_mo_count'
count_mo_todo
Integer
compute='_get_mo_count'
count_mo_waiting
Integer
compute='_get_mo_count'
No public methods.
consumed_quant_ids
Many2many → stock.quant
produced_quant_ids
Many2many → stock.quant
No public methods.
production_id
Many2one → mrp.production
states={'done': [('readonly', True)]}
args: 'mrp.production', 'Manufacturing Order'
workorder_id
Many2one → mrp.workorder
help='Not to restrict or prefer quants, but informative.'
states={'done': [('readonly', True)]}
args: 'mrp.workorder', 'Work Order'
No public methods.
manu_type_id
Many2one → stock.picking.type
domain=[('code', '=', 'mrp_operation')]
args: 'stock.picking.type', 'Manufacturing Picking Type'
manufacture_pull_id
Many2one → procurement.rule
manufacture_to_resupply
Boolean
default=True
help='When products are manufactured, they can be manufactured in this warehouse.'
args: 'Manufacture in this Warehouse'
create_routes(self)
create_sequences_and_picking_types(self)
get_routes_dict(self)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/9.0/mrp |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, David Monjoie, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Yannick Tivisse, qsm-odoo, Martin Geubelle, Adrien Dieudonne, Sheth Sunny |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/manufacturing |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:31 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - bus - report - procurement - stock_account - stock - barcodes - web_planner - account - analytic - web_tip - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage the Manufacturing process in Odoo
===========================================
The manufacturing module allows you to cover planning, ordering, stocks and the manufacturing or assembly of products from raw materials and components. It handles the consumption and production of products according to a bill of materials and the necessary operations on machinery, tools or human resources according to routings.
It supports complete integration and planification of stockable goods, consumables or services. Services are completely integrated with the rest of the software. For instance, you can set up a sub-contracting service in a bill of materials to automatically purchase on order the assembly of your production.
Key Features
------------
* Make to Stock/Make to Order
* Multi-level bill of materials, no limit
* Multi-level routing, no limit
* Routings and work center integrated with analytic accounting
* Periodical scheduler computation
* Allows to browse bills of materials in a complete structure that includes child and phantom bills of materials
Dashboard / Reports for MRP will include:
-----------------------------------------
* Procurements in Exception (Graph)
* Stock Value Variation (Graph)
* Work Order Analysis
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_bom_component_tree_view |
mrp.bom.component.tree | mrp.bom.line | tree | New |
mrp_bom_cost |
mrp_bom_cost | ir.ui.view | qweb | New |
mrp_bom_form_view |
mrp.bom.form | mrp.bom | form | New |
mrp_bom_line_tree_view |
mrp.bom.tree | mrp.bom.line | tree | New |
mrp_bom_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_company |
res.company.mrp.config | res.company | xpath | Inherits base.view_company_form |
mrp_production_form_view |
mrp.production.form | mrp.production | form | New |
mrp_production_kanban_view |
mrp.production.kanban | mrp.production | kanban | New |
mrp_production_product_form_view |
mrp.production.product.line.form | mrp.production.product.line | form | New |
mrp_production_product_tree_view |
mrp.production.product.line.tree | mrp.production.product.line | tree | New |
mrp_production_tree_view |
mrp.production.tree | mrp.production | tree | New |
mrp_property_form_view |
mrp.property.form | mrp.property | form | New |
mrp_property_group_form_view |
mrp.property.group.form | mrp.property.group | form | New |
mrp_property_tree_view |
mrp.property.tree | mrp.property | tree | New |
mrp_routing_form_view |
mrp.routing.form | mrp.routing | form | New |
mrp_routing_search_view |
mrp.routing.search | mrp.routing | search | New |
mrp_routing_tree_view |
mrp.routing.tree | mrp.routing | tree | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | New |
mrp_workcenter_tree_view |
mrp.workcenter.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | div | Inherits product.product_normal_form_view |
product_template_form_view_bom_button |
product.template.procurement | product.template | div | Inherits product.product_template_only_form_view |
product_template_search_view_procurment |
product.template.search.bom | product.template | xpath | Inherits product.product_template_search_view |
report_mrpbomstructure |
report_mrpbomstructure | ir.ui.view | qweb | New |
report_mrporder |
report_mrporder | ir.ui.view | qweb | New |
view_change_production_qty_wizard |
Change Product Qty | change.production.qty | form | New |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_bom_line_filter |
mrp.bom.line.select | mrp.bom.line | search | New |
view_mrp_config |
mrp settings | mrp.config.settings | form | New |
view_mrp_product_produce_wizard |
MRP Product Produce | mrp.product.produce | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | group | Inherits stock.view_template_property_form |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | New |
view_mrp_property_search |
mrp.property.search | mrp.property | search | New |
view_mrp_workcenter_search |
mrp.workcenter.search | mrp.workcenter | search | New |
view_procurement_form_inherit |
procurement.order.form.inherit | procurement.order | data | Inherits procurement.procurement_form_view |
view_procurement_rule_form_stock_inherit_mrp |
procurement.rule.form.stock.inherit.mrp | procurement.rule | field | Inherits stock.view_procurement_rule_form_stock_inherit |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_production_pivot |
mrp.production.pivot | mrp.production | pivot | New |
view_report_in_out_picking_form |
report.mrp.inout.form | report.mrp.inout | form | New |
view_report_in_out_picking_graph |
report.mrp.inout.graph | report.mrp.inout | graph | New |
view_report_in_out_picking_tree |
report.mrp.inout.tree | report.mrp.inout | tree | New |
view_stock_move_consume_wizard |
Consume Move | stock.move.consume | form | New |
view_warehouse_inherited |
Stock Warehouse Inherited | stock.warehouse | xpath | Inherits stock.view_warehouse |
view_workcenter_load_graph |
report.workcenter.load.graph | report.workcenter.load | graph | New |
view_workcenter_load_search |
report.workcenter.load.search | report.workcenter.load | search | New |
view_workcenter_load_tree |
report.workcenter.load.tree | report.workcenter.load | tree | New |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)get_lines(self, boms)
render_html(self, data=None)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/8.0/mrp |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Atul Patel (OpenERP), Stephane Wirtel, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Foram Katharotiya (OpenERP), Purnendu Singh (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Tejas Tank, Thibault Delavallée, Vo Minh Thu, Josse Colpaert, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, Christophe Simonis, Xavier Morel, Goffin Simon, Anael Closson, Bhumi Thakkar (Open ERP), Cedric Snauwaert, Simon Lejeune, Frédéric van der Essen, Vishmita, Nicolas Martinelli, dhr, RGA(OpenERP), Amit Bhavsar (Open ERP), Anand Patel (OpenERP), Nimesh Contractor (OpenERP), Richard Mathot, qdp-odoo, Géry Debongnie, Darshan Kalola (OpenERP Trainee), Holger Brunn, jke-openerp, Aaron Bohy, bth-openerp, Bharat R. Devnani (OpenERP), Richard Mathot (OpenERP), ged-odoo, openerp-sle, Gery Debongnie, Randhir Mayatra rma-openerp, Amit Vora (OpenERP Trainee), sgo@tinyerp.com, Darshan Kalola (OpenERP), Darshan Kalola, Jitendra Prajapati (OpenERP), Sunil Sharma (OpenERP), Pooja Zankhariya (OpenERP), Jignesh Rathod (OpenERP), Yannick Tivisse, Yogesh Parekh (OpenERP Trainee) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/manufacturing |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:45:40 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - decimal_precision - base_setup - web_kanban - web - report - procurement - stock_account - stock - board - web_kanban_gauge - web_kanban_sparkline - account - analytic - edi - email_template - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage the Manufacturing process in OpenERP
===========================================
The manufacturing module allows you to cover planning, ordering, stocks and the manufacturing or assembly of products from raw materials and components. It handles the consumption and production of products according to a bill of materials and the necessary operations on machinery, tools or human resources according to routings.
It supports complete integration and planification of stockable goods, consumables or services. Services are completely integrated with the rest of the software. For instance, you can set up a sub-contracting service in a bill of materials to automatically purchase on order the assembly of your production.
Key Features
------------
* Make to Stock/Make to Order
* Multi-level bill of materials, no limit
* Multi-level routing, no limit
* Routing and work center integrated with analytic accounting
* Periodical scheduler computation
* Allows to browse bills of materials in a complete structure that includes child and phantom bills of materials
Dashboard / Reports for MRP will include:
-----------------------------------------
* Procurements in Exception (Graph)
* Stock Value Variation (Graph)
* Work Order Analysis
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_bom_component_tree_view |
mrp.bom.component.tree | mrp.bom.line | tree | New |
mrp_bom_form_view |
mrp.bom.form | mrp.bom | form | New |
mrp_bom_tree_view |
mrp.bom.tree | mrp.bom.line | tree | New |
mrp_company |
res.company.mrp.config | res.company | xpath | Inherits base.view_company_form |
mrp_production_form_view |
mrp.production.form | mrp.production | form | New |
mrp_production_product_form_view |
mrp.production.product.line.form | mrp.production.product.line | form | New |
mrp_production_product_tree_view |
mrp.production.product.line.tree | mrp.production.product.line | tree | New |
mrp_production_tree_view |
mrp.production.tree | mrp.production | tree | New |
mrp_property_form_view |
mrp.property.form | mrp.property | form | New |
mrp_property_group_form_view |
mrp.property.group.form | mrp.property.group | form | New |
mrp_property_tree_view |
mrp.property.tree | mrp.property | tree | New |
mrp_routing_form_view |
mrp.routing.form | mrp.routing | form | New |
mrp_routing_search_view |
mrp.routing.search | mrp.routing | search | New |
mrp_routing_tree_view |
mrp.routing.tree | mrp.routing | tree | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | New |
mrp_workcenter_tree_view |
mrp.workcenter.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
product_product_form_view_bom_button |
product.product.procurement | product.product | div | Inherits product.product_normal_form_view |
product_template_form_view_bom_button |
product.template.procurement | product.template | div | Inherits product.product_template_only_form_view |
product_template_search_view_procurment |
product.template.search.bom | product.template | xpath | Inherits product.product_template_search_view |
report_mrpbomstructure |
report_mrpbomstructure | ir.ui.view | qweb | New |
report_mrporder |
report_mrporder | ir.ui.view | qweb | New |
view_change_production_qty_wizard |
Change Product Qty | change.production.qty | form | New |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_bom_line_filter |
mrp.bom.line.select | mrp.bom.line | search | New |
view_mrp_config |
mrp settings | mrp.config.settings | form | New |
view_mrp_product_price_wizard |
Product Cost Structure | mrp.product_price | form | New |
view_mrp_product_produce_wizard |
MRP Product Produce | mrp.product.produce | form | New |
view_mrp_product_template_form_inherited |
product.form.mrp.inherited | product.template | xpath | Inherits stock.view_template_property_form |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | New |
view_mrp_property_search |
mrp.property.search | mrp.property | search | New |
view_mrp_workcenter_load_wizard |
Work Center Load | mrp.workcenter.load | form | New |
view_mrp_workcenter_search |
mrp.workcenter.search | mrp.workcenter | search | New |
view_procurement_form_inherit |
procurement.order.form.inherit | procurement.order | data | Inherits procurement.procurement_form_view |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_report_in_out_picking_form |
report.mrp.inout.form | report.mrp.inout | form | New |
view_report_in_out_picking_graph |
report.mrp.inout.graph | report.mrp.inout | graph | New |
view_report_in_out_picking_tree |
report.mrp.inout.tree | report.mrp.inout | tree | New |
view_stock_move_consume_wizard |
Consume Move | stock.move.consume | form | New |
view_warehouse_inherited |
Stock Warehouse Inherited | stock.warehouse | xpath | Inherits stock.view_warehouse |
view_workcenter_load_graph |
report.workcenter.load.graph | report.workcenter.load | graph | New |
view_workcenter_load_search |
report.workcenter.load.search | report.workcenter.load | search | New |
view_workcenter_load_tree |
report.workcenter.load.tree | report.workcenter.load | tree | New |
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/7.0/mrp |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Jagdish Panchal (Open ERP), Twinkle Christian (OpenERP), Cecile Tonglet, Rucha (Open ERP), Atul Patel (OpenERP), Jalpesh Patel (OpenERP), Randhir Mayatra (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Numerigraphe - Lionel Sausin, Christophe Matthieu, Pinakin Nayi (OpenERP), Benoit Guillot, DBR (OpenERP), Harry (OpenERP), Antonin Bourguignon, ajay javiya (OpenERP), Martin Trigaux, Ajay Chauhan (OpenERP), Foram Katharotiya (OpenERP), Bhumika (OpenERP), Purnendu Singh (OpenERP), Saurang Suthar (OpenERP), Fabien Pinckaers, Antony Lesuisse, Bharat Devnani (OpenERP), Meera Trambadia (OpenERP), Olivier Dony, Rajesh Prajapati (OpenERP), Twinkle (OpenERP), Divyesh Makwana (Open ERP), Tejas Tank, Thibault Delavallée, Vo Minh Thu, Hardik, Arnaud Pineux, pso (OpenERP), Sbh (Openerp), Amit Patel (OpenERP), Launchpad Translations on behalf of openerp, vta vta@openerp.com, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Nimesh (Open ERP), Denis Ledoux, Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Sanjay Gohel (Open ERP), Alexis de Lattre, niv-openerp, Christophe Simonis, Dharti Ratani (OpenERP), Khushboo Bhatt (Open ERP), Mohammed Shekha, Bhumi Thakkar (Open ERP), Cedric Snauwaert, Ravish Murari (OpenERP), Amit Patel, Frédéric van der Essen, Gilles Major, Nicolas Martinelli, dhr, Alexandre Fayolle, Lionel Sausin, alexandre.fayolle@camptocamp.com, Paramjit Singh Sahota, Rifakat, Jagdish Panchal, Julien Legros, Laetitia Gangloff (Acsone), Jigar Amin (OpenERP), Bharat R. Devnani (OpenERP), Najlaâ El Khayat |
| WEBSITE | |
| WEBSITE | http://www.openerp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:43:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - process - web - decimal_precision - base_setup - web_kanban - procurement - stock - account - analytic - board - edi - email_template - resource - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Manage the Manufacturing process in OpenERP
===========================================
The manufacturing module allows you to cover planning, ordering, stocks and the manufacturing or assembly of products from raw materials and components. It handles the consumption and production of products according to a bill of materials and the necessary operations on machinery, tools or human resources according to routings.
It supports complete integration and planification of stockable goods, consumables or services. Services are completely integrated with the rest of the software. For instance, you can set up a sub-contracting service in a bill of materials to automatically purchase on order the assembly of your production.
Key Features
------------
* Make to Stock/Make to Order
* Multi-level bill of materials, no limit
* Multi-level routing, no limit
* Routing and work center integrated with analytic accounting
* Periodical scheduler computation
* Allows to browse bills of materials in a complete structure that includes child and phantom bills of materials
Dashboard / Reports for MRP will include:
-----------------------------------------
* Procurements in Exception (Graph)
* Stock Value Variation (Graph)
* Work Order Analysis
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
board_mrp_manager_form |
board.mrp.manager.form | board.board | form | New |
mrp_bom_component_tree_view |
mrp.bom.component.tree | mrp.bom | tree | New |
mrp_bom_form_view |
mrp.bom.form | mrp.bom | form | New |
mrp_bom_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_company |
res.company.mrp.config | res.company | xpath | Inherits base.view_company_form |
mrp_production_form_view |
mrp.production.form | mrp.production | form | New |
mrp_production_product_form_view |
mrp.production.product.line.form | mrp.production.product.line | form | New |
mrp_production_product_tree_view |
mrp.production.product.line.tree | mrp.production.product.line | tree | New |
mrp_production_tree_view |
mrp.production.tree | mrp.production | tree | New |
mrp_property_form_view |
mrp.property.form | mrp.property | form | New |
mrp_property_group_form_view |
mrp.property.group.form | mrp.property.group | form | New |
mrp_property_tree_view |
mrp.property.tree | mrp.property | tree | New |
mrp_routing_form_view |
mrp.routing.form | mrp.routing | form | New |
mrp_routing_search_view |
mrp.routing.search | mrp.routing | search | New |
mrp_routing_tree_view |
mrp.routing.tree | mrp.routing | tree | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | New |
mrp_workcenter_tree_view |
mrp.workcenter.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
product_form_view_bom_button |
product.product.procurement | product.product | xpath | Inherits product.product_normal_form_view |
product_product_normal_form_supply_view |
product.normal.form.mrp.inherit | product.product | xpath | Inherits procurement.product_form_view_procurement_button |
product_search_form_view_procurment |
product.search.bom | product.product | xpath | Inherits product.product_search_form_view |
view_change_production_qty_wizard |
Change Product Qty | change.production.qty | form | New |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_config |
mrp settings | mrp.config.settings | form | New |
view_mrp_product_price_wizard |
Product Cost Structure | mrp.product_price | form | New |
view_mrp_product_produce_wizard |
MRP Product Produce | mrp.product.produce | form | New |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | New |
view_mrp_property_search |
mrp.property.search | mrp.property | search | New |
view_mrp_workcenter_load_wizard |
Work Center Load | mrp.workcenter.load | form | New |
view_mrp_workcenter_search |
mrp.workcenter.search | mrp.workcenter | search | New |
view_procurement_form_inherit |
procurement.order.form.inherit | procurement.order | data | Inherits procurement.procurement_form_view |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_report_in_out_picking_form |
report.mrp.inout.form | report.mrp.inout | form | New |
view_report_in_out_picking_graph |
report.mrp.inout.graph | report.mrp.inout | graph | New |
view_report_in_out_picking_tree |
report.mrp.inout.tree | report.mrp.inout | tree | New |
view_workcenter_load_graph |
report.workcenter.load.graph | report.workcenter.load | graph | New |
view_workcenter_load_search |
report.workcenter.load.search | report.workcenter.load | search | New |
view_workcenter_load_tree |
report.workcenter.load.tree | report.workcenter.load | tree | New |
No models found for this module.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/6.1/mrp |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Rucha (Open ERP), Stephane Wirtel, Numerigraphe - Lionel Sausin, DBR (OpenERP), Harry (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Divyesh Makwana (Open ERP), Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Mayur Maheshwari (OpenERP), vro, Fabien Meghazi, niv-openerp, Xavier ALT, Christophe Simonis, Xavier Morel, Chris Biersbach, Amit (OpenERP), Minh Tran, Amit Dodiya, Amit Bhavsar (Open ERP), Najlaâ, Thibault Francois, Carlos Vásquez, Bogdan Stanciu, ksa (Open ERP), Els Van Vossel, Israel Fermin Montilla, Rifakat Haradwala (Open ERP), mayur maheshwari (Open ERP), ssu, rch-openerp, aag (OpenERP), Yogesh (OpenERP), Sbh (OpenERP), ron@tinyerp.com, fp, AMP (OpenERP), Tejas (OpenERP), Amit Parmar (OpenERP), RavishchanraMurari (Open ERP), Kirti Savalia (OpenERP), Atik Agewan (OpenERP), Ravi Gohil (Open ERP), rpa (Open ERP) |
| WEBSITE | |
| WEBSITE | http://www.openerp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:41:35 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - procurement - base - process - product - decimal_precision - stock - account - base_setup - analytic - board - edi - email_template - base_tools - resource - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This is the base module to manage the manufacturing process in OpenERP.
=======================================================================
Features:
---------
* Make to Stock / Make to Order (by line)
* Multi-level BoMs, no limit
* Multi-level routing, no limit
* Routing and work center integrated with analytic accounting
* Scheduler computation periodically / Just In Time module
* Multi-pos, multi-warehouse
* Different reordering policies
* Cost method by product: standard price, average price
* Easy analysis of troubles or needs
* Very flexible
* Allows to browse Bill of Materials in complete structure that include child and phantom BoMs
It supports complete integration and planification of stockable goods,
consumable of services. Services are completely integrated with the rest
of the software. For instance, you can set up a sub-contracting service
in a BoM to automatically purchase on order the assembly of your production.
Reports provided by this module:
--------------------------------
* Bill of Material structure and components
* Load forecast on Work Centers
* Print a production order
* Stock forecasts
Dashboard provided by this module:
----------------------------------
* List of next production orders
* List of procurements in exception
* Graph of work center load
* Graph of stock value variation
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
board_mrp_manager_form |
board.mrp.manager.form | board.board | form | New |
mrp_bom_component_tree_view |
mrp.bom.component.tree | mrp.bom | tree | New |
mrp_bom_form_view |
mrp.bom.form | mrp.bom | form | New |
mrp_bom_revision_form |
mrp.bom.revision | mrp.bom.revision | form | New |
mrp_bom_revision_tree |
mrp.bom.revision | mrp.bom.revision | tree | New |
mrp_bom_tree_view |
mrp.bom.tree | mrp.bom | tree | New |
mrp_company |
res.company.mrp.config | res.company | page | Inherits base.view_company_form |
mrp_production_form_view |
mrp.production.form | mrp.production | form | New |
mrp_production_lot_form_view |
mrp.production.lot.line.form | mrp.production.lot.line | form | New |
mrp_production_lot_tree_view |
mrp.production.lot.line.tree | mrp.production.lot.line | tree | New |
mrp_production_product_form_view |
mrp.production.product.line.form | mrp.production.product.line | form | New |
mrp_production_product_tree_view |
mrp.production.product.line.tree | mrp.production.product.line | tree | New |
mrp_production_tree_view |
mrp.production.tree | mrp.production | tree | New |
mrp_property_form_view |
mrp.property.form | mrp.property | form | New |
mrp_property_group_form_view |
mrp.property.group.form | mrp.property.group | form | New |
mrp_property_tree_view |
mrp.property.tree | mrp.property | tree | New |
mrp_routing_form_view |
mrp.routing.form | mrp.routing | form | New |
mrp_routing_search_view |
mrp.routing.search | mrp.routing | search | New |
mrp_routing_tree_view |
mrp.routing.tree | mrp.routing | tree | New |
mrp_routing_workcenter_form_view |
mrp.routing.workcenter.form | mrp.routing.workcenter | form | New |
mrp_routing_workcenter_tree_view |
mrp.routing.workcenter.tree | mrp.routing.workcenter | tree | New |
mrp_workcenter_tree_view |
mrp.workcenter.tree | mrp.workcenter | tree | New |
mrp_workcenter_view |
mrp.workcenter.form | mrp.workcenter | form | New |
view_change_production_qty_wizard |
Change Product Qty | change.production.qty | form | New |
view_mrp_bom_filter |
mrp.bom.select | mrp.bom | search | New |
view_mrp_product_price_wizard |
Product Cost Structure | mrp.product_price | form | New |
view_mrp_product_produce_wizard |
MRP Product Produce | mrp.product.produce | form | New |
view_mrp_production_filter |
mrp.production.select | mrp.production | search | New |
view_mrp_property_search |
mrp.property.search | mrp.property | search | New |
view_mrp_workcenter_load_wizard |
Work Center Load | mrp.workcenter.load | form | New |
view_mrp_workcenter_search |
mrp.workcenter.search | mrp.workcenter | search | New |
view_procurement_form_inherit |
procurement.order.form.inherit | procurement.order | data | Inherits procurement.procurement_form_view |
view_production_calendar |
mrp.production.calendar | mrp.production | calendar | New |
view_production_gantt |
mrp.production.gantt | mrp.production | gantt | New |
view_production_graph |
mrp.production.graph | mrp.production | graph | New |
view_report_in_out_picking_form |
report.mrp.inout.form | report.mrp.inout | form | New |
view_report_in_out_picking_graph |
report.mrp.inout.graph | report.mrp.inout | graph | New |
view_report_in_out_picking_tree |
report.mrp.inout.tree | report.mrp.inout | tree | New |
view_workcenter_load_graph |
report.workcenter.load.graph | report.workcenter.load | graph | New |
view_workcenter_load_search |
report.workcenter.load.search | report.workcenter.load | search | New |
view_workcenter_load_tree |
report.workcenter.load.tree | report.workcenter.load | tree | New |
No models found for this module.