fix(payment): update currency display from تومان to ریال and adjust amount formatting
This commit is contained in:
@@ -101,7 +101,7 @@ export default function PaymentDetailsPage() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const formatAmount = (rials) => {
|
const formatAmount = (rials) => {
|
||||||
return new Intl.NumberFormat("fa-IR").format(Math.round(parseInt(rials) / 10));
|
return new Intl.NumberFormat("fa-IR").format(parseInt(rials));
|
||||||
};
|
};
|
||||||
|
|
||||||
if (loading) {
|
if (loading) {
|
||||||
@@ -158,7 +158,7 @@ export default function PaymentDetailsPage() {
|
|||||||
<div className="flex justify-between items-center py-3 border-b border-gray-100">
|
<div className="flex justify-between items-center py-3 border-b border-gray-100">
|
||||||
<span className="text-[#616161] font-medium">مبلغ:</span>
|
<span className="text-[#616161] font-medium">مبلغ:</span>
|
||||||
<span className="text-[#3B3B3B] font-bold text-lg">
|
<span className="text-[#3B3B3B] font-bold text-lg">
|
||||||
{formatAmount(payment.amount_rials)} تومان
|
{formatAmount(payment.amount_rials)} ریال
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import { Button, MenuItem, Select, FormControl, InputLabel } from "@mui/material
|
|||||||
import ButtonFixed from "./ButtonFixed";
|
import ButtonFixed from "./ButtonFixed";
|
||||||
import { request } from "@/services/response";
|
import { request } from "@/services/response";
|
||||||
|
|
||||||
const APPOINTMENT_AMOUNT_RIALS = 150000;
|
|
||||||
const PAYMENT_TTL = 900;
|
const PAYMENT_TTL = 900;
|
||||||
|
|
||||||
const banks = [
|
const banks = [
|
||||||
@@ -17,6 +16,7 @@ function Paying({ setStep, appointmentId, expiresAt, doctor, data, isForAnother,
|
|||||||
const [selectedBank, setSelectedBank] = useState("mellat");
|
const [selectedBank, setSelectedBank] = useState("mellat");
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [testMode, setTestMode] = useState(null);
|
const [testMode, setTestMode] = useState(null);
|
||||||
|
const [feeRials, setFeeRials] = useState(null);
|
||||||
|
|
||||||
const computeLeft = () =>
|
const computeLeft = () =>
|
||||||
expiresAt
|
expiresAt
|
||||||
@@ -32,8 +32,11 @@ function Paying({ setStep, appointmentId, expiresAt, doctor, data, isForAnother,
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
request
|
request
|
||||||
.getPaymentConfig()
|
.getPaymentConfig()
|
||||||
.then((res) => setTestMode(Boolean(res?.data?.test_mode)))
|
.then((res) => {
|
||||||
.catch(() => setTestMode(false));
|
setTestMode(Boolean(res?.data?.test_mode));
|
||||||
|
setFeeRials(Number(res?.data?.appointment_fee_rials) || 0);
|
||||||
|
})
|
||||||
|
.catch(() => { setTestMode(false); setFeeRials(0); });
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const formatTime = (seconds) => {
|
const formatTime = (seconds) => {
|
||||||
@@ -42,7 +45,7 @@ function Paying({ setStep, appointmentId, expiresAt, doctor, data, isForAnother,
|
|||||||
return `${m}:${s.toString().padStart(2, "0")}`;
|
return `${m}:${s.toString().padStart(2, "0")}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
const toman = (APPOINTMENT_AMOUNT_RIALS / 10).toLocaleString("fa-IR");
|
const rials = feeRials != null ? feeRials.toLocaleString("fa-IR") : "—";
|
||||||
const patientName = isForAnother
|
const patientName = isForAnother
|
||||||
? [data?.name?.value, data?.family?.value].filter(Boolean).join(" ").trim()
|
? [data?.name?.value, data?.family?.value].filter(Boolean).join(" ").trim()
|
||||||
: data?.name?.value;
|
: data?.name?.value;
|
||||||
@@ -109,7 +112,7 @@ function Paying({ setStep, appointmentId, expiresAt, doctor, data, isForAnother,
|
|||||||
مبلغ قابل پرداخت
|
مبلغ قابل پرداخت
|
||||||
</span>
|
</span>
|
||||||
<span className="text-[#3B3B3B] text-[18px] md:text-[20px] font-bold">
|
<span className="text-[#3B3B3B] text-[18px] md:text-[20px] font-bold">
|
||||||
{toman} <span className="text-[14px] font-normal text-[#616161]">تومان</span>
|
{rials} <span className="text-[14px] font-normal text-[#616161]">ریال</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -195,10 +198,10 @@ function Paying({ setStep, appointmentId, expiresAt, doctor, data, isForAnother,
|
|||||||
className="!flex !w-full md:!w-fit !mr-auto !gap-[6px] !px-[16px] !py-[10px] !min-w-[180px]"
|
className="!flex !w-full md:!w-fit !mr-auto !gap-[6px] !px-[16px] !py-[10px] !min-w-[180px]"
|
||||||
onClick={handlePayment}
|
onClick={handlePayment}
|
||||||
variant="contained"
|
variant="contained"
|
||||||
disabled={loading || testMode === null}
|
disabled={loading || testMode === null || feeRials === null}
|
||||||
>
|
>
|
||||||
<span className={`text-[#FFF] text-[16px] font-medium ${loading ? "opacity-0" : ""}`}>
|
<span className={`text-[#FFF] text-[16px] font-medium ${loading ? "opacity-0" : ""}`}>
|
||||||
{testMode ? "پرداخت آزمایشی" : `پرداخت ${toman} تومان`}
|
{testMode ? "پرداخت آزمایشی" : `پرداخت ${rials} ریال`}
|
||||||
</span>
|
</span>
|
||||||
{!loading && <ArrowLeftB />}
|
{!loading && <ArrowLeftB />}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ function Head({ user }) {
|
|||||||
<div className="flex flex-col gap-[8px] items-start justify-start">
|
<div className="flex flex-col gap-[8px] items-start justify-start">
|
||||||
<p className="text-[#3B3B3B] text-nowrap text-[16px] font-medium">
|
<p className="text-[#3B3B3B] text-nowrap text-[16px] font-medium">
|
||||||
{Number(user?.total_transactions || 0).toLocaleString("fa-IR")}{" "}
|
{Number(user?.total_transactions || 0).toLocaleString("fa-IR")}{" "}
|
||||||
<span className="text-[12px]">تومان</span>
|
<span className="text-[12px]">ریال</span>
|
||||||
</p>
|
</p>
|
||||||
<h1 className="text-[#616161] text-nowrap text-[14px] font-normal">
|
<h1 className="text-[#616161] text-nowrap text-[14px] font-normal">
|
||||||
مجموع تراکنش ها
|
مجموع تراکنش ها
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ function Card({ data, loading }) {
|
|||||||
</TextLoading>
|
</TextLoading>
|
||||||
<TextLoading loading={loading} width={80} height={18}>
|
<TextLoading loading={loading} width={80} height={18}>
|
||||||
<p className="text-[#616161] text-[14px] font-medium">
|
<p className="text-[#616161] text-[14px] font-medium">
|
||||||
{data.amount_rials ? Math.round(data.amount_rials / 10).toLocaleString("fa-IR") : "--"} تومان
|
{data.amount_rials ? Number(data.amount_rials).toLocaleString("fa-IR") : "--"} ریال
|
||||||
</p>
|
</p>
|
||||||
</TextLoading>
|
</TextLoading>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ const TYPE_LABELS = {
|
|||||||
|
|
||||||
function List({ payments, loading, page, totalPages, onPageChange }) {
|
function List({ payments, loading, page, totalPages, onPageChange }) {
|
||||||
const rows = Array.isArray(payments) ? payments : [];
|
const rows = Array.isArray(payments) ? payments : [];
|
||||||
const tableHead = ["ردیف", "شناسه پرداخت", "نوع", "تاریخ", "مبلغ (تومان)", "وضعیت"];
|
const tableHead = ["ردیف", "شناسه پرداخت", "نوع", "تاریخ", "مبلغ (ریال)", "وضعیت"];
|
||||||
const centerTable = [0, 4, 5];
|
const centerTable = [0, 4, 5];
|
||||||
|
|
||||||
if (!loading && rows.length === 0) {
|
if (!loading && rows.length === 0) {
|
||||||
@@ -80,7 +80,7 @@ function List({ payments, loading, page, totalPages, onPageChange }) {
|
|||||||
align="right"
|
align="right"
|
||||||
>
|
>
|
||||||
<TextLoading width={50} height={18} loading={loading}>
|
<TextLoading width={50} height={18} loading={loading}>
|
||||||
{row.amount_rials ? Math.round(row.amount_rials / 10).toLocaleString("fa-IR") : "--"}
|
{row.amount_rials ? Number(row.amount_rials).toLocaleString("fa-IR") : "--"}
|
||||||
</TextLoading>
|
</TextLoading>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell className="!pr-[18px] !text-nowrap" align="right">
|
<TableCell className="!pr-[18px] !text-nowrap" align="right">
|
||||||
|
|||||||
Reference in New Issue
Block a user