import { View, Text, ScrollView, TouchableOpacity, ActivityIndicator } from 'react-native'; import { useLocalSearchParams, router } from 'expo-router'; import { useQuery } from '@tanstack/react-query'; import { api } from '../../../services/api'; const STATUS_COLOR: Record = { PENDING: '#D97706', CONFIRMED: '#16A34A', DISPUTED: '#DC2626' }; const METHOD_ICON: Record = { CASH: '๐Ÿ’ต', GCASH: '๐Ÿ“ฑ', MAYA: '๐Ÿ’™', BANK: '๐Ÿฆ' }; export default function RemittanceDetailScreen() { const { id } = useLocalSearchParams<{ id: string }>(); const { data, isLoading } = useQuery({ queryKey: ['remittance', id], queryFn: () => api.get(`/api/v1/remittances/${id}`).then(r => r.data), }); if (isLoading) return ( ); const status = data?.status ?? 'PENDING'; const statusColor = STATUS_COLOR[status] ?? '#6B7280'; return ( router.back()} className="mr-3 p-1"> โ† Remittance {data?.createdAt ? new Date(data.createdAt).toLocaleDateString() : ''} {status} {/* Summary card */} Total Amount โ‚ฑ{Number(data?.totalAmount ?? 0).toLocaleString()} {data?.notes && {data.notes}} {/* Details */} {[ { label: 'Submitted by', value: data?.collector?.firstName ? `${data.collector.firstName} ${data.collector.lastName}` : undefined }, { label: 'Submitted on', value: data?.createdAt ? new Date(data.createdAt).toLocaleString() : undefined }, { label: 'Confirmed on', value: data?.confirmedAt ? new Date(data.confirmedAt).toLocaleString() : undefined }, { label: 'Confirmed by', value: data?.confirmedBy?.firstName ? `${data.confirmedBy.firstName} ${data.confirmedBy.lastName}` : undefined }, ].filter(r => r.value).map((row, i, arr) => ( {row.label} {row.value} ))} {/* Included payments */} {(data?.payments ?? []).length > 0 && ( <> Included Payments ({data.payments.length}) {data.payments.map((p: any) => ( {METHOD_ICON[p.paymentMethod] ?? '๐Ÿ’ณ'} {p.client?.firstName} {p.client?.lastName} {p.client?.accountNumber} ยท {p.paymentMethod} {p.referenceNumber && Ref: {p.referenceNumber}} โ‚ฑ{Number(p.amount).toLocaleString()} ))} )} ); }