diff --git a/public/escrituras/api.php b/public/escrituras/api.php index 71708c3..a42c2b9 100644 --- a/public/escrituras/api.php +++ b/public/escrituras/api.php @@ -45,10 +45,10 @@ try { $stmt = $pdo->prepare( 'INSERT INTO escrituras_tramites (tramite, cliente, abogado, notaria, inscribe, altera_turno, instrucciones, - fecha_solicitud, estatus, observaciones, creado_por) + fecha_solicitud, estatus, entrada, observaciones, creado_por) VALUES (:tramite, :cliente, :abogado, :notaria, :inscribe, :altera, :instrucciones, - NOW(), :estatus, :obs, :user)' + NOW(), :estatus, :entrada, :obs, :user)' ); $stmt->execute([ ':tramite' => $b['tramite'] ?? '', @@ -59,6 +59,7 @@ try { ':altera' => $b['altera_turno'] ?? 'No', ':instrucciones' => $b['instrucciones'] ?? '', ':estatus' => $b['estatus'] ?? 'Solicitado', + ':entrada' => $b['entrada'] ?? '', ':obs' => $b['observaciones'] ?? '', ':user' => $user['email'], ]); @@ -94,6 +95,7 @@ try { 'altera_turno' => $b['altera_turno'] ?? 'No', 'instrucciones' => $b['instrucciones'] ?? '', 'estatus' => $b['estatus'] ?? 'Solicitado', + 'entrada' => $b['entrada'] ?? '', 'observaciones' => $b['observaciones'] ?? '', ]; @@ -101,7 +103,7 @@ try { 'UPDATE escrituras_tramites SET tramite=:tramite, cliente=:cliente, abogado=:abogado, notaria=:notaria, inscribe=:inscribe, altera_turno=:altera_turno, instrucciones=:instrucciones, - estatus=:estatus, observaciones=:observaciones, + estatus=:estatus, entrada=:entrada, observaciones=:observaciones, actualizado_por=:actualizado_por WHERE id=:id' ); @@ -122,6 +124,7 @@ try { 'altera_turno' => 'Alt. de Turno', 'instrucciones' => 'Instrucciones Especiales', 'estatus' => 'Estatus', + 'entrada' => 'Entrada', 'observaciones' => 'Observaciones', ]; diff --git a/sql/003_escrituras_entrada.sql b/sql/003_escrituras_entrada.sql new file mode 100644 index 0000000..ab2a5dc --- /dev/null +++ b/sql/003_escrituras_entrada.sql @@ -0,0 +1,7 @@ +-- ============================================================ +-- Donna — Schema 003: Control de Escrituras — campo "entrada" +-- Formato esperado: hasta 8 dígitos / año de 4 dígitos. Ej: "12345678/2026" +-- ============================================================ + +ALTER TABLE escrituras_tramites + ADD COLUMN IF NOT EXISTS entrada VARCHAR(13) NOT NULL DEFAULT '' AFTER estatus; diff --git a/views/escrituras.html b/views/escrituras.html index c15d85a..b6860f8 100644 --- a/views/escrituras.html +++ b/views/escrituras.html @@ -459,6 +459,7 @@ tr.editing-row td textarea.editable { Instrucciones Especiales Fecha de Solicitud Estatus + Entrada Últ. Actualización Actualizado por Observaciones @@ -641,7 +642,7 @@ function newRow() { allRows.unshift({ id:null, tramite:'', cliente:'', abogado:'Abrego', notaria:'', inscribe:'Sí', altera_turno:'No', instrucciones:'', fecha_solicitud: new Date().toISOString(), estatus:'Solicitado', - observaciones:'', creado_por: authUser.email }); + entrada:'', observaciones:'', creado_por: authUser.email }); render(); setTimeout(()=>{ const inp = document.querySelector('tr.data-row [data-field="tramite"]'); @@ -716,6 +717,12 @@ function render() {
${esc(r.estatus)} + + + ${fmtDate(r.ultima_actualizacion)} ${esc(r.actualizado_por ? r.actualizado_por.split('@')[0] : '—')} @@ -952,14 +959,14 @@ function getExportRows() { function exportHeaders() { return ['#','Nombre del Trámite','Cliente','Abogado Solicitante','Notaría', 'Se Inscribe','Alt. de Turno','Instrucciones Especiales', - 'Fecha de Solicitud','Estatus','Últ. Actualización','Observaciones','Creado por']; + 'Fecha de Solicitud','Estatus','Entrada','Últ. Actualización','Observaciones','Creado por']; } function rowToArray(r, i) { return [ i+1, r.tramite, r.cliente, r.abogado, r.notaria, r.inscribe, r.altera_turno, r.instrucciones, - fmtDate(r.fecha_solicitud), r.estatus, + fmtDate(r.fecha_solicitud), r.estatus, r.entrada || '', fmtDate(r.ultima_actualizacion), r.observaciones, r.creado_por ]; } @@ -973,10 +980,13 @@ function exportExcel() { const data = [exportHeaders(), ...rows.map(rowToArray)]; const ws = XLSX.utils.aoa_to_sheet(data); - // Column widths + // Column widths (#, Trámite, Cliente, Abogado, Notaría, + // Inscribe, Altera, Instrucciones, Fecha, Estatus, + // Entrada, Últ.Act., Observaciones, Creado por) ws['!cols'] = [ {wch:4},{wch:30},{wch:22},{wch:18},{wch:12}, - {wch:10},{wch:12},{wch:35},{wch:18},{wch:16},{wch:18},{wch:30},{wch:22} + {wch:10},{wch:12},{wch:35},{wch:18},{wch:16}, + {wch:14},{wch:18},{wch:30},{wch:22} ]; // Header style (row 1) @@ -1007,7 +1017,8 @@ function exportPDF() { const headers = exportHeaders(); // Columnas a mostrar en PDF (subset para que quepa en landscape) - const pdfCols = [0,1,2,3,4,5,6,9,11]; + // [#, Trámite, Cliente, Abogado, Notaría, Inscribe, Altera, Estatus, Entrada, Observaciones] + const pdfCols = [0,1,2,3,4,5,6,9,10,12]; const pdfHeaders = pdfCols.map(i=>headers[i]); const win = window.open('','_blank');