import { ChevronDownIcon } from '@heroicons/react/24/outline'; import { formatDate, formatRial } from '../lib/utils'; import { PAYMENT_METHOD_LABELS } from '../lib/paymentMethods'; import { FilesServicePaymentsCheck } from './icons/FilesServiceIcons'; export interface SessionPaymentData { uuid: string; services?: Array<{ service_name?: string; name?: string }>; visit_price_rials?: number; doctor_name?: string | null; final_price_rials?: number; payment_method?: string; is_paid?: boolean; created_at?: number; updated_at?: number; } const PAYMENT_LABELS = PAYMENT_METHOD_LABELS; /** vertical hairline divider between meta columns (tauri MUI vertical Divider). */ function VDivider({ h = 24 }: { h?: number }) { return ; } function Meta({ label, value }: { label: string; value: string }) { return ( {label}: {value} ); } /** * A patient «پرداختها» accordion — one settled/unsettled مراجعه (session) — * ported from tauri files/tabs/PaymentsSection. Header shows the service, date, * final price and settlement badge; the body lists the session's settlement * (real model = one payment_method per session), or the empty message. */ export default function SessionPaymentAccordion({ session, expanded, onToggle }: { session: SessionPaymentData; expanded: boolean; onToggle: () => void; }) { const names = (session.services ?? []).map((s) => s.service_name || s.name).filter(Boolean) as string[]; if ((session.visit_price_rials ?? 0) > 0) names.unshift('ویزیت'); const name = names.length ? names.join(' - ') : 'ویزیت'; const paid = !!session.is_paid; const finalPrice = formatRial(session.final_price_rials ?? 0); return (