From 9c905f22de4fa2e2f60ea9d473c14cb075a244e2 Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Thu, 26 Mar 2026 16:23:52 +0300 Subject: Add invoices command --- handlers/user/pay_invoice.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'handlers/user/pay_invoice.py') 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 from libs.fsm import get_data, set_data from libs.user import mention -from models import Payment, PaymentStatus, ReceiptFile, ReceiptFileType, User, UserRole +from models import ( + Invoice, + Payment, + PaymentStatus, + ReceiptFile, + ReceiptFileType, + User, + UserRole, +) from models.callback_data import PayInvoiceClb, PaymentStatusClb router = Router(name="pay_invoice") @@ -44,7 +52,19 @@ async def button( state: FSMContext, callback_data: PayInvoiceClb, session: AsyncSession, + user: User, ) -> None: + if user.is_admin(): + await clb.answer("Администраторы не могут оплачивать счета", show_alert=True) + return + + invoice = await session.get(Invoice, callback_data.invoice_id) + assert invoice is not None + + if user.datetime > invoice.datetime: + await clb.answer("Вы не можете оплатить данный счёт", show_alert=True) + return + payment = await session.scalar( select(Payment).where( and_( -- cgit v1.3