TIP: You can type at any time to perform a new search.
Repairs
repair · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 0.1.0
- Category
- Supply Chain/Inventory
- Folder size
- 3.66 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- None
- Last tracking update
- 2026-10-05 00:19:50
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Arnold Moyaux, Victor Feyens, Adrien Dieudonné, William Henrotin, Sébastien Theys, svs-odoo, Tiffany Chang (tic), Victor Piryns (pivi), Dylan Kiss (dyki), lase@odoo.com, Louis Gobert, Agustin Castro Bugallo, Stéphane Diez, dhha-odoo, Claire (clbr), pkgu-odoo, Mohammad Abdulmoneim (abdu), djameltouati, Pierre Pulinckx, Krzysztof Magusiak (krma), Robin Engels (roen), pajo, bhna-odoo, Elijah Tay (elct), Lulu Grimalkin (lugr), Julien Launois (jula), adip-odoo, Nisarg (nipl), srap-odoo, Youssef (abyo), Moamen(msho), Khaj-odoo, chpa-odoo, Julien Coppin (jucop), Lucas Gvasalia, pusu-odoo, pkhu-odoo
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- l10n_din5008_repair, mrp_repair, pos_repair, purchase_repair
- 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 * Warranty concept * Repair quotation report * Notes for the technician and for the final customer
Code Analysis
Views touched (22)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_view_search_catalog |
product.view.search.catalog.inherit.repair | product.product | search | Inherits product.product_view_search_catalog |
repair_order_view_activity |
repair.order.view.activity | repair.order | activity | New |
repair_view_picking_form |
stock.picking.form.inherit.repair | stock.picking | form | Inherits stock.view_picking_form |
repair_view_picking_type_form |
stock.picking.type.inherit.repair | stock.picking.type | form | Inherits stock.view_picking_type_form |
report_repairorder |
report_repairorder | ir.ui.view | qweb | New |
report_repairorder2 |
report_repairorder2 | ir.ui.view | qweb | New |
stock_production_lot_view_form |
stock.production.lot.view.form | stock.lot | form | Inherits stock.view_production_lot_form |
stock_repair_type_kanban |
stock.picking.type.kanban | stock.picking.type | kanban | Inherits stock.stock_picking_type_kanban |
view_account_move_form_inherit_repair |
view.account.move.form.inherit.repair | account.move | form | Inherits account.view_move_form |
view_partner_form |
res.partner.view.form.inherit.repair | res.partner | form | Inherits base.view_partner_form |
view_product_template_form_inherit_repair |
product.template.form.inherit.repair | product.template | form | Inherits sale.product_template_form_view |
view_repair_consumption_warning_form |
Consumption Warning | repair.consumption.warning | form | New |
view_repair_graph |
repair.graph | repair.order | graph | New |
view_repair_kanban |
repair.kanban | repair.order | kanban | New |
view_repair_order_form |
repair.form | repair.order | form | New |
view_repair_order_form_filter |
repair.select | repair.order | search | New |
view_repair_order_tree |
repair.list | repair.order | list | New |
view_repair_pivot |
repair.pivot | repair.order | pivot | New |
view_repair_tag_search |
repair.tag.search | repair.tags | search | New |
view_repair_tag_tree |
repair.tag.list | repair.tags | list | New |
view_sale_order_form_inherit_repair |
sale.order.form.inherit.repair | sale.order | form | Inherits sale.view_order_form |
view_warehouse_inherit_repair |
Stock Warehouse Inherit Repair | stock.warehouse | Inherits stock.view_warehouse |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (20)
New fields (1)
-
repair_order_idMany2one → repair.ordercopy=Falseindex='btree_not_null'string='Repair Order' args: 'repair.order'
-
action_show_repair(self)
New fields (2)
-
repair_order_idMany2onerelated='move_id.repair_order_id' -
repair_service_line_idMany2one → repair.service.linecheck_company=Truecopy=Falseindex='btree_not_null' args: 'repair.service.line'
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (1)
-
service_trackingSelectionondelete={'repair': 'set default'}selection_add=[('repair', 'Repair Order')]
No public methods.
New fields (2)
-
repair_consumption_warning_line_idsOne2many → repair.consumption.warning.lineargs: 'repair.consumption.warning.line', 'repair_consumption_warning_id' -
repair_idMany2one → repair.orderargs: 'repair.order'
-
action_cancel(self) -
action_confirm(self) -
action_set_qty(self)
New fields (6)
-
move_idMany2one → stock.movereadonly=True args: 'stock.move' -
product_consumed_qty_uomFloatreadonly=True args: 'Consumed' -
product_expected_qty_uomFloatreadonly=True args: 'To Consume' -
product_idMany2one → product.productreadonly=Truerequired=True args: 'product.product', 'Product' -
repair_consumption_warning_idMany2one → repair.consumption.warningondelete='cascade'readonly=Truerequired=True args: 'repair.consumption.warning', 'Parent Wizard' -
uom_idMany2one → uom.uomreadonly=True args: 'uom.uom', 'Unit'
No public methods.
New fields (49)
-
allowed_lot_idsOne2many → stock.lotcompute='_compute_allowed_lot_ids' args: 'stock.lot' -
allowed_uom_idsMany2many → uom.uomcompute='_compute_allowed_uom_ids' args: 'uom.uom' -
can_create_extra_invoiceBooleancompute='_compute_can_create_sale_or_invoice' -
can_create_sale_or_invoiceBooleancompute='_compute_can_create_sale_or_invoice' -
company_idMany2one → res.companydefault=<expr>index=Truereadonly=Truerequired=True args: 'res.company', 'Company' -
has_uncomplete_movesBooleancompute='_compute_has_uncomplete_moves' -
internal_notesHtmlargs: 'Internal Notes' -
invoice_countIntegercompute='_compute_invoice_count'string='Invoice Count' -
invoice_idsOne2many → account.movecompute='_compute_invoice_ids'copy=Falsestore=Truestring='Invoice' args: 'account.move', 'repair_order_id' -
is_parts_availableBooleancompute='_compute_availability_boolean'default=Falsestore=True args: 'All Parts are available' -
is_parts_lateBooleancompute='_compute_availability_boolean'default=Falsestore=True args: 'Any Part is late' -
location_dest_idMany2one → stock.locationcheck_company=Truedepends=['picking_type_id']help='This is the location where the repaired product is located.'index=Trueprecompute=Truereadonly=Truerelated='picking_type_id.default_location_dest_id'required=Truestore=True args: 'stock.location', 'Added Parts Destination Location' -
location_idMany2one → stock.locationcheck_company=Truecompute='_compute_location_id'help='This is the location where the components of product to repair is located.'index=Trueprecompute=Truereadonly=Falserequired=Truestore=True args: 'stock.location', 'Component Source Location' -
lot_idMany2one → stock.lotcheck_company=Truecompute='_compute_lot_id'domain="[('id', 'in', allowed_lot_ids)]"help='Products repaired are all belonging to this lot'index='btree_not_null'store=True args: 'stock.lot', 'Lot/Serial' -
move_idMany2one → stock.movecheck_company=Truecopy=Falsereadonly=True args: 'stock.move', 'Inventory Move' -
move_idsOne2many → stock.movecheck_company=Truecopy=Truedomain=[('repair_line_type', '!=', False)] args: 'stock.move', 'repair_id', 'Parts' -
nameCharcopy=Falsedefault=<expr>index='trigram'readonly=Truerequired=True args: 'Repair Reference' -
partner_idMany2one → res.partnerchange_default=Truecheck_company=Truecompute='_compute_partner_id'help='Choose partner for whom the order will be invoiced and delivered. You can find a partner by its Name, TIN, Email or Internal Reference.'index=Truereadonly=Falsestore=True args: 'res.partner', 'Customer' -
parts_availabilityCharcompute='_compute_parts_availability'help="Latest parts availability status for this RO. If green, then the RO's readiness status is ready."string='Component Status' -
parts_availability_stateSelectioncompute='_compute_parts_availability' args: [('available', 'Available'), ('expected', 'Expected'), ('late', 'Late')] -
parts_location_idMany2one → stock.locationcheck_company=Truedepends=['picking_type_id']help='This is the location where the repair parts are located.'index=Trueprecompute=Truereadonly=Truerelated='picking_type_id.default_remove_location_dest_id'required=Truestore=True args: 'stock.location', 'Removed Parts Destination Location' -
picking_idMany2one → stock.pickingcheck_company=Truecopy=Falsedomain="[('product_id', '=?', product_id)]"help='Transfer from which the product to be repaired is picked'index='btree_not_null' args: 'stock.picking', 'Transfer' -
picking_product_idMany2onerelated='picking_id.product_id' -
picking_product_idsOne2many → product.productcompute='_compute_picking_product_ids' args: 'product.product' -
picking_type_idMany2one → stock.picking.typecheck_company=Truecompute='_compute_picking_type_id'copy=Truedefault=_default_picking_type_iddomain="[('code', '=', 'repair_operation'), ('company_id', '=', company_id)]"index=Trueprecompute=Truereadonly=Falserequired=Truestore=True args: 'stock.picking.type', 'Operation Type' -
picking_type_visibleBooleancompute='_compute_picking_type_visible' -
prioritySelectiondefault='0'string='Priority' args: [('0', 'Normal'), ('1', 'Urgent')] -
product_idMany2one → product.productcheck_company=Truedomain="[('type', '=', 'consu'), '|', ('company_id', '=', company_id), ('company_id', '=', False), '|', ('id', 'in', picking_product_ids), ('id', '=?', picking_product_id)]"index='btree_not_null'string='Product to Repair' args: 'product.product' -
product_location_dest_idMany2one → stock.locationcheck_company=Truecompute='_compute_product_location_dest_id'help='This is the location where the repaired product is located.'index=Trueprecompute=Truereadonly=Falserequired=Truestore=True args: 'stock.location', 'Product Destination Location' -
product_location_src_idMany2one → stock.locationcheck_company=Truecompute='_compute_product_location_src_id'help='This is the location where the product to repair is located.'index=Trueprecompute=Truereadonly=Falserequired=Truestore=True args: 'stock.location', 'Product Source Location' -
product_qtyFloatcompute='_compute_product_qty'default=1.0digits='Product Unit'readonly=Falsestore=True args: 'Product Quantity' -
recycle_location_idMany2one → stock.locationcheck_company=Truecompute='_compute_recycle_location_id'help='This is the location where the repair parts are located.'index=Trueprecompute=Truereadonly=Falserequired=Truestore=True args: 'stock.location', 'Recycled Parts Destination Location' -
reference_idsMany2many → stock.referencecopy=Falsestring='References' args: 'stock.reference', 'stock_reference_repair_rel', 'repair_id', 'reference_id' -
repair_propertiesPropertiescopy=Truedefinition='picking_type_id.repair_properties_definition' args: 'Properties' -
repair_requestTexthelp='Sale Order Line Description.'related='sale_order_line_id.name'string='Repair Request' -
repair_service_line_idsOne2many → repair.service.linecheck_company=Truecopy=True args: 'repair.service.line', 'repair_id', 'Service Lines' -
reserve_visibleBooleancompute='_compute_unreserve_visible'help='Technical field to check when we can reserve quantities' args: 'Allowed to Reserve Production' -
sale_order_idMany2one → sale.ordercheck_company=Truecopy=Falsehelp='Sale Order from which the Repair Order comes from.'index='btree_not_null'readonly=True args: 'sale.order', 'Sale Order' -
sale_order_line_idMany2one → sale.order.linecheck_company=Truecopy=Falsehelp='Sale Order Line from which the Repair Order comes from.'index='btree_not_null'readonly=True args: 'sale.order.line' -
schedule_dateDatetimecopy=Falsedefault=fields.Datetime.nowindex=Truerequired=True args: 'Scheduled Date' -
search_date_categorySelectionreadonly=Truesearch='_search_date_category'store=Falsestring='Date Category' args: [('before', 'Before'), ('yesterday', 'Yesterday'), ('today', 'Today'), ('day_1', 'Tomorrow'), ('day_2', 'The day after tomorrow'), ('after', 'After')] -
stateSelectioncopy=Falsedefault='draft'help="* The 'New' 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 'Done' status is set when repairing is completed.\n* The 'Cancelled' status is used when user cancel repair order."index=Truereadonly=Truestring='Status'tracking=True args: [('draft', 'New'), ('confirmed', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')] -
tag_idsMany2many → repair.tagsstring='Tags' args: 'repair.tags' -
trackingSelectionreadonly=Falserelated='product_id.tracking'string='Product Tracking' -
under_warrantyBooleanhelp='If ticked, the sales price will be set to 0 for all products transferred from the repair order.' args: 'Under Warranty' -
unreserve_visibleBooleancompute='_compute_unreserve_visible'help='Technical field to check when we can unreserve' args: 'Allowed to Unreserve Production' -
uom_idMany2one → uom.uomcompute='_compute_uom_id'domain="[('id', 'in', allowed_uom_ids)]"precompute=Truereadonly=Falsestore=True args: 'uom.uom', 'Unit' -
user_idMany2one → res.userscheck_company=Truedefault=<expr>string='Responsible' args: 'res.users' -
validate_button_styleSelectioncompute='_compute_validate_button_style' args: [('primary', 'Primary'), ('secondary', 'Secondary'), ('invisible', 'Invisible')]
-
action_add_from_catalog(self) -
action_assign(self) -
action_create_invoice(self) -
action_create_sale_order(self) -
action_generate_serial(self) -
action_repair_cancel(self) -
action_repair_cancel_draft(self) -
action_repair_done(self)Creates stock move for final product of repair order. Writes move_id and move_ids state to 'done'. Writes repair order state to 'Done'. @return: True -
action_repair_end(self)Checks before action_repair_done. @return: True -
action_unreserve(self) -
action_validate(self) -
action_view_invoice(self, invoice=False) -
action_view_sale_order(self) -
create(self, vals_list)@api.model_create_multi -
default_get(self, fields)@api.model -
message_post(self, **kwargs) -
onchange_uom_id(self)@api.onchange('uom_id') -
print_repair_order(self) -
write(self, vals)
New fields (10)
-
allowed_uom_idsMany2many → uom.uomcompute='_compute_allowed_uom_ids' args: 'uom.uom' -
company_idMany2onerelated='repair_id.company_id' -
descriptionTextstring='Description'translate=True -
invoice_line_idsOne2many → account.move.lineindex='btree_not_null'string='Invoice Line' args: 'account.move.line', 'repair_service_line_id' -
product_idMany2one → product.productcheck_company=Truedomain="[('type', '=', 'service'), '|', ('company_id', '=', company_id), ('company_id', '=', False)]"string='Service' args: 'product.product' -
quantityFloatdefault=1.0digits='Product Unit'required=True args: 'Quantity' -
repair_idMany2one → repair.ordercheck_company=Truecopy=Falseindex='btree_not_null'ondelete='cascade' args: 'repair.order' -
sale_line_idOne2many → sale.order.lineindex='btree_not_null' args: 'sale.order.line', 'repair_service_line_id', 'Sale Line' -
sequenceIntegerdefault=0 args: 'Sequence' -
uom_idMany2one → uom.uomcompute='_compute_uom_id'copy=Truedomain="[('id', 'in', allowed_uom_ids)]"precompute=Truereadonly=Falserequired=Truestore=True args: 'uom.uom', 'Unit'
-
action_add_service_from_repair_catalog(self) -
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (2)
-
colorIntegerdefault=_get_default_colorstring='Color Index' -
nameCharrequired=True args: 'Tag Name'
No public methods.
New fields (1)
-
repair_order_countIntegercompute='_compute_repair_order_count'groups='stock.group_stock_user'string='Repair Order Count'
No public methods.
New fields (2)
-
repair_countIntegercompute='_compute_repair_count'groups='stock.group_stock_user' args: 'Repair Order(s)' -
repair_order_idsOne2many → repair.ordercomodel_name='repair.order'groups='stock.group_stock_user'inverse_name='sale_order_id'string='Repair Order'
-
action_show_repair(self)
New fields (1)
-
repair_service_line_idMany2one → repair.service.linecheck_company=Truecopy=Falseindex='btree_not_null' args: 'repair.service.line'
-
create(self, vals_list)@api.model_create_multi -
has_valued_move_ids(self) -
write(self, vals)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (4)
-
in_repair_countIntegercompute='_compute_in_repair_count' args: 'In repair count' -
repair_line_idsMany2many → repair.ordercompute='_compute_repair_line_ids'string='Repair Orders' args: 'repair.order' -
repair_part_countIntegercompute='_compute_repair_line_ids' args: 'Repair part count' -
repaired_countIntegercompute='_compute_repaired_count' args: 'Repaired count'
-
action_lot_open_repairs(self) -
action_view_ro(self)
New fields (2)
-
repair_idMany2one → repair.ordercheck_company=Truecopy=Falseindex='btree_not_null'ondelete='cascade' args: 'repair.order' -
repair_line_typeSelectionindex=Truestore=True args: [('add', 'Add'), ('remove', 'Remove'), ('recycle', 'Recycle')], 'Type'
-
action_add_from_catalog_repair(self) -
action_show_details(self) -
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
unlink(self) -
write(self, vals)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (2)
-
nbr_repairsIntegercompute='_compute_nbr_repairs' args: 'Number of repairs linked to this picking' -
repair_idsOne2many → repair.orderargs: 'repair.order', 'picking_id'
-
action_repair_return(self) -
action_view_repairs(self) -
get_action_click_graph(self)@api.model
New fields (9)
-
codeSelectionondelete={'repair_operation': 'cascade'}selection_add=[('repair_operation', 'Repair')] -
count_repair_confirmedIntegercompute='_compute_count_repair'string='Number of Repair Orders Confirmed' -
count_repair_lateIntegercompute='_compute_count_repair'string='Number of Late Repair Orders' -
count_repair_readyIntegercompute='_compute_count_repair'string='Number of Repair Orders to Process' -
default_product_location_dest_idMany2one → stock.locationcheck_company=Truecompute='_compute_default_product_location_id'help='This is the default destination location for the product to be repaired in repair orders with this operation type.'precompute=Truereadonly=Falsestore=True args: 'stock.location', 'Product Destination Location' -
default_product_location_src_idMany2one → stock.locationcheck_company=Truecompute='_compute_default_product_location_id'help='This is the default source location for the product to be repaired in repair orders with this operation type.'precompute=Truereadonly=Falsestore=True args: 'stock.location', 'Product Source Location' -
default_recycle_location_dest_idMany2one → stock.locationcheck_company=Truecompute='_compute_default_recycle_location_dest_id'help='This is the default recycle destination location when you create a repair order with this operation type.'precompute=Truereadonly=Falsestore=True args: 'stock.location', 'Recycle Destination Location' -
default_remove_location_dest_idMany2one → stock.locationcheck_company=Truecompute='_compute_default_remove_location_dest_id'help='This is the default remove destination location when you create a repair order with this operation type.'precompute=Truereadonly=Falsestore=True args: 'stock.location', 'Remove Destination Location' -
repair_properties_definitionPropertiesDefinitionargs: 'Repair Properties'
-
get_repair_stock_picking_action_picking_type(self)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (2)
-
repair_mto_pull_idMany2one → stock.rulecopy=False args: 'stock.rule', 'Repair MTO Rule' -
repair_type_idMany2one → stock.picking.typecheck_company=Truecopy=False args: 'stock.picking.type', 'Repair Operation Type'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…