Commit Graph

22 Commits

Author SHA1 Message Date
Efrain (Helgen)
1d49ee171e CLAUDE.md: deployment de prueba para Cobranza en el proyecto PRUEBAS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 16:50:54 -06:00
Efrain (Helgen)
d08f4025f5 Cobranza: esquema de Energy editable solo por el administrador; columnas USD en el PDF
- Esquema de Helgen Energy: solo ADMIN_DESBLOQUEO lo edita (antes de firmar),
  con motivo obligatorio que queda en la Bitacora junto con el esquema anterior.
  Al cambiar entre cotizaciones de Energy se conserva el esquema; al pasar de
  Helgen a Energy se pone el 60/30/10 (con confirmación si reemplaza otro).
- PDF en USD: columnas "P. Unitario (USD)" e "Importe (USD)"; en MXN sin cambios.
- Prueba de que la cotización USD imprime el mismo bloque de términos que MXN.
- Pruebas de cobranza e interfaz ampliadas; CLAUDE.md actualizado.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 16:49:18 -06:00
Efrain (Helgen)
745c9e3a66 Fase 2: cobranza por proyecto y cotizaciones en USD
- Cobranza en un libro y una carpeta aparte ("Cotizador Helgen — Cobranza"),
  fuera de la carpeta maestra, porque la Base de datos la lee todo el dominio.
- Cotización aceptada (una por proyecto; línea y moneda salen de ella),
  esquema de pagos (Energy fijo 60/30/10; Helgen editable, suma 100%),
  contrato firmado que bloquea todo, desbloqueo solo del administrador con
  motivo, pagos PAG-AAAA-NNNN con comprobante obligatorio (PDF/imagen,
  revisado por contenido), excedente a la siguiente etapa, tolerancia de 1.00,
  tipo de cambio cuando la moneda del pago es otra, cancelación con motivo y
  bitácora.
- Permisos en el servidor: ROL_COBRANZA y ADMIN_DESBLOQUEO en Script
  Properties; sin rol, codigo PERMISO y ningún dato de cobranza.
- Un proyecto con contrato firmado no admite cotizaciones nuevas y sale del
  buscador de cotizaciones.
- Cotizaciones en MXN o USD (columna U, PDF e importe con letra en dólares);
  en USD el catálogo no pone el precio.
- Proyectos nuevos sin subcarpeta "Pagos".
- Pruebas: nueva cobranza.test.js; interfaz, cotización, sesión y proyectos
  ampliadas. CLAUDE.md actualizado (§4.5.2, §5, §6.10, §6.11, regla 12, §9).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 14:54:23 -06:00
Efrain (Helgen)
f31f88f363 CLAUDE.md §6.8: orden obligatorio cuando un cambio requiere un permiso nuevo de Google
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:47:26 -06:00
Efrain (Helgen)
18e305a36f Revert "Historial: nombre del vendedor desde el directorio de Google de helgen.tech"
Se decidió no publicar la búsqueda en el directorio (servicio People): el nombre de un vendedor viejo
(p. ej. leo@helgen.tech) se corrige solo cuando guarde una cotización con sesión. appsscript.json vuelve a
quedar sin servicios avanzados y Code.js igual a lo publicado en @5. Nunca se hizo clasp push de c6c4b93.

This reverts commit c6c4b93.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:45:30 -06:00
Efrain (Helgen)
c6c4b93da3 Historial: nombre del vendedor desde el directorio de Google de helgen.tech
Las cotizaciones de vendedores que nunca guardaron con sesión (p. ej. leo@helgen.tech) seguían mostrando el
correo. Ahora, para correos @helgen.tech sin nombre en la hoja, listarCotizaciones busca el nombre y apellido
en el directorio de la organización (servicio avanzado People, searchDirectoryPeople con perfiles del
dominio), solo acepta la persona con el correo exacto y guarda el resultado 6 h en caché. Si el directorio
falla o no hay permiso, se muestra el correo como antes. No escribe en la hoja.

probarDirectorio() autoriza el permiso desde el editor. Pruebas en sesion.test.js. CLAUDE.md §3, §4.4,
§4.6 y §6.8 (orden: push, autorizar, deploy).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:34:27 -06:00
Efrain (Helgen)
fc621d23b4 CLAUDE.md: registros de prueba HLG-2026-0006 y PRY-2026-0001 ya marcados en la hoja
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:29:15 -06:00
Efrain (Helgen)
306acaf78e CLAUDE.md: API publicada en @5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:20:51 -06:00
Efrain (Helgen)
7cc595587b CLAUDE.md: registros de prueba con guion corto (HLG-2026-0006, PRY-2026-0001)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:20:37 -06:00
Efrain (Helgen)
3c410b46ad Historial: nombre del vendedor también en cotizaciones viejas
Las filas anteriores a la sesión con Google no tienen vendedor_nombre/apellido y mostraban el correo.
listarCotizaciones ahora arma un mapa correo → "Nombre Apellido" con las filas que sí lo tienen
(nombresDeVendedores, gana la más reciente) y lo usa para las viejas (vendedorDeFila); si el correo no
se conoce, sigue mostrando el correo. Solo cambia la respuesta: la hoja no se modifica.

Pruebas en sesion.test.js. CLAUDE.md: §4.4, §4.6 y registros de prueba en la hoja real
(HLG-2026-0005, HLG-2026-0006, PRY-2026-0001) para excluirlos de reportes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 12:58:24 -06:00
Efrain (Helgen)
3b7f5ec953 CLAUDE.md: API publicada en @4 (Proyectos)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 12:36:40 -06:00
Efrain (Helgen)
8ec8ed24fc CLAUDE.md: respaldo 2026-10-20 (Base de datos y Catálogo) y proyecto de prueba archivado
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 12:31:19 -06:00
Efrain (Helgen)
c04f878168 Proyecto rechazado al guardar: la interfaz limpia el campo y refresca la lista
Si el servidor rechaza la cotización porque el proyecto se canceló, se cerró o no existe, la etiqueta seguía
diciendo "Proyecto activo". Ahora el error lleva codigo PROYECTO (errorProyecto_ en Code.js, doPost lo
pasa a la respuesta, la capa api-web lo pone en err.codigo) y errorAlGuardar limpia el campo Proyecto,
refresca la lista de proyectos y muestra el aviso. Otros errores no tocan el campo.

Pruebas: tests/interfaz.test.js (nueva: DOM y fetch simulados), codigo PROYECTO en proyectos.test.js y
sesion.test.js. CLAUDE.md §8 y §10.2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 12:29:56 -06:00
Efrain (Helgen)
f6476c3230 CLAUDE.md: regla de responder siempre en español
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 12:16:09 -06:00
Efrain (Helgen)
5f6b4829d6 CLAUDE.md: proyecto de prueba de punta a punta (PRUEBAS — Cotizador Helgen) y cómo archivarlo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 11:17:08 -06:00
Efrain (Helgen)
aae01d6918 Proyectos: folio PRY-AAAA-NNNN, carpeta en Drive y cotizaciones ligadas por proyecto_folio
- Pestaña "Proyectos" (se crea sola) con cliente_id (RFC o SIN-RFC:nombre|empresa), estado con lista
  desplegable y vendedor del token. Folio con contador propio CONSECUTIVO_PROY_AAAA bajo el mismo candado.
- Carpeta Cotizador Helgen/Proyectos/AAAA/<folio> — <cliente> — <nombre>/ con Cotizaciones,
  Órdenes de compra y Pagos; las subcarpetas borradas o renombradas se vuelven a crear.
- Cotizaciones: columna T proyecto_folio (las viejas quedan vacías = "Sin proyecto"); con proyecto, el PDF
  va a su carpeta Cotizaciones. Proyecto inexistente o no Activo se rechaza sin gastar folio.
- Interfaz: campo Proyecto opcional con buscador y "Nuevo proyecto" en el módulo 1; columna en Historial.
- Pruebas: tests/proyectos.test.js (Drive simulado con árbol de carpetas) y sesion.test.js ampliada.
- CLAUDE.md: §6.9 Proyectos y §6.10 modelo futuro (OC, Pagos, Gastos, cotización "Aceptada").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 10:59:37 -06:00
Efrain (Helgen)
55950b3762 Favicon con el isologo de Helgen en la portada y el cotizador
Se agregan favicon.ico (16+32), favicon-32.png, apple-touch-icon.png (180) e
isologo-512.png en web/, con sus etiquetas <link> y theme-color #2C3C5B en
web/index.html y web/cotizador/index.html. Rutas absolutas para que funcionen
desde /cotizador/. La portada usaba el logo blanco como favicon, que casi no
se veía en pestañas claras. Publicado con wrangler (versión 19893d69).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 17:53:50 -06:00
Efrain (Helgen)
1fb78c41ab CLAUDE.md: git ahora usa GitHub CLI (gh) en lugar del token personal
gh v2.102.0 instalado en ~/.local/bin sin Homebrew; sesión con gh auth login
--web y credenciales de git con gh auth setup-git.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:59:39 -06:00
Efrain (Helgen)
607a6dfaa9 CLAUDE.md: regla de commit + push y recordatorio de publicar con clasp o wrangler
También anota el arreglo de los archivos Icon de macOS dentro de .git que rompían git fetch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:46:27 -06:00
Efrain (Helgen)
8d3c23e0c6 CLAUDE.md: remoto de GitHub y copia vieja desactivada
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:35:11 -06:00
Efrain (Helgen)
584a12e25c CLAUDE.md: nueva ruta oficial ~/Proyectos/cotizador-helgen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:19:01 -06:00
Efrain (Helgen)
bbb34768b4 Respaldo inicial del Cotizador Helgen (19/10/2026)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:14:08 -06:00