Mrp Repairs

mrp_repair
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYSupply Chain/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, Arnold Moyaux, Julien Castiaux, Tiffany Chang (tic), Gorash, William Braeckman, JF Aubert, niyasraphy, Djamel Touati, Pieter Claeys (clpi), Dylan Kiss (dyki), Paweł Fertyk, reka-odoo, nihp-odoo, djameltouati, kinhosz
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - repair
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - sale_management
    - mrp
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
mrp_production_form_view_inherit mrp.production.form.inherit mrp.production xpath Inherits mrp.mrp_production_form_view
view_repair_order_form_inherit repair.order.form.inherit repair.order xpath Inherits repair.view_repair_order_form
Models touched (4)

New fields (1)
  • repair_count Integer
    compute='_compute_repair_count' groups='stock.group_stock_user' string='Count of source repairs'
Public methods (1)
  • action_view_repair_orders(self)

New fields (1)
  • production_count Integer
    compute='_compute_production_count' groups='mrp.group_mrp_user' args: 'Count of MOs generated'
Public methods (4)
  • action_explode(self)
  • action_view_mrp_productions(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Yannick Tivisse, Odoo Online, Arnold Moyaux, William Henrotin, Tiffany Chang (tic), William Braeckman, niyasraphy, Adrien Widart (awt), clesgow, Djamel Touati, Dylan Kiss (dyki), Louis (wil), djameltouati, kinhosz
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - repair
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - sale_management
    - mrp
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
mrp_production_form_view_inherit mrp.production.form.inherit mrp.production xpath Inherits mrp.mrp_production_form_view
view_repair_order_form_inherit repair.order.form.inherit repair.order xpath Inherits repair.view_repair_order_form
Models touched (4)

New fields (1)
  • repair_count Integer
    compute='_compute_repair_count' groups='stock.group_stock_user' string='Count of source repairs'
Public methods (1)
  • action_view_repair_orders(self)

New fields (1)
  • production_count Integer
    compute='_compute_production_count' groups='mrp.group_mrp_user' args: 'Count of MOs generated'
Public methods (4)
  • action_explode(self)
  • action_view_mrp_productions(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Yannick Tivisse, Arnold Moyaux, Tiffany Chang (tic), William Braeckman, JF Aubert, yhu-odoo, Adrien Widart (awt), clesgow, Djamel Touati, Dylan Kiss (dyki), Louis (wil), Mathias Mathy (MAMA)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - repair
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - sale_management
    - mrp
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (2)

New fields (0)

No new fields.

Public methods (3)
  • action_explode(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSYannick Tivisse, Victor Feyens, William Henrotin, Adrien Widart, William Braeckman, yhu-odoo, Adrien Widart (awt), Djamel Touati, Martin Trigaux (mat)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:51
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - repair
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - analytic
    - payment
    - utm
    - mrp
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_explode(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSAdrien Widart, yhu-odoo, Djamel Touati
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - repair
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - analytic
    - utm
    - mrp
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_explode(self)
  • create(self, vals)
    @api.model
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Christophe Simonis, Joren Van Onder, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Richard Mathot, qdp-odoo, GitHub, Yannick Tivisse, Martin Geubelle, Odoo Online, Pierre Masereel, Laurent Smet, Adrien Dieudonne, Enric Tobella
WEBSITE
WEBSITEhttps://www.odoo.com/page/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - barcodes
    - web_planner
    - sale_management
    - sale
    - sales_team
    - account
    - analytic
    - portal
    - http_routing
    - account_invoicing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The aim is to have a complete module to manage all products repairs.
====================================================================

The following topics are covered by this module:
------------------------------------------------------
    * Add/remove products in the reparation
    * Impact for stocks
    * Invoicing (products and/or services)
    * Warranty concept
    * Repair quotation report
    * Notes for the technician and for the final customer

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
report_mrprepairorder report_mrprepairorder ir.ui.view qweb New
report_mrprepairorder2 report_mrprepairorder2 ir.ui.view qweb New
stock_warn_insufficient_qty_repair_form_view stock.warn.insufficient.qty.repair stock.warn.insufficient.qty.repair xpath Inherits stock.stock_warn_insufficient_qty_form_view
view_cancel_repair Cancel Repair mrp.repair.cancel form New
view_make_invoice Make Invoice mrp.repair.make_invoice form New
view_mrp_repair_kanban mrp.repair.kanban mrp.repair kanban New
view_repair_order_form mrp.repair.form mrp.repair form New
view_repair_order_form_filter mrp.repair.select mrp.repair search New
view_repair_order_tree mrp.repair.tree mrp.repair tree New
Models touched (8)

New fields (28)
  • address_id Many2one → res.partner
    domain="[('parent_id','=',partner_id)]" states={'confirmed': [('readonly', True)]} args: 'res.partner', 'Delivery Address'
  • amount_tax Float
    compute='_amount_tax' store=True args: 'Taxes'
  • amount_total Float
    compute='_amount_total' store=True args: 'Total'
  • amount_untaxed Float
    compute='_amount_untaxed' store=True args: 'Untaxed Amount'
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • default_address_id Many2one → res.partner
    compute='_compute_default_address_id' args: 'res.partner'
  • fees_lines One2many → mrp.repair.fee
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'mrp.repair.fee', 'repair_id', 'Operations'
  • guarantee_limit Date
    states={'confirmed': [('readonly', True)]} args: 'Warranty Expiration'
  • internal_notes Text
    args: 'Internal Notes'
  • invoice_id Many2one → account.invoice
    copy=False readonly=True track_visibility='onchange' args: 'account.invoice', 'Invoice'
  • invoice_method Selection
    default='none' help="Selecting 'Before Repair' or 'After Repair' will allow you to generate invoice before or after the repair is done respectively. 'No invoice' means you don't want to generate invoice for this repair order." index=True readonly=True required=True states={'draft': [('readonly', False)]} string='Invoice Method' args: [('none', 'No Invoice'), ('b4repair', 'Before Repair'), ('after_repair', 'After Repair')]
  • invoiced Boolean
    copy=False readonly=True args: 'Invoiced'
  • location_dest_id Many2one → stock.location
    readonly=True required=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]} args: 'stock.location', 'Delivery Location'
  • location_id Many2one → stock.location
    default=_default_stock_location index=True readonly=True required=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]} args: 'stock.location', 'Current Location'
  • lot_id Many2one → stock.production.lot
    domain="[('product_id','=', product_id)]" help='Products repaired are all belonging to this lot' oldname='prodlot_id' args: 'stock.production.lot', 'Lot/Serial'
  • move_id Many2one → stock.move
    copy=False help='Move created by the repair order' readonly=True track_visibility='onchange' args: 'stock.move', 'Move'
  • name Char
    copy=False default=<expr> required=True states={'confirmed': [('readonly', True)]} args: 'Repair Reference'
  • operations One2many → mrp.repair.line
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'mrp.repair.line', 'repair_id', 'Parts'
  • partner_id Many2one → res.partner
    help='Choose partner for whom the order will be invoiced and delivered.' index=True states={'confirmed': [('readonly', True)]} args: 'res.partner', 'Customer'
  • partner_invoice_id Many2one → res.partner
    args: 'res.partner', 'Invoicing Address'
  • pricelist_id Many2one → product.pricelist
    default=<expr> help='Pricelist of the selected partner.' args: 'product.pricelist', 'Pricelist'
  • product_id Many2one → product.product
    readonly=True required=True states={'draft': [('readonly', False)]} string='Product to Repair' args: 'product.product'
  • product_qty Float
    default=1.0 digits=dp.get_precision('Product Unit of Measure') readonly=True required=True states={'draft': [('readonly', False)]} args: 'Product Quantity'
  • product_uom Many2one → product.uom
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'product.uom', 'Product Unit of Measure'
  • quotation_notes Text
    args: 'Quotation Notes'
  • repaired Boolean
    copy=False readonly=True args: 'Repaired'
  • state Selection
    copy=False default='draft' help="* The 'Draft' status is used when a user is encoding a new and unconfirmed repair order.\n* The 'Confirmed' status is used when a user confirms the repair order.\n* The 'Ready to Repair' status is used to start to repairing, user can start repairing only after repair order is confirmed.\n* The 'To be Invoiced' status is used to generate the invoice before or after repairing done.\n* The 'Done' status is set when repairing is completed.\n* The 'Cancelled' status is used when user cancel repair order." readonly=True string='Status' track_visibility='onchange' args: [('draft', 'Quotation'), ('cancel', 'Cancelled'), ('confirmed', 'Confirmed'), ('under_repair', 'Under Repair'), ('ready', 'Ready to Repair'), ('2binvoiced', 'To be Invoiced'), ('invoice_except', 'Invoice Exception'), ('done', 'Repaired')]
  • tracking Selection
    related='product_id.tracking' args: 'Product Tracking'
Public methods (18)
  • action_created_invoice(self)
    @api.multi
  • action_invoice_create(self, group=False)
    @api.multi
    Creates invoice(s) for repair order. @param group: It is set to true when group invoice is to be generated. @return: Invoice Ids.
  • action_repair_cancel(self)
    @api.multi
  • action_repair_cancel_draft(self)
    @api.multi
  • action_repair_confirm(self)
    @api.multi
    Repair order state is set to 'To be invoiced' when invoice method is 'Before repair' else state becomes 'Confirmed'. @param *arg: Arguments @return: True
  • action_repair_done(self)
    @api.multi
    Creates stock move for operation and stock move for final product of repair order. @return: Move ids of final products
  • action_repair_end(self)
    @api.multi
    Writes repair order state to 'To be invoiced' if invoice method is After repair else state is set to 'Ready'. @return: True
  • action_repair_invoice_create(self)
  • action_repair_ready(self)
  • action_repair_start(self)
    @api.multi
    Writes repair order state to 'Under Repair' @return: True
  • action_send_mail(self)
    @api.multi
  • action_validate(self)
  • button_dummy(self)
    @api.multi
  • onchange_location_id(self)
    @api.onchange('location_id')
  • onchange_partner_id(self)
    @api.onchange('partner_id')
  • onchange_product_id(self)
    @api.onchange('product_id')
  • onchange_product_uom(self)
    @api.onchange('product_uom')
  • print_repair_order(self)
    @api.multi

New fields (0)

No new fields.

Public methods (2)
  • cancel_repair(self)
    @api.multi
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model

New fields (10)
  • invoice_line_id Many2one → account.invoice.line
    copy=False readonly=True args: 'account.invoice.line', 'Invoice Line'
  • invoiced Boolean
    copy=False readonly=True args: 'Invoiced'
  • name Char
    index=True required=True args: 'Description'
  • price_subtotal Float
    compute='_compute_price_subtotal' digits=0 args: 'Subtotal'
  • price_unit Float
    required=True args: 'Unit Price'
  • product_id Many2one → product.product
    args: 'product.product', 'Product'
  • product_uom Many2one → product.uom
    required=True args: 'product.uom', 'Product Unit of Measure'
  • product_uom_qty Float
    default=1.0 digits=dp.get_precision('Product Unit of Measure') required=True args: 'Quantity'
  • repair_id Many2one → mrp.repair
    index=True ondelete='cascade' required=True args: 'mrp.repair', 'Repair Order Reference'
  • tax_id Many2many → account.tax
    args: 'account.tax', 'repair_fee_line_tax', 'repair_fee_line_id', 'tax_id', 'Taxes'
Public methods (1)
  • onchange_product_id(self)
    @api.onchange('repair_id', 'product_id', 'product_uom_qty')
    On change of product it sets product quantity, tax account, name, uom of product, unit price and price subtotal.

New fields (16)
  • invoice_line_id Many2one → account.invoice.line
    copy=False readonly=True args: 'account.invoice.line', 'Invoice Line'
  • invoiced Boolean
    copy=False readonly=True args: 'Invoiced'
  • location_dest_id Many2one → stock.location
    index=True required=True args: 'stock.location', 'Dest. Location'
  • location_id Many2one → stock.location
    index=True required=True args: 'stock.location', 'Source Location'
  • lot_id Many2one → stock.production.lot
    args: 'stock.production.lot', 'Lot/Serial'
  • move_id Many2one → stock.move
    copy=False readonly=True args: 'stock.move', 'Inventory Move'
  • name Char
    required=True args: 'Description'
  • price_subtotal Float
    compute='_compute_price_subtotal' digits=0 args: 'Subtotal'
  • price_unit Float
    digits=dp.get_precision('Product Price') required=True args: 'Unit Price'
  • product_id Many2one → product.product
    required=True args: 'product.product', 'Product'
  • product_uom Many2one → product.uom
    required=True args: 'product.uom', 'Product Unit of Measure'
  • product_uom_qty Float
    default=1.0 digits=dp.get_precision('Product Unit of Measure') required=True args: 'Quantity'
  • repair_id Many2one → mrp.repair
    index=True ondelete='cascade' args: 'mrp.repair', 'Repair Order Reference'
  • state Selection
    copy=False default='draft' help='The status of a repair line is set automatically to the one of the linked repair order.' readonly=True required=True args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')], 'Status'
  • tax_id Many2many → account.tax
    args: 'account.tax', 'repair_operation_line_tax', 'repair_operation_line_id', 'tax_id', 'Taxes'
  • type Selection
    required=True args: [('add', 'Add'), ('remove', 'Remove')], 'Type'
Public methods (3)
  • constrain_lot_id(self)
    @api.constrains('lot_id', 'product_id')
  • onchange_operation_type(self)
    @api.onchange('type', 'repair_id')
    On change of operation type it sets source location, destination location and to invoice field. @param product: Changed operation type. @param guarantee_limit: Guarantee limit of current record. @return: Dictionary of values.
  • onchange_product_id(self)
    @api.onchange('repair_id', 'product_id', 'product_uom_qty')
    On change of product it sets product quantity, tax account, name, uom of product, unit price and price subtotal.

New fields (1)
  • group Boolean
    args: 'Group by partner invoice address'
Public methods (1)
  • make_invoices(self)
    @api.multi

New fields (1)
  • repair_id Many2one → mrp.repair
    args: 'mrp.repair'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_links(self, move_line)
    @api.model

New fields (1)
  • repair_id Many2one → mrp.repair
    string='Repair' args: 'mrp.repair'
Public methods (1)
  • action_done(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Nicolas Martinelli, Julien Legros, qdp-odoo, Yannick Tivisse, Pierre Masereel, Denis Vermylen (dve)
WEBSITE
WEBSITEhttps://www.odoo.com/page/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
    - procurement
    - barcodes
    - web_planner
    - sale
    - sales_team
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The aim is to have a complete module to manage all products repairs.
====================================================================

The following topics are covered by this module:
------------------------------------------------------
    * Add/remove products in the reparation
    * Impact for stocks
    * Invoicing (products and/or services)
    * Warranty concept
    * Repair quotation report
    * Notes for the technician and for the final customer

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
report_mrprepairorder report_mrprepairorder ir.ui.view qweb New
report_mrprepairorder2 report_mrprepairorder2 ir.ui.view qweb New
view_cancel_repair Cancel Repair mrp.repair.cancel form New
view_make_invoice Make Invoice mrp.repair.make_invoice form New
view_repair_order_form mrp.repair.form mrp.repair form New
view_repair_order_form_filter mrp.repair.select mrp.repair search New
view_repair_order_tree mrp.repair.tree mrp.repair tree New
Models touched (5)

New fields (27)
  • address_id Many2one → res.partner
    domain="[('parent_id','=',partner_id)]" states={'confirmed': [('readonly', True)]} args: 'res.partner', 'Delivery Address'
  • amount_tax Float
    compute='_amount_tax' store=True args: 'Taxes'
  • amount_total Float
    compute='_amount_total' store=True args: 'Total'
  • amount_untaxed Float
    compute='_amount_untaxed' store=True args: 'Untaxed Amount'
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • default_address_id Many2one → res.partner
    compute='_compute_default_address_id' args: 'res.partner'
  • fees_lines One2many → mrp.repair.fee
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'mrp.repair.fee', 'repair_id', 'Fees'
  • guarantee_limit Date
    states={'confirmed': [('readonly', True)]} args: 'Warranty Expiration'
  • internal_notes Text
    args: 'Internal Notes'
  • invoice_id Many2one → account.invoice
    copy=False readonly=True track_visibility='onchange' args: 'account.invoice', 'Invoice'
  • invoice_method Selection
    default='none' help="Selecting 'Before Repair' or 'After Repair' will allow you to generate invoice before or after the repair is done respectively. 'No invoice' means you don't want to generate invoice for this repair order." index=True readonly=True required=True states={'draft': [('readonly', False)]} string='Invoice Method' args: [('none', 'No Invoice'), ('b4repair', 'Before Repair'), ('after_repair', 'After Repair')]
  • invoiced Boolean
    copy=False readonly=True args: 'Invoiced'
  • location_dest_id Many2one → stock.location
    readonly=True required=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]} args: 'stock.location', 'Delivery Location'
  • location_id Many2one → stock.location
    default=_default_stock_location index=True readonly=True required=True states={'draft': [('readonly', False)], 'confirmed': [('readonly', True)]} args: 'stock.location', 'Current Location'
  • lot_id Many2one → stock.production.lot
    domain="[('product_id','=', product_id)]" help='Products repaired are all belonging to this lot' oldname='prodlot_id' args: 'stock.production.lot', 'Repaired Lot'
  • move_id Many2one → stock.move
    copy=False help='Move created by the repair order' readonly=True track_visibility='onchange' args: 'stock.move', 'Move'
  • name Char
    copy=False default=<expr> required=True states={'confirmed': [('readonly', True)]} args: 'Repair Reference'
  • operations One2many → mrp.repair.line
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'mrp.repair.line', 'repair_id', 'Operation Lines'
  • partner_id Many2one → res.partner
    help='Choose partner for whom the order will be invoiced and delivered.' index=True states={'confirmed': [('readonly', True)]} args: 'res.partner', 'Partner'
  • partner_invoice_id Many2one → res.partner
    args: 'res.partner', 'Invoicing Address'
  • pricelist_id Many2one → product.pricelist
    default=<expr> help='Pricelist of the selected partner.' args: 'product.pricelist', 'Pricelist'
  • product_id Many2one → product.product
    readonly=True required=True states={'draft': [('readonly', False)]} string='Product to Repair' args: 'product.product'
  • product_qty Float
    default=1.0 digits=dp.get_precision('Product Unit of Measure') readonly=True required=True states={'draft': [('readonly', False)]} args: 'Product Quantity'
  • product_uom Many2one → product.uom
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'product.uom', 'Product Unit of Measure'
  • quotation_notes Text
    args: 'Quotation Notes'
  • repaired Boolean
    copy=False readonly=True args: 'Repaired'
  • state Selection
    copy=False default='draft' help="* The 'Draft' status is used when a user is encoding a new and unconfirmed repair order.\n* The 'Confirmed' status is used when a user confirms the repair order.\n* The 'Ready to Repair' status is used to start to repairing, user can start repairing only after repair order is confirmed.\n* The 'To be Invoiced' status is used to generate the invoice before or after repairing done.\n* The 'Done' status is set when repairing is completed.\n* The 'Cancelled' status is used when user cancel repair order." readonly=True string='Status' track_visibility='onchange' args: [('draft', 'Quotation'), ('cancel', 'Cancelled'), ('confirmed', 'Confirmed'), ('under_repair', 'Under Repair'), ('ready', 'Ready to Repair'), ('2binvoiced', 'To be Invoiced'), ('invoice_except', 'Invoice Exception'), ('done', 'Repaired')]
Public methods (14)
  • action_invoice_create(self, group=False)
    @api.multi
    Creates invoice(s) for repair order. @param group: It is set to true when group invoice is to be generated. @return: Invoice Ids.
  • action_repair_cancel(self)
    @api.multi
  • action_repair_cancel_draft(self)
    @api.multi
  • action_repair_confirm(self)
    @api.multi
    Repair order state is set to 'To be invoiced' when invoice method is 'Before repair' else state becomes 'Confirmed'. @param *arg: Arguments @return: True
  • action_repair_done(self)
    @api.multi
    Creates stock move for operation and stock move for final product of repair order. @return: Move ids of final products
  • action_repair_end(self)
    @api.multi
    Writes repair order state to 'To be invoiced' if invoice method is After repair else state is set to 'Ready'. @return: True
  • action_repair_invoice_create(self)
    @api.multi
  • action_repair_ready(self)
    @api.multi
  • action_repair_start(self)
    @api.multi
    Writes repair order state to 'Under Repair' @return: True
  • button_dummy(self)
    @api.multi
  • onchange_location_id(self)
    @api.onchange('location_id')
  • onchange_partner_id(self)
    @api.onchange('partner_id')
  • onchange_product_id(self)
    @api.onchange('product_id')
  • onchange_product_uom(self)
    @api.onchange('product_uom')

New fields (0)

No new fields.

Public methods (2)
  • cancel_repair(self)
    @api.multi
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model

New fields (11)
  • invoice_line_id Many2one → account.invoice.line
    copy=False readonly=True args: 'account.invoice.line', 'Invoice Line'
  • invoiced Boolean
    copy=False readonly=True args: 'Invoiced'
  • name Char
    index=True required=True args: 'Description'
  • price_subtotal Float
    compute='_compute_price_subtotal' digits=0 args: 'Subtotal'
  • price_unit Float
    required=True args: 'Unit Price'
  • product_id Many2one → product.product
    args: 'product.product', 'Product'
  • product_uom Many2one → product.uom
    required=True args: 'product.uom', 'Product Unit of Measure'
  • product_uom_qty Float
    default=1.0 digits=dp.get_precision('Product Unit of Measure') required=True args: 'Quantity'
  • repair_id Many2one → mrp.repair
    index=True ondelete='cascade' required=True args: 'mrp.repair', 'Repair Order Reference'
  • tax_id Many2many → account.tax
    args: 'account.tax', 'repair_fee_line_tax', 'repair_fee_line_id', 'tax_id', 'Taxes'
  • to_invoice Boolean
    default=True args: 'To Invoice'
Public methods (1)
  • onchange_product_id(self)
    @api.onchange('repair_id', 'product_id', 'product_uom_qty')
    On change of product it sets product quantity, tax account, name, uom of product, unit price and price subtotal.

New fields (17)
  • invoice_line_id Many2one → account.invoice.line
    copy=False readonly=True args: 'account.invoice.line', 'Invoice Line'
  • invoiced Boolean
    copy=False readonly=True args: 'Invoiced'
  • location_dest_id Many2one → stock.location
    index=True required=True args: 'stock.location', 'Dest. Location'
  • location_id Many2one → stock.location
    index=True required=True args: 'stock.location', 'Source Location'
  • lot_id Many2one → stock.production.lot
    args: 'stock.production.lot', 'Lot'
  • move_id Many2one → stock.move
    copy=False readonly=True args: 'stock.move', 'Inventory Move'
  • name Char
    required=True args: 'Description'
  • price_subtotal Float
    compute='_compute_price_subtotal' digits=0 args: 'Subtotal'
  • price_unit Float
    digits=dp.get_precision('Product Price') required=True args: 'Unit Price'
  • product_id Many2one → product.product
    required=True args: 'product.product', 'Product'
  • product_uom Many2one → product.uom
    required=True args: 'product.uom', 'Product Unit of Measure'
  • product_uom_qty Float
    default=1.0 digits=dp.get_precision('Product Unit of Measure') required=True args: 'Quantity'
  • repair_id Many2one → mrp.repair
    index=True ondelete='cascade' args: 'mrp.repair', 'Repair Order Reference'
  • state Selection
    copy=False default='draft' help='The status of a repair line is set automatically to the one of the linked repair order.' readonly=True required=True args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')], 'Status'
  • tax_id Many2many → account.tax
    args: 'account.tax', 'repair_operation_line_tax', 'repair_operation_line_id', 'tax_id', 'Taxes'
  • to_invoice Boolean
    args: 'To Invoice'
  • type Selection
    required=True args: [('add', 'Add'), ('remove', 'Remove')], 'Type'
Public methods (2)
  • onchange_operation_type(self)
    @api.onchange('type', 'repair_id')
    On change of operation type it sets source location, destination location and to invoice field. @param product: Changed operation type. @param guarantee_limit: Guarantee limit of current record. @return: Dictionary of values.
  • onchange_product_id(self)
    @api.onchange('repair_id', 'product_id', 'product_uom_qty')
    On change of product it sets product quantity, tax account, name, uom of product, unit price and price subtotal.

New fields (1)
  • group Boolean
    args: 'Group by partner invoice address'
Public methods (1)
  • make_invoices(self)
    @api.multi
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, Nicolas Martinelli, Richard Mathot, qdp-odoo, Aaron Bohy, pvy, Yannick Tivisse
WEBSITE
WEBSITEhttps://www.odoo.com/page/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - report
    - procurement
    - barcodes
    - web_planner
    - sale
    - sales_team
    - account
    - analytic
    - web_tip
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
,
The aim is to have a complete module to manage all products repairs.
====================================================================

The following topics should be covered by this module:
------------------------------------------------------
    * Add/remove products in the reparation
    * Impact for stocks
    * Invoicing (products and/or services)
    * Warranty concept
    * Repair quotation report
    * Notes for the technician and for the final customer

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
report_mrprepairorder report_mrprepairorder ir.ui.view qweb New
report_mrprepairorder2 report_mrprepairorder2 ir.ui.view qweb New
view_cancel_repair Cancel Repair mrp.repair.cancel form New
view_make_invoice Make Invoice mrp.repair.make_invoice form New
view_repair_order_form mrp.repair.form mrp.repair form New
view_repair_order_form_filter mrp.repair.select mrp.repair search New
view_repair_order_tree mrp.repair.tree mrp.repair tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Randhir Mayatra (OpenERP), Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Foram Katharotiya (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, ggh-openerp, Christophe Simonis, Xavier Morel, Cedric Snauwaert, Simon Lejeune, Nicolas Martinelli, RGA(OpenERP), Amit Bhavsar (Open ERP), Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Bharat R. Devnani (OpenERP), ged-odoo, openerp-sle, sgo@tinyerp.com, Jitendra Prajapati (OpenERP)
WEBSITE
WEBSITEhttps://www.odoo.com/page/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - procurement
    - stock_account
    - stock
    - board
    - web_kanban_gauge
    - web_kanban_sparkline
    - account
    - analytic
    - edi
    - email_template
    - resource
    - sale
    - sales_team
    - account_voucher
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The aim is to have a complete module to manage all products repairs.
====================================================================

The following topics should be covered by this module:
------------------------------------------------------
    * Add/remove products in the reparation
    * Impact for stocks
    * Invoicing (products and/or services)
    * Warranty concept
    * Repair quotation report
    * Notes for the technician and for the final customer

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
report_mrprepairorder report_mrprepairorder ir.ui.view qweb New
view_cancel_repair Cancel Repair mrp.repair.cancel form New
view_make_invoice Make Invoice mrp.repair.make_invoice form New
view_repair_order_form mrp.repair.form mrp.repair form New
view_repair_order_form_filter mrp.repair.select mrp.repair search New
view_repair_order_tree mrp.repair.tree mrp.repair tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/7.0/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Jagdish Panchal (Open ERP), Twinkle Christian (OpenERP), Cecile Tonglet, Rucha (Open ERP), Atul Patel (OpenERP), Randhir Mayatra (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Christophe Matthieu, Benoit Guillot, 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), Olivier Dony, Rajesh Prajapati (OpenERP), Twinkle (OpenERP), Divyesh Makwana (Open ERP), Thibault Delavallée, Vo Minh Thu, Hardik, pso (OpenERP), Sbh (Openerp), Amit Patel (OpenERP), Launchpad Translations on behalf of openerp, vta vta@openerp.com, Quentin (OpenERP), Nimesh (Open ERP), Denis Ledoux, Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Sanjay Gohel (Open ERP), help, niv-openerp, Frédéric van der Essen, Nicolas Martinelli, alexandre.fayolle@camptocamp.com, Leonardo Pistone
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:43:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - product
    - base
    - process
    - web
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - procurement
    - stock
    - account
    - analytic
    - board
    - edi
    - email_template
    - resource
    - purchase
    - sale
    - account_voucher
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The aim is to have a complete module to manage all products repairs.
====================================================================

The following topics should be covered by this module:
------------------------------------------------------
    * Add/remove products in the reparation
    * Impact for stocks
    * Invoicing (products and/or services)
    * Warranty concept
    * Repair quotation report
    * Notes for the technician and for the final customer

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_cancel_repair Cancel Repair mrp.repair.cancel form New
view_make_invoice Make Invoice mrp.repair.make_invoice form New
view_repair_order_form mrp.repair.form mrp.repair form New
view_repair_order_form_filter mrp.repair.select mrp.repair search New
view_repair_order_tree mrp.repair.tree mrp.repair tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/6.1/mrp_repair
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Rucha (Open ERP), Stephane Wirtel, DBR (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Mayur Maheshwari (OpenERP), vro, niv-openerp, Christophe Simonis, Xavier Morel, Quentin THEURET, Carlos Vásquez, Els Van Vossel, Israel Fermin Montilla, rch-openerp, ron@tinyerp.com, fp, psi (Open ERP), Kirti Savalia (OpenERP), Dhara (OpenERP), Atik Agewan (OpenERP)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:41:35
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - procurement
    - base
    - process
    - product
    - decimal_precision
    - stock
    - account
    - base_setup
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
    - resource
    - purchase
    - sale
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The aim is to have a complete module to manage all products repairs. The following topics should be covered by this module:
===========================================================================================================================

    * Add/remove products in the reparation
    * Impact for stocks
    * Invoicing (products and/or services)
    * Warranty concept
    * Repair quotation report
    * Notes for the technician and for the final customer

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_cancel_repair Cancel Repair mrp.repair.cancel form New
view_make_invoice Make Invoice mrp.repair.make_invoice form New
view_repair_order_form mrp.repair.form mrp.repair form New
view_repair_order_form_filter mrp.repair.select mrp.repair search New
view_repair_order_tree mrp.repair.tree mrp.repair tree New
Models touched (0)

No models found for this module.