import { useState } from 'react'; import { View, Text, TextInput, TouchableOpacity, ScrollView, Alert, ActivityIndicator } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { router } from 'expo-router'; import { useQuery } from '@tanstack/react-query'; import { api } from '../../../services/api'; export default function SubmitRemittanceScreen() { const [notes, setNotes] = useState(''); const [loading, setLoading] = useState(false); // Fetch unremitted payments to auto-fill amount const { data: unremittedData, isLoading: loadingUnremitted } = useQuery({ queryKey: ['unremitted'], queryFn: () => api.get('/api/v1/payments?unremitted=true').then(r => r.data).catch(() => null), }); const unremittedPayments: any[] = Array.isArray(unremittedData?.data) ? unremittedData.data : Array.isArray(unremittedData) ? unremittedData : []; const totalAmount = unremittedData?.totalUnremitted ?? unremittedPayments.reduce((s: number, p: any) => s + Number(p.amount ?? 0), 0); const submit = async () => { if (totalAmount <= 0) return Alert.alert('Nothing to Submit', 'You have no unremitted payments to submit.'); setLoading(true); try { await api.post('/api/v1/remittances', { totalAmount: Number(totalAmount), notes: notes.trim() || undefined }); Alert.alert('Submitted!', `₱${Number(totalAmount).toLocaleString()} remittance submitted.`, [ { text: 'OK', onPress: () => router.back() }, ]); } catch (e: any) { Alert.alert('Error', e?.response?.data?.message ?? 'Submission failed. Please try again.'); } finally { setLoading(false); } }; return ( router.back()} style={{ marginBottom: 12 }} activeOpacity={0.7}> ← Back Submit Remittance End-of-day collection {/* Total amount summary card */} Total to Remit {loadingUnremitted ? ( ) : ( <> 0 ? '#059669' : '#94A3B8' }}> ₱{Number(totalAmount).toLocaleString()} {unremittedPayments.length > 0 && ( From {unremittedPayments.length} collection{unremittedPayments.length !== 1 ? 's' : ''} )} )} {/* Breakdown of payments */} {unremittedPayments.length > 0 && ( Breakdown {unremittedPayments.map((p: any) => ( {p.client?.firstName} {p.client?.lastName} {p.paymentMethod} · {p.client?.accountNumber} ₱{Number(p.amount).toLocaleString()} ))} )} {/* Notes */} Notes (optional) 0 ? '#059669' : '#CBD5E1', borderRadius: 14, paddingVertical: 18, alignItems: 'center' }} onPress={submit} disabled={loading || loadingUnremitted || totalAmount <= 0} activeOpacity={0.8} > {loading ? : Submit ₱{Number(totalAmount).toLocaleString()}} ); }