import { router, useLocalSearchParams } from 'expo-router'; import { useState } from 'react'; import { ScrollView, Text, TextInput, View } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useCreatePurchaseOrder, usePart } from '@/api/ressources'; import { BoutonTel, Carte, EnteteFiche, LigneInfo } from '@/composants/ui'; import { useTokens } from '@/theme/tokens'; /** Nouveau BC pré-rempli depuis l'alerte stock — maquette écran 6. Une * seule ligne (cette pièce) : le bon de commande multi-lignes détaillé * reste au web (D4). */ export default function PageCommander() { const t = useTokens(); const { id } = useLocalSearchParams<{ id: string }>(); const { data: piece } = usePart(id); const creation = useCreatePurchaseOrder(); const manquant = piece ? Math.max(piece.threshold - piece.stock, 1) : 1; const [quantite, setQuantite] = useState(String(manquant)); const [prix, setPrix] = useState(''); if (!piece || !piece.supplierId) return null; const prixDefaut = piece.lastUnitPrice != null ? String(piece.lastUnitPrice) : ''; const prixSaisi = prix || prixDefaut; const qte = Number(quantite); const pu = Number(prixSaisi); const valide = qte > 0 && pu >= 0 && Number.isFinite(qte) && Number.isFinite(pu); return ( Quantité Prix unitaire (MAD) {creation.isError ? ( {creation.error.message} ) : null} creation.mutate( { supplierId: piece.supplierId!, lines: [{ partId: piece.id, quantity: qte, unitPrice: pu }], }, { onSuccess: () => (router.canGoBack() ? router.back() : router.replace('/stock')) }, ) } /> ); }