diff --git a/crm_claim_sale_repair_cost/README.rst b/crm_claim_sale_repair_cost/README.rst new file mode 100644 index 00000000..23703a1a --- /dev/null +++ b/crm_claim_sale_repair_cost/README.rst @@ -0,0 +1,30 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +========================== +Crm claim sale repair cost +========================== + +* In CRM claim when any of the 3 references are changed, and some of them belong + to a repair type sales order, the cost, requested quantity, and delivered + quantity of the order will be brought to the claim. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, +please check there if your issue has already been reported. If you spotted +it first, help us smash it by providing detailed and welcomed feedback. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Alfredo de la Fuente diff --git a/crm_claim_sale_repair_cost/__init__.py b/crm_claim_sale_repair_cost/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/crm_claim_sale_repair_cost/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/crm_claim_sale_repair_cost/__manifest__.py b/crm_claim_sale_repair_cost/__manifest__.py new file mode 100644 index 00000000..1b3a80db --- /dev/null +++ b/crm_claim_sale_repair_cost/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2025 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Crm Claim Sale Repair Cost", + "version": "18.0.1.0.0", + "author": "AvanzOSC", + "website": "https://github.com/avanzosc/crm-addons", + "category": "Customer Relationship Management", + "depends": [ + "crm_claim_extra_ref", + "stock_picking_create_repair", + "sale_line_pending_info", + "sale_stock_move_cost", + ], + "data": [ + "views/crm_claim_views.xml", + ], + "license": "AGPL-3", + "installable": True, +} diff --git a/crm_claim_sale_repair_cost/i18n/ca_ES.po b/crm_claim_sale_repair_cost/i18n/ca_ES.po new file mode 100644 index 00000000..a7fdcb0a --- /dev/null +++ b/crm_claim_sale_repair_cost/i18n/ca_ES.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_claim_sale_repair_cost +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-20 09:52+0000\n" +"PO-Revision-Date: 2025-05-20 09:52+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model,name:crm_claim_sale_repair_cost.model_crm_claim +msgid "Claim" +msgstr "Reclamació" + +#. module: crm_claim_sale_repair_cost +#: model_terms:ir.ui.view,arch_db:crm_claim_sale_repair_cost.crm_case_claims_form_view +msgid "Repair type sales order information" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_id +msgid "Sale Repair" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_delivered +msgid "Sale Repair Qty Delivered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_ordered +msgid "Sale Repair Qty Ordered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_cost +msgid "Sale Repair Total Cost" +msgstr "" diff --git a/crm_claim_sale_repair_cost/i18n/crm_claim_sale_repair_cost.pot b/crm_claim_sale_repair_cost/i18n/crm_claim_sale_repair_cost.pot new file mode 100644 index 00000000..690d2eb2 --- /dev/null +++ b/crm_claim_sale_repair_cost/i18n/crm_claim_sale_repair_cost.pot @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_claim_sale_repair_cost +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-20 09:52+0000\n" +"PO-Revision-Date: 2025-05-20 09:52+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model,name:crm_claim_sale_repair_cost.model_crm_claim +msgid "Claim" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model_terms:ir.ui.view,arch_db:crm_claim_sale_repair_cost.crm_case_claims_form_view +msgid "Repair type sales order information" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_id +msgid "Sale Repair" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_delivered +msgid "Sale Repair Qty Delivered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_ordered +msgid "Sale Repair Qty Ordered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_cost +msgid "Sale Repair Total Cost" +msgstr "" diff --git a/crm_claim_sale_repair_cost/i18n/en_GB.po b/crm_claim_sale_repair_cost/i18n/en_GB.po new file mode 100644 index 00000000..1424f5a4 --- /dev/null +++ b/crm_claim_sale_repair_cost/i18n/en_GB.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_claim_sale_repair_cost +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-20 09:53+0000\n" +"PO-Revision-Date: 2025-05-20 09:53+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model,name:crm_claim_sale_repair_cost.model_crm_claim +msgid "Claim" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model_terms:ir.ui.view,arch_db:crm_claim_sale_repair_cost.crm_case_claims_form_view +msgid "Repair type sales order information" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_id +msgid "Sale Repair" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_delivered +msgid "Sale Repair Qty Delivered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_ordered +msgid "Sale Repair Qty Ordered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_cost +msgid "Sale Repair Total Cost" +msgstr "" diff --git a/crm_claim_sale_repair_cost/i18n/en_US.po b/crm_claim_sale_repair_cost/i18n/en_US.po new file mode 100644 index 00000000..690d2eb2 --- /dev/null +++ b/crm_claim_sale_repair_cost/i18n/en_US.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_claim_sale_repair_cost +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-20 09:52+0000\n" +"PO-Revision-Date: 2025-05-20 09:52+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model,name:crm_claim_sale_repair_cost.model_crm_claim +msgid "Claim" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model_terms:ir.ui.view,arch_db:crm_claim_sale_repair_cost.crm_case_claims_form_view +msgid "Repair type sales order information" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_id +msgid "Sale Repair" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_delivered +msgid "Sale Repair Qty Delivered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_ordered +msgid "Sale Repair Qty Ordered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_cost +msgid "Sale Repair Total Cost" +msgstr "" diff --git a/crm_claim_sale_repair_cost/i18n/es.po b/crm_claim_sale_repair_cost/i18n/es.po new file mode 100644 index 00000000..e537e89a --- /dev/null +++ b/crm_claim_sale_repair_cost/i18n/es.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_claim_sale_repair_cost +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-20 09:53+0000\n" +"PO-Revision-Date: 2025-05-20 09:53+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model,name:crm_claim_sale_repair_cost.model_crm_claim +msgid "Claim" +msgstr "Reclamación" + +#. module: crm_claim_sale_repair_cost +#: model_terms:ir.ui.view,arch_db:crm_claim_sale_repair_cost.crm_case_claims_form_view +msgid "Repair type sales order information" +msgstr "Información pedido de venta de tipo reparación" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_id +msgid "Sale Repair" +msgstr "Pedido reparación" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_delivered +msgid "Sale Repair Qty Delivered" +msgstr "Cant. Entregada pedido reparación" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_ordered +msgid "Sale Repair Qty Ordered" +msgstr "Cant. Pedida pedido reparación" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_cost +msgid "Sale Repair Total Cost" +msgstr "Total coste pedido reparación" diff --git a/crm_claim_sale_repair_cost/i18n/fr.po b/crm_claim_sale_repair_cost/i18n/fr.po new file mode 100644 index 00000000..35ccc566 --- /dev/null +++ b/crm_claim_sale_repair_cost/i18n/fr.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_claim_sale_repair_cost +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-20 09:53+0000\n" +"PO-Revision-Date: 2025-05-20 09:53+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model,name:crm_claim_sale_repair_cost.model_crm_claim +msgid "Claim" +msgstr "réclamation" + +#. module: crm_claim_sale_repair_cost +#: model_terms:ir.ui.view,arch_db:crm_claim_sale_repair_cost.crm_case_claims_form_view +msgid "Repair type sales order information" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_id +msgid "Sale Repair" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_delivered +msgid "Sale Repair Qty Delivered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_qty_ordered +msgid "Sale Repair Qty Ordered" +msgstr "" + +#. module: crm_claim_sale_repair_cost +#: model:ir.model.fields,field_description:crm_claim_sale_repair_cost.field_crm_claim__sale_repair_cost +msgid "Sale Repair Total Cost" +msgstr "" diff --git a/crm_claim_sale_repair_cost/models/__init__.py b/crm_claim_sale_repair_cost/models/__init__.py new file mode 100644 index 00000000..29fa1b4d --- /dev/null +++ b/crm_claim_sale_repair_cost/models/__init__.py @@ -0,0 +1 @@ +from . import crm_claim diff --git a/crm_claim_sale_repair_cost/models/crm_claim.py b/crm_claim_sale_repair_cost/models/crm_claim.py new file mode 100644 index 00000000..c33a351e --- /dev/null +++ b/crm_claim_sale_repair_cost/models/crm_claim.py @@ -0,0 +1,56 @@ +# Copyright 2025 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models + + +class CrmClaim(models.Model): + _inherit = "crm.claim" + + sale_repair_id = fields.Many2one( + string="Sale Repair", + comodel_name="sale.order", + copy=False, + store=True, + compute="_compute_sale_repair_id", + ) + sale_repair_cost = fields.Float( + string="Sale Repair Total Cost", + digits="Product Price", + copy=False, + store=True, + related="sale_repair_id.sale_order_cost", + ) + sale_repair_qty_ordered = fields.Float( + string="Sale Repair Qty Ordered", + digits="Product Unit of Measure", + copy=False, + store=True, + related="sale_repair_id.qty_ordered", + ) + + sale_repair_qty_delivered = fields.Float( + string="Sale Repair Qty Delivered", + digits="Product Unit of Measure", + copy=False, + store=True, + related="sale_repair_id.qty_delivered", + ) + + @api.depends("model_ref_id", "ref2", "ref3") + def _compute_sale_repair_id(self): + for claim in self: + sale_repair_id = self.env["sale.order"] + if claim.model_ref_id: + sale_repair_id = claim._search_sale_order_repair_cost( + claim.model_ref_id + ) + if not sale_repair_id and claim.ref2: + sale_repair_id = claim._search_sale_order_repair_cost(claim.ref2) + if not sale_repair_id and claim.ref3: + sale_repair_id = claim._search_sale_order_repair_cost(claim.ref3) + claim.sale_repair_id = sale_repair_id + + def _search_sale_order_repair_cost(self, modelref): + if str(modelref._name) == "sale.order" and modelref.is_repair: + return modelref.id + return self.env["sale.order"] diff --git a/crm_claim_sale_repair_cost/pyproject.toml b/crm_claim_sale_repair_cost/pyproject.toml new file mode 100644 index 00000000..4231d0cc --- /dev/null +++ b/crm_claim_sale_repair_cost/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/crm_claim_sale_repair_cost/views/crm_claim_views.xml b/crm_claim_sale_repair_cost/views/crm_claim_views.xml new file mode 100644 index 00000000..84399765 --- /dev/null +++ b/crm_claim_sale_repair_cost/views/crm_claim_views.xml @@ -0,0 +1,48 @@ + + + + crm.claim + + + + + + + + + + + + + + + + + + + + crm.claim + + + + + + + + + + + + + crm.claim + + + + + + + +