fix(promo): Исправлена ошибка с дублированием скидки при использование промокода
This commit is contained in:
@@ -78,22 +78,22 @@ async def _initiate_yk_payment(
|
|||||||
if not callback.message:
|
if not callback.message:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# NEW: Check for active discount and apply if exists
|
# Check for active discount to save metadata (price already discounted from previous step)
|
||||||
original_price = price_rub
|
original_price = None
|
||||||
discount_amount = None
|
discount_amount = None
|
||||||
active_promo_code_id = None
|
active_promo_code_id = None
|
||||||
|
|
||||||
if promo_code_service:
|
if promo_code_service:
|
||||||
active_discount = await active_discount_dal.get_active_discount(session, user_id)
|
active_discount = await active_discount_dal.get_active_discount(session, user_id)
|
||||||
if active_discount:
|
if active_discount:
|
||||||
final_price, discount_amount = promo_code_service.calculate_discounted_price(
|
# Price is already discounted, calculate original price backwards
|
||||||
price_rub, active_discount.discount_percentage
|
discount_pct = active_discount.discount_percentage
|
||||||
)
|
original_price = price_rub / (1 - discount_pct / 100)
|
||||||
price_rub = final_price
|
discount_amount = original_price - price_rub
|
||||||
active_promo_code_id = active_discount.promo_code_id
|
active_promo_code_id = active_discount.promo_code_id
|
||||||
logging.info(
|
logging.info(
|
||||||
f"Applying {active_discount.discount_percentage}% discount to YooKassa payment: "
|
f"Recording {discount_pct}% discount for YooKassa payment: "
|
||||||
f"{original_price} -> {price_rub}"
|
f"original {original_price:.2f} -> final {price_rub}"
|
||||||
)
|
)
|
||||||
|
|
||||||
payment_description = (
|
payment_description = (
|
||||||
|
|||||||
Reference in New Issue
Block a user