From f17c61bc7a5986d61eb9db2d7f3031dfb6304c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20G=C3=B6ttsch?= Date: Wed, 24 Jul 2024 21:54:45 +0200 Subject: [PATCH 1/4] [imp] add packaging information to bnn information --- nfu_product_bnn_attributes/README.rst | 1 + nfu_product_bnn_attributes/__manifest__.py | 2 +- .../models/product_product.py | 12 +++++ .../models/product_template.py | 5 +- nfu_product_bnn_attributes/readme/HISTORY.rst | 3 +- .../static/description/index.html | 2 + .../views/product_bnn_views.xml | 47 +++++++++++++++++++ .../views/product_template_bnn_view.xml | 20 -------- 8 files changed, 69 insertions(+), 23 deletions(-) create mode 100644 nfu_product_bnn_attributes/models/product_product.py create mode 100644 nfu_product_bnn_attributes/views/product_bnn_views.xml delete mode 100644 nfu_product_bnn_attributes/views/product_template_bnn_view.xml diff --git a/nfu_product_bnn_attributes/README.rst b/nfu_product_bnn_attributes/README.rst index 4e3438f..b2ec0ab 100644 --- a/nfu_product_bnn_attributes/README.rst +++ b/nfu_product_bnn_attributes/README.rst @@ -34,6 +34,7 @@ Changelog :1.0.0: Initial module. +:1.1.0: Add packaging Bug Tracker =========== diff --git a/nfu_product_bnn_attributes/__manifest__.py b/nfu_product_bnn_attributes/__manifest__.py index 5e7077e..4d046ca 100644 --- a/nfu_product_bnn_attributes/__manifest__.py +++ b/nfu_product_bnn_attributes/__manifest__.py @@ -6,7 +6,7 @@ "category": "Product", "version": "16.0.1.0.0", "depends": ["product"], - "data": ["views/product_template_bnn_view.xml"], + "data": ["views/product_bnn_views.xml"], "assets": {}, "license": "LGPL-3", "installable": True, diff --git a/nfu_product_bnn_attributes/models/product_product.py b/nfu_product_bnn_attributes/models/product_product.py new file mode 100644 index 0000000..29ccd70 --- /dev/null +++ b/nfu_product_bnn_attributes/models/product_product.py @@ -0,0 +1,12 @@ +from odoo import models + + +class ProductProduct(models.Model): + _inherit = "product.product" + + # Should be moved to product.product at some point + # additional_information = fields.Char() + # quality = fields.Char() + # origin = fields.Char() + # packaging_qty = fields.Float(string="Packaging Quantity") + # packaging_name = fields.Char() diff --git a/nfu_product_bnn_attributes/models/product_template.py b/nfu_product_bnn_attributes/models/product_template.py index 1581bbc..22aa5ca 100644 --- a/nfu_product_bnn_attributes/models/product_template.py +++ b/nfu_product_bnn_attributes/models/product_template.py @@ -4,7 +4,10 @@ from odoo import fields, models class ProductTemplate(models.Model): _inherit = "product.template" + manufacturer_abbr = fields.Char(string="Manufacturer Abbreviation") + # Should be moved to product.product at some point additional_information = fields.Char() quality = fields.Char() origin = fields.Char() - manufacturer_abbr = fields.Char(string="Manufacturer Abbreviation") + packaging_qty = fields.Float(string="Packaging Quantity") + packaging_name = fields.Char() diff --git a/nfu_product_bnn_attributes/readme/HISTORY.rst b/nfu_product_bnn_attributes/readme/HISTORY.rst index 962941f..e6c8ca0 100644 --- a/nfu_product_bnn_attributes/readme/HISTORY.rst +++ b/nfu_product_bnn_attributes/readme/HISTORY.rst @@ -1,2 +1,3 @@ -:1.0.0: Initial module. \ No newline at end of file +:1.0.0: Initial module. +:1.1.0: Add packaging \ No newline at end of file diff --git a/nfu_product_bnn_attributes/static/description/index.html b/nfu_product_bnn_attributes/static/description/index.html index c09ba0b..fe44d6a 100644 --- a/nfu_product_bnn_attributes/static/description/index.html +++ b/nfu_product_bnn_attributes/static/description/index.html @@ -392,6 +392,8 @@ ul.auto-toc { 1.0.0:Initial module. +1.1.0:Add packaging + diff --git a/nfu_product_bnn_attributes/views/product_bnn_views.xml b/nfu_product_bnn_attributes/views/product_bnn_views.xml new file mode 100644 index 0000000..283260f --- /dev/null +++ b/nfu_product_bnn_attributes/views/product_bnn_views.xml @@ -0,0 +1,47 @@ + + + + product.template.view.inherit.bnn + product.template + + + + + + + + + + + + + + + + + + + + + + diff --git a/nfu_product_bnn_attributes/views/product_template_bnn_view.xml b/nfu_product_bnn_attributes/views/product_template_bnn_view.xml deleted file mode 100644 index cb806f7..0000000 --- a/nfu_product_bnn_attributes/views/product_template_bnn_view.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - product.template.bnn.view - product.template - - - - - - - - - - - - - - - From 4aabadb52e7d318729831c0331d60cdd51519351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20G=C3=B6ttsch?= Date: Wed, 24 Jul 2024 23:03:12 +0200 Subject: [PATCH 2/4] generate packagings status quo --- .vscode/launch.json | 4 +- nfu_product_bnn_attributes/__manifest__.py | 2 +- .../models/product_template.py | 38 ++++++++++++++++++- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 10199d7..f7805af 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,11 +9,11 @@ "program": "${config:odoo.path}/odoo-bin", "console": "integratedTerminal", "args": [ - "--database=nfu_sale_order_batch_packaging", + "--database=nfu_", "--addons-path=${config:odoo.addons_path},${workspaceFolder}", "--limit-time-real=0", "--limit-time-cpu=0", - "--update=sale_order_batch_stock", + // "--init=", // "--update=", "--dev=xml" ] diff --git a/nfu_product_bnn_attributes/__manifest__.py b/nfu_product_bnn_attributes/__manifest__.py index 4d046ca..92608a6 100644 --- a/nfu_product_bnn_attributes/__manifest__.py +++ b/nfu_product_bnn_attributes/__manifest__.py @@ -4,7 +4,7 @@ "author": "BAKEUP", "website": "https://www.bakeup.org", "category": "Product", - "version": "16.0.1.0.0", + "version": "16.0.1.1.0", "depends": ["product"], "data": ["views/product_bnn_views.xml"], "assets": {}, diff --git a/nfu_product_bnn_attributes/models/product_template.py b/nfu_product_bnn_attributes/models/product_template.py index 22aa5ca..b2a009a 100644 --- a/nfu_product_bnn_attributes/models/product_template.py +++ b/nfu_product_bnn_attributes/models/product_template.py @@ -1,4 +1,4 @@ -from odoo import fields, models +from odoo import api, fields, models class ProductTemplate(models.Model): @@ -11,3 +11,39 @@ class ProductTemplate(models.Model): origin = fields.Char() packaging_qty = fields.Float(string="Packaging Quantity") packaging_name = fields.Char() + + @api.depends("packaging_qty", "packaging_name") + def generate_packaging_from_bnn(self): + for product in self: + qty = product.packaging_qty + name = product.packaging_name + if qty and name: + packagings = ( + self.env["product.packaging"] + .search([("product_id", "=", product.id)]) + .filtered(lambda p: p.qty == qty) + ) + if packagings: + packagings[0].write({"name": name}) + else: + self.env["product.packaging"].create({"name": name, "qty": qty, "product_id": product.id}) + + def write(self, vals): + res = super().write(vals) + if vals.get("packaging_qty"): + for product in self: + qty = vals.get("packaging_qty") + name = vals.get("packaging_name") if vals.get("packaging_name") else product.packaging_name + if qty and name: + packagings = ( + self.env["product.packaging"] + .search([("product_id", "=", product.id)]) + .filtered(lambda p: p.qty == qty) + ) + if packagings: + packagings[0].write({"name": name}) + else: + self.env["product.packaging"].create( + {"name": name, "qty": qty, "product_id": product.id, "sales": True} + ) + return res From 8b760429d57ac36b37c3ca7ebe2429fbfa8a9caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20G=C3=B6ttsch?= Date: Thu, 25 Jul 2024 08:28:55 +0200 Subject: [PATCH 3/4] [fix] product.product id issue --- nfu_product_bnn_attributes/models/__init__.py | 1 + .../models/product_template.py | 44 ++++++------------- 2 files changed, 14 insertions(+), 31 deletions(-) diff --git a/nfu_product_bnn_attributes/models/__init__.py b/nfu_product_bnn_attributes/models/__init__.py index e8fa8f6..18b37e8 100644 --- a/nfu_product_bnn_attributes/models/__init__.py +++ b/nfu_product_bnn_attributes/models/__init__.py @@ -1 +1,2 @@ +from . import product_product from . import product_template diff --git a/nfu_product_bnn_attributes/models/product_template.py b/nfu_product_bnn_attributes/models/product_template.py index b2a009a..e8ec7f2 100644 --- a/nfu_product_bnn_attributes/models/product_template.py +++ b/nfu_product_bnn_attributes/models/product_template.py @@ -1,4 +1,4 @@ -from odoo import api, fields, models +from odoo import fields, models class ProductTemplate(models.Model): @@ -12,38 +12,20 @@ class ProductTemplate(models.Model): packaging_qty = fields.Float(string="Packaging Quantity") packaging_name = fields.Char() - @api.depends("packaging_qty", "packaging_name") - def generate_packaging_from_bnn(self): - for product in self: - qty = product.packaging_qty - name = product.packaging_name - if qty and name: - packagings = ( - self.env["product.packaging"] - .search([("product_id", "=", product.id)]) - .filtered(lambda p: p.qty == qty) - ) - if packagings: - packagings[0].write({"name": name}) - else: - self.env["product.packaging"].create({"name": name, "qty": qty, "product_id": product.id}) - def write(self, vals): res = super().write(vals) - if vals.get("packaging_qty"): + if vals.get("packaging_qty") or vals.get("packaging_name"): for product in self: - qty = vals.get("packaging_qty") - name = vals.get("packaging_name") if vals.get("packaging_name") else product.packaging_name + qty = vals.get("packaging_qty") or product.packaging_qty + name = vals.get("packaging_name") or product.packaging_name + product_products = self.env["product.product"].search([("product_tmpl_id", "=", product.id)]) if qty and name: - packagings = ( - self.env["product.packaging"] - .search([("product_id", "=", product.id)]) - .filtered(lambda p: p.qty == qty) - ) - if packagings: - packagings[0].write({"name": name}) - else: - self.env["product.packaging"].create( - {"name": name, "qty": qty, "product_id": product.id, "sales": True} - ) + for product_product in product_products: + packagings = self.env["product.packaging"].search([("product_id", "=", product_product.id)]) + if packagings: + packagings[0].write({"name": name, "qty": qty, "sales": True}) + else: + self.env["product.packaging"].create( + {"name": name, "qty": qty, "product_id": product_product.id, "sales": True} + ) return res From 399f4fc0a74de972b56aa1112100885230e9c39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20G=C3=B6ttsch?= Date: Thu, 25 Jul 2024 22:34:38 +0200 Subject: [PATCH 4/4] [fix] search for fist packaging instead of all --- nfu_product_bnn_attributes/models/product_template.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/nfu_product_bnn_attributes/models/product_template.py b/nfu_product_bnn_attributes/models/product_template.py index e8ec7f2..81fb9a0 100644 --- a/nfu_product_bnn_attributes/models/product_template.py +++ b/nfu_product_bnn_attributes/models/product_template.py @@ -21,9 +21,11 @@ class ProductTemplate(models.Model): product_products = self.env["product.product"].search([("product_tmpl_id", "=", product.id)]) if qty and name: for product_product in product_products: - packagings = self.env["product.packaging"].search([("product_id", "=", product_product.id)]) + packagings = self.env["product.packaging"].search( + [("product_id", "=", product_product.id)], limit=1 + ) if packagings: - packagings[0].write({"name": name, "qty": qty, "sales": True}) + packagings.write({"name": name, "qty": qty, "sales": True}) else: self.env["product.packaging"].create( {"name": name, "qty": qty, "product_id": product_product.id, "sales": True}