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
|
||||||
|
|
||||||
order_keys = SimpleNamespace()
|
ORDER_KEYS = SimpleNamespace()
|
||||||
order_keys.meta_data = "meta_data"
|
ORDER_KEYS.id = "id"
|
||||||
order_keys.total = "total"
|
ORDER_KEYS.meta_data = "meta_data"
|
||||||
order_keys.line_items = "line_items"
|
ORDER_KEYS.total = "total"
|
||||||
|
ORDER_KEYS.line_items = "line_items"
|
||||||
|
|
||||||
order_keys.line_item_keys = SimpleNamespace()
|
ORDER_KEYS.line_item_keys = SimpleNamespace()
|
||||||
order_keys.line_item_keys.sku = "sku"
|
ORDER_KEYS.line_item_keys.sku = "sku"
|
||||||
order_keys.line_item_keys.quantity = "quantity"
|
ORDER_KEYS.line_item_keys.quantity = "quantity"
|
||||||
order_keys.line_item_keys.total = "total"
|
ORDER_KEYS.line_item_keys.total = "total"
|
||||||
|
|
||||||
custom_meta_data_keys = SimpleNamespace()
|
CUSTOM_META_DATA_KEYS = SimpleNamespace()
|
||||||
custom_meta_data_keys.is_settled_um = "is_settled_um"
|
CUSTOM_META_DATA_KEYS.is_settled_um = "is_settled_um"
|
||||||
custom_meta_data_keys.sats_received = "sats_received"
|
CUSTOM_META_DATA_KEYS.sats_received = "sats_received"
|
||||||
|
|
||||||
|
|
||||||
### Other
|
### Other
|
||||||
|
|
||||||
um_first_agreement_percentage = 0.5
|
UM_FIRST_AGREEMENT_PERCENTAGE = 0.5
|
||||||
bbo_royalty_fee = 0.2
|
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.order import Order, Orders
|
||||||
from camisatoshi_wordpress_reports.constants import (
|
from camisatoshi_wordpress_reports.constants import (
|
||||||
um_first_agreement_percentage,
|
ORDER_KEYS,
|
||||||
|
UM_FIRST_AGREEMENT_PERCENTAGE,
|
||||||
DEFAULT_DOTENV_FILEPATH,
|
DEFAULT_DOTENV_FILEPATH,
|
||||||
bbo_royalty_fee,
|
BBO_ROYALTY_FEE_PERCENTAGE,
|
||||||
)
|
)
|
||||||
from camisatoshi_wordpress_reports.report_building import (
|
from camisatoshi_wordpress_reports.report_building import (
|
||||||
OrderObtentionChainBuilder,
|
OrderObtentionChainBuilder,
|
||||||
|
|
@ -109,16 +110,16 @@ def generate_um_report(
|
||||||
for order in unsettled_orders:
|
for order in unsettled_orders:
|
||||||
report.append(
|
report.append(
|
||||||
{
|
{
|
||||||
"order_id": order["id"],
|
"order_id": order[ORDER_KEYS.id],
|
||||||
"sku": relevant_sku,
|
"sku": relevant_sku,
|
||||||
"units_sold": order.units_of_sku(relevant_sku),
|
"units_sold": order.units_of_sku(relevant_sku),
|
||||||
"eur_income": order.sales_of_sku(relevant_sku),
|
"eur_income": order.sales_of_sku(relevant_sku),
|
||||||
"sats_income": order.sats_received_for_sku(relevant_sku),
|
"sats_income": order.sats_received_for_sku(relevant_sku),
|
||||||
"sats_owed_to_um": (
|
"sats_owed_to_um": (
|
||||||
order.sats_received_for_sku(relevant_sku)
|
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.")
|
logger.info("Report generated.")
|
||||||
|
|
@ -157,7 +158,7 @@ def generate_sku_report(start_date, end_date, sku):
|
||||||
for order in relevant_orders:
|
for order in relevant_orders:
|
||||||
report.append(
|
report.append(
|
||||||
{
|
{
|
||||||
"order_id": order["id"],
|
"order_id": order[ORDER_KEYS.id],
|
||||||
"sku": sku,
|
"sku": sku,
|
||||||
"units_sold": order.units_of_sku(sku),
|
"units_sold": order.units_of_sku(sku),
|
||||||
"eur_income": order.sales_of_sku(sku),
|
"eur_income": order.sales_of_sku(sku),
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ import logging
|
||||||
from typing import Dict, Collection
|
from typing import Dict, Collection
|
||||||
|
|
||||||
from camisatoshi_wordpress_reports.constants import (
|
from camisatoshi_wordpress_reports.constants import (
|
||||||
order_keys,
|
ORDER_KEYS,
|
||||||
custom_meta_data_keys,
|
CUSTOM_META_DATA_KEYS,
|
||||||
)
|
)
|
||||||
from camisatoshi_wordpress_reports.utils import safe_zero_division
|
from camisatoshi_wordpress_reports.utils import safe_zero_division
|
||||||
|
|
||||||
|
|
@ -19,32 +19,32 @@ class Order:
|
||||||
def meta_data_entries(self):
|
def meta_data_entries(self):
|
||||||
return {
|
return {
|
||||||
meta_data_entry["key"]: meta_data_entry["value"]
|
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:
|
def units_of_sku(self, sku: str) -> int:
|
||||||
units = 0
|
units = 0
|
||||||
for line in self[order_keys.line_items]:
|
for line in self[ORDER_KEYS.line_items]:
|
||||||
if line[order_keys.line_item_keys.sku] == sku:
|
if line[ORDER_KEYS.line_item_keys.sku] == sku:
|
||||||
units += line[order_keys.line_item_keys.quantity]
|
units += line[ORDER_KEYS.line_item_keys.quantity]
|
||||||
return units
|
return units
|
||||||
|
|
||||||
def sales_of_sku(self, sku: str) -> float:
|
def sales_of_sku(self, sku: str) -> float:
|
||||||
sales = 0
|
sales = 0
|
||||||
for line in self[order_keys.line_items]:
|
for line in self[ORDER_KEYS.line_items]:
|
||||||
if line[order_keys.line_item_keys.sku] == sku:
|
if line[ORDER_KEYS.line_item_keys.sku] == sku:
|
||||||
sales += float(line[order_keys.line_item_keys.total])
|
sales += float(line[ORDER_KEYS.line_item_keys.total])
|
||||||
return sales
|
return sales
|
||||||
|
|
||||||
def sats_received_for_sku(self, sku: str) -> float:
|
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)
|
eur_of_sku = self.sales_of_sku(sku)
|
||||||
|
|
||||||
monetary_weight_of_sku_in_order = safe_zero_division(
|
monetary_weight_of_sku_in_order = safe_zero_division(
|
||||||
eur_of_sku, total_order_eur
|
eur_of_sku, total_order_eur
|
||||||
)
|
)
|
||||||
total_order_sats_received = float(
|
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 = (
|
sats_received_for_sku = (
|
||||||
monetary_weight_of_sku_in_order * total_order_sats_received
|
monetary_weight_of_sku_in_order * total_order_sats_received
|
||||||
|
|
@ -53,8 +53,8 @@ class Order:
|
||||||
return sats_received_for_sku
|
return sats_received_for_sku
|
||||||
|
|
||||||
def contains_sku(self, sku: str) -> bool:
|
def contains_sku(self, sku: str) -> bool:
|
||||||
for item in self[order_keys.line_items]:
|
for item in self[ORDER_KEYS.line_items]:
|
||||||
if item[order_keys.line_item_keys.sku] == sku:
|
if item[ORDER_KEYS.line_item_keys.sku] == sku:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
@ -65,7 +65,7 @@ class Order:
|
||||||
|
|
||||||
def is_settled_with_um(self):
|
def is_settled_with_um(self):
|
||||||
is_settled = self.meta_data_entries.get(
|
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)
|
return bool(is_settled)
|
||||||
|
|
@ -107,7 +107,7 @@ class Orders:
|
||||||
|
|
||||||
for order in self:
|
for order in self:
|
||||||
if not order.contains_meta_data_entry(
|
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)
|
orders_without_sats_received.append(order)
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue