diff --git a/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js b/addons/pos_sale/static/src/js/OrderManagementScreen/SaleOrderManagementScreen.js index f13542a2df59f41de01524cbec10776b4401beff..89fc720473a4db7746dd4e4be7bf3a3387e1bb5a 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 8b2db558ad0d7f846a60c82b6e2e2c18933b9f9d..310f2bc79122394495f728522e3079a1dae077c3 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',