from django.urls import reverse from playwright.sync_api import expect from .base import BasePage class PaymentsPage(BasePage): def select_customer(self, mobile): self.page.get_by_label('جست‌وجو و انتخاب مشتری', exact=False).fill(mobile) result = self.page.locator('.pay-customer-result').filter(has_text=mobile) result.get_by_role('button', name='انتخاب این مشتری', exact=True).click() expect(self.page.locator('[data-selected-customer]')).to_contain_text(mobile) def open_hub(self): self.goto(reverse('payments:home')) expect(self.page.get_by_role('heading',name='چهارسو',exact=True)).to_be_visible() def send_receipt(self, account_id, png, linked=False): self.goto(reverse('payments:receipt_new')) if not linked: self.page.get_by_label('واریز مستقل',exact=True).check() self.page.locator('#id_paid_amount').fill('۱۲۳۴۵') self.page.locator('#id_destination_account').select_option(str(account_id)) self.page.get_by_role('button',name='امروز',exact=True).click() self.page.locator('#id_receipt_image').set_input_files({'name':'receipt.png','mimeType':'image/png','buffer':png}) self.page.get_by_role('button',name='ثبت و ارسال فیش').click() expect(self.page.locator('.flash')).to_contain_text('فیش ثبت شد و در انتظار بررسی است.') def approve(self, receipt_id, senior=False): self.goto(reverse('staff_payments:receipt_detail',args=[receipt_id])) if senior: self.page.locator('#decision-reason').fill('تطبیق پرداخت بررسی شد') self.page.get_by_role('button',name='تأیید نهایی ارشد' if senior else 'ثبت تأیید من',exact=True).click() expect(self.page.locator('.flash')).to_contain_text('تصمیم ثبت شد.')