import React, { useState } from 'react'; import { toast } from 'sonner'; import SettingsLayout from '../components/layout/SettingsLayout'; import PageHeader from '../components/ui/PageHeader'; import PaymentMethodHead, { type PaymentTab } from '../components/paymentMethods/PaymentMethodHead'; import BankAccountTable from '../components/paymentMethods/BankAccountTable'; import PosTable from '../components/paymentMethods/PosTable'; import BankAccountFormModal from '../components/paymentMethods/BankAccountFormModal'; import PosFormModal from '../components/paymentMethods/PosFormModal'; import { useAssignBankAccountEnvironment, useAssignPosEnvironment, useBankAccounts, usePosDevices, useToggleBankAccountStatus, useTogglePosStatus, type BankAccount, type Pos, } from '../hooks/usePaymentMethods'; import { useAuthStore } from '../stores/authStore'; /** * صفحهٔ «مدیریت پرداخت» (/admin/my-financial) — پورت تب PaymentManagement از * clinic-pro-tauri. روش‌های پرداختِ **محیط فعال** (حساب بانکی + کارت‌خوان) که بعداً * از فاکتور مراجعه‌کننده برای ثبت روش پرداخت یک سرویس ارجاع می‌شوند. * * نام محیط در سرتیتر می‌آید چون از فاز ۶ کارت‌ها به محیط تعلق دارند نه به کاربر؛ * بدون آن، کاربرِ چندمحیطی با تعویض محیط فکر می‌کند کارت‌هایش گم شده‌اند. */ function MyFinancialPageContent() { const [activeTab, setActiveTab] = useState('bank'); const [bankModalOpen, setBankModalOpen] = useState(false); const [posModalOpen, setPosModalOpen] = useState(false); const [editingBank, setEditingBank] = useState(null); const [editingPos, setEditingPos] = useState(null); const bankQuery = useBankAccounts(); const posQuery = usePosDevices(); const toggleBank = useToggleBankAccountStatus(); const togglePos = useTogglePosStatus(); const assignBank = useAssignBankAccountEnvironment(); const assignPos = useAssignPosEnvironment(); const context = useAuthStore(s => s.context); const environmentName = context?.name || 'محیط فعال'; const banks = bankQuery.data?.data ?? []; const posDevices = posQuery.data?.data ?? []; const openAdd = () => { if (activeTab === 'bank') { setEditingBank(null); setBankModalOpen(true); } else { setEditingPos(null); setPosModalOpen(true); } }; const onError = (e: unknown) => toast.error(e instanceof Error ? e.message : 'خطا در تغییر وضعیت'); const onAssignError = (e: unknown) => toast.error(e instanceof Error ? e.message : 'خطا در تعیین محیط'); return (
{activeTab === 'bank' ? ( toggleBank.mutate(uuid, { onError })} onEdit={(account) => { setEditingBank(account); setBankModalOpen(true); }} onAssign={(uuid) => assignBank.mutate(uuid, { onError: onAssignError })} onAdd={openAdd} /> ) : ( togglePos.mutate(uuid, { onError })} onEdit={(pos) => { setEditingPos(pos); setPosModalOpen(true); }} onAssign={(uuid) => assignPos.mutate(uuid, { onError: onAssignError })} onAdd={openAdd} /> )}
{ setBankModalOpen(false); setEditingBank(null); }} /> { setPosModalOpen(false); setEditingPos(null); }} />
); } export default function MyFinancialPage() { return ( ); }