fix(promo): Исправлена ошибка с дублированием скидки при использование промокода

This commit is contained in:
VAQYBIN
2026-01-20 00:51:05 +05:00
parent baaf5c457f
commit dcc7f9eb72
@@ -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 = (