From 50eacdb74fa081d5be2a0cea787843b8c123ec17 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 29 May 2024 16:43:59 +0700 Subject: add promotion program lines name on promotion monitoring --- indoteknik_custom/models/promotion/promotion_monitoring.py | 13 ++++++++----- indoteknik_custom/views/promotion/promotion_monitoring.xml | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/indoteknik_custom/models/promotion/promotion_monitoring.py b/indoteknik_custom/models/promotion/promotion_monitoring.py index 8a8aad8f..2c4b90f1 100644 --- a/indoteknik_custom/models/promotion/promotion_monitoring.py +++ b/indoteknik_custom/models/promotion/promotion_monitoring.py @@ -13,6 +13,7 @@ class PromotionMonitoring(models.Model): count_active = fields.Integer(string="Count Active") count_inactive = fields.Integer(string="Count Inactive") human_last_update = fields.Datetime(string='Human Last Update') + promotion_program_line_names = fields.Text(string="Promotion Program Line Names") def init(self): tools.drop_view_if_exists(self.env.cr, self._table) @@ -26,21 +27,23 @@ class PromotionMonitoring(models.Model): p.id as id, p.id as product_id, ppi.computed_price as price, - ({count_active} > 0) as has_promo, - {count_active} as count_active, - {count_inactive} as count_inactive, - pr.human_last_update as human_last_update + (COUNT(ppl.id) FILTER (WHERE ppl.active = True) > 0) as has_promo, + COUNT(ppl.id) FILTER (WHERE ppl.active = True) as count_active, + COUNT(ppl.id) FILTER (WHERE ppl.active = False) as count_inactive, + pr.human_last_update as human_last_update, + STRING_AGG(DISTINCT ppl.name, ', ') as promotion_program_line_names -- Concatenate promotion_program_line names FROM product_product p LEFT JOIN product_template pt ON pt.id = p.product_tmpl_id LEFT JOIN promotion_product pp ON pp.product_id = p.id LEFT JOIN promotion_program_line ppl ON ppl.id = pp.program_line_id LEFT JOIN product_pricelist_item ppi ON ppi.product_id = p.id LEFT JOIN purchase_pricelist pr ON pr.product_id = p.id + LEFT JOIN promotion_product prp ON prp.product_id = p.id -- Join with promotion.product WHERE p.active = True AND pt.sale_ok = True AND ppi.pricelist_id = 17023 GROUP BY p.id, ppi.id, pr.human_last_update - ) + ); """.format( table=self._table, count_active=sql['count_active'], diff --git a/indoteknik_custom/views/promotion/promotion_monitoring.xml b/indoteknik_custom/views/promotion/promotion_monitoring.xml index 746c3b61..5f6490ed 100644 --- a/indoteknik_custom/views/promotion/promotion_monitoring.xml +++ b/indoteknik_custom/views/promotion/promotion_monitoring.xml @@ -11,6 +11,7 @@ + -- cgit v1.2.3