rebrand: AALN → AAL (Noriega salió de la sociedad)

- Todos los strings de branding actualizados:
  - "AALN" / "AALN Law" → "AAL"
  - "Arias, Abrego, López & Noriega" → "Arias, Abrego & López"
  - "M. Noriega" (placeholder en sample card del landing) → "M. Arias"
- Website link cambia de aalnlaw.com a aal-law.com en landing
  y footer del portal
- Filenames de exportación a Excel/PDF: *_AALN → *_AAL
- Footer del PDF compartido (DonnaExport.toPDF) actualizado
- Mensajes de denegación de OAuth callback actualizados
- README refleja nuevo nombre y URL del firm

OAuth sigue aceptando @aal-law.com y @aalnlaw.com como dominios
válidos (configurado en /etc/donna/donna.env) para no romper logins
durante la transición de correos.
This commit is contained in:
Soporte ZH Consultores
2026-06-04 22:56:31 -05:00
parent d124c65639
commit 7e8500c7fb
9 changed files with 38 additions and 38 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
# Donna — Portal interno AALN Law # Donna — Portal interno AAL
Portal interno de la firma **Arias, Abrego, López & Noriega** (aalnlaw.com) que aloja las herramientas operativas del equipo: control de escrituras y trámites legales, registro de horas, calendario, panel de administración y auditoría. Portal interno de la firma **Arias, Abrego & López** (aal-law.com) que aloja las herramientas operativas del equipo: control de escrituras y trámites legales, registro de horas, calendario, panel de administración y auditoría.
> Producción: <https://donna.aal-law.com> > Producción: <https://donna.aal-law.com>
@@ -406,4 +406,4 @@ sha256sum -c <(grep -E '^[a-f0-9]{64}' MANIFEST.txt) # checksums OK?
## Licencia ## Licencia
Software interno — sin licencia pública. Propiedad de **Arias, Abrego, López & Noriega**. Software interno — sin licencia pública. Propiedad de **Arias, Abrego & López**.
+2 -2
View File
@@ -16,7 +16,7 @@
const NAVY = '#1B3A6B'; const NAVY = '#1B3A6B';
const GOLD = '#C9A84C'; const GOLD = '#C9A84C';
const FIRM = 'AALN Law — Arias, Abrego, López &amp; Noriega'; const FIRM = 'AAL — Arias, Abrego &amp; López';
const ADDR = 'P.H. Midtown, Piso 16, Of. 1605, Calle 74 Este, San Francisco, Ciudad de Panamá'; const ADDR = 'P.H. Midtown, Piso 16, Of. 1605, Calle 74 Este, San Francisco, Ciudad de Panamá';
function escHtml(s){ function escHtml(s){
@@ -109,7 +109,7 @@
const fechaStr = new Date().toLocaleDateString('es-PA'); const fechaStr = new Date().toLocaleDateString('es-PA');
const html = `<!DOCTYPE html><html lang="es"><head> const html = `<!DOCTYPE html><html lang="es"><head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>${escHtml(title)} — AALN Law</title> <title>${escHtml(title)} — AAL</title>
<style> <style>
@page { size: A4 ${orientation}; margin: 12mm 10mm; } @page { size: A4 ${orientation}; margin: 12mm 10mm; }
* { box-sizing: border-box; margin: 0; padding: 0; } * { box-sizing: border-box; margin: 0; padding: 0; }
+2 -2
View File
@@ -23,7 +23,7 @@ a:hover{background:#112446;}
</style></head><body> </style></head><body>
<div class="box"> <div class="box">
<div class="logo">Donna</div> <div class="logo">Donna</div>
<div class="tag">AALN · Portal interno</div> <div class="tag">AAL · Portal interno</div>
<h2>Acceso denegado</h2> <h2>Acceso denegado</h2>
<p>{$safe}</p> <p>{$safe}</p>
<a href="/">Volver al inicio</a> <a href="/">Volver al inicio</a>
@@ -57,7 +57,7 @@ if ($email === '') {
} }
if (!Auth::emailDomainAllowed($email)) { if (!Auth::emailDomainAllowed($email)) {
deny('Esta cuenta no está autorizada para Donna. Solo dominios corporativos de AALN.', 403); deny('Esta cuenta no está autorizada para Donna. Solo dominios corporativos de AAL.', 403);
} }
if (!Auth::completeLogin($email, $name)) { if (!Auth::completeLogin($email, $name)) {
+8 -8
View File
@@ -132,7 +132,7 @@ function icon(string $name): string {
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $authed ? 'Donna · AALN Portal' : 'Donna · AALN Law' ?></title> <title><?= $authed ? 'Donna · AAL Portal' : 'Donna · AAL' ?></title>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
@@ -266,20 +266,20 @@ a{color:inherit;text-decoration:none;}
<div class="brand"> <div class="brand">
<div class="brand-mark">D</div> <div class="brand-mark">D</div>
<div class="brand-text"> <div class="brand-text">
<span class="brand-firm"><a href="https://www.aalnlaw.com" target="_blank" rel="noopener">AALN · Arias, Abrego, López &amp; Noriega</a></span> <span class="brand-firm"><a href="https://www.aal-law.com" target="_blank" rel="noopener">AAL · Arias, Abrego &amp; López</a></span>
<span class="brand-name">Donna</span> <span class="brand-name">Donna</span>
</div> </div>
</div> </div>
<div class="landing-foot-link"> <div class="landing-foot-link">
Portal interno · <a href="https://www.aalnlaw.com" target="_blank" rel="noopener">aalnlaw.com</a> Portal interno · <a href="https://www.aal-law.com" target="_blank" rel="noopener">aal-law.com</a>
</div> </div>
</nav> </nav>
<section class="hero"> <section class="hero">
<div class="hero-text"> <div class="hero-text">
<div class="hero-eyebrow">Plataforma interna AALN</div> <div class="hero-eyebrow">Plataforma interna AAL</div>
<h1 class="hero-title">Tu equipo de trabajo, <em>siempre un paso adelante</em>.</h1> <h1 class="hero-title">Tu equipo de trabajo, <em>siempre un paso adelante</em>.</h1>
<p class="hero-sub">Donna es el portal interno de AALN: control de escrituras, expedientes, agenda y herramientas internas en un solo lugar. Inicia sesión con tu correo corporativo.</p> <p class="hero-sub">Donna es el portal interno de AAL: control de escrituras, expedientes, agenda y herramientas internas en un solo lugar. Inicia sesión con tu correo corporativo.</p>
<form method="get" action="/auth/login.php"> <form method="get" action="/auth/login.php">
<button class="btn-login" type="submit"> <button class="btn-login" type="submit">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg>
@@ -306,7 +306,7 @@ a{color:inherit;text-decoration:none;}
<div class="art-card art-card-3"> <div class="art-card art-card-3">
<div class="art-card-eyebrow">Cliente nuevo</div> <div class="art-card-eyebrow">Cliente nuevo</div>
<h4>Tech Holdings, S.A.</h4> <h4>Tech Holdings, S.A.</h4>
<p>KYC pendiente · Asignado a M. Noriega</p> <p>KYC pendiente · Asignado a M. Arias</p>
<span class="pill">Onboarding</span> <span class="pill">Onboarding</span>
</div> </div>
</div> </div>
@@ -319,7 +319,7 @@ a{color:inherit;text-decoration:none;}
<div class="brand"> <div class="brand">
<div class="brand-mark">D</div> <div class="brand-mark">D</div>
<div class="brand-text"> <div class="brand-text">
<span class="brand-firm" style="color:var(--gold);">AALN · Donna</span> <span class="brand-firm" style="color:var(--gold);">AAL · Donna</span>
<span class="brand-name" style="font-size:14px;color:rgba(255,255,255,0.7);">Portal interno</span> <span class="brand-name" style="font-size:14px;color:rgba(255,255,255,0.7);">Portal interno</span>
</div> </div>
</div> </div>
@@ -450,7 +450,7 @@ a{color:inherit;text-decoration:none;}
</main> </main>
<footer class="dash-foot"> <footer class="dash-foot">
Donna · AALN Law &mdash; <a href="https://www.aalnlaw.com" target="_blank" rel="noopener">aalnlaw.com</a> Donna · AAL &mdash; <a href="https://www.aal-law.com" target="_blank" rel="noopener">aal-law.com</a>
</footer> </footer>
<?php endif; ?> <?php endif; ?>
</body> </body>
+6 -6
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Panel de Control — Donna AALN</title> <title>Panel de Control — Donna AAL</title>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
@@ -183,7 +183,7 @@ tr.is-me td { background:#FFFBEB; font-weight:500; }
<div class="logo"> <div class="logo">
<div class="logo-mark">A</div> <div class="logo-mark">A</div>
<div class="logo-text"> <div class="logo-text">
<span class="logo-firm">AALN Law</span> <span class="logo-firm">AAL</span>
<span class="logo-tool">Panel de Control</span> <span class="logo-tool">Panel de Control</span>
</div> </div>
</div> </div>
@@ -697,7 +697,7 @@ function usersExportRows(){
} }
function usersExportExcel(){ function usersExportExcel(){
DonnaExport.toExcel({ DonnaExport.toExcel({
filename: 'Usuarios_Donna_AALN', sheetName: 'Usuarios', filename: 'Usuarios_Donna_AAL', sheetName: 'Usuarios',
headers: USERS_HEADERS, rows: usersExportRows(), headers: USERS_HEADERS, rows: usersExportRows(),
columnWidths: [32,28,12,10,20], columnWidths: [32,28,12,10,20],
onEmpty: () => toast('Sin usuarios para exportar','error'), onEmpty: () => toast('Sin usuarios para exportar','error'),
@@ -705,7 +705,7 @@ function usersExportExcel(){
} }
function usersExportPDF(){ function usersExportPDF(){
DonnaExport.toPDF({ DonnaExport.toPDF({
filename: 'Usuarios_Donna_AALN', filename: 'Usuarios_Donna_AAL',
title: 'Usuarios y permisos', title: 'Usuarios y permisos',
orientation: 'portrait', orientation: 'portrait',
headers: USERS_HEADERS, rows: usersExportRows(), headers: USERS_HEADERS, rows: usersExportRows(),
@@ -731,7 +731,7 @@ function logExportRows(){
} }
function logExportExcel(){ function logExportExcel(){
DonnaExport.toExcel({ DonnaExport.toExcel({
filename: 'Registro_Transacciones_AALN', sheetName: 'Auditoría', filename: 'Registro_Transacciones_AAL', sheetName: 'Auditoría',
headers: LOG_HEADERS, rows: logExportRows(), headers: LOG_HEADERS, rows: logExportRows(),
columnWidths: [18,22,28,14,18,28,50,14], columnWidths: [18,22,28,14,18,28,50,14],
onEmpty: () => toast('No hay transacciones para exportar — aplica filtros primero','error'), onEmpty: () => toast('No hay transacciones para exportar — aplica filtros primero','error'),
@@ -739,7 +739,7 @@ function logExportExcel(){
} }
function logExportPDF(){ function logExportPDF(){
DonnaExport.toPDF({ DonnaExport.toPDF({
filename: 'Registro_Transacciones_AALN', filename: 'Registro_Transacciones_AAL',
title: 'Registro de Transacciones', title: 'Registro de Transacciones',
headers: LOG_HEADERS, rows: logExportRows(), headers: LOG_HEADERS, rows: logExportRows(),
pdfCols: [0,1,3,4,5,6], // omite Email e IP para que quepa pdfCols: [0,1,3,4,5,6], // omite Email e IP para que quepa
+4 -4
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Calendario — AALN Donna</title> <title>Calendario — AAL Donna</title>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
@@ -296,7 +296,7 @@ footer.legend .pill { display:inline-block; padding:2px 8px; border-radius:20px;
<div class="logo"> <div class="logo">
<div class="logo-mark">A</div> <div class="logo-mark">A</div>
<div class="logo-text"> <div class="logo-text">
<span class="logo-firm">AALN Law</span> <span class="logo-firm">AAL</span>
<span class="logo-tool">Calendario</span> <span class="logo-tool">Calendario</span>
</div> </div>
</div> </div>
@@ -1119,7 +1119,7 @@ function calRowToArray(e){
function calExportRows(){ return visibleEvents().map(calRowToArray); } function calExportRows(){ return visibleEvents().map(calRowToArray); }
function calExportExcel(){ function calExportExcel(){
DonnaExport.toExcel({ DonnaExport.toExcel({
filename: 'Calendario_AALN', sheetName: 'Eventos', filename: 'Calendario_AAL', sheetName: 'Eventos',
headers: CAL_HEADERS, rows: calExportRows(), headers: CAL_HEADERS, rows: calExportRows(),
columnWidths: [12,14,16,18,38,28,22,16,12], columnWidths: [12,14,16,18,38,28,22,16,12],
onEmpty: () => toast('No hay eventos para exportar','error'), onEmpty: () => toast('No hay eventos para exportar','error'),
@@ -1127,7 +1127,7 @@ function calExportExcel(){
} }
function calExportPDF(){ function calExportPDF(){
DonnaExport.toPDF({ DonnaExport.toPDF({
filename: 'Calendario_AALN', filename: 'Calendario_AAL',
title: 'Calendario de Eventos', title: 'Calendario de Eventos',
headers: CAL_HEADERS, rows: calExportRows(), headers: CAL_HEADERS, rows: calExportRows(),
pdfCols: [0,1,2,3,4,5,6,7], pdfCols: [0,1,2,3,4,5,6,7],
+5 -5
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Control de Escrituras — AALN Law</title> <title>Control de Escrituras — AAL</title>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
<style> <style>
@@ -428,7 +428,7 @@ tr.editing-row td textarea.editable {
<div class="logo"> <div class="logo">
<div class="logo-mark">A</div> <div class="logo-mark">A</div>
<div class="logo-text"> <div class="logo-text">
<span class="logo-firm">AALN Law</span> <span class="logo-firm">AAL</span>
<span class="logo-tool">Control de Escrituras Públicas</span> <span class="logo-tool">Control de Escrituras Públicas</span>
</div> </div>
</div> </div>
@@ -531,7 +531,7 @@ tr.editing-row td textarea.editable {
</div> </div>
<footer> <footer>
Arias, Abrego, López &amp; Noriega &nbsp;·&nbsp; P.H. Midtown, Piso 16, Of. 1605, Calle 74 Este, San Francisco, Ciudad de Panamá &nbsp;·&nbsp; SPECTER Legal Assistant Arias, Abrego &amp; López &nbsp;·&nbsp; P.H. Midtown, Piso 16, Of. 1605, Calle 74 Este, San Francisco, Ciudad de Panamá &nbsp;·&nbsp; SPECTER Legal Assistant
</footer> </footer>
<!-- HISTORIAL MODAL --> <!-- HISTORIAL MODAL -->
@@ -1038,14 +1038,14 @@ function expRows() {
function exportExcel(){ function exportExcel(){
DonnaExport.toExcel({ DonnaExport.toExcel({
filename: 'Control_Escrituras_AALN', sheetName: 'Escrituras', filename: 'Control_Escrituras_AAL', sheetName: 'Escrituras',
headers: EXP_HEADERS, rows: expRows(), columnWidths: EXP_WIDTHS, headers: EXP_HEADERS, rows: expRows(), columnWidths: EXP_WIDTHS,
onEmpty: () => toast('No hay datos para exportar','error'), onEmpty: () => toast('No hay datos para exportar','error'),
}); });
} }
function exportPDF(){ function exportPDF(){
DonnaExport.toPDF({ DonnaExport.toPDF({
filename: 'Control_Escrituras_AALN', filename: 'Control_Escrituras_AAL',
title: 'Control de Estatus de Escrituras Públicas', title: 'Control de Estatus de Escrituras Públicas',
headers: EXP_HEADERS, rows: expRows(), headers: EXP_HEADERS, rows: expRows(),
pdfCols: EXP_PDF_COLS, statusColIndex: 9, statusColors: EXP_STATUS_COLORS, pdfCols: EXP_PDF_COLS, statusColIndex: 9, statusColors: EXP_STATUS_COLORS,
+4 -4
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Reporte de Horas — AALN Donna</title> <title>Reporte de Horas — AAL Donna</title>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
@@ -154,7 +154,7 @@ tr a.tramite-link:hover{color:var(--gold-d);text-decoration:underline;}
<div class="logo"> <div class="logo">
<div class="logo-mark">A</div> <div class="logo-mark">A</div>
<div class="logo-text"> <div class="logo-text">
<span class="logo-firm">AALN Law</span> <span class="logo-firm">AAL</span>
<span class="logo-tool">Reporte de Horas</span> <span class="logo-tool">Reporte de Horas</span>
</div> </div>
</div> </div>
@@ -465,14 +465,14 @@ function horasExportRows(){
} }
function exportExcel(){ function exportExcel(){
DonnaExport.toExcel({ DonnaExport.toExcel({
filename: 'Reporte_Horas_AALN', sheetName: 'Horas', filename: 'Reporte_Horas_AAL', sheetName: 'Horas',
headers: HORAS_HEADERS, rows: horasExportRows(), columnWidths: HORAS_WIDTHS, headers: HORAS_HEADERS, rows: horasExportRows(), columnWidths: HORAS_WIDTHS,
onEmpty: () => toast('No hay entradas para exportar','error'), onEmpty: () => toast('No hay entradas para exportar','error'),
}); });
} }
function exportPDF(){ function exportPDF(){
DonnaExport.toPDF({ DonnaExport.toPDF({
filename: 'Reporte_Horas_AALN', filename: 'Reporte_Horas_AAL',
title: 'Reporte de Horas', title: 'Reporte de Horas',
headers: HORAS_HEADERS, rows: horasExportRows(), headers: HORAS_HEADERS, rows: horasExportRows(),
pdfCols: [0,1,3,4,5,7,8], // Fecha, Abogado, Código, Trámite, Cliente, Horas, Descripción pdfCols: [0,1,3,4,5,7,8], // Fecha, Abogado, Código, Trámite, Cliente, Horas, Descripción
+4 -4
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="viewport" content="width=device-width,initial-scale=1">
<title>Control de Trámites Legales — AALN</title> <title>Control de Trámites Legales — AAL</title>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@400;500;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
@@ -153,7 +153,7 @@ tr.expanded>td{background:#fffdf5;}
<div class="logo"> <div class="logo">
<div class="logo-mark">A</div> <div class="logo-mark">A</div>
<div class="logo-text"> <div class="logo-text">
<span class="logo-firm">AALN Law</span> <span class="logo-firm">AAL</span>
<span class="logo-tool">Control de Trámites Legales</span> <span class="logo-tool">Control de Trámites Legales</span>
</div> </div>
</div> </div>
@@ -452,7 +452,7 @@ function tramRowToArray(dept, r){
function tramExportExcel(dept){ function tramExportExcel(dept){
const rows = (window.__tramFiltered && window.__tramFiltered[dept]) || data[dept] || []; const rows = (window.__tramFiltered && window.__tramFiltered[dept]) || data[dept] || [];
DonnaExport.toExcel({ DonnaExport.toExcel({
filename: 'Tramites_'+dept.toUpperCase()+'_AALN', filename: 'Tramites_'+dept.toUpperCase()+'_AAL',
sheetName: DEPT_LABELS[dept] || dept, sheetName: DEPT_LABELS[dept] || dept,
headers: TRAM_HEADERS[dept], headers: TRAM_HEADERS[dept],
rows: rows.map(r => tramRowToArray(dept, r)), rows: rows.map(r => tramRowToArray(dept, r)),
@@ -464,7 +464,7 @@ function tramExportPDF(dept){
// En PDF excluye Involucrados (lista larga) para que quepa // En PDF excluye Involucrados (lista larga) para que quepa
const cols = TRAM_HEADERS[dept].map((_,i) => i).filter(i => TRAM_HEADERS[dept][i] !== 'Involucrados'); const cols = TRAM_HEADERS[dept].map((_,i) => i).filter(i => TRAM_HEADERS[dept][i] !== 'Involucrados');
DonnaExport.toPDF({ DonnaExport.toPDF({
filename: 'Tramites_'+dept.toUpperCase()+'_AALN', filename: 'Tramites_'+dept.toUpperCase()+'_AAL',
title: 'Control de Trámites Legales · ' + (DEPT_LABELS[dept] || dept), title: 'Control de Trámites Legales · ' + (DEPT_LABELS[dept] || dept),
headers: TRAM_HEADERS[dept], headers: TRAM_HEADERS[dept],
rows: rows.map(r => tramRowToArray(dept, r)), rows: rows.map(r => tramRowToArray(dept, r)),