diff --git a/assets/admin/components/ServiceInsuranceModal.tsx b/assets/admin/components/ServiceInsuranceModal.tsx index 045f9048..35b4119a 100644 --- a/assets/admin/components/ServiceInsuranceModal.tsx +++ b/assets/admin/components/ServiceInsuranceModal.tsx @@ -181,7 +181,7 @@ function ContractCard({ contract, item }: { contract: TenantInsurance; item: Ser {!draft.covered && !isLoading && (
این خدمت تحت این بیمه پوشش ندارد -
diff --git a/assets/admin/components/session/PaymentStep.tsx b/assets/admin/components/session/PaymentStep.tsx index f54d2951..715f1deb 100644 --- a/assets/admin/components/session/PaymentStep.tsx +++ b/assets/admin/components/session/PaymentStep.tsx @@ -71,7 +71,8 @@ export default function PaymentStep({ recordUuid, session, walletBalance, onCont const payMut = useMutation({ mutationFn: (body: object) => api.post(`/api/v1/session/${sessionUuid}/payments`, body), - onSuccess: () => { invalidate(); setAmount(0); toast.success('پرداخت ثبت شد'); }, + // بعد از ثبت، آکاردئون بسته می‌شود تا باز شدن بعدی مانده‌ی به‌روزشده را پیش‌فرض بگذارد. + onSuccess: () => { invalidate(); setAmount(0); setExpanded(null); toast.success('پرداخت ثبت شد'); }, onError: (e: Error) => toast.error(e.message), }); @@ -128,6 +129,17 @@ export default function PaymentStep({ recordUuid, session, walletBalance, onCont : Math.max(0, finalPrice - discountRials); const debt = session.remaining_rials ?? session.patient_debt_rials ?? 0; + /** + * مبلغ پیش‌فرض هنگام باز شدن هر روش پرداخت = مانده‌ی فعلی (تومان). + * چون `debt` از `remaining_rials` سرور می‌آید، بعد از هر پرداخت جزئی خودش کم می‌شود؛ + * پس در پرداخت چندروشه، روش بعدی باقی‌مانده‌ی درست را پیش‌فرض می‌گیرد. + * برای کیف پول سقفِ موجودی هم اعمال می‌شود. + */ + const defaultAmountFor = (method: string) => { + const cap = method === 'wallet' ? Math.min(debt, walletBalance) : debt; + return rialToToman(Math.max(0, cap)); + }; + return ( <> {/* هزینه سرویس */} @@ -264,7 +276,7 @@ export default function PaymentStep({ recordUuid, session, walletBalance, onCont