From 91971ae56b747b5bc89cae1ba7ddfde41a0b92a3 Mon Sep 17 00:00:00 2001 From: luis Date: Thu, 2 Apr 2026 13:02:18 +0200 Subject: [PATCH] add purchase_order_supplierinfo_update_triple_discount --- .../README.md | 9 +++ .../__init__.py | 1 + .../__manifest__.py | 18 ++++++ .../i18n/es.po | 62 +++++++++++++++++++ ...er_supplierinfo_update_triple_discount.pot | 61 ++++++++++++++++++ .../models/__init__.py | 2 + .../models/purchase_order_line.py | 43 +++++++++++++ .../models/res_config_settings.py | 32 ++++++++++ .../views/res_config_settings_views.xml | 47 ++++++++++++++ 9 files changed, 275 insertions(+) create mode 100644 purchase_order_supplierinfo_update_triple_discount/README.md create mode 100644 purchase_order_supplierinfo_update_triple_discount/__init__.py create mode 100644 purchase_order_supplierinfo_update_triple_discount/__manifest__.py create mode 100644 purchase_order_supplierinfo_update_triple_discount/i18n/es.po create mode 100644 purchase_order_supplierinfo_update_triple_discount/i18n/purchase_order_supplierinfo_update_triple_discount.pot create mode 100644 purchase_order_supplierinfo_update_triple_discount/models/__init__.py create mode 100644 purchase_order_supplierinfo_update_triple_discount/models/purchase_order_line.py create mode 100644 purchase_order_supplierinfo_update_triple_discount/models/res_config_settings.py create mode 100644 purchase_order_supplierinfo_update_triple_discount/views/res_config_settings_views.xml diff --git a/purchase_order_supplierinfo_update_triple_discount/README.md b/purchase_order_supplierinfo_update_triple_discount/README.md new file mode 100644 index 0000000..707ce28 --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/README.md @@ -0,0 +1,9 @@ +# Purchase Order Supplierinfo Update Triple Discount + +This module extends `purchase_order_supplierinfo_update` to optionally update triple discount fields in supplierinfo when confirming purchase orders. + +## Features + +- Adds three Purchase settings to enable/disable synchronization for each field independently. +- Keeps original behavior for supplier price update. +- Updates `discount1`, `discount2` and `discount3` from purchase order lines to supplierinfo only for the enabled fields. diff --git a/purchase_order_supplierinfo_update_triple_discount/__init__.py b/purchase_order_supplierinfo_update_triple_discount/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_order_supplierinfo_update_triple_discount/__manifest__.py b/purchase_order_supplierinfo_update_triple_discount/__manifest__.py new file mode 100644 index 0000000..26ecfaf --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2026 Criptomart +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Purchase Order Supplierinfo Update Triple Discount", + "version": "16.0.1.0.0", + "summary": "Optionally sync triple discounts to supplierinfo on purchase confirmation", + "license": "AGPL-3", + "author": "Criptomart", + "website": "https://criptomart.net", + "depends": [ + "purchase_order_supplierinfo_update", + "purchase_triple_discount", + ], + "data": [ + "views/res_config_settings_views.xml", + ], + "installable": True, +} diff --git a/purchase_order_supplierinfo_update_triple_discount/i18n/es.po b/purchase_order_supplierinfo_update_triple_discount/i18n/es.po new file mode 100644 index 0000000..0fa0b2e --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/i18n/es.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_supplierinfo_update_triple_discount +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-02 00:00+0000\n" +"PO-Revision-Date: 2026-04-02 00:00+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,field_description:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount1 +msgid "Update Supplierinfo Discount 1" +msgstr "Actualizar Descuento 1 en Info de Proveedor" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,field_description:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount2 +msgid "Update Supplierinfo Discount 2" +msgstr "Actualizar Descuento 2 en Info de Proveedor" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,field_description:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount3 +msgid "Update Supplierinfo Discount 3" +msgstr "Actualizar Descuento 3 en Info de Proveedor" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,help:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount1 +msgid "If enabled, confirming a purchase order will update discount1." +msgstr "Si está habilitado, al confirmar una orden de compra se actualizará el descuento1." + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,help:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount2 +msgid "If enabled, confirming a purchase order will update discount2." +msgstr "Si está habilitado, al confirmar una orden de compra se actualizará el descuento2." + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,help:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount3 +msgid "If enabled, confirming a purchase order will update discount3." +msgstr "Si está habilitado, al confirmar una orden de compra se actualizará el descuento3." + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model_terms:ir.ui.view,arch_db:purchase_order_supplierinfo_update_triple_discount.res_config_settings_view_form_purchase_supplierinfo_triple_discount +msgid "Update discount1 from purchase lines into supplierinfo" +msgstr "Actualizar descuento1 de las líneas de compra en la info del proveedor" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model_terms:ir.ui.view,arch_db:purchase_order_supplierinfo_update_triple_discount.res_config_settings_view_form_purchase_supplierinfo_triple_discount +msgid "Update discount2 from purchase lines into supplierinfo" +msgstr "Actualizar descuento2 de las líneas de compra en la info del proveedor" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model_terms:ir.ui.view,arch_db:purchase_order_supplierinfo_update_triple_discount.res_config_settings_view_form_purchase_supplierinfo_triple_discount +msgid "Update discount3 from purchase lines into supplierinfo" +msgstr "Actualizar descuento3 de las líneas de compra en la info del proveedor" diff --git a/purchase_order_supplierinfo_update_triple_discount/i18n/purchase_order_supplierinfo_update_triple_discount.pot b/purchase_order_supplierinfo_update_triple_discount/i18n/purchase_order_supplierinfo_update_triple_discount.pot new file mode 100644 index 0000000..7781983 --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/i18n/purchase_order_supplierinfo_update_triple_discount.pot @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_supplierinfo_update_triple_discount +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-02 00:00+0000\n" +"PO-Revision-Date: 2026-04-02 00:00+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: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,field_description:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount1 +msgid "Update Supplierinfo Discount 1" +msgstr "" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,field_description:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount2 +msgid "Update Supplierinfo Discount 2" +msgstr "" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,field_description:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount3 +msgid "Update Supplierinfo Discount 3" +msgstr "" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,help:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount1 +msgid "If enabled, confirming a purchase order will update discount1." +msgstr "" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,help:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount2 +msgid "If enabled, confirming a purchase order will update discount2." +msgstr "" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model:ir.model.fields,help:purchase_order_supplierinfo_update_triple_discount.field_res_config_settings__update_supplierinfo_discount3 +msgid "If enabled, confirming a purchase order will update discount3." +msgstr "" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model_terms:ir.ui.view,arch_db:purchase_order_supplierinfo_update_triple_discount.res_config_settings_view_form_purchase_supplierinfo_triple_discount +msgid "Update discount1 from purchase lines into supplierinfo" +msgstr "" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model_terms:ir.ui.view,arch_db:purchase_order_supplierinfo_update_triple_discount.res_config_settings_view_form_purchase_supplierinfo_triple_discount +msgid "Update discount2 from purchase lines into supplierinfo" +msgstr "" + +#. module: purchase_order_supplierinfo_update_triple_discount +#: model_terms:ir.ui.view,arch_db:purchase_order_supplierinfo_update_triple_discount.res_config_settings_view_form_purchase_supplierinfo_triple_discount +msgid "Update discount3 from purchase lines into supplierinfo" +msgstr "" diff --git a/purchase_order_supplierinfo_update_triple_discount/models/__init__.py b/purchase_order_supplierinfo_update_triple_discount/models/__init__.py new file mode 100644 index 0000000..247ce48 --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/models/__init__.py @@ -0,0 +1,2 @@ +from . import purchase_order_line +from . import res_config_settings diff --git a/purchase_order_supplierinfo_update_triple_discount/models/purchase_order_line.py b/purchase_order_supplierinfo_update_triple_discount/models/purchase_order_line.py new file mode 100644 index 0000000..d4c685f --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/models/purchase_order_line.py @@ -0,0 +1,43 @@ +from odoo import models +from odoo.tools.misc import str2bool + + +class PurchaseOrderLine(models.Model): + _inherit = "purchase.order.line" + + _SUPPLIERINFO_DISCOUNT_CONFIG = { + "discount1": ( + "purchase_order_supplierinfo_update_triple_discount" + ".update_supplierinfo_discount1" + ), + "discount2": ( + "purchase_order_supplierinfo_update_triple_discount" + ".update_supplierinfo_discount2" + ), + "discount3": ( + "purchase_order_supplierinfo_update_triple_discount" + ".update_supplierinfo_discount3" + ), + } + + def _update_supplierinfo(self, seller): + """Extend supplierinfo update to optionally sync each discount field.""" + self.ensure_one() + super()._update_supplierinfo(seller) + if not seller: + return + + config = self.env["ir.config_parameter"].sudo() + values = {} + for field_name, parameter_name in self._SUPPLIERINFO_DISCOUNT_CONFIG.items(): + if field_name not in self._fields or field_name not in seller._fields: + continue + should_update = str2bool( + config.get_param(parameter_name, default=False), + default=False, + ) + if should_update: + values[field_name] = self[field_name] + + if values: + seller.sudo().write(values) diff --git a/purchase_order_supplierinfo_update_triple_discount/models/res_config_settings.py b/purchase_order_supplierinfo_update_triple_discount/models/res_config_settings.py new file mode 100644 index 0000000..cc22e0e --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/models/res_config_settings.py @@ -0,0 +1,32 @@ +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + update_supplierinfo_discount1 = fields.Boolean( + string="Update Supplierinfo Discount 1", + config_parameter=( + "purchase_order_supplierinfo_update_triple_discount" + ".update_supplierinfo_discount1" + ), + help="If enabled, confirming a purchase order will update discount1.", + ) + + update_supplierinfo_discount2 = fields.Boolean( + string="Update Supplierinfo Discount 2", + config_parameter=( + "purchase_order_supplierinfo_update_triple_discount" + ".update_supplierinfo_discount2" + ), + help="If enabled, confirming a purchase order will update discount2.", + ) + + update_supplierinfo_discount3 = fields.Boolean( + string="Update Supplierinfo Discount 3", + config_parameter=( + "purchase_order_supplierinfo_update_triple_discount" + ".update_supplierinfo_discount3" + ), + help="If enabled, confirming a purchase order will update discount3.", + ) diff --git a/purchase_order_supplierinfo_update_triple_discount/views/res_config_settings_views.xml b/purchase_order_supplierinfo_update_triple_discount/views/res_config_settings_views.xml new file mode 100644 index 0000000..ccddda2 --- /dev/null +++ b/purchase_order_supplierinfo_update_triple_discount/views/res_config_settings_views.xml @@ -0,0 +1,47 @@ + + + + + res.config.settings.view.form.purchase.supplierinfo.triple.discount + res.config.settings + + + +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +