From ada4c445c81583e3c1f5cd9e05c3361c6c5a31b1 Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Sun, 26 Jul 2026 16:29:49 +0200 Subject: [PATCH] Purchase & Sale --- modules/purchase_trade/purchase.py | 31 +++++++++++++++++++++++++++--- modules/purchase_trade/sale.py | 31 +++++++++++++++++++++++++++--- 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/modules/purchase_trade/purchase.py b/modules/purchase_trade/purchase.py index 5519403..f0a1710 100755 --- a/modules/purchase_trade/purchase.py +++ b/modules/purchase_trade/purchase.py @@ -1448,16 +1448,41 @@ class Purchase(metaclass=PoolMeta): }) return activity + def _get_summary_total_chips(self): + chips = [] + for assignment in (self.analytic_dimensions or [])[:2]: + dimension = getattr(assignment, 'dimension', None) + value = getattr(assignment, 'value', None) + dimension_name = ( + getattr(dimension, 'name', None) + or getattr(dimension, 'rec_name', None)) + value_name = ( + getattr(value, 'name', None) + or getattr(value, 'rec_name', None)) + if not dimension_name or not value_name: + continue + chips.append({ + "dimension": dimension_name, + "value": value_name, + }) + return chips + def get_purchase_summary_data(self, name=None): execution = self._get_purchase_execution_summary_data() + currency = getattr(self, 'currency', None) + currency_badge = ( + getattr(currency, 'name', None) + or getattr(currency, 'code', None) + or '') data = { - "currency": getattr(getattr(self, 'currency', None), 'code', None) - or '', + "currency": getattr(currency, 'code', None) or '', + "currency_badge": currency_badge, "map": self._get_purchase_map_summary_data(), "execution": execution, "amount": { "value": execution.get('totals', {}).get('amount', 0), }, + "total_chips": self._get_summary_total_chips(), "activity": self._get_purchase_activity_summary_data(), "approval": { "status": "need_approval", @@ -1478,7 +1503,7 @@ class Purchase(metaclass=PoolMeta): @fields.depends( 'currency', 'from_location', 'to_location', 'lines', 'pnl', 'pnl_', - 'pnl_graph', 'group_pnl') + 'pnl_graph', 'group_pnl', 'analytic_dimensions') def on_change_with_purchase_summary_data(self, name=None): return self.get_purchase_summary_data() diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py index d840807..ff85c2c 100755 --- a/modules/purchase_trade/sale.py +++ b/modules/purchase_trade/sale.py @@ -1975,6 +1975,25 @@ class Sale(metaclass=PoolMeta): }) return activity + def _get_summary_total_chips(self): + chips = [] + for assignment in (self.analytic_dimensions or [])[:2]: + dimension = getattr(assignment, 'dimension', None) + value = getattr(assignment, 'value', None) + dimension_name = ( + getattr(dimension, 'name', None) + or getattr(dimension, 'rec_name', None)) + value_name = ( + getattr(value, 'name', None) + or getattr(value, 'rec_name', None)) + if not dimension_name or not value_name: + continue + chips.append({ + "dimension": dimension_name, + "value": value_name, + }) + return chips + def get_execution_summary_viewer(self, name=None): data = self._get_sale_execution_summary_data() data = dict(data, type='execution-summary') @@ -1982,14 +2001,20 @@ class Sale(metaclass=PoolMeta): def get_sale_summary_data(self, name=None): execution = self._get_sale_execution_summary_data() + currency = getattr(self, 'currency', None) + currency_badge = ( + getattr(currency, 'name', None) + or getattr(currency, 'code', None) + or '') data = { - "currency": getattr(getattr(self, 'currency', None), 'code', None) - or '', + "currency": getattr(currency, 'code', None) or '', + "currency_badge": currency_badge, "map": self._get_sale_map_summary_data(), "execution": execution, "amount": { "value": execution.get('totals', {}).get('amount', 0), }, + "total_chips": self._get_summary_total_chips(), "activity": self._get_sale_activity_summary_data(), "approval": { "status": "need_approval", @@ -2000,7 +2025,7 @@ class Sale(metaclass=PoolMeta): @fields.depends( 'currency', 'from_location', 'to_location', 'lines', 'pnl', 'pnl_', - 'group_pnl') + 'group_pnl', 'analytic_dimensions') def on_change_with_sale_summary_data(self, name=None): return self.get_sale_summary_data()