// ROCA GOLF — Vistas CRUD: OC, Insumos, Proveedores, Historial // ── Pago Modal ──────────────────────────────────────────────────────────────── function PagoModal({ open, onClose, oc, user, onSaved }) { const [form, setForm] = useState({ fecha: new Date().toISOString().slice(0,10), monto:'', referencia:'', banco:'', notas:'' }); const [saving, setSaving] = useState(false); const [err, setErr] = useState(''); const f = k => e => setForm(v => ({...v, [k]: e.target.value})); const maxMonto = oc ? parseFloat(oc.montopendiente) : 0; async function handleSave() { const monto = parseFloat(form.monto); if (!monto || monto <= 0) { setErr('Ingresa un monto válido'); return; } if (monto > maxMonto + 0.01) { setErr(`El monto excede el pendiente ($${fmtMoney(maxMonto)})`); return; } setSaving(true); setErr(''); try { await apiFetch('pagos.php', 'POST', { ...form, monto, oc_id: oc.id, usuarioid: user?.id || 1 }); toast.success(`Pago de $${fmtMoney(monto)} registrado`); onSaved(); onClose(); } catch (e) { setErr(e.message); } finally { setSaving(false); } } return ( }> {oc &&
OC #{fmtFolio(oc.folio)} · Pendiente: ${fmtMoney(oc.montopendiente)}
} {err &&
{err}
}