From ac6cb6ab95f5131ac19b9da559d80c128d42a726 Mon Sep 17 00:00:00 2001 From: santiky Date: Thu, 12 Aug 2021 16:25:41 +0200 Subject: [PATCH] =?UTF-8?q?Categoria=20de=20PoS=20por=20defecto=20por=20ca?= =?UTF-8?q?tegor=C3=ADa=20de=20producto.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- product_category_default_pos_cat/__init__.py | 1 + .../__manifest__.py | 20 ++++++++++ .../models/__init__.py | 4 ++ .../models/product_category.py | 15 +++++++ .../models/product_product.py | 40 +++++++++++++++++++ .../models/res_company.py | 13 ++++++ .../models/res_config_settings.py | 13 ++++++ .../views/product_category.xml | 16 ++++++++ .../views/res_config_settings_views.xml | 27 +++++++++++++ 10 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 product_category_default_pos_cat/__init__.py create mode 100644 product_category_default_pos_cat/__manifest__.py create mode 100644 product_category_default_pos_cat/models/__init__.py create mode 100644 product_category_default_pos_cat/models/product_category.py create mode 100644 product_category_default_pos_cat/models/product_product.py create mode 100644 product_category_default_pos_cat/models/res_company.py create mode 100644 product_category_default_pos_cat/models/res_config_settings.py create mode 100644 product_category_default_pos_cat/views/product_category.xml create mode 100644 product_category_default_pos_cat/views/res_config_settings_views.xml diff --git a/.gitignore b/.gitignore index e7c761b..f47da3a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ __pycache__/ *.py[cod] *$py.class +*.py~ # C extensions *.so @@ -129,4 +130,3 @@ dmypy.json # Pyre type checker .pyre/ -*~ diff --git a/product_category_default_pos_cat/__init__.py b/product_category_default_pos_cat/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/product_category_default_pos_cat/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_category_default_pos_cat/__manifest__.py b/product_category_default_pos_cat/__manifest__.py new file mode 100644 index 0000000..22438bc --- /dev/null +++ b/product_category_default_pos_cat/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2021 Criptomart +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Product Category Default PoS Category', + 'version': '12.0.1.0.0', + 'author': "Criptomart", + 'website': 'https://github.com/criptomart/obook', + 'license': 'AGPL-3', + 'category': 'Product', + 'depends': [ + 'product', + 'point_of_sale' + ], + 'data': [ + 'views/product_category.xml', + 'views/res_config_settings_views.xml', + ], + 'installable': True, +} diff --git a/product_category_default_pos_cat/models/__init__.py b/product_category_default_pos_cat/models/__init__.py new file mode 100644 index 0000000..ca02c74 --- /dev/null +++ b/product_category_default_pos_cat/models/__init__.py @@ -0,0 +1,4 @@ +from . import res_company +from . import res_config_settings +from . import product_product +from . import product_category diff --git a/product_category_default_pos_cat/models/product_category.py b/product_category_default_pos_cat/models/product_category.py new file mode 100644 index 0000000..76d54be --- /dev/null +++ b/product_category_default_pos_cat/models/product_category.py @@ -0,0 +1,15 @@ +# Copyright 2018 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ProductCategory(models.Model): + _inherit = 'product.category' + + pos_categ_id = fields.Many2one( + comodel_name="pos.category", string="Categoría en el Punto de Venta", + help="Configura los productos nuevos de ésta categoría, a la categoría del punto de venta definido aquí.", + ) + diff --git a/product_category_default_pos_cat/models/product_product.py b/product_category_default_pos_cat/models/product_product.py new file mode 100644 index 0000000..2aa2ac6 --- /dev/null +++ b/product_category_default_pos_cat/models/product_product.py @@ -0,0 +1,40 @@ +# Copyright 2021 Criptomart +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +#import logging + +from odoo import _, api, fields, models + +#_logger = logging.getLogger(__name__) + +class ProductProduct(models.Model): + _inherit = 'product.product' + + + @api.model + def create(self, vals): + category = self.env['product.category'] + categ_id = vals.get("categ_id") + template_id = vals.get("product_tmpl_id") + if categ_id: + category = category.browse(categ_id) + vals['pos_categ_id'] = self.get_category_pos_category(category) + vals['available_in_pos'] = True + elif template_id: + template = self.env["product.template"].browse(template_id) + category = template.categ_id + template.pos_categ_id = self.get_category_pos_category(category) + if template.pos_categ_id: + template.available_in_pos = True + + return super().create(vals) + + @api.model + def get_category_pos_category(self, category=False): + cat = category + if self.env.user.company_id.use_parent_categories_to_determine_pos_categ: + while not cat.pos_categ_id and cat.parent_id: + cat = cat.parent_id + + return cat.pos_categ_id + diff --git a/product_category_default_pos_cat/models/res_company.py b/product_category_default_pos_cat/models/res_company.py new file mode 100644 index 0000000..0919091 --- /dev/null +++ b/product_category_default_pos_cat/models/res_company.py @@ -0,0 +1,13 @@ +# Copyright 2021 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' + + use_parent_categories_to_determine_pos_categ = fields.Boolean( + string="Use parent categories to determine the pos category", + help="Use parent categories to determine the pos category if the category has no settings for the PoS category.", + ) diff --git a/product_category_default_pos_cat/models/res_config_settings.py b/product_category_default_pos_cat/models/res_config_settings.py new file mode 100644 index 0000000..a394a4a --- /dev/null +++ b/product_category_default_pos_cat/models/res_config_settings.py @@ -0,0 +1,13 @@ +# Copyright 2021 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' + + use_parent_categories_to_determine_pos_categ = fields.Boolean( + related="company_id.use_parent_categories_to_determine_pos_categ", + readonly=False, + ) diff --git a/product_category_default_pos_cat/views/product_category.xml b/product_category_default_pos_cat/views/product_category.xml new file mode 100644 index 0000000..5d20598 --- /dev/null +++ b/product_category_default_pos_cat/views/product_category.xml @@ -0,0 +1,16 @@ + + + + + + product.category.form - product_category_pos_categ + product.category + + + + + + + + + diff --git a/product_category_default_pos_cat/views/res_config_settings_views.xml b/product_category_default_pos_cat/views/res_config_settings_views.xml new file mode 100644 index 0000000..4d9d5bf --- /dev/null +++ b/product_category_default_pos_cat/views/res_config_settings_views.xml @@ -0,0 +1,27 @@ + + + + + res.config.settings.view.form.inherit.product + res.config.settings + + +
+
+
+ +
+
+
+
+
+
+
+