diff options
Diffstat (limited to 'handlers/user/pay_invoice.py')
| -rw-r--r-- | handlers/user/pay_invoice.py | 22 |
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 | ||
| 21 | from libs.fsm import get_data, set_data | 21 | from libs.fsm import get_data, set_data |
| 22 | from libs.user import mention | 22 | from libs.user import mention |
| 23 | from models import Payment, PaymentStatus, ReceiptFile, ReceiptFileType, User, UserRole | 23 | from models import ( |
| 24 | Invoice, | ||
| 25 | Payment, | ||
| 26 | PaymentStatus, | ||
| 27 | ReceiptFile, | ||
| 28 | ReceiptFileType, | ||
| 29 | User, | ||
| 30 | UserRole, | ||
| 31 | ) | ||
| 24 | from models.callback_data import PayInvoiceClb, PaymentStatusClb | 32 | from models.callback_data import PayInvoiceClb, PaymentStatusClb |
| 25 | 33 | ||
| 26 | router = Router(name="pay_invoice") | 34 | router = 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_( |
