From ed0e6e9cb6a9a83c27d7bb19f13cddde00983eaa Mon Sep 17 00:00:00 2001 From: roen-odoo <roen@odoo.com> Date: Wed, 17 May 2023 09:21:23 +0000 Subject: [PATCH] [FIX] pos_sale: fix test and traceback when pos_loyalty is not installed Current behavior: When pos_loyalty is not installed,the `test_settle_order_with_promotions` was failing. Also if the user tries to settle an order he would get a traceback. The issue was introduced here: https://github.com/odoo/odoo/pull/119673 opw-3247545 closes odoo/odoo#121603 Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com> --- .../js/OrderManagementScreen/SaleOrderManagementScreen.js | 2 +- addons/pos_sale/tests/test_pos_sale_flow.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js b/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js index f13542a2df59..89fc720473a4 100644 --- a/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js +++ b/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js @@ -293,7 +293,7 @@ odoo.define('pos_sale.SaleOrderManagementScreen', function (require) { sale_order[0].amount_unpaid = saleOrdersAmountUnpaid[sale_order[0].id]; const sale_lines = await this._getSOLines(sale_order[0].order_line); - const promo_products_to_remove = this.env.pos.promo_programs.flatMap(program => program.promo_code_usage === 'no_code_needed' ? program.discount_line_product_id[0] : []); + const promo_products_to_remove = this.env.pos.promo_programs ? this.env.pos.promo_programs.flatMap(program => program.promo_code_usage === 'no_code_needed' ? program.discount_line_product_id[0] : []) : []; sale_order[0].order_line = sale_lines.filter(line => !promo_products_to_remove.includes(line.product_id[0])); return sale_order[0]; diff --git a/addons/pos_sale/tests/test_pos_sale_flow.py b/addons/pos_sale/tests/test_pos_sale_flow.py index 8b2db558ad0d..310f2bc79122 100644 --- a/addons/pos_sale/tests/test_pos_sale_flow.py +++ b/addons/pos_sale/tests/test_pos_sale_flow.py @@ -121,6 +121,11 @@ class TestPoSSale(TestPointOfSaleHttpCommon): self.assertEqual(orderline_product_b.move_ids.product_uom_qty, 1) def test_settle_order_with_promotions(self): + if not self.env["ir.module.module"].search([("name", "=", "pos_coupon"), ("state", "=", "installed")]): + self.skipTest("pos_coupon module is required for this test") + if not self.env["ir.module.module"].search([("name", "=", "sale_coupon"), ("state", "=", "installed")]): + self.skipTest("sale_coupon module is required for this test") + self.promotion_program = self.env['coupon.program'].create({ 'name': '50% on current order', 'program_type': 'promotion_program', -- GitLab