Some improvement on constants naming
This commit is contained in:
parent
907c2bc133
commit
f127328227
3 changed files with 36 additions and 34 deletions
|
|
@ -6,22 +6,23 @@ DEFAULT_DOTENV_FILEPATH = ".camisatoshi-wordpress-reports/.env"
|
|||
|
||||
### Order keys
|
||||
|
||||
order_keys = SimpleNamespace()
|
||||
order_keys.meta_data = "meta_data"
|
||||
order_keys.total = "total"
|
||||
order_keys.line_items = "line_items"
|
||||
ORDER_KEYS = SimpleNamespace()
|
||||
ORDER_KEYS.id = "id"
|
||||
ORDER_KEYS.meta_data = "meta_data"
|
||||
ORDER_KEYS.total = "total"
|
||||
ORDER_KEYS.line_items = "line_items"
|
||||
|
||||
order_keys.line_item_keys = SimpleNamespace()
|
||||
order_keys.line_item_keys.sku = "sku"
|
||||
order_keys.line_item_keys.quantity = "quantity"
|
||||
order_keys.line_item_keys.total = "total"
|
||||
ORDER_KEYS.line_item_keys = SimpleNamespace()
|
||||
ORDER_KEYS.line_item_keys.sku = "sku"
|
||||
ORDER_KEYS.line_item_keys.quantity = "quantity"
|
||||
ORDER_KEYS.line_item_keys.total = "total"
|
||||
|
||||
custom_meta_data_keys = SimpleNamespace()
|
||||
custom_meta_data_keys.is_settled_um = "is_settled_um"
|
||||
custom_meta_data_keys.sats_received = "sats_received"
|
||||
CUSTOM_META_DATA_KEYS = SimpleNamespace()
|
||||
CUSTOM_META_DATA_KEYS.is_settled_um = "is_settled_um"
|
||||
CUSTOM_META_DATA_KEYS.sats_received = "sats_received"
|
||||
|
||||
|
||||
### Other
|
||||
|
||||
um_first_agreement_percentage = 0.5
|
||||
bbo_royalty_fee = 0.2
|
||||
UM_FIRST_AGREEMENT_PERCENTAGE = 0.5
|
||||
BBO_ROYALTY_FEE_PERCENTAGE = 0.2
|
||||
|
|
|
|||
|
|
@ -9,9 +9,10 @@ from woocommerce import API
|
|||
|
||||
from camisatoshi_wordpress_reports.order import Order, Orders
|
||||
from camisatoshi_wordpress_reports.constants import (
|
||||
um_first_agreement_percentage,
|
||||
ORDER_KEYS,
|
||||
UM_FIRST_AGREEMENT_PERCENTAGE,
|
||||
DEFAULT_DOTENV_FILEPATH,
|
||||
bbo_royalty_fee,
|
||||
BBO_ROYALTY_FEE_PERCENTAGE,
|
||||
)
|
||||
from camisatoshi_wordpress_reports.report_building import (
|
||||
OrderObtentionChainBuilder,
|
||||
|
|
@ -109,16 +110,16 @@ def generate_um_report(
|
|||
for order in unsettled_orders:
|
||||
report.append(
|
||||
{
|
||||
"order_id": order["id"],
|
||||
"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),
|
||||
"sats_owed_to_um": (
|
||||
order.sats_received_for_sku(relevant_sku)
|
||||
* (1 - bbo_royalty_fee)
|
||||
* (1 - BBO_ROYALTY_FEE_PERCENTAGE)
|
||||
)
|
||||
* um_first_agreement_percentage,
|
||||
* UM_FIRST_AGREEMENT_PERCENTAGE,
|
||||
}
|
||||
)
|
||||
logger.info("Report generated.")
|
||||
|
|
@ -157,7 +158,7 @@ def generate_sku_report(start_date, end_date, sku):
|
|||
for order in relevant_orders:
|
||||
report.append(
|
||||
{
|
||||
"order_id": order["id"],
|
||||
"order_id": order[ORDER_KEYS.id],
|
||||
"sku": sku,
|
||||
"units_sold": order.units_of_sku(sku),
|
||||
"eur_income": order.sales_of_sku(sku),
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import logging
|
|||
from typing import Dict, Collection
|
||||
|
||||
from camisatoshi_wordpress_reports.constants import (
|
||||
order_keys,
|
||||
custom_meta_data_keys,
|
||||
ORDER_KEYS,
|
||||
CUSTOM_META_DATA_KEYS,
|
||||
)
|
||||
from camisatoshi_wordpress_reports.utils import safe_zero_division
|
||||
|
||||
|
|
@ -19,32 +19,32 @@ class Order:
|
|||
def meta_data_entries(self):
|
||||
return {
|
||||
meta_data_entry["key"]: meta_data_entry["value"]
|
||||
for meta_data_entry in self.raw_data[order_keys.meta_data]
|
||||
for meta_data_entry in self.raw_data[ORDER_KEYS.meta_data]
|
||||
}
|
||||
|
||||
def units_of_sku(self, sku: str) -> int:
|
||||
units = 0
|
||||
for line in self[order_keys.line_items]:
|
||||
if line[order_keys.line_item_keys.sku] == sku:
|
||||
units += line[order_keys.line_item_keys.quantity]
|
||||
for line in self[ORDER_KEYS.line_items]:
|
||||
if line[ORDER_KEYS.line_item_keys.sku] == sku:
|
||||
units += line[ORDER_KEYS.line_item_keys.quantity]
|
||||
return units
|
||||
|
||||
def sales_of_sku(self, sku: str) -> float:
|
||||
sales = 0
|
||||
for line in self[order_keys.line_items]:
|
||||
if line[order_keys.line_item_keys.sku] == sku:
|
||||
sales += float(line[order_keys.line_item_keys.total])
|
||||
for line in self[ORDER_KEYS.line_items]:
|
||||
if line[ORDER_KEYS.line_item_keys.sku] == sku:
|
||||
sales += float(line[ORDER_KEYS.line_item_keys.total])
|
||||
return sales
|
||||
|
||||
def sats_received_for_sku(self, sku: str) -> float:
|
||||
total_order_eur = float(self[order_keys.total])
|
||||
total_order_eur = float(self[ORDER_KEYS.total])
|
||||
eur_of_sku = self.sales_of_sku(sku)
|
||||
|
||||
monetary_weight_of_sku_in_order = safe_zero_division(
|
||||
eur_of_sku, total_order_eur
|
||||
)
|
||||
total_order_sats_received = float(
|
||||
self.meta_data_entries[custom_meta_data_keys.sats_received]
|
||||
self.meta_data_entries[CUSTOM_META_DATA_KEYS.sats_received]
|
||||
)
|
||||
sats_received_for_sku = (
|
||||
monetary_weight_of_sku_in_order * total_order_sats_received
|
||||
|
|
@ -53,8 +53,8 @@ class Order:
|
|||
return sats_received_for_sku
|
||||
|
||||
def contains_sku(self, sku: str) -> bool:
|
||||
for item in self[order_keys.line_items]:
|
||||
if item[order_keys.line_item_keys.sku] == sku:
|
||||
for item in self[ORDER_KEYS.line_items]:
|
||||
if item[ORDER_KEYS.line_item_keys.sku] == sku:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ class Order:
|
|||
|
||||
def is_settled_with_um(self):
|
||||
is_settled = self.meta_data_entries.get(
|
||||
custom_meta_data_keys.is_settled_um, None
|
||||
CUSTOM_META_DATA_KEYS.is_settled_um, None
|
||||
)
|
||||
|
||||
return bool(is_settled)
|
||||
|
|
@ -107,7 +107,7 @@ class Orders:
|
|||
|
||||
for order in self:
|
||||
if not order.contains_meta_data_entry(
|
||||
custom_meta_data_keys.sats_received
|
||||
CUSTOM_META_DATA_KEYS.sats_received
|
||||
):
|
||||
orders_without_sats_received.append(order)
|
||||
continue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue