loan paid off detail better
This commit is contained in:
@@ -6,6 +6,35 @@ import apiService from '../../services/apiService';
|
||||
import { COLORS } from '../../constants/colors';
|
||||
import { StatusBar } from 'expo-status-bar';
|
||||
|
||||
// Add helper format functions
|
||||
const formatDate = (dateStr) => {
|
||||
if (!dateStr) return '';
|
||||
const d = new Date(dateStr);
|
||||
if (isNaN(d)) return dateStr;
|
||||
return d.toLocaleDateString('tk-TM');
|
||||
};
|
||||
|
||||
const formatDateTime = (dateStr) => {
|
||||
if (!dateStr) return '';
|
||||
const d = new Date(dateStr);
|
||||
if (isNaN(d)) return dateStr;
|
||||
return d.toLocaleString('tk-TM', {
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
day: '2-digit',
|
||||
month: '2-digit',
|
||||
year: 'numeric',
|
||||
});
|
||||
};
|
||||
|
||||
// Inline component for a key/value row
|
||||
const DetailRow = ({ label, value, showBorder = true }) => (
|
||||
<View style={[styles.detailRow, showBorder && styles.detailRowBorder]}>
|
||||
<Text style={styles.detailKey}>{label}</Text>
|
||||
<Text style={styles.detailValue}>{String(value)}</Text>
|
||||
</View>
|
||||
);
|
||||
|
||||
const LoanPaidOffLetterOrderDetailsScreen = () => {
|
||||
const navigation = useNavigation();
|
||||
const route = useRoute();
|
||||
@@ -71,55 +100,50 @@ const LoanPaidOffLetterOrderDetailsScreen = () => {
|
||||
</TouchableOpacity>
|
||||
|
||||
<ScrollView contentContainerStyle={{ paddingBottom: 40, paddingHorizontal: 24 }}>
|
||||
<Text style={styles.title}>Güwanama {order.id}</Text>
|
||||
<Text style={styles.title}>Karzyň ýapylandygy barada güwanama maglumatlary</Text>
|
||||
|
||||
{/* Basic order info */}
|
||||
<View style={styles.detailCard}>
|
||||
{[
|
||||
'id',
|
||||
'region',
|
||||
'branch_id',
|
||||
'customer_name',
|
||||
'customer_surname',
|
||||
'customer_patronic_name',
|
||||
'born_at',
|
||||
'phone',
|
||||
'passport_serie',
|
||||
'passport_id',
|
||||
'status',
|
||||
'notes',
|
||||
'loan_contract_number',
|
||||
'loan_contract_date',
|
||||
'loan_amount',
|
||||
'loan_reason',
|
||||
].filter((k) => order[k] !== undefined && order[k] !== null).map((key, idx, arr) => {
|
||||
const titles = {
|
||||
id: 'ID',
|
||||
region: 'Welaýat',
|
||||
branch_id: 'Şahamça',
|
||||
customer_name: 'Ady',
|
||||
customer_surname: 'Familiýasy',
|
||||
customer_patronic_name: 'Atasynyň ady',
|
||||
born_at: 'Doglan senesi',
|
||||
phone: 'Telefon',
|
||||
passport_serie: 'Passport seriýa',
|
||||
passport_id: 'Passport nomer',
|
||||
status: 'Status',
|
||||
notes: 'Bellikler',
|
||||
loan_contract_number: 'Karz şertnamanyň belgisi',
|
||||
loan_contract_date: 'Karz şertnamanyň senesi',
|
||||
loan_amount: 'Karzyň möçberi',
|
||||
loan_reason: 'Karzyň maksady',
|
||||
};
|
||||
return (
|
||||
<View
|
||||
key={key}
|
||||
style={[styles.detailRow, idx !== arr.length - 1 && styles.detailRowBorder]}
|
||||
>
|
||||
<Text style={styles.detailKey}>{titles[key]}</Text>
|
||||
<Text style={styles.detailValue}>{String(order[key])}</Text>
|
||||
</View>
|
||||
);
|
||||
})}
|
||||
<DetailRow label="ID" value={order.id} />
|
||||
{order.created_at && (
|
||||
<DetailRow label="Döredilen wagty" value={formatDateTime(order.created_at)} />
|
||||
)}
|
||||
{order.status && <DetailRow label="Status" value={order.status} />}
|
||||
{<DetailRow label="Bellik" value={order.notes ?? '-'} showBorder={false} />}
|
||||
</View>
|
||||
|
||||
{/* Lokasiýa */}
|
||||
{(order.region || order.branch_id) && (
|
||||
<>
|
||||
<Text style={styles.sectionTitle}>Lokasiýa</Text>
|
||||
<View style={styles.detailCard}>
|
||||
{order.region && <DetailRow label="Welaýat" value={order.region} />}
|
||||
{order.branch_id && <DetailRow label="Şahamça" value={order.branch_id} showBorder={false} />}
|
||||
</View>
|
||||
</>
|
||||
)}
|
||||
|
||||
{/* Şahsy maglumatlar */}
|
||||
<Text style={styles.sectionTitle}>Şahsy maglumatlar</Text>
|
||||
<View style={styles.detailCard}>
|
||||
<DetailRow label="Doly ady" value={`${order.customer_name} ${order.customer_surname} ${order.customer_patronic_name ?? ''}`.trim()} />
|
||||
{order.born_at && (
|
||||
<DetailRow label="Doglan güni" value={formatDate(order.born_at)} />
|
||||
)}
|
||||
{order.phone && <DetailRow label="Telefon" value={order.phone} />}
|
||||
{order.passport_serie && <DetailRow label="Pasport seriýasy" value={order.passport_serie} />}
|
||||
{order.passport_id && <DetailRow label="Pasport belgisi" value={order.passport_id} showBorder={false} />}
|
||||
</View>
|
||||
|
||||
{/* Karz barada maglumatlar */}
|
||||
<Text style={styles.sectionTitle}>Karz barada maglumatlar</Text>
|
||||
<View style={styles.detailCard}>
|
||||
{order.loan_contract_number && <DetailRow label="Karz şertnamanyň belgisi" value={order.loan_contract_number} />}
|
||||
{order.loan_contract_date && (
|
||||
<DetailRow label="Karz şertnamanyň senesi" value={formatDate(order.loan_contract_date)} />
|
||||
)}
|
||||
{order.loan_amount && <DetailRow label="Karzyň möçberi" value={order.loan_amount} />}
|
||||
{order.loan_reason && <DetailRow label="Karzyň maksady" value={order.loan_reason} showBorder={false} />}
|
||||
</View>
|
||||
|
||||
<TouchableOpacity style={styles.deleteBtn} onPress={handleDelete}>
|
||||
@@ -188,6 +212,12 @@ const styles = StyleSheet.create({
|
||||
fontSize: 16,
|
||||
fontWeight: '600',
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 18,
|
||||
fontWeight: '700',
|
||||
color: COLORS.textPrimary,
|
||||
marginBottom: 12,
|
||||
},
|
||||
});
|
||||
|
||||
export default LoanPaidOffLetterOrderDetailsScreen;
|
||||
Reference in New Issue
Block a user