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

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