import { useState } from 'react'; import { Button, Dialog, DialogActions, DialogContent, DialogTitle, MenuItem, Stack, TextField } from '@mui/material'; import { useCreateCustomer } from '../../../hooks/useCustomers'; import { useSegmentDefinitions } from '../../../hooks/useSegments'; export function CustomerDialog({ open, onClose }: { open: boolean; onClose: () => void }) { const createCustomer = useCreateCustomer(); const { data: definitions } = useSegmentDefinitions(); const branchDef = (definitions ?? []).find((def) => def.isBranchSegment); const [code, setCode] = useState(''); const [name, setName] = useState(''); const [email, setEmail] = useState(''); const [phone, setPhone] = useState(''); const [branchSegmentValueId, setBranchSegmentValueId] = useState(''); const [creditLimit, setCreditLimit] = useState(''); const [paymentTermsDays, setPaymentTermsDays] = useState('30'); const [error, setError] = useState(null); const reset = () => { setCode(''); setName(''); setEmail(''); setPhone(''); setBranchSegmentValueId(''); setCreditLimit(''); setPaymentTermsDays('30'); }; const handleSubmit = async () => { setError(null); if (!branchSegmentValueId) { setError('Select a branch'); return; } try { await createCustomer.mutateAsync({ code, name, email: email || undefined, phone: phone || undefined, branchSegmentValueId, creditLimit: creditLimit ? Number(creditLimit) : undefined, paymentTermsDays: paymentTermsDays ? Number(paymentTermsDays) : undefined, }); onClose(); reset(); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to create customer'); } }; return ( New Customer setCode(e.target.value)} /> setName(e.target.value)} /> setEmail(e.target.value)} /> setPhone(e.target.value)} /> setBranchSegmentValueId(Number(e.target.value))} > {(branchDef?.values ?? []).map((value) => ( {value.code} — {value.description} ))} setCreditLimit(e.target.value)} fullWidth /> setPaymentTermsDays(e.target.value)} fullWidth /> {error && {error}} ); }