From e102c0e5179d4719035972e3579a449d87b214e2 Mon Sep 17 00:00:00 2001 From: snt Date: Thu, 5 Sep 2024 01:47:15 +0200 Subject: [PATCH] =?UTF-8?q?upgrade=20v16.=20configura=20autom=C3=A1ticamen?= =?UTF-8?q?te=20la=20categor=C3=ADa=20del=20website=20y=20el=20ribbon=20de?= =?UTF-8?q?l=20producto=20seg=C3=BAn=20configuraciones=20en=20la=20compa?= =?UTF-8?q?=C3=B1=C3=ADa=20cuando=20se=20actualizan=20los=20campos=20en=20?= =?UTF-8?q?distribuci=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- product_retail_cm/__init__.py | 1 - product_retail_cm/__manifest__.py | 17 +-------- product_retail_cm/models/product_template.py | 9 ++--- product_retail_cm/views/product.xml | 17 +++++---- website_product_retail/__init__.py | 1 + website_product_retail/__manifest__.py | 25 ++++++++++++ website_product_retail/models/__init__.py | 5 +++ .../models/product_template.py | 38 +++++++++++++++++++ website_product_retail/models/res_company.py | 24 ++++++++++++ .../models/res_config_settings.py | 29 ++++++++++++++ .../views/res_config_settings_views.xml | 30 +++++++++++++++ 11 files changed, 166 insertions(+), 30 deletions(-) create mode 100644 website_product_retail/__init__.py create mode 100644 website_product_retail/__manifest__.py create mode 100644 website_product_retail/models/__init__.py create mode 100644 website_product_retail/models/product_template.py create mode 100644 website_product_retail/models/res_company.py create mode 100644 website_product_retail/models/res_config_settings.py create mode 100644 website_product_retail/views/res_config_settings_views.xml diff --git a/product_retail_cm/__init__.py b/product_retail_cm/__init__.py index 899bcc9..0650744 100644 --- a/product_retail_cm/__init__.py +++ b/product_retail_cm/__init__.py @@ -1,2 +1 @@ from . import models - diff --git a/product_retail_cm/__manifest__.py b/product_retail_cm/__manifest__.py index a1e8465..38bbfcd 100644 --- a/product_retail_cm/__manifest__.py +++ b/product_retail_cm/__manifest__.py @@ -1,36 +1,23 @@ { 'name': 'Product Retail', 'category': 'Product', - 'summary': 'Gestiona productos en distribución / Venta a minoristas', + 'summary': 'Gestiona productos en distribución.', 'version': "16.0.1.0.0", 'description': """ Gestiona productos en distribución / Venta a minoristas ================================================== * Añade campo a product: En Distribución y margin de minoristas. -* Filtro de productos en distribución en las vistas de productos - -ToDo: -* Configuración para elegir lista de precios a minoristas -* Los minoristas se configuran a mano con esa tarifa, público normal con la Tarifa Pública por efecto -* los productos con margen configurado se agregan en esa tarifa con el descuento marcado -* Impide la venta a minoristas de artículos que no están en distribución +* Filtro de productos en distribución en la vista de productos. """, 'author': 'Criptomart', 'depends': [ 'product', ], - 'external_dependencies': {'python': [], 'bin': []}, 'data': [ 'views/product.xml', ], - 'qweb': [], - 'demo': [], 'installable': True, 'auto_install': False, 'application': False, - "post_load": None, - "pre_init_hook": None, - "post_init_hook": None, - "uninstall_hook": None, } diff --git a/product_retail_cm/models/product_template.py b/product_retail_cm/models/product_template.py index 5bb5375..969896f 100644 --- a/product_retail_cm/models/product_template.py +++ b/product_retail_cm/models/product_template.py @@ -1,14 +1,11 @@ -# Copyright (C) 2022: Criptomart (https://criptomart.net) +# Copyright (C) 2022-2024: Criptomart (https://criptomart.net) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -#import logging - from odoo import tools, models, fields, api, _ -#_logger = logging.getLogger(__name__) class ProductTemplate(models.Model): _inherit = "product.template" - in_distribution = fields.Boolean('En distribución') - retail_margin = fields.Float('Margen aplicado a minoristas') + in_distribution = fields.Boolean('En distribución libros') + in_distribution_music = fields.Boolean('En distribución música') diff --git a/product_retail_cm/views/product.xml b/product_retail_cm/views/product.xml index 0400f61..22cd0f0 100644 --- a/product_retail_cm/views/product.xml +++ b/product_retail_cm/views/product.xml @@ -10,18 +10,19 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). --> -
+
+ + + +
-
- + view.product.search.form.inherit.distribution product.template @@ -29,8 +30,8 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). --> diff --git a/website_product_retail/__init__.py b/website_product_retail/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/website_product_retail/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/website_product_retail/__manifest__.py b/website_product_retail/__manifest__.py new file mode 100644 index 0000000..53d2549 --- /dev/null +++ b/website_product_retail/__manifest__.py @@ -0,0 +1,25 @@ +{ + 'name': 'Website Product Retail', + 'category': 'Product', + 'summary': 'Setea categorías y ribbons de website en productos en distribución.', + 'version': "16.0.1.0.0", + 'description': """ + +Configura categorías y ribbons de website en productos en distribución. +================================================== +* Configura en el producto las categorías del website de distribución. +* Configura en el producto el ribbon del website de distribución. +* Las categorías y ribbons se configuran en las opciones de configuración de la compañía. +""", + 'author': 'Criptomart', + 'depends': [ + 'website_sale', + 'product_retail_cm', + ], + 'data': [ + 'views/res_config_settings_views.xml', + ], + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/website_product_retail/models/__init__.py b/website_product_retail/models/__init__.py new file mode 100644 index 0000000..e9020f6 --- /dev/null +++ b/website_product_retail/models/__init__.py @@ -0,0 +1,5 @@ +from . import product_template +from . import res_company +from . import res_config_settings + + diff --git a/website_product_retail/models/product_template.py b/website_product_retail/models/product_template.py new file mode 100644 index 0000000..bc38e6a --- /dev/null +++ b/website_product_retail/models/product_template.py @@ -0,0 +1,38 @@ +from odoo import tools, models, fields, api, _ + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + def write(self, vals): + if 'in_distribution' in vals: + if self.env.user.company_id.web_cat_in_distribution_libros: + category_id = self.env.user.company_id.web_cat_in_distribution_libros.id + if self.env.user.company_id.web_ribbon_in_distribution: + ribbon_id = self.env.user.company_id.web_ribbon_in_distribution.id + if vals['in_distribution']: + if category_id: + vals['public_categ_ids'] = [(4,category_id)] + if ribbon_id: + vals['website_ribbon_id'] = ribbon_id + else: + if category_id: + vals['public_categ_ids'] = [(3,category_id)] + if ribbon_id: + vals['website_ribbon_id'] = False + if 'in_distribution_music' in vals: + if self.env.user.company_id.web_cat_in_distribution_musica: + category_id = self.env.user.company_id.web_cat_in_distribution_musica.id + if self.env.user.company_id.web_ribbon_in_distribution: + ribbon_id = self.env.user.company_id.web_ribbon_in_distribution.id + if vals['in_distribution_music']: + if category_id: + vals['public_categ_ids'] = [(4,category_id)] + if ribbon_id: + vals['website_ribbon_id'] = ribbon_id + else: + if category_id: + vals['public_categ_ids'] = [(3,category_id)] + if ribbon_id: + vals['website_ribbon_id'] = False + return super().write(vals) diff --git a/website_product_retail/models/res_company.py b/website_product_retail/models/res_company.py new file mode 100644 index 0000000..2191e22 --- /dev/null +++ b/website_product_retail/models/res_company.py @@ -0,0 +1,24 @@ +# Copyright 2022 Criptomart +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Company(models.Model): + _inherit = 'res.company' + + web_cat_in_distribution_libros = fields.Many2one( + 'product.public.category', + 'Website categoría de libros en distribución', + ) + + web_cat_in_distribution_musica = fields.Many2one( + 'product.public.category', + string='Website categoría de música en distribución', + ) + + web_ribbon_in_distribution = fields.Many2one( + 'product.ribbon', + string='Website ribbon en distribución', + ) + diff --git a/website_product_retail/models/res_config_settings.py b/website_product_retail/models/res_config_settings.py new file mode 100644 index 0000000..af06df2 --- /dev/null +++ b/website_product_retail/models/res_config_settings.py @@ -0,0 +1,29 @@ +# Copyright 2024 Criptomart +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + web_cat_in_distribution_libros = fields.Many2one( + 'product.public.category', + 'Website categoría de libros en distribución', + readonly=False, + related="company_id.web_cat_in_distribution_libros", + ) + + web_cat_in_distribution_musica = fields.Many2one( + 'product.public.category', + string='Website categoría de música en distribución', + readonly=False, + related="company_id.web_cat_in_distribution_musica", + ) + + web_ribbon_in_distribution = fields.Many2one( + 'product.ribbon', + string='Website ribbon en distribución', + readonly=False, + related="company_id.web_ribbon_in_distribution", + ) \ No newline at end of file diff --git a/website_product_retail/views/res_config_settings_views.xml b/website_product_retail/views/res_config_settings_views.xml new file mode 100644 index 0000000..12f470d --- /dev/null +++ b/website_product_retail/views/res_config_settings_views.xml @@ -0,0 +1,30 @@ + + + + res.config.settings.view.form.inherit.retail + res.config.settings + + +
+

Configuración de productos en distribución

+
+
+
+
+
+
+
+
+
+
+
+
+
+ +