Got the reporting fixed for multi skus.

This commit is contained in:
counterweight 2023-12-02 18:03:36 +01:00
parent 3b24f96352
commit f5b33cce74
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
3 changed files with 34 additions and 22 deletions

View file

@ -26,3 +26,4 @@ CUSTOM_META_DATA_KEYS.sats_received = "sats_received"
UM_FIRST_AGREEMENT_PERCENTAGE = 0.5
BBO_ROYALTY_FEE_PERCENTAGE = 0.2
BBO_SKUS = ["TEE-05-BBO-BLACK", "SUD-01-BBO-BLACK"]

View file

@ -13,6 +13,7 @@ from camisatoshi_wordpress_reports.constants import (
UM_FIRST_AGREEMENT_PERCENTAGE,
DEFAULT_DOTENV_FILEPATH,
BBO_ROYALTY_FEE_PERCENTAGE,
BBO_SKUS,
)
from camisatoshi_wordpress_reports.report_building import (
OrderObtentionChainBuilder,
@ -73,14 +74,10 @@ def generate_um_report(
)
logger.info(f"Received {len(orders_in_date_range)} orders.")
relevant_sku = "TEE-05-BBO-BLACK"
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"
"TEE-09-SIMPLY-BITCOIN",
]
logger.info(f"Filtering by SKUs: {relevant_skus}")
relevant_orders = orders_in_date_range.filter_orders_by_skus(
@ -115,17 +112,28 @@ def generate_um_report(
f"Relevant orders: {[order['id'] for order in unsettled_orders]}."
)
report = []
for relevant_sku in relevant_skus:
logger.debug(f"Reporting SKU {relevant_sku}")
for order in unsettled_orders:
if not order.contains_sku(relevant_sku):
continue
logger.debug(f"Reporting for order {order[ORDER_KEYS.id]}")
report.append(
{
"order_id": order[ORDER_KEYS.id],
"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),
"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),
"sats_owed_to_um": (
order.sats_received_for_sku(relevant_skus)
* (1 - BBO_ROYALTY_FEE_PERCENTAGE)
order.sats_received_for_sku(relevant_sku)
* (
1
- (
BBO_ROYALTY_FEE_PERCENTAGE
* (relevant_sku in BBO_SKUS)
)
)
)
* UM_FIRST_AGREEMENT_PERCENTAGE,
}
@ -169,7 +177,7 @@ def generate_sku_report(start_date, end_date, sku):
"order_id": order[ORDER_KEYS.id],
"sku": sku,
"units_sold": order.units_of_skus(sku),
"eur_income": order.sales_of_sku(sku),
"eur_income": order.sales_of_skus(sku),
}
)
logger.info("Report generated.")

View file

@ -109,8 +109,11 @@ class Orders:
filtered_orders = []
for order in self:
order_contains_at_least_one_of_the_skus = None # Guilty until proven innocent
for sku in skus:
if order.contains_sku(sku):
order_contains_at_least_one_of_the_skus = True
if order_contains_at_least_one_of_the_skus:
filtered_orders.append(order)
return Orders(filtered_orders)