// ROCA GOLF — v2.0 · Importar OCs históricas (de otra plataforma) // Sube el .xlsx (2 hojas = 2 empresas), previsualiza con mapeo difuso de PROYECTO, // corrige y confirma. Lista con CRUD. Folio guardado con sufijo 'D'. function moneyI(n) { try { return '$' + fmtMoney(Number(n) || 0); } catch { return '$' + (Number(n)||0).toFixed(2); } } function ScoreBadge({ score }) { if (score === null || score === undefined) return null; const c = score >= 85 ? 'var(--rg-flag-ok)' : (score >= 60 ? 'var(--rg-flag-warn)' : 'var(--rg-flag-over)'); return {score}%; } // ── Modal de edición de una OC importada ────────────────────────────────────── function EditOCModal({ open, onClose, row, proyectos, onSaved }) { const [f, setF] = useState(null); useEffect(() => { if (open && row) setF({ ...row }); }, [open, row]); if (!open || !f) return null; const set = (k, v) => setF(s => ({ ...s, [k]: v })); async function save() { try { await apiFetch('oc_import.php?id=' + f.id, 'PUT', { empresa: f.empresa, folio: f.folio, fecha: f.fecha || null, proyectoid: f.proyectoid, proveedor: f.proveedor, clave_insumo: f.clave_insumo, descripcion: f.descripcion, total: parseFloat(f.total)||0, pagado: parseFloat(f.pagado)||0, pendiente: parseFloat(f.pendiente)||0, moneda: f.moneda || 'MXN', tc: parseFloat(f.tc)||1, }); toast.success('OC actualizada'); onSaved(); onClose(); } catch (e) { toast.error(e.message); } } return ( }>
set('folio',e.target.value)}/>
set('empresa',e.target.value)}/>
Texto original: {f.proyecto_texto}
set('fecha',e.target.value)}/>
set('clave_insumo',e.target.value)}/>
set('proveedor',e.target.value)}/>