From 3b24f9635224f5dc35252e629846fcf15b686c10 Mon Sep 17 00:00:00 2001 From: counterweight Date: Sat, 2 Dec 2023 17:42:50 +0100 Subject: [PATCH] Implement multi SKU filtering --- camisatoshi_wordpress_reports/controllers.py | 20 ++++++++++++++------ camisatoshi_wordpress_reports/order.py | 10 ++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/camisatoshi_wordpress_reports/controllers.py b/camisatoshi_wordpress_reports/controllers.py index cb8f906..97eb25d 100644 --- a/camisatoshi_wordpress_reports/controllers.py +++ b/camisatoshi_wordpress_reports/controllers.py @@ -77,6 +77,14 @@ def generate_um_report( logger.info(f"Filtering by SKU: {relevant_sku}") relevant_orders = orders_in_date_range.filter_orders_by_sku( sku=relevant_sku + relevant_skus = [ + "TEE-05-BBO-BLACK", + "SUD-01-BBO-BLACK", + "TEE-09-SIMPLY-BITCOIN" + ] + logger.info(f"Filtering by SKUs: {relevant_skus}") + relevant_orders = orders_in_date_range.filter_orders_by_skus( + skus=relevant_skus ) logger.info(f"Kept {len(relevant_orders)} orders.") @@ -111,12 +119,12 @@ def generate_um_report( report.append( { "order_id": order[ORDER_KEYS.id], - "sku": relevant_sku, - "units_sold": order.units_of_sku(relevant_sku), - "eur_income": order.sales_of_sku(relevant_sku), - "sats_income": order.sats_received_for_sku(relevant_sku), + "sku": relevant_skus, + "units_sold": order.units_of_skus(relevant_skus), + "eur_income": order.sales_of_sku(relevant_skus), + "sats_income": order.sats_received_for_sku(relevant_skus), "sats_owed_to_um": ( - order.sats_received_for_sku(relevant_sku) + order.sats_received_for_sku(relevant_skus) * (1 - BBO_ROYALTY_FEE_PERCENTAGE) ) * UM_FIRST_AGREEMENT_PERCENTAGE, @@ -160,7 +168,7 @@ def generate_sku_report(start_date, end_date, sku): { "order_id": order[ORDER_KEYS.id], "sku": sku, - "units_sold": order.units_of_sku(sku), + "units_sold": order.units_of_skus(sku), "eur_income": order.sales_of_sku(sku), } ) diff --git a/camisatoshi_wordpress_reports/order.py b/camisatoshi_wordpress_reports/order.py index faa2a1e..449e039 100644 --- a/camisatoshi_wordpress_reports/order.py +++ b/camisatoshi_wordpress_reports/order.py @@ -105,6 +105,16 @@ class Orders: return Orders(filtered_orders) + def filter_orders_by_skus(self, skus: Collection[str]) -> "Orders": + filtered_orders = [] + + for order in self: + for sku in skus: + if order.contains_sku(sku): + filtered_orders.append(order) + + return Orders(filtered_orders) + def filter_orders_without_sats_received(self) -> "Orders": orders_without_sats_received = []