From e6693a91de983ffce551c746c3cd2f0cf335aab9 Mon Sep 17 00:00:00 2001 From: Tiago-da-Silva23 Date: Mon, 6 Nov 2023 11:09:00 +0000 Subject: [PATCH] refactor: adjusted the date format, refactor: adjusted the split logic --- .../commands/export_split_revenue.py | 6 +----- apps/shared_revenue/models.py | 2 +- .../shared_revenue/services/split_execution.py | 18 ++++++++++-------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/apps/shared_revenue/management/commands/export_split_revenue.py b/apps/shared_revenue/management/commands/export_split_revenue.py index 6168211..dfa17be 100644 --- a/apps/shared_revenue/management/commands/export_split_revenue.py +++ b/apps/shared_revenue/management/commands/export_split_revenue.py @@ -43,11 +43,7 @@ def handle(self, *args, **options) -> str | None: ).isoformat() product_id = options.get("product_id") organization_code = options.get("organization_code") - kwargs = { - k: v - for k, v in {"product_id": product_id, "organization_code": organization_code}.items() - if v not in ["", None] - } + kwargs = {k: v for k, v in {"product_id": product_id, "organization_code": organization_code}.items() if v} SplitExportService().export_split_to_xlsx( start_date=start_date, end_date=end_date, diff --git a/apps/shared_revenue/models.py b/apps/shared_revenue/models.py index db22c26..96bc661 100644 --- a/apps/shared_revenue/models.py +++ b/apps/shared_revenue/models.py @@ -62,7 +62,7 @@ def check_each_configuration( configuration, ) -> bool: - id = self.id if self.id is not None else -1 + id = self.id if configuration.id == id: return True diff --git a/apps/shared_revenue/services/split_execution.py b/apps/shared_revenue/services/split_execution.py index 1e6580a..03b1c4f 100644 --- a/apps/shared_revenue/services/split_execution.py +++ b/apps/shared_revenue/services/split_execution.py @@ -36,8 +36,9 @@ def _filter_transaction_items(self, **kwargs) -> list[TransactionItem]: transactions = Transaction.objects.filter(transaction_date__range=[self.start_date, self.end_date]) transaction_items: list[TransactionItem] = [] for transaction in transactions: - kwargs["transaction"] = transaction - transaction_items += TransactionItem.objects.filter(**kwargs) + items = transaction.transaction_items.all() + if items: + transaction_items.append(items[0]) return transaction_items except Exception as e: @@ -95,7 +96,7 @@ def _assembly_each_result( "transaction_date": item.transaction.transaction_date.isoformat(), "total_amount_include_vat": item.transaction.total_amount_include_vat, "total_amount_exclude_vat": item.transaction.total_amount_exclude_vat, - "organization_code": configuration.organization.short_name, + "organization_code": item.organization_code, "amount_for_nau": item.transaction.total_amount_include_vat * (1 - configuration.partner_percentage), "amount_for_organization": item.transaction.total_amount_include_vat * configuration.partner_percentage, "partner_percentage": configuration.partner_percentage, @@ -123,10 +124,11 @@ def _calculate_transactions( for item in transaction_items: for configuration in configurations: - if (None in [configuration.start_date, configuration.end_date]) or ( - configuration.start_date <= item.transaction.transaction_date - and configuration.end_date >= item.transaction.transaction_date - ): + if item.organization_code == configuration.organization.short_name: + if None not in [configuration.start_date, configuration.end_date]: + if not configuration.start_date <= item.transaction.transaction_date <= configuration.end_date: + continue + result = self._assembly_each_result(item=item, configuration=configuration) split_results.append(result) @@ -140,8 +142,8 @@ def execute_split_steps(self, **kwargs) -> list[Dict]: list[Dict]: All the calculated split results """ try: - transaction_items: list[TransactionItem] = self._filter_transaction_items(**kwargs) configurations: list[RevenueConfiguration] = self._filter_revenue_configurations(**kwargs) + transaction_items: list[TransactionItem] = self._filter_transaction_items(**kwargs) split_results = self._calculate_transactions( transaction_items=transaction_items, configurations=configurations,