feat(currency): update currency display to toman in admin panel; implement conversion functions for rial to toman and vice versa

This commit is contained in:
hamed
2026-07-03 10:31:17 +03:30
parent 34d521434f
commit 6dbbeb1c70
11 changed files with 200 additions and 58 deletions
@@ -3,7 +3,7 @@ import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { TrashIcon, PlusIcon, PencilIcon } from '@heroicons/react/24/outline';
import { toast } from 'sonner';
import { api } from '../lib/api';
import { formatRial } from '../lib/utils';
import { formatRial, rialToToman, tomanToRial } from '../lib/utils';
import SearchableSelect from './ui/SearchableSelect';
interface Contract {
@@ -66,16 +66,16 @@ export default function TenantInsuranceContracts() {
setAddOpen(false);
setInsuranceId(String(c.insurance_id));
setCoverage(String(c.coverage_percent ?? ''));
setFranchise(String(c.franchise_rials ?? ''));
setCeiling(c.annual_ceiling_rials != null ? String(c.annual_ceiling_rials) : '');
setFranchise(c.franchise_rials != null ? String(rialToToman(c.franchise_rials)) : '');
setCeiling(c.annual_ceiling_rials != null ? String(rialToToman(c.annual_ceiling_rials)) : '');
};
const editMut = useMutation({
mutationFn: () =>
api.patch(`/api/v1/billing/tenant-insurances/${editUuid}`, {
coverage_percent: Number(coverage) || 0,
franchise_rials: Number(franchise) || 0,
annual_ceiling_rials: ceiling === '' ? null : Number(ceiling),
franchise_rials: tomanToRial(Number(franchise) || 0),
annual_ceiling_rials: ceiling === '' ? null : tomanToRial(Number(ceiling)),
}),
onSuccess: () => {
toast.success('قرارداد بیمه ویرایش شد');
@@ -90,8 +90,8 @@ export default function TenantInsuranceContracts() {
api.post('/api/v1/billing/tenant-insurances', {
insurance_id: Number(insuranceId),
coverage_percent: Number(coverage) || 0,
franchise_rials: Number(franchise) || 0,
annual_ceiling_rials: ceiling === '' ? null : Number(ceiling),
franchise_rials: tomanToRial(Number(franchise) || 0),
annual_ceiling_rials: ceiling === '' ? null : tomanToRial(Number(ceiling)),
}),
onSuccess: () => {
toast.success('قرارداد بیمه فعال شد');
@@ -145,11 +145,11 @@ export default function TenantInsuranceContracts() {
<input type="number" min={0} max={100} dir="ltr" className="input" style={{ width: 100 }} value={coverage} onChange={(e) => setCoverage(e.target.value)} />
</div>
<div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>
<label style={{ fontSize: 11.5, fontWeight: 600 }}>فرانشیز (ریال)</label>
<label style={{ fontSize: 11.5, fontWeight: 600 }}>فرانشیز (تومان)</label>
<input type="number" min={0} dir="ltr" className="input" style={{ width: 130 }} value={franchise} onChange={(e) => setFranchise(e.target.value)} />
</div>
<div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>
<label style={{ fontSize: 11.5, fontWeight: 600 }}>سقف تعهد (ریال)</label>
<label style={{ fontSize: 11.5, fontWeight: 600 }}>سقف تعهد (تومان)</label>
<input type="number" min={0} dir="ltr" className="input" style={{ width: 130 }} placeholder="بی‌نهایت" value={ceiling} onChange={(e) => setCeiling(e.target.value)} />
</div>
<div style={{ display: 'flex', gap: 6 }}>