Implement multi SKU filtering

This commit is contained in:
counterweight 2023-12-02 17:42:50 +01:00
parent a1dcb826ee
commit 3b24f96352
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
2 changed files with 24 additions and 6 deletions

View file

@ -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),
}
)

View file

@ -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 = []