Enforce that sats_received is in orders

This commit is contained in:
Pablo Martin 2023-08-03 14:50:39 +02:00
parent d8f6548626
commit bca2e7b143

View file

@ -39,7 +39,6 @@ def check_health():
def generate_um_report(start_date: str, end_date: str):
start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d").isoformat()
end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d").isoformat()
@ -63,9 +62,18 @@ def generate_um_report(start_date: str, end_date: str):
relevant_orders = filter_orders_by_sku(
orders_in_date_range, skus=skus_to_keep
)
logger.info(f"Kept {len(relevant_orders)} orders.")
logger.info("Checking if all orders have the sats_received entry filled in.")
orders_without_sats_received = find_orders_without_sats_received(relevant_orders)
if orders_without_sats_received:
logger.warning(
f"There are {len(orders_without_sats_received)} orders without a properly filled sats_received entry.")
logger.warning(f"See details below.")
logger.warning(orders_without_sats_received)
raise ValueError("Not all orders have sats_received. Can't compute sats owed without that.")
# Fetch orders:
# - Between specific dates
# - That contain the hardcoded products
@ -84,8 +92,7 @@ def generate_um_report(start_date: str, end_date: str):
# - Add metadata entry: is_settled_with_um: 1
def filter_orders_by_sku(orders: List[Dict], skus: List[str]):
def filter_orders_by_sku(orders: List[Dict], skus: List[str]) -> List[Dict]:
filtered_orders = []
for order in orders:
@ -94,3 +101,17 @@ def filter_orders_by_sku(orders: List[Dict], skus: List[str]):
filtered_orders.append(order)
return filtered_orders
def find_orders_without_sats_received(orders: List[Dict]):
orders_without_sats_received = []
for order in orders:
meta_data_entries = {meta_data_entry["key"]: meta_data_entry["value"] for meta_data_entry in order["meta_data"]}
if "sats_received" not in meta_data_entries.keys():
orders_without_sats_received.append(order)
continue
if int(meta_data_entries["sats_received"]) < 0:
orders_without_sats_received.append(order)
return orders_without_sats_received