aboutsummaryrefslogtreecommitdiff
path: root/handlers/user/pay_invoice.py
diff options
context:
space:
mode:
Diffstat (limited to 'handlers/user/pay_invoice.py')
-rw-r--r--handlers/user/pay_invoice.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/handlers/user/pay_invoice.py b/handlers/user/pay_invoice.py
index 98f80a6..db75f47 100644
--- a/handlers/user/pay_invoice.py
+++ b/handlers/user/pay_invoice.py
@@ -20,7 +20,15 @@ from sqlalchemy.ext.asyncio import AsyncSession
20 20
21from libs.fsm import get_data, set_data 21from libs.fsm import get_data, set_data
22from libs.user import mention 22from libs.user import mention
23from models import Payment, PaymentStatus, ReceiptFile, ReceiptFileType, User, UserRole 23from models import (
24 Invoice,
25 Payment,
26 PaymentStatus,
27 ReceiptFile,
28 ReceiptFileType,
29 User,
30 UserRole,
31)
24from models.callback_data import PayInvoiceClb, PaymentStatusClb 32from models.callback_data import PayInvoiceClb, PaymentStatusClb
25 33
26router = Router(name="pay_invoice") 34router = Router(name="pay_invoice")
@@ -44,7 +52,19 @@ async def button(
44 state: FSMContext, 52 state: FSMContext,
45 callback_data: PayInvoiceClb, 53 callback_data: PayInvoiceClb,
46 session: AsyncSession, 54 session: AsyncSession,
55 user: User,
47) -> None: 56) -> None:
57 if user.is_admin():
58 await clb.answer("Администраторы не могут оплачивать счета", show_alert=True)
59 return
60
61 invoice = await session.get(Invoice, callback_data.invoice_id)
62 assert invoice is not None
63
64 if user.datetime > invoice.datetime:
65 await clb.answer("Вы не можете оплатить данный счёт", show_alert=True)
66 return
67
48 payment = await session.scalar( 68 payment = await session.scalar(
49 select(Payment).where( 69 select(Payment).where(
50 and_( 70 and_(