feat(sub): handling upgrade/downgrade

rw integration and /me endpoints are left
This commit is contained in:
2026-08-02 14:16:57 +07:00
parent 24f857ef1b
commit 97a4e819d6
10 changed files with 401 additions and 58 deletions

View File

@@ -1,6 +1,7 @@
from repositories.addons import AddonsRepository
from repositories.pricing import PricingRepository
from schemas.plans import AddonData, OrderDetails, PricingPlans
from services.subscriptions import calculate_order_total
async def get_pricing_model(addons_repo: AddonsRepository, pricing_repo: PricingRepository):
@@ -21,4 +22,9 @@ async def calculate_price(
*, addons_repo: AddonsRepository, order: OrderDetails, pricing: PricingPlans
) -> float:
addons = [await addons_repo.get_by_id(a) for a in order.addons]
return order.devices * pricing.device_price + sum([a.price for a in addons])
return calculate_order_total(
pricing,
order.devices,
[addon.id for addon in addons],
order.duration_days,
)