diff --git a/assets/admin/components/session/PaymentStep.tsx b/assets/admin/components/session/PaymentStep.tsx index 86091113..6e5844fb 100644 --- a/assets/admin/components/session/PaymentStep.tsx +++ b/assets/admin/components/session/PaymentStep.tsx @@ -9,6 +9,7 @@ import type { DiscountSuggestion } from '../../types'; import type { SessionCardData } from '../SessionServiceCard'; import SearchableSelect from '../ui/SearchableSelect'; import PersianDateInput from '../ui/PersianDateInput'; +import PriceInput from '../ui/PriceInput'; import { Step2PaymentCard, FilesServiceBalanceWallet, TrashRed } from '../icons/FilesServiceIcons'; /** روش‌های پرداخت — همان چهار گزینه‌ی آکاردئون tauri Step2Payment. */ @@ -48,10 +49,10 @@ export default function PaymentStep({ recordUuid, session, walletBalance, onCont const sessionUuid = session.uuid; const [discountType, setDiscountType] = useState(''); - const [discountValue, setDiscountValue] = useState(''); + const [discountValue, setDiscountValue] = useState(0); const [paymentDate, setPaymentDate] = useState(todayISO()); const [expanded, setExpanded] = useState(null); - const [amount, setAmount] = useState(''); + const [amount, setAmount] = useState(0); const invalidate = () => { qc.invalidateQueries({ queryKey: ['patient-sessions', recordUuid] }); @@ -67,7 +68,7 @@ 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(''); toast.success('پرداخت ثبت شد'); }, + onSuccess: () => { invalidate(); setAmount(0); toast.success('پرداخت ثبت شد'); }, onError: (e: Error) => toast.error(e.message), }); @@ -78,19 +79,19 @@ export default function PaymentStep({ recordUuid, session, walletBalance, onCont const suggestions: DiscountSuggestion[] = (suggestionsQ.data?.data as any)?.data ?? (suggestionsQ.data?.data as any) ?? []; const applyDiscount = () => { - if (!discountType || !discountValue) return; - discountMut.mutate({ discount_type: discountType, discount_value: Number(discountValue) }); + if (!discountType || discountValue <= 0) return; + discountMut.mutate({ discount_type: discountType, discount_value: discountValue }); }; const applyRule = (ruleUuid: string) => { discountMut.mutate({ discount_rule_uuid: ruleUuid }); }; const removeDiscount = () => { - setDiscountType(''); setDiscountValue(''); + setDiscountType(''); setDiscountValue(0); discountMut.mutate({ discount_rule_uuid: null }); }; const submitPayment = (method: string) => { - if (!amount) return; - payMut.mutate({ method, amount_rials: Number(amount), paid_at: isoToUnix(paymentDate) }); + if (amount <= 0) return; + payMut.mutate({ method, amount_rials: amount, paid_at: isoToUnix(paymentDate) }); }; const finalPrice = session.final_price_rials ?? 0; @@ -146,19 +147,17 @@ export default function PaymentStep({ recordUuid, session, walletBalance, onCont placeholder="مبلغ تخفیف" /> - setDiscountValue(e.target.value)} + onChange={setDiscountValue} + placeholder="مقدار تخفیف را وارد نمایید" style={{ flex: 1, minWidth: 0, height: 40, padding: '0 12px', fontSize: 13, border: 'none', outline: 'none', background: 'transparent', color: 'inherit' }} /> {open && (
- setAmount(e.target.value)} + onChange={setAmount} style={{ flex: 1, height: 40 }} />