diff --git a/crm_claim_links/README.rst b/crm_claim_links/README.rst new file mode 100644 index 00000000..b5b02206 --- /dev/null +++ b/crm_claim_links/README.rst @@ -0,0 +1,48 @@ +=============== +CRM claim links +=============== + +.. |badge1| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +|badge1| + +This module adds: + +- A link to crm claims in the stock pickings +- A link to crm claims in repair orders +- A Field for Supplier Stock Picking Reference in stock picking Receipts +- For each crm claim, its associated Stock Pickings and repair orders list +- For any product return it must have a crm claim linked. + + +**Table of contents** + +.. contents:: + :local: + +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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* AvanzOSC + +Contributors +~~~~~~~~~~~~ + +* Pedro M. Baeza +* Ana Juaristi +* Alfredo de la Fuente diff --git a/crm_claim_links/__init__.py b/crm_claim_links/__init__.py new file mode 100644 index 00000000..cd0a65dc --- /dev/null +++ b/crm_claim_links/__init__.py @@ -0,0 +1,20 @@ +############################################################################## +# +# Daniel Campos (danielcampos@avanzosc.es) Date: 26/08/2014 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +############################################################################## + +from . import models diff --git a/crm_claim_links/__manifest__.py b/crm_claim_links/__manifest__.py new file mode 100644 index 00000000..3667e5ab --- /dev/null +++ b/crm_claim_links/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2008 Daniel (Avanzosc) +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "CRM claim Links", + "version": "18.0.1.0.0", + "author": "OdooMRP team," "AvanzOSC," "Serv. Tecnol. Avanzados - Pedro M. Baeza", + "category": "Customer Relationship Management", + "license": "AGPL-3", + "website": "https://github.com/avanzosc/crm-addons", + "depends": [ + "crm_claim", + "repair", + "stock", + ], + "data": [ + "views/stock_picking_view.xml", + "views/stock_move_view.xml", + "views/stock_move_line_view.xml", + "views/res_partner_view.xml", + "views/repair_order_view.xml", + "views/crm_claim_view.xml", + ], + "installable": True, +} diff --git a/crm_claim_links/i18n/crm_claim_links.pot b/crm_claim_links/i18n/crm_claim_links.pot new file mode 100644 index 00000000..df88633b --- /dev/null +++ b/crm_claim_links/i18n/crm_claim_links.pot @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_claim_links +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-04-16 11:28+0000\n" +"PO-Revision-Date: 2024-04-16 11:28+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_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.view_partner_form +msgid "CRM Claims" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_crm_claim +#: model:ir.model.fields,field_description:crm_claim_links.field_repair_order__claim_id +#: model:ir.model.fields,field_description:crm_claim_links.field_stock_move__claim_id +#: model:ir.model.fields,field_description:crm_claim_links.field_stock_move_line__claim_id +#: model:ir.model.fields,field_description:crm_claim_links.field_stock_picking__claim_id +#: model_terms:ir.ui.view,arch_db:crm_claim_links.stock_move_line_view_search +#: model_terms:ir.ui.view,arch_db:crm_claim_links.view_move_search +msgid "Claim" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model.fields,field_description:crm_claim_links.field_res_partner__claim_ids +#: model:ir.model.fields,field_description:crm_claim_links.field_res_users__claim_ids +msgid "Claims" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_res_partner +msgid "Contact" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "" + +#. module: crm_claim_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.crm_case_claims_form_view +msgid "Related Extra Information" +msgstr "" + +#. module: crm_claim_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.crm_case_claims_form_view +msgid "Related Repairs" +msgstr "" + +#. module: crm_claim_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.crm_case_claims_form_view +msgid "Related Stock Pickings" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_repair_order +msgid "Repair Order" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model.fields,field_description:crm_claim_links.field_crm_claim__repair_ids +msgid "Repair Orders" +msgstr "" + +#. module: crm_claim_links +#. odoo-python +#: code:addons/crm_claim_links/models/stock_picking.py:0 +#: code:addons/crm_claim_links/models/stock_picking.py:0 +#, python-format +msgid "Return Shipment" +msgstr "" + +#. module: crm_claim_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.view_picking_form +msgid "Reverse Transfer" +msgstr "" + +#. module: crm_claim_links +#. odoo-python +#: code:addons/crm_claim_links/models/stock_picking.py:0 +#: code:addons/crm_claim_links/models/stock_picking.py:0 +#, python-format +msgid "Selected Picking has no claim order assigned" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_stock_move +msgid "Stock Move" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model.fields,field_description:crm_claim_links.field_crm_claim__picking_ids +msgid "Stock Pickings" +msgstr "" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_stock_picking +msgid "Transfer" +msgstr "" diff --git a/crm_claim_links/i18n/es.po b/crm_claim_links/i18n/es.po new file mode 100644 index 00000000..57e10385 --- /dev/null +++ b/crm_claim_links/i18n/es.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_claim_links +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-04-16 11:29+0000\n" +"PO-Revision-Date: 2024-04-16 11:29+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_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.view_partner_form +msgid "CRM Claims" +msgstr "CRM Reclamaciones" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_crm_claim +#: model:ir.model.fields,field_description:crm_claim_links.field_repair_order__claim_id +#: model:ir.model.fields,field_description:crm_claim_links.field_stock_move__claim_id +#: model:ir.model.fields,field_description:crm_claim_links.field_stock_move_line__claim_id +#: model:ir.model.fields,field_description:crm_claim_links.field_stock_picking__claim_id +#: model_terms:ir.ui.view,arch_db:crm_claim_links.stock_move_line_view_search +#: model_terms:ir.ui.view,arch_db:crm_claim_links.view_move_search +msgid "Claim" +msgstr "Reclamación" + +#. module: crm_claim_links +#: model:ir.model.fields,field_description:crm_claim_links.field_res_partner__claim_ids +#: model:ir.model.fields,field_description:crm_claim_links.field_res_users__claim_ids +msgid "Claims" +msgstr "Reclamaciones" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_res_partner +msgid "Contact" +msgstr "Contacto" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_stock_move_line +msgid "Product Moves (Stock Move Line)" +msgstr "Movimientos productos (Stock Move Line)" + +#. module: crm_claim_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.crm_case_claims_form_view +msgid "Related Extra Information" +msgstr "Información extra relacionada" + +#. module: crm_claim_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.crm_case_claims_form_view +msgid "Related Repairs" +msgstr "Reparaciones relacionadas" + +#. module: crm_claim_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.crm_case_claims_form_view +msgid "Related Stock Pickings" +msgstr "Albaranes relacionados" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_repair_order +msgid "Repair Order" +msgstr "Orden de reparación" + +#. module: crm_claim_links +#: model:ir.model.fields,field_description:crm_claim_links.field_crm_claim__repair_ids +msgid "Repair Orders" +msgstr "Órdenes de reparación" + +#. module: crm_claim_links +#. odoo-python +#: code:addons/crm_claim_links/models/stock_picking.py:0 +#: code:addons/crm_claim_links/models/stock_picking.py:0 +#, python-format +msgid "Return Shipment" +msgstr "Delvolver envío" + +#. module: crm_claim_links +#: model_terms:ir.ui.view,arch_db:crm_claim_links.view_picking_form +msgid "Reverse Transfer" +msgstr "Revertir transferencia" + +#. module: crm_claim_links +#. odoo-python +#: code:addons/crm_claim_links/models/stock_picking.py:0 +#: code:addons/crm_claim_links/models/stock_picking.py:0 +#, python-format +msgid "Selected Picking has no claim order assigned" +msgstr "El albarán seleccionado no tiene una reclamación asignada" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_stock_move +msgid "Stock Move" +msgstr "Movimiento de inventario" + +#. module: crm_claim_links +#: model:ir.model.fields,field_description:crm_claim_links.field_crm_claim__picking_ids +msgid "Stock Pickings" +msgstr "Albaranes" + +#. module: crm_claim_links +#: model:ir.model,name:crm_claim_links.model_stock_picking +msgid "Transfer" +msgstr "Albarán" diff --git a/crm_claim_links/models/__init__.py b/crm_claim_links/models/__init__.py new file mode 100644 index 00000000..26ffd107 --- /dev/null +++ b/crm_claim_links/models/__init__.py @@ -0,0 +1,6 @@ +from . import stock_picking +from . import stock_move +from . import crm_claim +from . import repair_order +from . import res_partner +from . import stock_move_line diff --git a/crm_claim_links/models/crm_claim.py b/crm_claim_links/models/crm_claim.py new file mode 100644 index 00000000..dafcea14 --- /dev/null +++ b/crm_claim_links/models/crm_claim.py @@ -0,0 +1,21 @@ +# Copyright 2014 Daniel Campos - AvanzOSC +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import fields, models + + +class CrmClaim(models.Model): + _inherit = "crm.claim" + + picking_ids = fields.One2many( + string="Stock Pickings", + comodel_name="stock.picking", + inverse_name="claim_id", + copy=False, + ) + repair_ids = fields.One2many( + string="Repair Orders", + comodel_name="repair.order", + inverse_name="claim_id", + copy=False, + ) diff --git a/crm_claim_links/models/repair_order.py b/crm_claim_links/models/repair_order.py new file mode 100644 index 00000000..e1094ce0 --- /dev/null +++ b/crm_claim_links/models/repair_order.py @@ -0,0 +1,10 @@ +# Copyright 2014 Daniel Campos - AvanzOSC +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import fields, models + + +class RepairOrder(models.Model): + _inherit = "repair.order" + + claim_id = fields.Many2one(string="Claim", comodel_name="crm.claim", copy=False) diff --git a/crm_claim_links/models/res_partner.py b/crm_claim_links/models/res_partner.py new file mode 100644 index 00000000..2e9c2843 --- /dev/null +++ b/crm_claim_links/models/res_partner.py @@ -0,0 +1,12 @@ +# Copyright 2014 Daniel Campos - AvanzOSC +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + claim_ids = fields.One2many( + string="Claims", comodel_name="crm.claim", inverse_name="partner_id", copy=False + ) diff --git a/crm_claim_links/models/stock_move.py b/crm_claim_links/models/stock_move.py new file mode 100644 index 00000000..402f8682 --- /dev/null +++ b/crm_claim_links/models/stock_move.py @@ -0,0 +1,13 @@ +from odoo import fields, models + + +class StockMove(models.Model): + _inherit = "stock.move" + + claim_id = fields.Many2one( + string="Claim", + comodel_name="crm.claim", + related="picking_id.claim_id", + store=True, + copy=False, + ) diff --git a/crm_claim_links/models/stock_move_line.py b/crm_claim_links/models/stock_move_line.py new file mode 100644 index 00000000..42998aa9 --- /dev/null +++ b/crm_claim_links/models/stock_move_line.py @@ -0,0 +1,13 @@ +from odoo import fields, models + + +class StockMoveLine(models.Model): + _inherit = "stock.move.line" + + claim_id = fields.Many2one( + string="Claim", + comodel_name="crm.claim", + related="picking_id.claim_id", + store=True, + copy=False, + ) diff --git a/crm_claim_links/models/stock_picking.py b/crm_claim_links/models/stock_picking.py new file mode 100644 index 00000000..0eebcbf0 --- /dev/null +++ b/crm_claim_links/models/stock_picking.py @@ -0,0 +1,30 @@ +# Copyright 2014 Daniel Campos - AvanzOSC +# Copyright 2024 Alfredo de la Fuente - AvanzOSC +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import _, exceptions, fields, models + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + claim_id = fields.Many2one(string="Claim", comodel_name="crm.claim", copy=True) + + def action_stock_return_picking(self): + context = self.env.context.copy() + for picking in self: + if not picking.claim_id: + raise exceptions.ValidationError( + _("Selected Picking has no claim" " order assigned") + ) + context["active_id"] = picking.id + context["active_ids"] = self.ids + context["active_model"] = "stock.picking" + return { + "name": _("Return Shipment"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "stock.return.picking", + "target": "new", + "context": context, + } diff --git a/crm_claim_links/pyproject.toml b/crm_claim_links/pyproject.toml new file mode 100644 index 00000000..4231d0cc --- /dev/null +++ b/crm_claim_links/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/crm_claim_links/views/crm_claim_view.xml b/crm_claim_links/views/crm_claim_view.xml new file mode 100644 index 00000000..4c0da4d7 --- /dev/null +++ b/crm_claim_links/views/crm_claim_view.xml @@ -0,0 +1,18 @@ + + + + + + crm.claim + + + + + + + + + + + + diff --git a/crm_claim_links/views/repair_order_view.xml b/crm_claim_links/views/repair_order_view.xml new file mode 100644 index 00000000..c01aeeea --- /dev/null +++ b/crm_claim_links/views/repair_order_view.xml @@ -0,0 +1,32 @@ + + + + repair.order + + + + + + + + + + repair.order + + + + + + + + + + repair.order + + + + + + + + diff --git a/crm_claim_links/views/res_partner_view.xml b/crm_claim_links/views/res_partner_view.xml new file mode 100644 index 00000000..14c55e6d --- /dev/null +++ b/crm_claim_links/views/res_partner_view.xml @@ -0,0 +1,16 @@ + + + + res.partner + + + + + + + + + + + + diff --git a/crm_claim_links/views/stock_move_line_view.xml b/crm_claim_links/views/stock_move_line_view.xml new file mode 100644 index 00000000..681b3815 --- /dev/null +++ b/crm_claim_links/views/stock_move_line_view.xml @@ -0,0 +1,40 @@ + + + + stock.move.line + + + + + + + + + + stock.move.line + + + + + + + + + + stock.move.line + + + + + + + + + + + diff --git a/crm_claim_links/views/stock_move_view.xml b/crm_claim_links/views/stock_move_view.xml new file mode 100644 index 00000000..5d5b847c --- /dev/null +++ b/crm_claim_links/views/stock_move_view.xml @@ -0,0 +1,60 @@ + + + + stock.move + + + + + + + + + + stock.move + + + + + + + + + + stock.move + + + + + + + + + + stock.move + + + + + + + + + + stock.move + + + + + + + + + + + diff --git a/crm_claim_links/views/stock_picking_view.xml b/crm_claim_links/views/stock_picking_view.xml new file mode 100644 index 00000000..c60f7d70 --- /dev/null +++ b/crm_claim_links/views/stock_picking_view.xml @@ -0,0 +1,42 @@ + + + + stock.picking + + 100 + + + + + + + + + + stock.picking + + + + + + + + + + stock.picking + + + + + + + +