import { View, Text, ScrollView, TouchableOpacity, ActivityIndicator } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useLocalSearchParams, router } from 'expo-router'; import { useQuery } from '@tanstack/react-query'; import { api } from '../../../services/api'; const STATUS_CONFIG: Record = { PENDING: { color: '#92400E', bg: '#FEF3C7' }, CONFIRMED: { color: '#166534', bg: '#DCFCE7' }, DISPUTED: { color: '#991B1B', bg: '#FEE2E2' }, }; function InfoRow({ label, value, isLast }: { label: string; value?: string | null; isLast?: boolean }) { if (!value) return null; return ( {label} {value} ); } 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?.data ?? r.data), }); if (isLoading) { return ( ); } const status = data?.status ?? 'PENDING'; const st = STATUS_CONFIG[status] ?? { color: '#6B7280', bg: '#F1F5F9' }; const payments: any[] = data?.payments ?? []; return ( {/* Header */} router.back()} style={{ marginBottom: 12 }} activeOpacity={0.7}> ← Back Remittance {data?.createdAt ? new Date(data.createdAt).toLocaleDateString('en-PH', { year: 'numeric', month: 'long', day: 'numeric' }) : ''} {status} {/* Total amount card */} Total Amount ₱{Number(data?.totalAmount ?? 0).toLocaleString()} {payments.length > 0 && ( {payments.length} payment{payments.length !== 1 ? 's' : ''} included )} {data?.notes && ( "{data.notes}" )} {/* Details */} {/* Payments breakdown */} {payments.length > 0 && ( <> Payments ({payments.length}) {payments.map((p: any) => ( {p.client?.firstName} {p.client?.lastName} {p.client?.accountNumber} · {p.channel ?? p.paymentMethod} {p.referenceNumber && ( Ref: {p.referenceNumber} )} ₱{Number(p.amount).toLocaleString()} ))} )} ); }