diff --git a/pos_product_packaging_container_deposit/models/pos_session.py b/pos_product_packaging_container_deposit/models/pos_session.py index 769402d22c..4c75dcae32 100644 --- a/pos_product_packaging_container_deposit/models/pos_session.py +++ b/pos_product_packaging_container_deposit/models/pos_session.py @@ -9,5 +9,5 @@ class PosSession(models.Model): def _loader_params_product_packaging(self): result = super()._loader_params_product_packaging() - result["search_params"]["fields"].append("container_deposit_product_id") + result["search_params"]["fields"].append("container_deposit_product_ids") return result diff --git a/pos_product_packaging_container_deposit/models/product_packaging.py b/pos_product_packaging_container_deposit/models/product_packaging.py index 871144d6b1..fcb3774166 100644 --- a/pos_product_packaging_container_deposit/models/product_packaging.py +++ b/pos_product_packaging_container_deposit/models/product_packaging.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import fields, models - +from odoo.tools import groupby class ProductPackaging(models.Model): _inherit = "product.packaging" @@ -11,3 +11,19 @@ class ProductPackaging(models.Model): container_deposit_product_id = fields.Many2one( "product.product", related="package_type_id.container_deposit_product_id" ) + + container_deposit_product_ids = fields.Many2many( + "product.product", compute="_compute_product_ids" + ) + + def _compute_product_ids(self): + for rec in self: + packagings = rec.product_id.packaging_ids + container_deposit_product_ids = [] + for plevel, packs in groupby(packagings, lambda p: p.packaging_level_id): + container_deposit = packs[ + 0 + ].package_type_id.container_deposit_product_id + if container_deposit: + container_deposit_product_ids.append(container_deposit.id) + rec.container_deposit_product_ids = container_deposit_product_ids \ No newline at end of file diff --git a/pos_product_packaging_container_deposit/static/src/js/ProductScreen.esm.js b/pos_product_packaging_container_deposit/static/src/js/ProductScreen.esm.js index b1b0865e9c..0fe35f6d73 100644 --- a/pos_product_packaging_container_deposit/static/src/js/ProductScreen.esm.js +++ b/pos_product_packaging_container_deposit/static/src/js/ProductScreen.esm.js @@ -22,6 +22,13 @@ odoo.define( selectedLine.container_deposit_line_id ); if (checkDepositLine) return; + + // for (container_deposit_line in selectedLine.container_deposit_line_ids){ + // const checkDepositLine = this.currentOrder.get_orderline( + // container_deposit_line + // ); + // if (checkDepositLine) return; + // } } const packaging = this.env.pos.db.product_packaging_by_barcode[code.base_code]; @@ -33,7 +40,7 @@ odoo.define( } const deposit_product = this.env.pos.db.product_packaging_by_barcode[code.base_code] - .container_deposit_product_id; + .container_deposit_product_ids; if (!deposit_product) return; const currentQuantity = selectedLine.get_quantity(); @@ -45,7 +52,7 @@ odoo.define( ); if (this.env.pos.isProductQtyZero(deposit_qty)) return; - // Add deposit to the order. + // Add deposit to the order. WARNING NEED TO BE UPDATE let product = this.env.pos.db.get_product_by_id(deposit_product[0]); if (!product) { await this.env.pos._addProducts([deposit_product[0]], false);