diff --git a/.gitignore b/.gitignore index a53303a..67d5cf1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,9 @@ Thumbs.db bind_token_api.txt *.env +# Evidencia financiera sensible local — no subir al repositorio +Resumen de movimientos.pdf + # Python (skill proposal-pdf) __pycache__/ *.pyc diff --git a/README.md b/README.md index b945a6d..975d0a0 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ > **Fuente de la verdad del proyecto.** Este repositorio concentra todo: propuesta, comunicaciones, fuentes y prototipos. Si pasa algo (llamada, correo, mensaje, decisión), se registra en la [bitácora](bitacora/). Empieza por aquí. -**Estado:** 🟢 **Discovery en marcha (Etapa 0)** — contrato firmado (26-jun), kickoff realizado (1-jul), **primera sesión de Discovery realizada (6-jul: proceso de facturación mapeado end-to-end con Ara y Arturo)**. Cambios de reglas del 6-jul: **lista blanca eliminada** (recordatorios a todos) y **cotización BIND obligatoria**. Johann trabaja el **prototipo** con el flujo real. ✅ **Token BIND entregado y VALIDACIÓN TÉCNICA de la API completada** (6-jul, adelantada al plan): **Plan A del saldo confirmado** (sin horas extra), flujo MVP sostenible 100% en lectura, PDF del CFDI por API; hueco: sin recurso de pagos/REP (escalar a Pedro). Detalle en [`bind-api-sandbox/VALIDACION-API.md`](bind-api-sandbox/VALIDACION-API.md). Sesión de **cobranza** propuesta para el mar 7-jul (Erika confirma agenda). Bloqueadores restantes: (1) repo GitHub y Azure; (2) confirmación de Balam a la propuesta v1.2 (enviada 2-jul) para emitir la **factura de 30 h**. -_Última actualización: 2026-07-06._ +**Estado:** 🟢 **Etapa 0 en validación + Etapa 1 iniciada en local.** Discovery de facturación, envío y cobranza completo (6–7 jul); prototipo entregado el 10-jul y sesión de validación confirmada para el **23-jul, 7:00 pm**. Sesión de reglas/dudas de Etapa 1 confirmada para el **22-jul** con Arturo y CEO. Token BIND validado en solo lectura; repo GitHub autorizado por Noé y pendiente de invitación para `Johann-28`; Azure programado para la semana del 21-jul. La confirmación para emitir la **factura inicial de 30 h** sigue pendiente por viaje de Noé y CEO. Control local de horas iniciado. +_Última actualización: 2026-07-15._ --- @@ -21,7 +21,7 @@ Plataforma web para centralizar y automatizar **facturación y cobranza** de Bal | [`fuentes/`](fuentes/) | Material crudo: PRD, transcripciones de llamadas, `.eml`. Evidencia, no se edita. | | [`bind-api-sandbox/`](bind-api-sandbox/) | Prototipo técnico del cliente/mock de la API de BIND (TypeScript; el productivo será .NET). | | [`.claude/skills/proposal-pdf/`](.claude/skills/proposal-pdf/) | **Skill** que genera el PDF de la propuesta/cotización con diseño editorial (portada full-bleed, TOC con páginas reales, footers "Confidential"). Pipeline Chromium + 2 pasos. Setup y uso en su [SKILL.md](.claude/skills/proposal-pdf/SKILL.md) (incluye nota de Windows). | -| [`planeacion/`](planeacion/) | **Plan de ejecución:** [Plan-actividades.xlsx](planeacion/Plan-actividades.xlsx) (+ [`.md`](planeacion/Plan-actividades.md)) — actividades por etapa (0–3) con fechas, responsables y sesiones, para el seguimiento con Erika (Jira/Gantt). | +| [`planeacion/`](planeacion/) | **Plan y seguimiento:** [Excel oficial consolidado](planeacion/Plan-actividades-avance-2026-07-10-ajustado.xlsx), [plan legible](planeacion/Plan-actividades.md), [control de horas](planeacion/Seguimiento-horas.md) ([CSV](planeacion/Seguimiento-horas.csv)) y [hallazgos/ADRs de Etapa 0](planeacion/Hallazgos-y-decisiones-Etapa0.md). | | [`marca/`](marca/) | **Tokens de marca** ([Marca-Balam.md](marca/Marca-Balam.md)) destilados del manual de imagen corporativa: color (Amarillo `#F7BD0C`, Café `#331F0E`), tipografía (Poppins) y uso del logo, para el prototipo y la UI. Manual crudo en [`fuentes/`](fuentes/). | | [`prototipo/`](prototipo/) | **Prototipo visual navegable (Etapa 0):** [Prototipo-Etapa0.html](prototipo/Prototipo-Etapa0.html) — HTML autocontenido (doble clic) con el flujo real del Discovery 6-jul: Jira → cotización BIND → prefactura → validación humana → CFDI → envío por cliente + cobranza y bitácora. Marca Balam (café/amarillo, Poppins), datos ficticios. Para validar con Ara, Arturo y Pedro. | @@ -43,7 +43,7 @@ Plataforma web para centralizar y automatizar **facturación y cobranza** de Bal **Comunicación:** canal de WhatsApp (ágil) + correo para evidencia formal. Gestión de avances en Jira. -## 4. Alcance y comercial (propuesta v1.1) +## 4. Alcance y comercial (propuesta v1.2) - **MVP Fase 1:** integración BIND vía API · **emisión de facturas MXN (con IVA) / USD (sin IVA)** con dry-run + confirmación humana (timbra el PAC de BIND) · catálogo de clientes + lista blanca configurable _(al 6-jul: vacía — Ara decidió recordatorios a todos, sin excepciones)_ · cobranza operativa (aging + alertas internas) · dashboard · reportes CSV/XLSX · bitácora · multimoneda con TC DOF. **Flujo objetivo validado en Discovery (6-jul):** Jira (disparador) → **cotización BIND (obligatoria)** → prefactura → validación humana → CFDI → envío. - **Inversión:** **$67,200 – $81,600 MXN + IVA** · **6–7 semanas** (~20 h/sem) · tarifa **$600 MXN/h** · modelo Time & Materials con tope por etapa (monto final se confirma en Discovery). @@ -71,15 +71,20 @@ Plataforma web para centralizar y automatizar **facturación y cobranza** de Bal | 2026-07-01 | **Kickoff realizado.** BIND: **token de Arturo** (solo consulta, se prueba primero); **Balam crea el repo** (GitHub privado) y **gestiona Azure** (Pedro+Noé); horas de Johann en **Jira** (corte lunes de Erika); Discovery **con Arturo + Araceli**. **Manual de marca recibido.** Abierto: **vincular la factura de 30 h** (contrato vs propuesta) antes de emitir — Johann espera correo de Balam. | | 2026-07-02 | **Propuesta v1.2 enviada por correo** (30 h de facturación inicial explícitas, condiciones comerciales en §3.3). En espera de confirmación para facturar. | | 2026-07-06 | **Discovery #1 realizado (proceso de facturación).** Flujo mapeado: Jira ITSM mandatorio → prefactura BIND → CFDI → envío por correo con particularidades por cliente. **Lista blanca ELIMINADA** (recordatorios a todos — decisión de Ara) y **cotización BIND obligatoria** como inicio del flujo. Validaciones de oro: PPD default (requerimiento SAT previo por PUE erróneo), IVA 16%/0% manual en BIND. Volumen real: ~55 facturas/mes de 4–6 clientes. Pendiente de Balam: Excel de particularidades de envío. | +| 2026-07-07 | **Discovery de cobranza completado.** Aging por factura, conciliación por folio, diferencias por fee y pagos registrados manualmente por el despacho. | +| 2026-07-10 | **Prototipo Etapa 0 entregado** por correo; Balam lo revisa internamente. | +| 2026-07-13 | Johann inicia trabajo local de Etapa 1 sin esperar la validación visual. La factura de 30 h sigue pendiente de visto bueno. | +| 2026-07-14 | Sesiones confirmadas: reglas/dudas Etapa 1 el 22-jul y validación del prototipo el 23-jul. | +| 2026-07-15 | Noé autoriza el repositorio privado de GitHub; invitación pendiente para `Johann-28`. Se inicia control local de horas. | ## 6. Próximos pasos Ver detalle y responsables en [bitacora/PENDIENTES.md](bitacora/PENDIENTES.md). En corto: -1. **Johann:** trabajar el **prototipo (Etapa 0)** con el flujo real del 6-jul (Jira → cotización BIND → prefactura → CFDI → envío) y sus validaciones (PPD default, IVA 16%/0%). -2. **Balam:** entregar el **token de BIND** (bloqueador técnico, sin respuesta desde el kickoff), repo GitHub y Azure; **Ara+Arturo:** enviar el **Excel de particularidades de envío por cliente** (comprometido para el 6-jul). -3. **Johann:** esperar la confirmación de Balam a la propuesta v1.2 (enviada 2-jul) y entonces **emitir la factura de 30 h**; mientras, no facturar. -4. **Johann:** aclarar con Balam la expectativa de **recordatorios a clientes** (Anexo B, no MVP) antes de que se consolide como supuesto. -5. **Johann:** configurar **Jira** (con Pedro), cambiar régimen fiscal; confirmar con Erika si la sesión del **martes 7-jul** sigue en pie. +1. **Johann:** continuar backend local y publicar en cuanto llegue la invitación al repo. +2. **Johann:** validar el corte reconstruido de 30 h en [`Seguimiento-horas.csv`](planeacion/Seguimiento-horas.csv), capturar diariamente en adelante y conciliar con Jira cuando Pedro habilite el flujo. +3. **Johann:** preparar la sesión del 22-jul (alta de cliente, fee, envíos y alcance Jira→BIND) y la validación del prototipo del 23-jul. +4. **Balam:** completar repo, Azure, Excel de particularidades de envío y confirmación para emitir la factura de 30 h. +5. **Johann/Balam:** cerrar explícitamente qué pertenece al MVP: Jira automático, recordatorios externos y escritura en BIND. ## 7. Riesgos / puntos abiertos @@ -87,3 +92,5 @@ Ver detalle y responsables en [bitacora/PENDIENTES.md](bitacora/PENDIENTES.md). - **Conciliación**: depende de procesar PDFs bancarios (sin API directa) + involucrar a Arturo. - **Solapamiento dashboard** con el Power BI existente de Pedro. - **Límite de API BIND** (1 llave por usuario, 20K req/día) → documentar llaves y monitorear consumo. +- **Integración Jira→BIND no incluida explícitamente:** requiere decisión de alcance, cuenta técnica de Jira, mapeo de campos y escritura autorizada en BIND. +- **Horas históricas reconstruidas:** corte de 30 h distribuido por actividad; solo 3.08 h tienen duración documental directa. Johann debe validar las otras 26.92 h antes de facturar. diff --git a/bitacora/PENDIENTES.md b/bitacora/PENDIENTES.md index aea3f93..7371063 100644 --- a/bitacora/PENDIENTES.md +++ b/bitacora/PENDIENTES.md @@ -2,31 +2,42 @@ Acciones vivas del proyecto. Formato: `[ ]` abierta · `[x]` cerrada (no se borran, dejan rastro). Cada una con responsable y, si aplica, fecha. Ver contexto en [REGISTRO.md](REGISTRO.md). -_Última actualización: 2026-07-06 (Discovery realizado: proceso mapeado, lista blanca eliminada, cotización BIND obligatoria; token BIND en gestión por Erika — entrega esperada lun 6–mar 7 jul)._ +_Última actualización: 2026-07-15 (prototipo entregado y con validación agendada para el 23-jul; sesión de reglas de Etapa 1 el 22-jul; repo GitHub autorizado y pendiente de invitación; control local de horas iniciado; factura de 30 h aún pendiente de confirmación)._ ## 🔴 Johann (proveedor) — inmediato - [x] ~~**Asistir al kickoff con Noé (mié 1-jul, 7:00 am)**~~ → **Hecho (1-jul).** Ver [REGISTRO #22](REGISTRO.md). - [x] ~~📅 **Asistir a la sesión "Proceso actual de facturación y cobranza" (lun 6-jul, 7:00 am)**~~ → **Hecha (6-jul).** Proceso mapeado end-to-end; lista blanca eliminada; cotización BIND obligatoria. Ver [REGISTRO #27](REGISTRO.md). -- [ ] 🎨 **Trabajar el prototipo (Etapa 0)** reflejando el flujo real levantado el 6-jul: Jira (disparador) → cotización BIND → prefactura → validación humana → CFDI → envío. Incluir las validaciones de oro: **PPD default** (PUE consciente — ya les costó un requerimiento del SAT), **IVA 16% MXN / 0% extranjero** (BIND no lo automatiza), prefactura siempre antes de timbrar, alta de cliente como flujo aparte. Ver [REGISTRO #27](REGISTRO.md). -- [x] ~~📅 **Proponer a Erika usar la sesión del martes 7-jul para COBRANZA**~~ → **Propuesto (6-jul, 3:01 pm):** Erika revisa la agenda con los involucrados y confirma. Ideal que ocurra antes del viernes 10 (validación del prototipo). Ver [REGISTRO #30](REGISTRO.md). +- [x] ~~🎨 **Preparar y entregar el prototipo de la Etapa 0**~~ → **Entregado por correo (10-jul)** a Erika + Noé, CC Pedro, con PDF y versión navegable. Refleja facturación, envío, cobranza y reglas del Discovery. Ver [REGISTRO #40](REGISTRO.md). +- [x] ~~📧 **Enviar por correo el prototipo (imágenes) + comentarios**~~ → **Hecho (10-jul).** Balam respondió que lo revisaría internamente. +- [x] ~~📊 **Responder a Erika el % de avance de Fase 0**~~ → **Atendido mediante el Excel de avance ajustado y entrega del prototipo.** La validación final sigue abierta. +- [ ] 📅 **Preparar y asistir a la sesión de reglas/dudas de Etapa 1 (mié 22-jul)** con Arturo + CEO: alta de cliente nuevo, fee en BIND, particularidades de envío, estatus disparador de Jira y confirmación de alcance Jira→BIND. Ver [REGISTRO #42](REGISTRO.md). +- [ ] 📅 **Preparar y asistir a la validación del prototipo (jue 23-jul, 7:00 pm).** Llevar decisiones que requieren visto bueno y separar MVP de Anexo B. Ver [REGISTRO #42](REGISTRO.md). +- [ ] ⏱️ **Validar el corte reconstruido de 30 h** en `../planeacion/Seguimiento-horas.csv`: 22 h de Etapa 0 + 8 h de Etapa 1. Solo 3.08 h corresponden a sesiones con duración comprobable; las otras 26.92 h están marcadas como reconstruidas. Ajustarlas si la memoria/evidencia indica otra distribución y después conciliar con Jira. Ver [REGISTRO #45](REGISTRO.md). +- [ ] 📝 **Cerrar el documento de hallazgos + ADRs** (`../planeacion/Hallazgos-y-decisiones-Etapa0.md`) después de las sesiones del 22–23 jul. +- [x] ~~📅 **Proponer a Erika usar la sesión del martes 7-jul para COBRANZA**~~ → **Propuesto (6-jul, 3:01 pm) y CONFIRMADO (6-jul, 6:36 pm):** convocatoria de Teams enviada para el martes 7-jul, 7:00–8:00 am, con Araceli y Arturo (CC Noé). Ver [REGISTRO #34](REGISTRO.md). +- [x] ~~📅 **Asistir a la sesión de cobranza (mar 7-jul, 7:00 am)**~~ → **Hecha (7-jul).** Sin grabación. Ver [REGISTRO #35](REGISTRO.md). +- [x] ~~📝 **Documentar el proceso de cobranza** de la sesión del 7-jul (sin grabación)~~ → **Hecho (7-jul):** reconstruido de memoria el mismo día. Notas en `../fuentes/2026-07-07 - Notas - Proceso actual de cobranza (sin grabacion).md`; entrada [REGISTRO #35](REGISTRO.md). +- [ ] 📊 **Exceles de cobranza (condicional):** si Balam valida que el prototipo representa bien su operación, ya no se requieren. Si pide ajustes, solicitar a Arturo estructura con datos ficticios de abiertas/canceladas/días vencidos, pago↔folio y estado de cuenta. **No confundir con el Excel de particularidades de envío**, que sigue pendiente. Ver [REGISTRO #44](REGISTRO.md). +- [ ] 🔑 **Dar seguimiento a si Pedro crea el usuario de solo lectura de BIND** que pidió Noé (mientras tanto Erika opera con el usuario de Arturo, sin bloqueo) — sigue sin resolverse una semana después (7-jul). Ver [REGISTRO #37](REGISTRO.md). +- [x] ~~🔧 **Decidir si probar endpoints de escritura (POST/PUT) de BIND**~~ → **Decidido (7-jul): NO todavía.** Contradice la instrucción de Noé de mantener solo-lectura mientras Pedro confirma el alcance del token; sin sandbox, el riesgo fiscal es real. Alternativa segura: catalogar operaciones de escritura desde el **portal de desarrolladores de BIND** (documentación), no probarlas en vivo. Ver [REGISTRO #36](REGISTRO.md). - [x] ~~📧 **Responder el correo de Pedro**~~ → **Enviado (6-jul, ~3:28 pm):** acuse de recibo + usuario de Arturo documentado + arranque de trabajo con la API, sin comprometer entregas adicionales. Ver [REGISTRO #29](REGISTRO.md). -- [ ] 📧⚠️ **Responder el correo de Noé (importancia alta, 4:33 pm)** describiendo las **salvaguardas** ya operando: solo-lectura bloqueado en código, consultas acotadas, token en gestor de secretos fuera del repo, sin datos reales en documentos, escritura solo con autorización + candados de la propuesta. Borrador listo. Ver [REGISTRO #31](REGISTRO.md). +- [ ] 📧⚠️ **Responder el correo de Noé (importancia alta, 4:33 pm)** describiendo las **salvaguardas** ya operando: solo-lectura bloqueado en código, consultas acotadas, token en gestor de secretos fuera del repo, sin datos reales en documentos, escritura solo con autorización + candados de la propuesta. Borrador listo. **Confirmación informal ya dada por WhatsApp (6-jul, 5:01 pm) — falta la respuesta formal por correo para dejar constancia en el canal correcto.** Ver [REGISTRO #31](REGISTRO.md), [#33](REGISTRO.md). - [ ] ⚠️ **No atar nada al token actual:** Pedro está revisando permisos y puede **reemplazarlo** por uno de un usuario nuevo de solo lectura — mantener el token como variable de entorno intercambiable (ya es así en el sandbox). Ver [REGISTRO #31](REGISTRO.md). - [x] ~~🔑 **Validar la API de BIND con el token real**~~ → ✅ **Hecha (6-jul, adelantada un día):** 117 peticiones GET-only, Plan A del saldo CONFIRMADO, flujo MVP 100% sostenible en lectura, PDF por API. Hallazgo duro: **sin recurso de pagos/REP**. Documento: [`../bind-api-sandbox/VALIDACION-API.md`](../bind-api-sandbox/VALIDACION-API.md). Ver [REGISTRO #32](REGISTRO.md). -- [ ] 📨 **Escalar a Pedro las preguntas técnicas de la API** (juntas, esta semana): (1) ¿existe endpoint de **pagos individuales / complementos de pago (REP)** no documentado? — es el hueco más relevante para el flujo PPD; (2) **tabla de mapeo `CFDIUse`** interno → clave SAT; (3) shape del endpoint `/{id}/xml`; (4) ¿webhooks/eventos o solo polling? Ver [REGISTRO #32](REGISTRO.md) §10. +- [ ] 📨 **Escalar a Pedro las preguntas técnicas de la API** (juntas, esta semana): (1) ¿existe endpoint de **pagos individuales / complementos de pago (REP)** no documentado? — es el hueco más relevante para el flujo PPD, _y ganó caso de negocio el 7-jul: el despacho registra los pagos en BIND uno por uno a mano_; (2) **tabla de mapeo `CFDIUse`** interno → clave SAT; (3) shape del endpoint `/{id}/xml`; (4) ¿webhooks/eventos o solo polling?; (5) ⚠️ **qué token alimenta el Power BI** — el 7-jul Arturo mostró su Power BI conectado con **su** token, pero el kickoff acordó Ara=Power BI / Arturo=desarrollo; BIND emite 1 token por usuario, así que si ambos usos comparten el de Arturo, reemplazarlo por el usuario solo-lectura que planteó Noé rompería uno de los dos. Ver [REGISTRO #32](REGISTRO.md) §10, [#35](REGISTRO.md). - [ ] 🔐 **Higiene del token:** moverlo a un gestor de secretos y **borrar `bind_token_api.txt`** de la raíz del repo y del correo/descargas (está gitignoreado, pero sigue en disco). -- [ ] ⚠️ **Aclarar expectativa de recordatorios a clientes:** lo que Ara/Arturo describieron el 6-jul son recordatorios automáticos **a clientes**, que están **diferidos al Anexo B** (el MVP trae alertas *internas*). Aclararlo pronto o anticipar que pidan ese módulo al cierre del MVP. Igual con la idea de **agentes observando Jira** (Nivel 3, fase posterior) y el deseo **multi-empresa** (Regiotour, Elmstone). Ver [REGISTRO #27](REGISTRO.md). -- [x] ~~**Ajustar la propuesta** (30 h explícitas, sin "Etapa 0", términos comerciales en una sección)~~ → **Hecho (1-jul):** propuesta **v1.2** — se agregó el concepto **"Facturación inicial: 30 h / $18,000 + IVA"** (cubre Etapa 0 + inicio de Etapa 1; Etapa 0 se mantiene en 18–22 h) y se consolidó **§3.3 Condiciones comerciales**. Fuente MD actualizada; **falta regenerar el PDF** (lo hace el agente de PDF de Johann con el mismo cambio). +- [ ] ⚠️ **Aclarar expectativa de recordatorios a clientes:** lo que Ara/Arturo describieron el 6-jul son recordatorios automáticos **a clientes**, que están **diferidos al Anexo B** (el MVP trae alertas *internas*). Aclararlo pronto o anticipar que pidan ese módulo al cierre del MVP. Igual con la idea de **agentes observando Jira** (Nivel 3, fase posterior) y el deseo **multi-empresa** (Regiotour, Elmstone). **Reapareció el 7-jul:** quieren correos automáticos al cliente pasados 1–5 días de vencimiento ("ser proactivos"). Ver [REGISTRO #27](REGISTRO.md), [#35](REGISTRO.md). +- [x] ~~**Ajustar la propuesta** (30 h explícitas, sin "Etapa 0", términos comerciales en una sección)~~ → **Hecho (1-jul):** propuesta **v1.2** — se agregó el concepto **"Facturación inicial: 30 h / $18,000 + IVA"** (cubre Etapa 0 + inicio de Etapa 1; Etapa 0 se mantiene en 18–22 h) y se consolidó **§3.3 Condiciones comerciales**. PDF generado y enviado el 2-jul. - [x] ~~📧 **Enviar el correo** (Noé, CC Pedro, Ara, Erika) con la propuesta v1.2 ajustada, vinculando la **facturación inicial de 30 h** al acuerdo~~ → **Hecho (2-jul, 5:39 PM):** enviado con `Propuesta-Balam.pdf` adjunto, sin esperar el correo de Erika+Paola. Ver [REGISTRO #26](REGISTRO.md). -- [ ] 💸 **NO facturar** hasta que Balam confirme por correo el envío del 2-jul (Noé quiere que la factura quede vinculada al documento). Tras el OK, **emitir la factura** de las 30 h. Ver [REGISTRO #22](REGISTRO.md), [#26](REGISTRO.md). -- [ ] **Configurar Jira y aprender el flujo con Pedro** — reportar horas ahí (incluye material informativo); Erika hace el corte los lunes. -- [ ] Usar los **tokens de marca** ([`../marca/Marca-Balam.md`](../marca/Marca-Balam.md): Amarillo `#F7BD0C` + Café `#331F0E` + Poppins) en el **prototipo** de la Etapa 0. -- [x] ~~Preparar el Excel de actividades~~ → **Entregado:** Etapa 0 y 1 (29-jun) y **completo, 4 etapas (0–3)** con fechas tentativas (30-jun). En `../planeacion/Plan-actividades.xlsx`. +- [ ] 💸 **NO facturar todavía.** Erika confirmó el 13-jul que recibió la propuesta v1.2; la validación para emitir sigue pendiente porque Noé y la CEO están fuera del país. Mantener la factura lista y emitir en cuanto llegue el visto bueno, con pago a 30 días. Ver [REGISTRO #41](REGISTRO.md). +- [ ] **Configurar Jira y aprender el flujo con Pedro** — reportar horas ahí (incluye material informativo); Erika hace el corte los lunes. Mientras tanto usar `../planeacion/Seguimiento-horas.csv`. +- [x] ~~Usar los **tokens de marca** en el prototipo~~ → **Hecho:** prototipo y capturas usan Amarillo `#F7BD0C`, Café `#331F0E` y Poppins. +- [x] ~~Preparar el Excel de actividades~~ → **Entregado y consolidado:** la única versión operativa se conserva en `../planeacion/Plan-actividades-avance-2026-07-10-ajustado.xlsx`; contiene el corte reconstruido de 30 h al 15-jul. - [x] ~~Proponer sesiones de Discovery~~ → **Hecho (29-jun):** propuestas y aceptadas; **Erika coordina las agendas** (intermediaria de sesiones). - [ ] Cambiar régimen fiscal (en proceso) para poder facturar (CFDI semanal los viernes, pago a 30 días). -- [ ] Confirmar **qué permisos exactos de Azure** necesita (crear App Service + PostgreSQL; no Global Admin) — coordinar con Pedro/Noé, que ahora gestionan Azure. -- [ ] **Arrancar el Discovery** una vez Balam entregue los accesos (el contrato ya está firmado). +- [x] ~~Confirmar **qué permisos exactos de Azure** necesita~~ → **Definido:** acceso `Contributor` acotado a un grupo de recursos de Balam; no se requiere Global Admin ni una cuenta nueva. Solicitar durante la semana del 21-jul. +- [x] ~~**Arrancar el Discovery** una vez Balam entregue los accesos~~ → **Hecho (6–7 jul):** facturación, envío y cobranza mapeados. - [ ] (Opcional) Pedir a Balam **copia limpia del contrato**: la cláusula de Firma Electrónica de la última página quedó duplicada y aún dice "EL PATRÓN" (residuo de plantilla, bajo riesgo). Ver [REGISTRO #19](REGISTRO.md). - [x] ~~Revisar y firmar el contrato de servicios~~ → **Hecho (26-jun):** revisado, negociados 2 ajustes (pago de horas al terminar + aceptación a 10 días) y **FIRMADO**. Ver [REGISTRO #18](REGISTRO.md), [#19](REGISTRO.md). - [x] ~~Responder el correo de Noe (8-jun)~~ → **Hecho (10-jun):** aceptados los 4 ajustes y respondidas las 3 preguntas técnicas. Ver [REGISTRO #16](REGISTRO.md). @@ -41,20 +52,20 @@ _Última actualización: 2026-07-06 (Discovery realizado: proceso mapeado, lista ## 🟡 Balam - [x] ~~**Balam:** enviar el documento/contrato de firma~~ → **Hecho (25-jun):** contrato enviado vía Paola (RH); ajustado y **firmado el 26-jun**. Ver [REGISTRO #18](REGISTRO.md), [#19](REGISTRO.md). -- [ ] 🔑 **Balam: entregar los ACCESOS para arrancar** — **token de Arturo** (BIND), **repositorio GitHub privado** (lo crea Pedro), **Azure** (Pedro+Noé), reglas de negocio + bancos (Arturo). **Es el bloqueador para iniciar el Discovery.** +- [ ] 🔑 **Balam: completar accesos de Etapa 1** — token BIND ✅; manual de marca ✅; repo GitHub autorizado (falta invitación y validar escritura); Azure programado para semana del 21-jul. Ya no bloquea el Discovery, pero sí despliegue/CI-CD. - [x] ~~Erika (PM): pedir el plan de actividades~~ → **Recibido (30-jun).** Erika es la **intermediaria de todas las sesiones**, agendó el **kickoff (1-jul, 7am)** y monta el **tablero Kanban en Jira**. Ver [REGISTRO #21](REGISTRO.md). - [x] ~~**Noe:** formalizar por correo~~ → **Hecho:** aclaraciones (8-jun, [#15](REGISTRO.md)) y **luz verde + redacción del documento de firma** (16-jun, [#17](REGISTRO.md)). - [ ] **Pedro + Erika:** armar el **tablero de seguimiento en Jira** y revisarlo juntos (instruido formalmente por Noe el 16-jun). - [x] ~~**Pedro:** enviar **manual de marca**~~ → **Hecho (1-jul):** enviado por correo. Tokens en [`../marca/Marca-Balam.md`](../marca/Marca-Balam.md). Ver [REGISTRO #23](REGISTRO.md). - [x] ~~**Erika:** entregar el **token de BIND**~~ → ✅ **ENTREGADO por correo (6-jul, 12:40 pm)**, mismo día en que se solicitó. Ver [REGISTRO #28](REGISTRO.md). - [x] ~~**Balam:** confirmar **a qué usuario pertenece el token**~~ → ✅ **Confirmado (6-jul, 12:38 pm):** Pedro lo entregó por correo (`bind_token_api.txt`) indicando que fue generado con el **usuario de Arturo Rosas** — conforme al kickoff (Arturo=dev, Ara=Power BI). Ver [REGISTRO #29](REGISTRO.md). -- [ ] **Pedro:** crear el **repositorio GitHub privado** para backend/frontend (Fase 1–2). +- [ ] **Pedro/Balam:** completar la creación del **repositorio GitHub privado** y agregar a `Johann-28` con permisos de escritura. Noé ya autorizó la creación el 15-jul. Ver [REGISTRO #43](REGISTRO.md). - [ ] **Pedro:** enseñar a Johann el **flujo de Jira** (reporte de horas como los demás consultores). - [ ] **Pedro + Noé:** **configurar Azure** y permisos (Noé otorga donde Pedro tiene limitantes). - [x] ~~**Erika:** **coordinar la sesión de Discovery con Arturo + Araceli**~~ → **Hecho:** agendada (1-jul) y **realizada (6-jul, 7am)**. Ver [REGISTRO #24](REGISTRO.md), [#27](REGISTRO.md). -- [ ] 📊 **Ara + Arturo:** enviar el **Excel de particularidades de envío por cliente** (destinatarios + adjuntos + nomenclatura de asunto; ej. CEMEX = Excel de horas con visto bueno + nomenclatura; Acuntia = .zip + estado de cuenta). **Se comprometieron a mandarlo hoy 6-jul.** Ver [REGISTRO #27](REGISTRO.md). +- [ ] 📊 **Ara + Arturo:** enviar el **Excel de particularidades de envío por cliente** (destinatarios + adjuntos + nomenclatura). Erika confirmó el 13-jul que continúa en preparación y que esperan entregarlo durante la semana. Ver [REGISTRO #41](REGISTRO.md). - [ ] **Arturo:** definir el proceso para cuando el **cliente NO esté dado de alta en BIND** (alta de cliente como flujo aparte de la automatización) — pregunta que él mismo dejó abierta el 6-jul. Ver [REGISTRO #27](REGISTRO.md). -- [ ] **Erika + Paola:** revisar si el **contrato ya vincula las 30 h** de la Etapa 0; Johann ya se adelantó y envió la propuesta v1.2 ajustada (2-jul) — pendiente que Balam confirme por correo para que pueda facturar. Ver [REGISTRO #26](REGISTRO.md). +- [ ] **Erika + Paola / Noé:** confirmar la propuesta v1.2 para emitir las 30 h. Erika confirmó recepción; validación pendiente por viaje de Noé y CEO. Ver [REGISTRO #41](REGISTRO.md). - [ ] **Arturo:** dar acceso/contexto de **bancos** (para conciliación). _Las reglas de negocio de facturación ya quedaron mapeadas en la sesión del 6-jul ([REGISTRO #27](REGISTRO.md)); bancos sigue pendiente._ ## ⚙️ Acordado (referencia, ya cerrado) diff --git a/bitacora/README.md b/bitacora/README.md index 4f74ef7..a02e5cf 100644 --- a/bitacora/README.md +++ b/bitacora/README.md @@ -8,6 +8,8 @@ Esta carpeta es el **registro vivo** del proyecto Balam. Cada vez que pase algo |---|---| | [REGISTRO.md](REGISTRO.md) | **Log cronológico** de toda comunicación (correos, llamadas, mensajes). Entradas numeradas, más antigua arriba. | | [PENDIENTES.md](PENDIENTES.md) | **Acciones abiertas** (checklist). Lo que hay que hacer y quién. | +| [`../planeacion/Seguimiento-horas.md`](../planeacion/Seguimiento-horas.md) | Reglas, resumen y reconstrucción pendiente de horas efectivamente trabajadas. | +| [`../planeacion/Seguimiento-horas.csv`](../planeacion/Seguimiento-horas.csv) | Fuente tabular para conciliación con Jira y facturación. | | `../fuentes/` | **Material crudo**: transcripciones, archivos `.eml`, PRD. No se edita; es evidencia. | | `../README.md` | **Estado del proyecto** (resumen ejecutivo, datos clave, decisiones). Se actualiza cuando algo cambia el rumbo. | @@ -18,6 +20,7 @@ Esta carpeta es el **registro vivo** del proyecto Balam. Cada vez que pase algo 3. **Registra la entrada** en [REGISTRO.md](REGISTRO.md) con la plantilla que corresponda (ver abajo). Usa el siguiente número consecutivo. 4. **Mueve los pendientes** que surjan a [PENDIENTES.md](PENDIENTES.md). 5. Si cambió el **alcance, precio, plazo o una decisión clave**, actualiza también `../README.md`. +6. Si hubo trabajo facturable, registra el tiempo real el mismo día en `../planeacion/Seguimiento-horas.csv`; no infieras horas desde el porcentaje de avance. > Regla de oro: si no está en la bitácora, no pasó. Registrar toma 2 minutos y evita malentendidos caros. diff --git a/bitacora/REGISTRO.md b/bitacora/REGISTRO.md index d7d6344..c90db46 100644 --- a/bitacora/REGISTRO.md +++ b/bitacora/REGISTRO.md @@ -11,7 +11,7 @@ - **Pedro Alberto Ayala Elizondo** — Desarrollador / contacto técnico, Balam — `pedro.ayala@balamtalentoestrategico.com` - **Paola** — Recursos Humanos, Balam — coordinó la firma del contrato (WhatsApp) -**Periodo:** 30 abr 2026 → 6 jul 2026 (última actualización: sesión de Discovery del proceso de facturación, 6-jul) +**Periodo:** 30 abr 2026 → 10 jul 2026 (última actualización: avance de Fase 0 + envío del prototipo por correo, 10-jul) **Orden:** cronológico (más antiguo arriba) --- @@ -386,7 +386,7 @@ Erika (PM, contacto principal) confirma que **ya pasaron los temas administrativ ## 21 · Jun 29–30, 2026 — WhatsApp Johann ↔ Erika · plan de actividades entregado + kickoff agendado ⭐ -> Evidencia: `../fuentes/2026-06-29 - WhatsApp - Erika arranque del plan de actividades.md`. Plan: `../planeacion/Plan-actividades.xlsx` (+ `.md`). +> Evidencia: `../fuentes/2026-06-29 - WhatsApp - Erika arranque del plan de actividades.md`. Plan vigente consolidado: `../planeacion/Plan-actividades-avance-2026-07-10-ajustado.xlsx` (+ `.md`). - Johann entrega el **plan de actividades** (Excel sencillo: actividad · fecha inicio–fin · responsable · apoyo de Balam): primero Etapa 0 y 1 (29-jun) y luego **enviado completo, las 4 etapas (0–3)** con fechas tentativas (**30-jun, 12:34**). Las sesiones quedan ubicadas por etapa; la Etapa 0–1 se mantiene idéntica a lo enviado el 29-jun. - **Erika confirma que será la intermediaria** de todas las sesiones ("lo que necesites me lo pides y yo coordino agendas"). @@ -643,6 +643,191 @@ Noé responde al hilo de la entrega del token con dos instrucciones: --- +## 33 · Jul 6, 2026 — 4:34–5:03 PM · WhatsApp Erika → Johann · confirma operar solo-lectura (eco del correo de Noé) + +> Evidencia: `../fuentes/2026-07-06 - WhatsApp - Erika sesion discovery y seguimiento token BIND.md` (bloque 8). + +**Resumen:** Erika transmite por WhatsApp, en versión breve, la instrucción de Noé sobre salvaguardas del token ([#31](#31--jul-6-2026--433-pm--correo--noé--johann-pedro-cc-erika--salvaguardas-sobre-el-token-)): *"referente a lo del token que se te compartió, para evitar complicaciones operativas."* Johann confirma: *"por el momento estaré haciendo operaciones solo de lectura."* Erika agradece el entendimiento. + +**Acción derivada:** confirmación informal, no sustituye la respuesta formal por correo a Noé (borrador listo, ver [PENDIENTES.md](PENDIENTES.md)) — conviene enviarla igual para dejar constancia en el canal formal, tal como pidió Noé. + +> **Lectura estratégica:** +> - Erika actúa como puente entre la instrucción formal de Noé (correo, 4:33 pm) y Johann — coherente con su rol de intermediaria única. +> - El contenido no agrega nada nuevo a lo ya resuelto por diseño (sandbox solo-lectura); es una confirmación de bajo costo que sostiene la confianza mientras se prepara la respuesta formal. + +--- + +## 34 · Jul 6, 2026 — 6:36–6:40 PM · WhatsApp + convocatoria Outlook/Teams · confirma sesión de cobranza (martes 7-jul) ⭐ + +> Evidencia: `../fuentes/2026-07-06 - WhatsApp - Erika sesion discovery y seguimiento token BIND.md` (bloque 9). + +**Resumen:** Erika envía la convocatoria **"Proceso actual de cobranza- Balam"**, martes **07/07/2026, 7:00–8:00 AM**, por Microsoft Teams. Organiza Erika Chávez; invitados **Johann, Araceli Sánchez Jiménez y Arturo Rosas Hernández** (CC: Noé Rocha) — cierra la propuesta que Johann hizo el mismo día a las 3:01 pm ([#30](#30--jul-6-2026--301-pm--whatsapp-johann--erika--propone-sesión-de-cobranza-martes-7-jul-)). Johann confirma recepción por WhatsApp (6:40 pm). + +**Acción derivada:** asistir a la sesión el martes 7-jul, 7:00 am (agenda: cómo dan seguimiento hoy a pagos y cuentas por cobrar, quién persigue morosos, cómo concilian, de dónde saldría el aging — temas listados en la lectura estratégica de [#27](#27--jul-6-2026--700-am--llamada--discovery-proceso-actual-de-facturación-y-cobranza-)). + +> **Lectura estratégica:** +> - **Cierra el hueco de Discovery que quedó abierto el 6-jul:** facturación y envío ya están mapeados ([#27](#27--jul-6-2026--700-am--llamada--discovery-proceso-actual-de-facturación-y-cobranza-)); cobranza se mapea el 7-jul, antes del viernes 10 (fecha objetivo para la validación del prototipo) — como Johann buscaba al proponerlo. +> - **Interlocutores correctos confirmados:** Arturo (lleva CxC en BIND) y Araceli (contexto comercial), igual que en la sesión anterior — buena señal de continuidad. +> - Convocatoria aún sin respuestas registradas ("4 sin respuesta") al momento de reenviarla — no es un riesgo en sí, Balam ya confirmó la sesión por WhatsApp. + +--- + +## 35 · Jul 7, 2026 — 7:00 AM · Llamada · Discovery: proceso actual de cobranza (sin grabación) ⭐ + +> Participan: **Arturo Rosas** (administración/CxC — mostró el proceso) y Johann; la convocatoria incluía también a Araceli y Erika (CC Noé). Canal: Microsoft Teams, 7:00–8:00 AM. **⚠️ Sin grabación** — evidencia: `../fuentes/2026-07-07 - Notas - Proceso actual de cobranza (sin grabacion).md` (notas de memoria de Johann, mismo día). + +**Resumen:** Segunda sesión de Discovery — cierra el mapeo de **cobranza** que quedó pendiente el 6-jul ([#27](#27--jul-6-2026--700-am--llamada--discovery-proceso-actual-de-facturación-y-cobranza-)). Arturo mostró sus **Exceles de control** (facturas abiertas, canceladas, días de morosidad — el aging de facto) y el flujo real de un pago: el cliente avisa por **correo/mensaje con su estado de cuenta** → se comparte con el **despacho contable**, que **registra los pagos en BIND uno por uno** → un **Power BI** (conectado, según Arturo, con **su token**) muestra la cartera pero **no está al día**. + +**El detalle que complica conciliar:** +- Un mismo pago puede cubrir **decenas de facturas** ("10 pesos divididos en 40 facturas" — consistente con el cliente que exige factura por colaborador, ~40). +- Los comprobantes llegan **todos con el mismo patrón de referencia** (tipo `num_referencia.pdf`) → la referencia no distingue facturas, **se concilia por folio**. +- Al recibir el dinero hay un **fee/comisión** → los montos **no cuadran exactos** contra el total facturado. +- Caso mostrado: Arturo pidió a **Acuntia** su relación de pagos; respondieron con un **Excel pago ↔ folio** — control de ambos lados, pero totales distintos por el fee. +- Casos límite: clientes que pagan **facturas viejas arrastradas** (aplicación fuera de orden) y facturas pagadas cuyo **registro va atrás de la realidad**. + +**Lo que buscan:** ser **proactivos** — recordatorios configurables (pasados **1–5 días** de vencimiento, correo al cliente) o al menos visibilidad inmediata del atraso. Su evolución: eran **reactivos** ("ya hace rato que no me paga"), hoy son **activos**, quieren ser **proactivos**. + +**Pendientes que surgieron:** +- [ ] Johann — **pedir a Arturo los Exceles**: control de cobranza (abiertas/canceladas/morosidad), el Excel tipo Acuntia (pago↔folio) y un estado de cuenta ejemplo. +- [ ] Johann — preguntar **cómo registran en BIND la diferencia por fee** (¿pago parcial con residual? ¿nota de crédito?). +- [ ] Johann/Pedro — **verificar qué token alimenta el Power BI** (ver lectura estratégica). + +> **Lectura estratégica:** +> - **El diseño de cobranza del MVP queda respaldado por el proceso real:** el aging **por factura** con residual (Plan A: `Total − Payments − CreditNotes`, confirmado en [#32](#32--jul-6-2026--tarde--validación-técnica-de-la-api-de-bind-con-la-cuenta-real--)) cubre exactamente los casos que Arturo describió — pagos fuera de orden y facturas arrastradas se leen por factura, no por cliente. +> - **Regla de diseño nueva — tolerancia a fees:** "pagada" no puede exigir residual = 0 exacto; hace falta un **umbral configurable** para no mostrar como morosas facturas saldadas con comisión. Aplica también a la conciliación futura (Anexo B). +> - **El hueco de pagos/REP del API ([#32](#32--jul-6-2026--tarde--validación-técnica-de-la-api-de-bind-con-la-cuenta-real--)) ahora tiene caso de negocio:** el despacho registra pagos **a mano, uno por uno** — automatizar ese registro requeriría justo el endpoint que no apareció. Refuerza la escalación a Pedro. +> - ⚠️ **Discrepancia de tokens a verificar:** Arturo mostró el Power BI conectado con **su** token, pero el kickoff ([#22](#22--jul-1-2026--700-am--llamada--kickoff-del-proyecto-)) acordó **Ara = Power BI / Arturo = desarrollo**. BIND emite **1 token por usuario**: si Power BI y el desarrollo comparten el de Arturo, el reemplazo por un usuario solo-lectura que planteó Noé ([#31](#31--jul-6-2026--433-pm--correo--noé--johann-pedro-cc-erika--salvaguardas-sobre-el-token-)) **rompería uno de los dos**. Verificar con Pedro antes de cualquier cambio. +> - **Los recordatorios proactivos a clientes reaparecen** (tercera vez: propuesta original, sesión del 6-jul, hoy) — siguen siendo módulo del **Anexo B** (el MVP trae alertas internas + visibilidad). La aclaración de expectativas ya no puede esperar mucho. +> - **Actor nuevo en el mapa: el despacho contable** — no había aparecido en el Discovery de facturación; es quien toca BIND para los pagos. +> - Los **Exceles de Arturo son la especificación de facto de la pantalla de Cobranza** (columnas, buckets de morosidad que ya usan) — pedirlos con las salvaguardas de siempre: datos reales fuera del repo y de los documentos, solo estructura. + +--- + +## 36 · Jul 7, 2026 — 12:27 PM · WhatsApp Erika → Johann · seguimiento del pendiente de BIND (¿probar escritura?) + +> Evidencia: `../fuentes/2026-07-07 - WhatsApp - Erika seguimiento BIND.md`. + +**Resumen:** Erika revisa de nuevo el plan de actividades y pregunta por la línea **"Validación técnica de la API de BIND con la cuenta real"** (vigente hoy 7-jul y mañana 8-jul según el plan): *"johan respecto a este punto, es para hoy y mañana, todo bien, necesitas algo?"* — la misma actividad que Johann ya adelantó y cerró el 6-jul ([#32](#32--jul-6-2026--tarde--validación-técnica-de-la-api-de-bind-con-la-cuenta-real--)). + +> ⚠️ A las 9:28 am Erika había respondido *"no"* a un mensaje previo que no está incluido en la evidencia disponible — contexto pendiente de aclarar. + +**Acción derivada:** Johann evalúa si hace falta sondear los endpoints de **escritura (POST/PUT)** de BIND, ya que la validación de lectura cerró en #32. **Decisión:** no probarlos en vivo contra producción todavía — sigue vigente la instrucción de Noé de mantener el modo solo-lectura mientras Pedro confirma el alcance real del token ([#31](#31--jul-6-2026--433-pm--correo--noé--johann-pedro-cc-erika--salvaguardas-sobre-el-token-)), y no hay sandbox donde ensayar sin riesgo fiscal. Camino seguro en su lugar: revisar el **catálogo de operaciones del portal de desarrolladores de BIND** (ya referenciado por Noé el 25-may — incluye al menos `Activities_AddActivity`) para documentar qué escrituras existen, sin ejecutarlas. Respuesta a Erika: nada adicional urgente para las pruebas; lo único abierto es escalar con Pedro las preguntas técnicas ya listadas en [PENDIENTES.md](PENDIENTES.md) (endpoint de pagos/REP, tabla `CFDIUse`, shape de `/xml`, webhooks). + +> **Lectura estratégica:** +> - Buena disciplina: la tentación de "ya que tenemos el token, probemos escritura" se descarta porque **contradice justo lo que Noé pidió resguardar** — probarlo ahora sería el peor momento (token de Arturo con privilegios elevados, posible reemplazo en curso). +> - El `BindClient` ya está diseñado para este escenario: modo `read-only` bloquea cualquier método mutante en código (`BindReadOnlyViolation`), y `addActivity()` queda estructuralmente listo pero inerte hasta que se active `dry-run`/`write` con autorización — los candados de la propuesta (dry-run + confirmación humana) siguen intactos. + +--- + +## 37 · Jul 7, 2026 — 3:56–5:49 PM · WhatsApp Erika ↔ Johann · seguimiento al usuario de lectura de BIND + +> Evidencia: `../fuentes/2026-07-07 - WhatsApp - Erika seguimiento BIND.md` (bloque 3). + +Erika confirma que, mientras se resuelve si Pedro crea el **usuario de solo lectura** que pidió Noé por correo ([#31](#31--jul-6-2026--433-pm--correo--noé--johann-pedro-cc-erika--salvaguardas-sobre-el-token-)), ella sigue operando en BIND con el **usuario de Arturo** a modo de lectura, sin que esto la bloquee. Pregunta si ese usuario de lectura se lo iban a crear. Johann aclara que **Noe le pidió a Pedro revisar si era necesario crearlo** — la decisión no depende de Erika. Erika, reconociendo que no está familiarizada con el tema, queda en revisarlo con el equipo técnico. + +> **Lectura estratégica:** +> - Confirma que el reemplazo de token propuesto por Noé el 6-jul ([#31](#31--jul-6-2026--433-pm--correo--noé--johann-pedro-cc-erika--salvaguardas-sobre-el-token-)) **sigue sin resolverse una semana después** — Pedro no ha confirmado si crea el usuario nuevo. No es bloqueante hoy (Erika opera con el de Arturo sin problema), pero sigue abierto el riesgo señalado en [#35](#35--jul-7-2026--700-am--llamada--discovery-proceso-actual-de-cobranza-sin-grabación-): si el Power BI de Arturo comparte el mismo token que el de desarrollo, reemplazarlo rompería uno de los dos usos. + +--- + +## 38 · Jul 8, 2026 — 10:09 AM–10:55 AM · WhatsApp Erika ↔ Johann · datos ficticios para los Exceles de cobranza + +> Evidencia: `../fuentes/2026-07-08 - WhatsApp - Erika datos ficticios cobranza y avance fase 0.md` (bloques 1–2). + +Erika avisa que Balam está **validando internamente** si puede compartir la información de cobranza que Johann solicitó ([#35](#35--jul-7-2026--700-am--llamada--discovery-proceso-actual-de-cobranza-sin-grabación-), pendiente en PENDIENTES.md), por tratarse de información delicada. Johann ofrece una salida de bajo fricción: acepta que sean **datos ficticios**, ya que lo que necesita es la **estructura** que siguen, no los datos reales. Erika traslada la propuesta al equipo (10:50) y queda en avisar cuando tenga respuesta. + +> **Lectura estratégica:** +> - Resuelve por adelantado la fricción de confidencialidad de los Exceles de cobranza pedidos en [#35](#35--jul-7-2026--700-am--llamada--discovery-proceso-actual-de-cobranza-sin-grabación-): en vez de esperar una validación legal/interna que podría demorar, Johann baja el estándar a "estructura, no datos reales" — coherente con la salvaguarda ya prometida a Noé de mantener datos reales fuera del repo y de los documentos. +> - Sin fecha comprometida para la respuesta de Balam; sigue siendo **no bloqueante** para el avance del prototipo. + +--- + +## 39 · Jul 9–10, 2026 · WhatsApp Erika ↔ Johann · avance de Fase 0 + prototipo sin sesión de validación agendada + +> Evidencia: `../fuentes/2026-07-08 - WhatsApp - Erika datos ficticios cobranza y avance fase 0.md` (bloques 3–4). + +**9-jul, 7:20 PM:** Erika pide a Johann un corte de **avance de las actividades de Etapa 0** ("cómo vamos"). Johann responde hasta las 9:10 PM preguntando por qué medio compartirlo, sin resolverlo esa noche. + +**10-jul, 8:41–9:39 AM:** Erika insiste ("nomás dime qué actividades y % de avance"). Johann reconoce que **no confirmó la sesión de validación del prototipo** que él mismo se había puesto como meta para el **viernes 10-jul** (ver PENDIENTES.md): el día anterior no dio seguimiento y no quedó agendada la reunión. Ofrece, en su lugar, **compartir el prototipo por correo con sus propios comentarios**. Erika acepta y da instrucciones de destinatarios, **corrigiéndose dos veces en minutos**: primero pide copiar a Pedro, al Ing. Noé **y a Araceli** (9:00); a los 21 minutos corrige — sin Araceli (9:21–9:22); y pocos minutos después acota aún más — **solo a ella y al Ing. Noé, con Pedro en copia**, "nosotros se los pasamos internamente" (9:28). Johann confirma y, al cierre, retoma la pregunta pendiente del 9-jul sobre si el % de avance de Fase 0 se reporta por el mismo canal de WhatsApp — **sin respuesta aún al cierre de este tramo**. + +> **Lectura estratégica:** +> - **Dos pendientes de Johann quedan expuestos por la falta de seguimiento propio:** (1) el reporte de avance/% de Fase 0 que Erika pidió desde el 9-jul, y (2) la sesión de validación del prototipo del viernes 10-jul (comprometida en PENDIENTES.md) que no se agendó a tiempo. Ambos se resuelven convergiendo en un solo entregable: **correo con el prototipo (imágenes) + avance de Fase 0**, en vez de una reunión. +> - **Lista de destinatarios del correo del prototipo, final:** Erika + Ing. Noé, **CC Pedro únicamente** — Araceli queda excluida (Balam decide compartirlo con ella internamente). Difiere del patrón habitual del hilo de correo principal, donde Araceli sí solía ir en copia — respetar esta instrucción explícita para este envío. +> - Sigue sin resolverse el % de avance de Fase 0 que se debe reportar — acción abierta de Johann. + +--- + +## 40 · Jul 10, 2026 · Correo · Johann → Erika, Noé (CC Pedro) · entrega del prototipo Etapa 0 ⭐ + +> Evidencia documental: `../prototipo/Correo-prototipo-Etapa0.md`. Adjunto: `../prototipo/Prototipo-Balam-Etapa0.pdf`. + +Johann entrega por correo el prototipo navegable de facturación y cobranza, con PDF y acceso temporal a la versión web. El material usa datos ficticios y refleja el flujo levantado en Discovery: Jira → cotización BIND → prefactura → validación humana → CFDI → envío, además de cobranza por factura. + +Balam responde que lo revisará internamente y compartirá comentarios. La retroalimentación queda pendiente; no se realizó la sesión en vivo prevista originalmente para ese día. + +**Acción derivada:** mantener el entregable en validación y continuar únicamente con trabajo de Etapa 1 que no dependa de cambios visuales. + +--- + +## 41 · Jul 13, 2026 · WhatsApp Erika ↔ Johann · continuidad de Etapa 1, sesión con Arturo y factura de 30 h + +> Evidencia: `../fuentes/2026-07-13 a 2026-07-15 - WhatsApp - Seguimiento prototipo sesiones accesos.md`. + +Johann comunica que, mientras Balam revisa el prototipo, avanzará localmente con base de datos, autenticación/roles y cliente de consulta de BIND. Erika explica que la CEO se encuentra fuera del país y que la diferencia de horario dificulta la validación inmediata. + +Johann pide coordinar una sesión con Arturo para cerrar alta de clientes nuevos, tratamiento del fee en BIND y Excel de particularidades de envío. Erika contactará a Arturo y confirma que el Excel continúa en preparación. + +Sobre la propuesta v1.2 y la factura inicial de 30 h, Erika confirma que recibió el documento. La validación administrativa sigue pendiente porque la CEO y Noé están fuera del país por trabajo; Erika revisará cómo obtener el visto bueno. + +> **Lectura estratégica:** no hay rechazo comercial ni bloqueo técnico total. Johann mantiene momentum en local, pero la factura aún no debe emitirse sin confirmación y las definiciones de negocio se recorren. + +--- + +## 42 · Jul 14, 2026 · WhatsApp Erika ↔ Johann · dos sesiones confirmadas para 22–23 jul + +> Evidencia: `../fuentes/2026-07-13 a 2026-07-15 - WhatsApp - Seguimiento prototipo sesiones accesos.md`. + +Erika confirma dos espacios distintos: + +1. **Miércoles 22-jul:** sesión de dudas y definiciones de la Etapa 1 con Arturo y participación solicitada de la CEO. +2. **Jueves 23-jul, 7:00 pm:** sesión de validación del prototipo de la Etapa 0. Erika envía la convocatoria. + +**Temas para el 22-jul:** alta de cliente nuevo, registro de diferencias por fee, particularidades de envío y definición de alcance de la posible automatización Jira → cotización BIND. + +--- + +## 43 · Jul 14–15, 2026 · WhatsApp Erika ↔ Johann · ajuste de accesos y repositorio GitHub autorizado + +> Evidencia: `../fuentes/2026-07-13 a 2026-07-15 - WhatsApp - Seguimiento prototipo sesiones accesos.md`. + +Johann aclara que para la Etapa 1 requiere un repositorio privado de GitHub de Balam y, posteriormente, acceso acotado a Azure. Se mantiene la reprogramación: repositorio primero; Azure durante la semana del 21-jul; CI/CD y secretos el 24-jul. + +El 15-jul Erika confirma que Noé autorizó la creación del repositorio y solicita el usuario de GitHub. Johann comparte `Johann-28` (`https://github.com/Johann-28`). + +**Estado:** repositorio autorizado; falta recibir la invitación y verificar permisos de escritura. Azure aún no bloquea el desarrollo local. + +--- + +## 44 · Jul 14, 2026 · WhatsApp Erika ↔ Johann · Excel de días vencidos condicionado a validación + +> Evidencia: `../fuentes/2026-07-13 a 2026-07-15 - WhatsApp - Seguimiento prototipo sesiones accesos.md`. + +Erika pregunta si todavía se requiere el Excel de control de cobranza con días vencidos. Johann aclara que, si Balam considera que la estructura del prototipo refleja correctamente su operación, ya no será necesario prepararlo; si detectan ajustes, seguirá siendo útil como referencia y puede contener datos ficticios. + +**Impacto:** deja de ser un pendiente obligatorio y permanece condicionado a la retroalimentación del prototipo. Esto no sustituye el **Excel de particularidades de envío por cliente**, que Balam continúa preparando. + +--- + +## 45 · Jul 15, 2026 · Gestión interna · se inicia control local de horas + +Mientras Pedro habilita el flujo de reporte en Jira, Johann crea un control local en `../planeacion/Seguimiento-horas.csv` y su guía en `../planeacion/Seguimiento-horas.md`. + +Se cargan 3.08 h de sesiones con duración comprobable y se reconstruye retrospectivamente el resto del esfuerzo por actividad hasta un corte de **30 h**: **22 h de Etapa 0** y **8 h de Etapa 1**. Las 26.92 h reconstruidas quedan etiquetadas como estimadas y deben validarse contra memoria/evidencia y Jira antes de facturar; no se derivan del porcentaje de avance. + +**Acción:** Johann debe validar el desglose reconstruido, capturar diariamente en adelante y conciliar con Jira cuando Balam otorgue acceso al flujo. + +--- + ## Resumen ejecutivo del hilo (para contexto rápido) ### Datos duros confirmados por Balam @@ -655,6 +840,7 @@ Noé responde al hilo de la entrega del token con dos instrucciones: - **Lista blanca cobranza:** ~~ACUNTIA + top 3, configurable~~ → **ELIMINADA (6-jul):** Ara decidió recordatorios a **todos** los clientes morosos, sin excepciones. (La capacidad configurable se conserva, hoy vacía.) - **Cotización BIND obligatoria (6-jul):** todo lo que se facture parte de una cotización en el ERP (requisito fijado por Ara). - **Flujo actual:** Jira ITSM mandatorio (~1 mes) → validación administración (Arturo) → prefactura BIND → CFDI → envío por correo con particularidades por cliente (Excel pendiente de Ara/Arturo). +- **Cobranza actual (mapeada 7-jul):** el cliente avisa el pago por correo/mensaje (estado de cuenta) → el **despacho contable** registra los pagos en BIND **uno por uno** → Power BI de cartera (desactualizado). Se concilia **por folio** (la referencia no distingue facturas); los **fees** generan diferencias contra el total. Quieren **recordatorios proactivos** (1–5 días de vencimiento). - **Book = SaaS** (no interno). - **Jira:** solo gestión de proyectos con clientes. - **Nube preferida:** Azure. @@ -670,20 +856,25 @@ Noé responde al hilo de la entrega del token con dos instrucciones: 1. **Llamada del 19-may** (transcript aparte): Noe pidió textualmente *"no le queremos estar poniendo estrellitas al pino, nada más estrictamente lo que se necesita"*. Foco = facturación + conciliación. 2. **Correo del 25-may**: Noe pide explícitamente que la **propuesta se recorte a "solo ERP BIND" primero**, dejando bancos/conciliación para fase posterior. -### Estado actual (al 6-jul-2026 — Discovery en marcha) -**Contrato FIRMADO (26-jun)**, **kickoff realizado (1-jul)** y **primera sesión de Discovery realizada (6-jul, 7am, con Ara + Arturo — [#27](#27--jul-6-2026--700-am--llamada--discovery-proceso-actual-de-facturación-y-cobranza-)).** El proceso de **facturación** quedó mapeado end-to-end: **Jira ITSM (mandatorio) → validación administración → prefactura BIND → CFDI → envío por correo con particularidades por cliente**. **La cobranza sigue sin mapear** (candidata para la sesión del martes 7-jul). Dos reglas cambiaron en la sesión: **lista blanca eliminada** (recordatorios a todos) y **cotización BIND obligatoria** como inicio del flujo. Ara/Arturo deben enviar hoy el **Excel de particularidades de envío**; Johann trabaja el **prototipo** con el flujo real. **Propuesta v1.2 enviada (2-jul)** — en espera de confirmación de Balam para emitir la factura de 30 h. **Token de BIND sigue pendiente** (no se tocó en la sesión). +### Estado actual (al 15-jul-2026 — Etapa 0 en validación, Etapa 1 iniciada en local) -**Definido en el kickoff:** token **de Arturo** para BIND (solo consulta; se prueba primero) · **Balam crea el repo** (GitHub privado) y **gestiona Azure** (Pedro+Noé) · Johann reporta **horas en Jira** (Pedro le enseña; corte de Erika los lunes) · Discovery **con Arturo + Araceli** (Erika agenda). **Dos bloqueadores vivos:** (1) **accesos** (token BIND, Azure, repo) y (2) **emisión de la 1ª factura** — Johann ya envió la propuesta v1.2 ajustada (2-jul); **no factura hasta que Balam confirme por correo**. +**Contrato firmado, kickoff y Discovery completos.** El prototipo de la Etapa 0 fue entregado por correo el 10-jul y Balam lo revisa internamente. La sesión formal de validación quedó confirmada para el **jueves 23-jul a las 7:00 pm**. + +Johann inició en local las actividades independientes de Etapa 1. La sesión para cerrar dudas y reglas quedó el **miércoles 22-jul** con Arturo y la CEO. Deben resolverse alta de cliente nuevo, tratamiento del fee, particularidades de envío y si la automatización **Jira → cotización BIND** se incorpora al alcance. + +**Accesos:** token BIND y manual de marca recibidos; repositorio GitHub autorizado por Noé y en proceso de invitación para `Johann-28`; Azure programado para la semana del 21-jul; CI/CD y secretos separados para el 24-jul. Jira técnico no se necesita salvo que se apruebe la integración automática Jira→BIND. + +**Comercial:** propuesta v1.2 recibida por Erika, pero la confirmación para emitir la factura de 30 h sigue pendiente mientras Noé y la CEO están fuera del país. No hay rechazo ni pago vencido. + +**Seguimiento:** se abrió control local de horas en `../planeacion/Seguimiento-horas.csv`. El Excel de cobranza/días vencidos queda condicionado a la retroalimentación del prototipo; el Excel de particularidades de envío sigue pendiente de Balam. **Términos vinculantes del contrato:** sin anticipo + firma previa (cumplida) · **facturación semanal los viernes** por horas efectivamente trabajadas, pago a 30 días · garantía 45 días · alcance MVP BIND-first · arranque condicionado a accesos + API de BIND con lectura/escritura. -**Calendario tentativo:** kickoff 1-jul · Etapa 0 (Discovery) sem del 6-jul · Etapa 1 13–24 jul · Etapa 2 27-jul–7-ago · Etapa 3 10–21 ago. Las fechas se confirman/afinan al cerrar el Discovery (dependen de los accesos). +**Calendario vigente:** Etapa 1 en local desde 13-jul · repo 15–16 jul · Azure semana del 21-jul · sesión de reglas 22-jul · validación prototipo 23-jul · CI/CD y secretos 24-jul. Etapas 2–3 se afinan después de esas validaciones. -**Acciones inmediatas de Johann:** -- **Asistir al kickoff (1-jul, 7am)** con material listo (agenda + lista de accesos a pedir + preguntas de Discovery). -- Cambiar régimen fiscal (para facturar) y confirmar permisos exactos de Azure. +**Acciones inmediatas de Johann:** capturar/reconstruir horas reales; aceptar y validar el repositorio; continuar backend local; preparar las preguntas del 22-jul; cerrar hallazgos/ADRs tras las sesiones; mantener lista la factura sin emitirla todavía. -**En espera de Balam:** entregar **accesos** (API BIND vía cuenta maestra ARA / llave de Arturo, Azure con Guajardo/Erika, manual de marca de Pedro) y reglas de negocio + bancos con Arturo. El **Discovery arranca** una vez recibidos. +**En espera de Balam:** invitación al repo, acceso Azure, flujo Jira para horas, Excel de particularidades de envío, definiciones de Arturo/CEO y confirmación para emitir la primera factura. **Pendiente menor:** (opcional) pedir copia limpia del contrato — la cláusula de Firma Electrónica de la última página quedó duplicada y aún dice "EL PATRÓN" (residuo de plantilla, bajo riesgo). diff --git a/fuentes/2026-07-06 - WhatsApp - Erika sesion discovery y seguimiento token BIND.md b/fuentes/2026-07-06 - WhatsApp - Erika sesion discovery y seguimiento token BIND.md index 091fd0a..1a58afe 100644 --- a/fuentes/2026-07-06 - WhatsApp - Erika sesion discovery y seguimiento token BIND.md +++ b/fuentes/2026-07-06 - WhatsApp - Erika sesion discovery y seguimiento token BIND.md @@ -68,3 +68,20 @@ El token ya fue generado dentro de Balam (lo tienen en un .txt); Erika pregunta > **Johann** *(3:02)*: Va, muchas gracias Erika queda en **revisar la agenda** con los involucrados y confirmar. + +## Bloque 8 — 4:34–5:03 PM — salvaguardas sobre el token (eco del correo de Noé) + +> **Erika** *(4:34)*: referente a lo del token que se te compartio +> **Erika** *(4:34)*: para evitar complicaciones operativas +> **Johann** *(5:01)*: Hola, listo, por el momento estaré haciendo operaciones solo de lectura +> **Erika** *(5:03)*: gracias por el entendimiento + +Erika transmite por WhatsApp, en versión breve, la instrucción que Noé envió por correo a las 4:33 pm (ver REGISTRO #31). Johann confirma de forma informal que ya opera en modo solo-lectura. + +## Bloque 9 — 6:36–6:40 PM — confirma el meet de la sesión de cobranza + +> **Erika** *(6:36)*: Listo mande el meet de mañana +> **Erika** *(6:36)*: Si lo recibiste? +> **Johann** *(6:40)*: Listo, ya me llegó + +Erika envía la convocatoria de Outlook/Teams **"Proceso actual de cobranza- Balam"**, martes 07/07/2026, 7:00–8:00 AM. Organiza Erika Chávez; invitados: Johann, Araceli Sánchez Jiménez, Arturo Rosas Hernández (CC: Noé Rocha) — los mismos perfiles que Johann sugirió el 6-jul a las 3:01 pm (bloque 7). Confirma la sesión propuesta en REGISTRO #30. diff --git a/fuentes/2026-07-07 - Notas - Proceso actual de cobranza (sin grabacion).md b/fuentes/2026-07-07 - Notas - Proceso actual de cobranza (sin grabacion).md new file mode 100644 index 0000000..23bd517 --- /dev/null +++ b/fuentes/2026-07-07 - Notas - Proceso actual de cobranza (sin grabacion).md @@ -0,0 +1,38 @@ +# Notas — Sesión "Proceso actual de cobranza - Balam" · 7 jul 2026, 7:00–8:00 AM + +**Canal:** Microsoft Teams (convocatoria de Erika del 6-jul, ver REGISTRO #34). **⚠️ Sin grabación** — estas notas las reconstruyó Johann de memoria el mismo día. Tratarlas como memoria, no como transcripción: nada aquí es cita textual. + +**Mostró el proceso:** Arturo Rosas (administración / cuentas por cobrar). Convocados además: Araceli Sánchez y Erika Chávez (CC Noé); la asistencia exacta no quedó registrada. + +--- + +## Exceles de control (mostrados en pantalla) + +- Llevan Exceles con el control de **facturas abiertas**, **facturas canceladas** y **cuánto tiempo llevan de morosos** los clientes — es el aging de facto del proceso actual. +- Johann quedó en pedirle esos archivos a Arturo (no se compartieron en la sesión). + +## Flujo actual de un pago + +1. El cliente avisa el pago por **mensaje o correo**, adjuntando su **estado de cuenta**. +2. Ese estado de cuenta se comparte con el **despacho** (contable externo), que **registra los pagos en cuentas por cobrar (BIND) uno por uno**. +3. Tienen un **Power BI conectado — según mostró Arturo, con su token** — donde ven los gráficos de cartera, pero **no están al día**. + +## Por qué conciliar es difícil + +- Hay clientes cuyo pago **cubre decenas de facturas** a la vez ("10 pesos divididos en 40 facturas") — consistente con el cliente mayor que exige una factura por colaborador (~40, ver REGISTRO #27). +- Los avisos/comprobantes llegan **todos bajo el mismo nombre/patrón de referencia** (algo como `num_referencia.pdf`), así que la referencia bancaria **no distingue facturas** → **se concilia por folio** de factura. +- Los montos **no siempre cuadran exactos**: al recibir el dinero hay un **fee/comisión** que genera diferencias contra el total facturado — hay que tenerlo en consideración. + +## Caso Acuntia (mostrado en vivo) + +- Arturo pidió a Acuntia por correo la relación de pagos realizados; Acuntia respondió con un **Excel pago ↔ folio de factura**. El control existe de ambos lados, pero **los totales diferían por el fee**. + +## Casos límite mencionados + +- Clientes que pagan **facturas viejas que venían arrastrando** (la aplicación de pagos llega fuera de orden). +- Facturas ya pagadas cuyo **registro no está al día** (el estatus en sistema va atrás de la realidad). + +## Lo que buscan + +- Ser **proactivos**: poder establecer **recordatorios** — pasados **1–5 días** (de vencimiento), mandar un correo, o al menos que el atraso **esté visible**. +- Evolución en sus palabras: antes eran **reactivos** ("ya hace rato que no me paga"), hoy son **activos**, y quieren ser **proactivos**. diff --git a/fuentes/2026-07-07 - WhatsApp - Erika seguimiento BIND.md b/fuentes/2026-07-07 - WhatsApp - Erika seguimiento BIND.md new file mode 100644 index 0000000..d08ed3c --- /dev/null +++ b/fuentes/2026-07-07 - WhatsApp - Erika seguimiento BIND.md @@ -0,0 +1,37 @@ +# WhatsApp — Erika Chávez (PM, Balam) ↔ Johann · seguimiento del pendiente de BIND + +**Canal:** WhatsApp (+52 1 81 2353 5803) · **Fecha:** 7 jul 2026 + +--- + +## Bloque 1 — 9:28 AM + +> **Erika:** no + +*(Fragmento suelto — el mensaje o pregunta al que responde no está incluido en lo reenviado a Claude. Pendiente aclarar contexto.)* + +## Bloque 2 — 12:27 PM — seguimiento a la línea de BIND en el plan de actividades + +> **Erika** *(12:27)*: johan respecto a este punto, es para hoy y mañana, todo bien, necesitas algo? + +Se refiere a la línea del plan de actividades **"Validación técnica de la API de BIND con la cuenta real"** (mar 07 → mié 08 jul) — la misma actividad que Johann ya adelantó y cerró el 6-jul (ver REGISTRO #32 y `../bind-api-sandbox/`). + +## Bloque 3 — 3:56 PM–5:49 PM — seguimiento al usuario de lectura de BIND + +> **Erika** *(3:56)*: okey +> +> **Erika** *(4:10)*: Hola Erika, todo bien, solo sería el usuario de lectura qué comentaba Noe pero mientras tanto estoy usando el usuario de Arturo a modo de lectura, no me bloquea por esa parte +> este usuario de lectura que comento el inge noé te lo iban a crear o como? +> +> **Johann** *(5:12)*: Noe le había comentado a Pedro que revisara si era necesario crear un usuario específico +> +> **Erika** *(5:23)*: ah okey +> deja lo reviso con ellos entonces, como no estoy familiarizada con eso por eso no le entiendo y una disculpa eh +> +> **Johann** *(5:37)*: Sii ntp, de igual manera no me bloquea +> +> **Erika** *(5:49)*: ah bueno esta bien + +*(Nota: el saludo "Hola Erika" del mensaje de las 4:10 es un lapsus de Erika — dirigido a Johann.)* + +Erika confirma que, mientras se resuelve si Pedro crea el usuario de solo lectura que pidió Noé (ver REGISTRO #31), ella sigue operando con el **usuario de Arturo** a modo de lectura, sin bloqueo. Johann aclara que la decisión de crear o no ese usuario específico quedó en manos de Pedro (por instrucción de Noé), no de Erika. Erika queda en darle seguimiento con el equipo técnico. diff --git a/fuentes/2026-07-08 - WhatsApp - Erika datos ficticios cobranza y avance fase 0.md b/fuentes/2026-07-08 - WhatsApp - Erika datos ficticios cobranza y avance fase 0.md new file mode 100644 index 0000000..9ebb53c --- /dev/null +++ b/fuentes/2026-07-08 - WhatsApp - Erika datos ficticios cobranza y avance fase 0.md @@ -0,0 +1,75 @@ +# WhatsApp — Erika Chávez (PM, Balam) ↔ Johann · datos ficticios de cobranza y avance de Fase 0 + +**Canal:** WhatsApp (+52 1 81 2353 5803) · **Fechas:** 8–10 jul 2026 + +--- + +## Bloque 1 — 8-jul, 10:09 AM–10:16 AM — validación interna antes de compartir los Exceles de cobranza + +> **Erika** *(10:09)*: Buenos días johan, espero y te encuentres bien +> +> **Erika** *(10:10)*: estan validando la informacion que solicitaste tecnicamente para poder compartirlo contigo ya que como sabras es informacion delicada, en cuanto me den luz verde te lo hago saber +> +> **Erika** *(10:10)*: gracias por el apoyo +> +> **Johann** *(10:13)*: Hola Erika buenos días +> +> **Johann** *(10:15)*: Sí sin problema, de igual manera si gustan pueden ser datos ficticios, me es útil la estructura que siguen +> +> **Erika** *(10:16)*: ah super, entonces deja se los comunico por si pudieran hacer un ejemplo ficticio y proporcionartelo para efecto de visualizar el prototipo va +> +> **Johann** *(10:24)*: Va + +Se refiere a la solicitud de los **Exceles de cobranza** a Arturo (control de facturas abiertas/canceladas/morosidad, Excel tipo Acuntia pago↔folio, estado de cuenta ejemplo — ver REGISTRO #35 y PENDIENTES.md). Balam está internamente validando si puede compartir la información real por ser delicada. Johann ofrece una alternativa de bajo fricción: **datos ficticios**, ya que lo que necesita es la **estructura**, no los datos reales — coherente con la salvaguarda ya acordada de mantener datos reales fuera del repo/documentos. + +## Bloque 2 — 8-jul, 10:50 AM — Balam pide internamente ejemplo ficticio + +> **Erika** *(10:50)*: ya mande mensaje que si se les hace mejor mandar la estructura con datos ficticios solo para efecto de visualizar el prototipo de entregable de la fase 0 +> +> **Erika** *(10:50)*: espero comentarios y te comento va +> +> **Erika** *(10:50)*: gracias por el apoyo +> +> **Johann** *(10:54)*: De acuerdo, muchas gracias +> +> **Erika** *(10:55)*: a ti + +Erika traslada la propuesta de datos ficticios al equipo interno (Arturo/Araceli) y queda en avisar cuando tenga respuesta. Sin fecha comprometida. + +## Bloque 3 — 9-jul, 7:20 PM–9-jul 9:10 PM — Erika pide avance de Fase 0 + +> **Erika** *(9-jul, 7:20 PM)*: Buenas tardes johan espero y te encuentres bien, me puedes pasar como vamos con las acts de la fase 0 +> +> **Johann** *(9-jul, 9:10 PM)*: Hola buen día, sí claro, cómo te lo comparto? + +Erika (como intermediaria de seguimiento del plan de actividades) pide un corte de avance de las actividades de **Etapa 0**. Johann responde ya entrada la noche, preguntando el medio preferido para compartirlo — queda sin resolver hasta el día siguiente. + +## Bloque 4 — 10-jul, 8:41 AM–9:39 AM — instrucción de envío y disculpa por sesión de validación no agendada + +> **Erika** *(8:41)*: Así nomas dime que acts y porcentaje de avance ntp +> +> **Johann** *(8:42)*: Hola buenos días +> +> **Johann** *(8:44)*: Disculpa, tengo preparado el prototipo visual y hoy estaba agendado para validarlo con ustedes, ayer ya no te recordé y ya no pudimos agendar una reunión una disculpa, si hoy no tienen disponibilidad para revisarlo pudiera compartirles el prototipo con mis comentarios si les funciona +> +> **Erika** *(8:59)*: Ntp +> +> **Erika** *(9:00)*: Si manda correo del prototipo con imágenes copia a Pedro al inge Noe y Araceli por favor +> +> **Johann** *(9:21)*: De acuerdo, te lo envío a ti verdad? +> +> **Erika** *(9:21)*: A mí y al inge y cc a Pedro nada más +> +> **Erika** *(9:22)*: A Araceli no +> +> **Erika** *(9:28)*: Es más +> +> **Erika** *(9:28)*: Solo a mí y al inge por favor +> +> **Erika** *(9:28)*: Nosotros se los pasamos internamente +> +> **Johann** *(9:39)*: De acuerdo +> +> **Johann** *(9:39)*: Esto te lo paso por aquí? *(pregunta sobre el % de avance de la Fase 0 pedido en el Bloque 3, aún sin responder)* + +Johann reconoce que no confirmó la sesión de validación del prototipo del **viernes 10-jul** (la fecha objetivo que él mismo se había puesto — ver PENDIENTES.md) y, ante la falta de agenda, ofrece compartir el prototipo por correo con sus propios comentarios en vez de esperar a una reunión. Erika acepta y da instrucción de destinatarios, **cambiando de opinión dos veces en el mismo intercambio**: primero pide copiar a Pedro, Noé **y Araceli**; 20 segundos después corrige — sin Araceli; y a los pocos minutos vuelve a acotar más — **solo a Erika y al Ing. Noé, con Pedro en copia**, sin nadie más ("nosotros se los pasamos internamente"). Queda pendiente la respuesta de Johann sobre el % de avance de Fase 0 (pedido desde el 9-jul) — pregunta si lo reporta por este mismo canal. diff --git a/fuentes/2026-07-13 a 2026-07-15 - WhatsApp - Seguimiento prototipo sesiones accesos.md b/fuentes/2026-07-13 a 2026-07-15 - WhatsApp - Seguimiento prototipo sesiones accesos.md new file mode 100644 index 0000000..2ec8a1c --- /dev/null +++ b/fuentes/2026-07-13 a 2026-07-15 - WhatsApp - Seguimiento prototipo sesiones accesos.md @@ -0,0 +1,60 @@ +# WhatsApp — Erika Chávez (PM, Balam) ↔ Johann · seguimiento de prototipo, sesiones y accesos + +**Canal:** WhatsApp +**Periodo:** 13–15 jul 2026 +**Evidencia:** capturas compartidas por Johann el 13, 14 y 15-jul. + +--- + +## 13-jul — prototipo, sesión con Arturo y primera factura + +Johann informa que, mientras Balam revisa internamente el prototipo, avanzará con trabajo de backend de la Etapa 1 que no depende de esa validación: base de datos, autenticación/roles y cliente de consulta de BIND. Propone recibir retroalimentación el miércoles para incorporar ajustes sin detenerse. + +Erika responde que la CEO está fuera del país y que la diferencia de horario dificulta validar el prototipo en ese momento. Johann confirma que seguirá trabajando y avisará si fuera necesario ajustar el orden de las actividades. + +Johann pide confirmar una sesión con Arturo para cerrar tres puntos abiertos del Discovery: + +- Flujo de alta de clientes nuevos. +- Registro en BIND de las diferencias por comisión/fee. +- Excel de particularidades de envío por cliente. + +Erika se compromete a contactar a Arturo. Sobre el Excel de particularidades, confirma que continúa en preparación y que Balam espera entregarlo durante la semana. + +Johann también retoma la propuesta v1.2 enviada el 2-jul y solicita confirmación para emitir la factura inicial de 30 horas. Erika confirma que vio la propuesta, pero explica que tanto la CEO como Noé están fuera del país por trabajo, con aproximadamente ocho horas de diferencia. Queda en revisar cómo pueden validar la emisión. + +--- + +## 14-jul — agenda de sesiones y dependencias de Etapa 1 + +Erika informa que Arturo puede reunirse el día que sea más conveniente para Johann. Johann propone martes o miércoles a las 7:00 am. + +Posteriormente, Erika comunica que la CEO desea participar y que la sesión solicitada se moverá al **miércoles 22-jul**, cuando ella se encuentre de regreso en el país. + +Erika propone una segunda sesión, distinta de la anterior, para la **validación del prototipo de la Etapa 0**, el **jueves 23-jul a las 7:00 pm**. Aclara que: + +- La sesión del 22-jul corresponde a dudas y definiciones de la Etapa 1. +- La sesión del 23-jul corresponde a la validación del prototipo de la Etapa 0. + +Johann confirma ambas y Erika envía la convocatoria del 23-jul. + +En el seguimiento del plan, Johann aclara que para la Etapa 1 requiere: + +- Un repositorio privado de GitHub creado por Balam, con acceso de escritura. +- Acceso acotado a Azure para la infraestructura posterior. + +Se mantiene el ajuste previamente conversado: repositorio primero; Azure durante la semana del 21-jul; CI/CD y gestión de secretos como actividad separada. + +Erika pregunta si aún se necesita la estructura del Excel de cobranza con días vencidos que se había solicitado a Arturo. Johann responde que, si Balam considera que la estructura del prototipo refleja correctamente su operación, ya no será necesario prepararlo; si identifican ajustes, sí servirá como referencia. + +--- + +## 15-jul — repositorio GitHub autorizado + +Erika solicita el usuario de GitHub de Johann y confirma que Noé autorizó la creación del repositorio privado de Balam. + +Johann comparte: + +- **Usuario:** `Johann-28` +- **Perfil:** `https://github.com/Johann-28` + +**Estado al cierre:** repositorio autorizado y en proceso de creación/invitación. Falta recibir y validar el acceso efectivo con permisos de escritura. diff --git a/planeacion/Borradores-seguimiento-tecnico.md b/planeacion/Borradores-seguimiento-tecnico.md new file mode 100644 index 0000000..5b6aa0e --- /dev/null +++ b/planeacion/Borradores-seguimiento-tecnico.md @@ -0,0 +1,34 @@ +# Borradores de seguimiento técnico + +Mensajes preparados; no enviados. Actualizar si los temas se resuelven en la sesión del 22-jul. + +## 1. Correo a Noé y Pedro — salvaguardas y dudas de BIND + +**Asunto:** Balam · Salvaguardas activas y dudas técnicas de la API de BIND + +Hola Noé, Pedro: + +Confirmo que el acceso de BIND se ha utilizado exclusivamente para operaciones de lectura. El cliente bloquea cualquier operación de escritura, controla el número de solicitudes y mantiene el token fuera del repositorio. La validación se realizó sin persistir datos reales y los reportes conservan únicamente estructura y resultados técnicos. + +Para cualquier prueba futura de escritura mantendremos los candados definidos en la propuesta: autorización previa, dry-run, confirmación humana y feature flag desactivado por defecto. Si determinan crear un usuario específico de solo lectura, el cambio de token es transparente porque se carga mediante configuración segura. + +La validación confirmó que el MVP de consulta, aging y descarga de PDF es viable. Quedaron estas dudas para revisar con ustedes: + +1. ¿Existe algún endpoint de pagos individuales o complementos de pago (REP)? +2. ¿Tienen la tabla que relaciona el código interno de `CFDIUse` con la clave SAT? +3. ¿Qué formato devuelve el endpoint `/{id}/xml`? +4. ¿BIND ofrece webhooks o eventos, o debemos operar únicamente con polling? +5. ¿Qué token alimenta actualmente el Power BI? Arturo mencionó el suyo y queremos evitar afectar esa integración si se reemplaza el token. + +Quedo atento. Muchas gracias. + +Saludos, +Johann Velázquez + +## 2. WhatsApp a Erika/Pedro — flujo de horas en Jira + +> Hola Erika, Pedro. Para mantener al día el corte de horas, ya inicié un control local por actividad. ¿Me ayudan a confirmar cómo debo registrar las horas en Jira y si necesito que me agreguen a algún proyecto o tablero específico? En cuanto tenga acceso concilio lo que ya llevo y continúo reportando ahí. + +## 3. Confirmación al recibir el repositorio + +> Listo, ya recibí la invitación y confirmé que tengo acceso de escritura al repositorio. Muchas gracias. Voy a publicar la estructura inicial del backend y les aviso cuando quede disponible. diff --git a/planeacion/Hallazgos-y-decisiones-Etapa0.md b/planeacion/Hallazgos-y-decisiones-Etapa0.md new file mode 100644 index 0000000..9f538a3 --- /dev/null +++ b/planeacion/Hallazgos-y-decisiones-Etapa0.md @@ -0,0 +1,126 @@ +# Etapa 0 — Hallazgos y decisiones de arquitectura + +**Proyecto:** Plataforma de Automatización Financiera · Balam +**Estado:** borrador para cerrar con la validación del prototipo +**Última actualización:** 2026-07-15 + +## 1. Resultado del Discovery + +El flujo operativo confirmado es: + +**Jira ITSM → cotización en BIND → prefactura → validación humana → CFDI → envío según reglas del cliente → cobranza** + +Reglas de negocio principales: + +- Toda factura debe partir de una cotización en BIND. +- La prefactura es obligatoria antes de timbrar. +- PPD es el método predeterminado; PUE requiere una decisión consciente. +- IVA esperado: 16 % en operación nacional y 0 % para operación extranjera sin efectos fiscales, sujeto a las excepciones fiscales que confirme Balam. +- El alta de un cliente nuevo es un flujo separado y requiere definición final de Arturo. +- Los recordatorios se desean para todos los clientes; los correos automáticos externos permanecen fuera del MVP original (Anexo B) hasta confirmar alcance. +- La cobranza se controla por factura y folio. Debe tolerar diferencias por comisiones/fees conforme a la regla que confirme Arturo. + +## 2. Resultado de la validación de BIND + +La prueba del 6-jul realizó 117 solicitudes exclusivamente GET contra la cuenta real, sin persistir datos de Balam. + +Confirmado: + +- Saldo por factura viable con `Total - Payments - CreditNotes`. +- Cotizaciones, prefacturas, facturas, clientes, impuestos, PPD/PUE, vencimientos y PDF son consultables. +- Aging y alertas internas son viables sin consultar pagos individuales. +- El volumen proyectado de sincronización consume aproximadamente 5 % del límite de 20,000 solicitudes diarias. + +Restricciones: + +- No se encontró endpoint de pagos individuales ni complementos de pago (REP). +- BIND no expone el vínculo cotización→factura; la plataforma deberá conservarlo. +- Algunos campos clave solo aparecen en el detalle de cada factura. +- No hay webhooks confirmados; el diseño base usará sincronización incremental por polling. +- El token está acotado a una sola empresa. +- La cuenta actual es de producción y puede tener privilegios elevados; no se autoriza escritura todavía. + +Detalle técnico: [`../bind-api-sandbox/VALIDACION-API.md`](../bind-api-sandbox/VALIDACION-API.md). + +## 3. Decisiones de arquitectura + +### ADR-001 · Lectura primero y escritura controlada + +**Decisión:** operar inicialmente en modo solo lectura. Toda escritura futura requiere autorización expresa, dry-run, confirmación humana y feature flag desactivado por defecto. + +**Motivo:** Balam no cuenta con sandbox y una operación incorrecta puede tener efecto fiscal. + +### ADR-002 · Sincronización incremental + +**Decisión:** persistir en PostgreSQL el último punto de sincronización y consultar únicamente registros nuevos o modificados. Paginar siempre con lotes de hasta 100. + +**Motivo:** BIND no ofrece conteos ni `nextLink`; PPD/PUE y días de crédito requieren consultas de detalle. + +### ADR-003 · Trazabilidad propia + +**Decisión:** almacenar las relaciones `ticket Jira → cotización BIND → factura BIND` en la base de datos de la plataforma. + +**Motivo:** la API de BIND no expone de forma confiable el vínculo cotización→factura. + +### ADR-004 · Detección de pagos + +**Decisión:** para el MVP, detectar pagos mediante cambios de estatus y saldo residual. Registrar la fecha de detección, no presentarla como fecha valor. + +**Motivo:** no se encontró un recurso de pagos/REP. La fecha contable real requerirá información adicional o una ampliación. + +### ADR-005 · Separación por empresa + +**Decisión:** el MVP opera únicamente con la empresa Balam asociada al token. Multiempresa queda fuera del alcance. + +**Motivo:** cada empresa requiere su propia cuenta/token de BIND. + +### ADR-006 · Integración Jira→BIND pendiente de alcance + +**Decisión:** diseñar el modelo para conservar el identificador del ticket, pero no comprometer todavía la automatización que crea cotizaciones desde Jira. + +**Motivo:** el Discovery confirmó a Jira como entrada del proceso, pero la integración automática no estaba incluida explícitamente en el MVP. Antes de desarrollarla se requiere: + +- Confirmación de alcance. +- Cuenta técnica y acceso API/OAuth a Jira. +- Webhook o regla de automatización. +- Mapeo de campos y estatus disparador. +- Acceso controlado de escritura a BIND. + +## 4. Preguntas que deben cerrarse + +### Con Arturo / CEO — sesión del 22-jul + +1. Flujo definitivo de alta de cliente nuevo. +2. Tratamiento en BIND de diferencias por comisión/fee. +3. Particularidades de envío por cliente. +4. Estatus de Jira que autoriza crear una cotización. +5. Campos obligatorios y manejo de tickets incompletos. + +### Con Pedro / Noé + +1. Endpoint de pagos individuales o REP. +2. Mapeo interno de `CFDIUse` a clave SAT. +3. Formato de respuesta de `/{id}/xml`. +4. Disponibilidad de webhooks en BIND. +5. Token utilizado por Power BI y decisión sobre usuario de solo lectura. +6. Permisos e identidad técnica para Jira, si se aprueba la integración. + +## 5. Dependencias de infraestructura + +| Dependencia | Estado al 15-jul | Impacto | +|---|---|---| +| Token BIND | Entregado; uso solo lectura | Desbloquea consultas y cliente BIND | +| Repositorio privado GitHub | Autorizado por Noé; invitación pendiente | Necesario para publicar backend/frontend | +| Azure | Programado para semana del 21-jul | No bloquea desarrollo local | +| CI/CD y secretos | Actividad separada para 24-jul | Depende de repo y Azure | +| Jira técnico | No solicitado todavía | Solo bloquea integración automática Jira→BIND | + +## 6. Criterio de cierre de Etapa 0 + +La Etapa 0 se cierra cuando: + +- Balam valida el prototipo o registra ajustes. +- Se incorporan las decisiones de la sesión del 22-jul. +- Se valida el prototipo en la sesión del 23-jul. +- Este documento se actualiza con las respuestas finales. +- Se emite un plan refinado con alcance explícito para Jira, recordatorios externos y escritura en BIND. diff --git a/planeacion/Plan-actividades-avance-2026-07-10-ajustado.xlsx b/planeacion/Plan-actividades-avance-2026-07-10-ajustado.xlsx new file mode 100644 index 0000000..51b87be Binary files /dev/null and b/planeacion/Plan-actividades-avance-2026-07-10-ajustado.xlsx differ diff --git a/planeacion/Plan-actividades.md b/planeacion/Plan-actividades.md index fd0a32c..fb1d7db 100644 --- a/planeacion/Plan-actividades.md +++ b/planeacion/Plan-actividades.md @@ -1,21 +1,24 @@ # Plan de actividades — Etapas 0 a 3 **Proyecto:** Plataforma de Automatización Financiera · Balam -> Fechas tentativas — el arranque depende de la entrega de accesos por Balam; se confirman en el kickoff. Las etapas 2 y 3 son estimadas y se afinan al cerrar el Discovery (Etapa 0). Total ~6–7 semanas (6-jul → 21-ago). +> Fechas tentativas. Este documento incorpora los ajustes acordados al 15-jul y se mantiene sincronizado con el [Excel oficial consolidado](Plan-actividades-avance-2026-07-10-ajustado.xlsx). Las etapas 2 y 3 se afinan al validar el prototipo y cerrar las definiciones de la Etapa 1. Total estimado: ~6–7 semanas. +> +> Las horas reales se registran en [`Seguimiento-horas.csv`](Seguimiento-horas.csv); el porcentaje de avance no sustituye ese registro. ## Etapa 0 | Actividad | Inicio | Fin | Responsable | Apoyo de Balam | |---|---|---|---|---| | Sesión de arranque (kickoff) con el Ing. Noé | 01/07/2026 | 01/07/2026 | Johann | ✅ Realizada (1-jul, 7am) — Noé, Pedro, Erika | -| Sesión de Discovery: proceso actual de facturación y cobranza | 06/07/2026 | 07/07/2026 | Johann | Sí — **Araceli + Arturo** (Erika agenda) | -| Entrega y validación de accesos (token BIND de Arturo, Azure, repo) | 06/07/2026 | 07/07/2026 | Balam / Johann | Sí — token de Arturo, Azure (Pedro+Noé), repo. Manual de marca ✅ recibido (1-jul) | -| Validación técnica de la API de BIND con la cuenta real | 07/07/2026 | 08/07/2026 | Johann | Apoyo: token de Arturo (solo consulta; probar primero) | -| Configuración de infraestructura en Azure (+ staging) | 08/07/2026 | 09/07/2026 | Johann | Apoyo: accesos de Azure (Pedro+Noé) | -| Repositorio + CI/CD + gestión de secretos | 08/07/2026 | 09/07/2026 | Johann | Sí — **Balam crea el repo** (GitHub privado) | -| Prototipo visual navegable (5–6 pantallas) | 08/07/2026 | 10/07/2026 | Johann | Marca: `../marca/Marca-Balam.md` (✅ recibida) | -| Sesión de validación del prototipo | 10/07/2026 | 10/07/2026 | Johann | Sí — Pedro, Araceli y Arturo | -| Documento de hallazgos + ADRs + plan refinado | 10/07/2026 | 10/07/2026 | Johann | — | +| Sesión de Discovery: facturación, envío y cobranza | 06/07/2026 | 07/07/2026 | Johann | ✅ Realizada — Araceli + Arturo | +| Accesos iniciales: token BIND + manual de marca | 01/07/2026 | 06/07/2026 | Balam / Johann | ✅ Entregados y validados | +| Validación técnica de la API de BIND con la cuenta real | 06/07/2026 | 06/07/2026 | Johann | ✅ Realizada: 117 GET, sin escritura | +| Prototipo visual navegable | 08/07/2026 | 10/07/2026 | Johann | ✅ Entregado por correo el 10-jul; validación pendiente | +| Repositorio privado GitHub | 13/07/2026 | 16/07/2026 | Balam / Johann | Noé autorizó su creación; usuario `Johann-28`; invitación pendiente | +| Configuración de infraestructura en Azure (+ staging) | 21/07/2026 | 23/07/2026 | Johann | Apoyo: acceso acotado de Azure (Pedro+Noé); no bloquea trabajo local | +| CI/CD + gestión de secretos | 24/07/2026 | 24/07/2026 | Johann | Depende de repo y Azure | +| Documento de hallazgos + ADRs + plan refinado | 10/07/2026 | 23/07/2026 | Johann | Borrador creado; cerrar tras las sesiones del 22–23 jul | +| Sesión de validación del prototipo | 23/07/2026 | 23/07/2026 | Johann | Confirmada a las 7:00 pm con CEO/equipo Balam | **Entregable Etapa 0 (18–22 h): prototipo navegable + infraestructura Azure + repo/CI-CD + documento de hallazgos.** @@ -23,15 +26,16 @@ | Actividad | Inicio | Fin | Responsable | Apoyo de Balam | |---|---|---|---|---| -| Backend base: autenticación, roles y bitácora de auditoría | 13/07/2026 | 15/07/2026 | Johann | — | -| Arquitectura multi-tenant (tenant_id + RLS) | 14/07/2026 | 15/07/2026 | Johann | — | -| Sesión de reglas de negocio con Arturo | 13/07/2026 | 13/07/2026 | Johann | Sí — Arturo | +| Backend base: autenticación, roles y bitácora de auditoría | 13/07/2026 | 17/07/2026 | Johann | Trabajo local; publicar al recibir el repositorio | +| Arquitectura multi-tenant (tenant_id + RLS) | 14/07/2026 | 17/07/2026 | Johann | — | +| Sesión de reglas y dudas de Etapa 1 | 22/07/2026 | 22/07/2026 | Johann | Confirmada con Arturo + CEO | +| Definición de alcance Jira → cotización BIND | 22/07/2026 | 23/07/2026 | Johann / Balam | Requiere confirmar si la integración automática entra al MVP antes de pedir token técnico | | Cliente de la API de BIND (reintentos, OData, errores) | 15/07/2026 | 17/07/2026 | Johann | — | | Capa de escritura controlada (cotización→factura) | 17/07/2026 | 22/07/2026 | Johann | — | | Sincronización de clientes | 20/07/2026 | 21/07/2026 | Johann | — | | Sincronización de facturas y cotizaciones | 21/07/2026 | 23/07/2026 | Johann | — | | Modelo de facturas + migraciones + datos de prueba | 23/07/2026 | 24/07/2026 | Johann | — | -| Demostración semanal (viernes) + reporte de horas | 10/07/2026 | 24/07/2026 | Johann | Sí — Erika/Pedro | +| Demostración semanal (viernes) + reporte de horas | 10/07/2026 | 24/07/2026 | Johann | Sí — Erika/Pedro; control local en `Seguimiento-horas.csv` mientras Jira se habilita | **Entregable Etapa 1 (32–39 h): plataforma base que sincroniza clientes y facturas de BIND, con capa de escritura controlada.** @@ -41,7 +45,7 @@ |---|---|---|---|---| | Implementación productiva de las pantallas (Angular Material) + integración con el backend | 27/07/2026 | 31/07/2026 | Johann | — | | Listado de facturas (filtros, búsqueda, paginación) + detalle con descarga PDF/XML | 28/07/2026 | 31/07/2026 | Johann | — | -| Catálogo de clientes + lista blanca configurable (ACUNTIA + Top 3) | 03/08/2026 | 04/08/2026 | Johann | — | +| Catálogo de clientes + reglas de cobranza | 03/08/2026 | 04/08/2026 | Johann | Lista blanca actualmente vacía: recordatorios para todos | | Creación de cotizaciones + conversión a factura vía API de BIND | 31/07/2026 | 04/08/2026 | Johann | — | | Emisión multimoneda MXN/USD + flujo con confirmación humana y dry-run | 04/08/2026 | 06/08/2026 | Johann | — | | Tipo de cambio del DOF (proceso programado) | 05/08/2026 | 05/08/2026 | Johann | — | @@ -57,7 +61,7 @@ |---|---|---|---|---| | Sesión: alcance del tablero vs el Power BI existente (con Pedro) | 10/08/2026 | 10/08/2026 | Johann | Sí — Pedro | | Módulo de cobranza: antigüedad de cartera (30/60/90) + por vencer y vencidas | 10/08/2026 | 12/08/2026 | Johann | — | -| Alertas internas configurables para Finanzas + aplicación de lista blanca | 12/08/2026 | 13/08/2026 | Johann | — | +| Alertas internas configurables para Finanzas | 12/08/2026 | 13/08/2026 | Johann | Correos automáticos al cliente requieren confirmar ampliación de alcance | | Tablero directivo de cuentas por cobrar | 13/08/2026 | 15/08/2026 | Johann | — | | Reportes operativos configurables (CSV/XLSX/PDF) | 17/08/2026 | 18/08/2026 | Johann | — | | Endurecimiento de seguridad + respaldos + plan de recuperación | 18/08/2026 | 19/08/2026 | Johann | — | diff --git a/planeacion/Plan-actividades.xlsx b/planeacion/Plan-actividades.xlsx deleted file mode 100644 index 048aadf..0000000 Binary files a/planeacion/Plan-actividades.xlsx and /dev/null differ diff --git a/planeacion/Seguimiento-horas.csv b/planeacion/Seguimiento-horas.csv new file mode 100644 index 0000000..147aefd --- /dev/null +++ b/planeacion/Seguimiento-horas.csv @@ -0,0 +1,19 @@ +fecha,semana,etapa,actividad_id,actividad,horas,estado_hora,fuente_evidencia,facturable,notas +2026-07-01,2026-W27,0,E0-01,Sesión de arranque con Noé,1.00,confirmada,bitacora/REGISTRO.md#22,si,"Sesión calendarizada de 7:00 a 8:00 am" +2026-07-01,2026-W27,0,E0-01,Preparación de plan kickoff y materiales,1.00,reconstruida,planeacion/Kickoff-2026-07-01.md,si,"Estimación retrospectiva; validar antes de facturar" +2026-07-06,2026-W28,0,E0-02,Discovery de facturación y envío,1.08,confirmada,bitacora/REGISTRO.md#27,si,"Duración documentada: aproximadamente 1 h 5 min" +2026-07-06,2026-W28,0,E0-02,Preparación y análisis de Discovery de facturación,1.92,reconstruida,bitacora/REGISTRO.md#27,si,"Completa 3.00 h para facturación/envío incluyendo sesión" +2026-07-06,2026-W28,0,E0-03,Coordinación y validación de accesos BIND y marca,1.00,reconstruida,bitacora/REGISTRO.md#28-31,si,"Recepción documentación y salvaguardas" +2026-07-06,2026-W28,0,E0-04,Validación técnica de API BIND,4.50,reconstruida,bind-api-sandbox/VALIDACION-API.md,si,"117 GET análisis y reporte técnico" +2026-07-07,2026-W28,0,E0-02,Discovery de cobranza,1.00,confirmada,bitacora/REGISTRO.md#35,si,"Sesión calendarizada de 7:00 a 8:00 am; sin grabación" +2026-07-07,2026-W28,0,E0-02,Preparación y documentación de Discovery de cobranza,1.50,reconstruida,fuentes/2026-07-07 - Notas - Proceso actual de cobranza (sin grabacion).md,si,"Estimación retrospectiva" +2026-07-08,2026-W28,0,E0-05,Diseño y construcción del prototipo,3.00,reconstruida,prototipo/Prototipo-Etapa0.html,si,"Primera mitad del esfuerzo reconstruido" +2026-07-09,2026-W28,0,E0-05,Ajustes de cobranza navegación y prototipo,3.00,reconstruida,prototipo/Prototipo-Etapa0.html,si,"Segunda mitad del esfuerzo reconstruido" +2026-07-10,2026-W28,0,E0-06,Entregable hallazgos ADRs PDF correo y plan,3.00,reconstruida,prototipo/Correo-prototipo-Etapa0.md,si,"Incluye preparación del entregable y documentación" +2026-07-13,2026-W29,1,E1-01,Backend base autenticación roles y auditoría,2.00,reconstruida,planeacion/Plan-actividades.md,si,"Trabajo local; falta conciliar contra evidencia de código" +2026-07-13,2026-W29,1,E1-02,Coordinación del repositorio GitHub,0.50,reconstruida,bitacora/REGISTRO.md#43,si,"Seguimiento de creación y acceso" +2026-07-14,2026-W29,1,E1-01,Backend base autenticación roles y auditoría,1.50,reconstruida,planeacion/Plan-actividades.md,si,"Trabajo local; completa 3.50 h" +2026-07-14,2026-W29,1,E1-03,Arquitectura multi-tenant,1.00,reconstruida,planeacion/Plan-actividades.md,si,"Diseño inicial tenant_id y RLS" +2026-07-15,2026-W29,1,E1-03,Arquitectura multi-tenant,0.50,reconstruida,planeacion/Plan-actividades.md,si,"Completa 1.50 h" +2026-07-15,2026-W29,1,E1-04,Cliente productivo de API BIND,2.00,reconstruida,bind-api-sandbox/VALIDACION-API.md,si,"Inicio de reintentos OData y manejo de errores" +2026-07-15,2026-W29,1,E1-05,Seguimiento ajuste de calendario y corte de horas,0.50,reconstruida,bitacora/REGISTRO.md#41-45,si,"Actualización de plan y control" diff --git a/planeacion/Seguimiento-horas.md b/planeacion/Seguimiento-horas.md new file mode 100644 index 0000000..35ce092 --- /dev/null +++ b/planeacion/Seguimiento-horas.md @@ -0,0 +1,62 @@ +# Seguimiento de horas + +Fuente local de horas efectivamente trabajadas para el proyecto Balam. Se mantiene mientras Johann obtiene acceso al flujo de Jira; después, Jira será el registro operativo y este archivo/CSV servirá para conciliación y facturación. + +**Tarifa contractual:** $600 MXN/h + IVA +**Cadencia:** corte semanal; factura los viernes; pago a 30 días +**Datos tabulares:** [`Seguimiento-horas.csv`](Seguimiento-horas.csv) +**Última actualización:** 2026-07-15 + +## Reglas de captura + +1. Registrar el tiempo el mismo día, en incrementos de 0.25 h. +2. Separar sesiones, desarrollo, análisis, documentación y gestión técnica. +3. Vincular cada registro con una actividad del plan y una evidencia cuando exista. +4. No convertir porcentajes de avance en horas: el avance mide entregable; las horas miden esfuerzo real. +5. No completar retrospectivamente una duración sin respaldo. Si solo se conoce la actividad, dejarla en la lista de reconstrucción hasta que Johann confirme el tiempo. +6. Al habilitarse Jira, conciliar ambos registros y evitar duplicados. + +## Corte reconstruido al 15-jul + +| Etapa | Horas al corte | Rango estimado de la etapa | Estado | +|---|---:|---:|---| +| Etapa 0 | **22.00 h** | 18–22 h | Límite superior consumido; prototipo pendiente de validación | +| Etapa 1 | **8.00 h** | 32–39 h | En curso | +| **Total** | **30.00 h** | | Coincide con la facturación inicial propuesta | + +Las **26.92 h** que no corresponden a sesiones con duración documentada se reconstruyeron retrospectivamente por actividad. Deben validarse contra memoria, archivos de trabajo y Jira antes de presentarse como horas efectivamente trabajadas. + +## Horas con duración comprobable + +| Semana | Etapa | Horas confirmadas | Alcance incluido | +|---|---:|---:|---| +| 2026-W27 | 0 | 1.00 | Kickoff | +| 2026-W28 | 0 | 2.08 | Discovery de facturación/envío y cobranza | +| **Total comprobable** | | **3.08** | Solo sesiones con duración documentada | + +> Las 3.08 h están incluidas dentro del corte reconstruido de 30 h; no deben sumarse nuevamente. + +## Distribución reconstruida + +Johann debe confirmar esta distribución antes de usarla para facturación: + +| Etapa | Actividad consolidada | Horas | +|---|---|---:| +| 0 | Kickoff y preparación | 2.00 | +| 0 | Discovery de facturación, envío y cobranza | 5.50 | +| 0 | Accesos y salvaguardas | 1.00 | +| 0 | Validación técnica de BIND | 4.50 | +| 0 | Prototipo navegable | 6.00 | +| 0 | Entregable, hallazgos, ADRs y plan | 3.00 | +| 1 | Backend base | 3.50 | +| 1 | Arquitectura multi-tenant | 1.50 | +| 1 | Cliente productivo de BIND | 2.00 | +| 1 | Repositorio y seguimiento | 1.00 | +| | **Total** | **30.00** | + +## Corte comercial + +- La propuesta v1.2 contempla una **facturación inicial de 30 h ($18,000 + IVA)** que cubre Etapa 0 e inicio de Etapa 1. +- Esas 30 h son el concepto comercial autorizado en la propuesta, pero el contrato exige reportar horas efectivamente trabajadas. +- Antes de emitir, Johann debe validar el desglose reconstruido y conciliarlo contra Jira. +- La emisión sigue pendiente de confirmación de Balam al correo del 2-jul. diff --git a/planeacion/Sesion-Etapa1-2026-07-22.md b/planeacion/Sesion-Etapa1-2026-07-22.md new file mode 100644 index 0000000..a5ddb1f --- /dev/null +++ b/planeacion/Sesion-Etapa1-2026-07-22.md @@ -0,0 +1,88 @@ +# Sesión de reglas y definiciones — Etapa 1 + +**Fecha:** miércoles 22-jul-2026 +**Participantes esperados:** CEO, Arturo, Erika, Johann +**Objetivo:** cerrar decisiones que afectan el modelo de datos y el alcance técnico antes de implementar escritura e integración Jira→BIND. + +## Resultado esperado + +Al terminar deben quedar definidos: + +1. Flujo de alta de un cliente nuevo. +2. Tratamiento de diferencias por comisión/fee. +3. Fuente y reglas de particularidades de envío. +4. Alcance de la automatización Jira→cotización BIND. +5. Datos y autorización necesarios para comenzar escritura controlada. + +## Agenda propuesta (45–60 min) + +### 1. Alta de cliente nuevo — 10 min + +- ¿Quién crea actualmente al cliente en BIND? +- ¿Qué documentos y validaciones son obligatorios? +- ¿Qué estatus de Jira indica que el alta está autorizada? +- ¿La plataforma solo debe detectar que falta el cliente o también crearlo? +- ¿Qué ocurre si el RFC ya existe o los datos fiscales no coinciden? + +**Decisión a registrar:** alcance exacto del MVP y responsable de cada paso. + +### 2. Comisión/fee en cobranza — 10 min + +- Cuando el pago recibido es menor por una comisión, ¿cómo se registra en BIND? +- ¿Pago parcial con saldo residual, nota de crédito, gasto/comisión o ajuste contable? +- ¿Existe una tolerancia fija o cambia por cliente/banco? +- ¿Quién autoriza considerar una factura como saldada con diferencia? + +**Decisión a registrar:** fórmula de estado de cobranza y si el umbral es global o por cliente. + +### 3. Particularidades de envío — 10 min + +- Confirmar destinatarios, adjuntos, nomenclatura del asunto y cuerpo por cliente. +- Definir quién mantiene estos datos y con qué frecuencia cambian. +- Confirmar si el Excel en preparación será la fuente inicial para cargarlos. + +**Decisión a registrar:** estructura mínima del catálogo y responsable de mantenimiento. + +### 4. Jira → cotización BIND — 15 min + +Explicar que Jira es parte confirmada del proceso, pero la creación automática de cotizaciones no estaba incluida explícitamente en el alcance inicial. + +- ¿La expectativa del MVP es solo conservar el folio de Jira o crear automáticamente la cotización en BIND? +- ¿Qué estatus o aprobación dispara la acción? +- ¿Qué tipos de ticket aplican: adicional, baja, headhunting, staff augmentation? +- ¿Qué campos son obligatorios y qué ocurre si falta alguno? +- ¿Debe haber una previsualización/confirmación humana antes de escribir en BIND? + +Si Balam confirma la automatización, solicitar posteriormente: + +- Cuenta técnica de Jira con acceso mínimo al proyecto. +- API token/OAuth y permiso para webhook o automatización. +- Identificadores del sitio/proyecto y mapeo de campos. +- Autorización de escritura controlada en BIND. + +**Decisión a registrar:** incluido, diferido o sujeto a estimación/cambio de alcance. + +### 5. Cierre técnico — 10 min + +- Confirmar si ya está listo el repositorio GitHub y el acceso de Johann. +- Confirmar fecha y responsable del acceso Azure. +- Confirmar cuándo Pedro habilitará el reporte de horas en Jira. +- Revisar las preguntas técnicas pendientes de BIND: pagos/REP, `CFDIUse`, XML, webhooks y token de Power BI. + +## Límites que conviene explicitar + +- Recordatorios automáticos enviados al cliente: Anexo B; el MVP contempla alertas internas. +- Multiempresa: fuera del MVP; cada empresa requiere token/cuenta BIND. +- Escritura en producción: solo con autorización, dry-run, confirmación humana y feature flag. +- Integración Jira automática: pendiente de confirmación de alcance. + +## Minuta para llenar durante la sesión + +| Tema | Decisión | Responsable | Fecha | +|---|---|---|---| +| Alta de cliente | | | | +| Fee/comisión | | | | +| Particularidades de envío | | | | +| Jira→BIND | | | | +| Escritura BIND | | | | +| Repo/Azure/Jira horas | | | | diff --git a/planeacion/actualizar_excel_horas.py b/planeacion/actualizar_excel_horas.py new file mode 100644 index 0000000..1d5da24 --- /dev/null +++ b/planeacion/actualizar_excel_horas.py @@ -0,0 +1,288 @@ +"""Actualiza el plan oficial con el corte reconstruido de horas al 15-jul-2026.""" + +from copy import copy +from pathlib import Path + +import openpyxl +from openpyxl.styles import Alignment, Font, PatternFill +from openpyxl.utils import get_column_letter + + +PATH = Path(__file__).with_name("Plan-actividades-avance-2026-07-10-ajustado.xlsx") + + +def find_row(ws, task): + for row in range(2, ws.max_row + 1): + if ws.cell(row, 1).value == task: + return row + raise ValueError(f"No se encontró la tarea: {task}") + + +def copy_row_style(ws, source_row, target_row, max_col=11): + for col in range(1, max_col + 1): + source = ws.cell(source_row, col) + target = ws.cell(target_row, col) + if source.has_style: + target._style = copy(source._style) + target.number_format = source.number_format + target.alignment = copy(source.alignment) + + +workbook = openpyxl.load_workbook(PATH) +sheet = workbook["Plan"] + +# Actividades separadas después del plan original. Las inserciones son idempotentes. +if not any( + sheet.cell(row, 1).value == "Definición de alcance Jira → cotización BIND" + for row in range(2, sheet.max_row + 1) +): + source_row = find_row(sheet, "Sesión de reglas de negocio con Arturo") + sheet.insert_rows(source_row + 1) + copy_row_style(sheet, source_row, source_row + 1) + values = [ + "Definición de alcance Jira → cotización BIND", + "2 días", + "mié 22/07/26", + "jue 23/07/26", + None, + "Johan y Balam", + 0, + ] + for column, value in enumerate(values, start=1): + sheet.cell(source_row + 1, column, value) + +if not any( + sheet.cell(row, 1).value == "CI/CD + gestión de secretos" + for row in range(2, sheet.max_row + 1) +): + source_row = find_row(sheet, "Repositorio + CI/CD + gestión de secretos") + sheet.insert_rows(source_row + 1) + copy_row_style(sheet, source_row, source_row + 1) + values = [ + "CI/CD + gestión de secretos", + "1 día", + "vie 24/07/26", + "vie 24/07/26", + None, + "Johan y Pedro", + 0, + ] + for column, value in enumerate(values, start=1): + sheet.cell(source_row + 1, column, value) + +# Calendario ajustado con los acuerdos del 13–15 de julio. +updates = { + "Sesión de validación del prototipo": ( + "1 día", + "jue 23/07/26", + "jue 23/07/26", + "Johan y Balam", + ), + "Documento de hallazgos + ADRs + plan refinado": ( + "10 días", + "vie 10/07/26", + "jue 23/07/26", + "Johan", + ), + "Sesión de reglas de negocio con Arturo": ( + "1 día", + "mié 22/07/26", + "mié 22/07/26", + "Arturo y CEO", + ), + "Backend base: autenticación, roles y bitácora de auditoría": ( + "5 días", + "lun 13/07/26", + "vie 17/07/26", + "Johan", + ), + "Repositorio + CI/CD + gestión de secretos": ( + "4 días", + "lun 13/07/26", + "jue 16/07/26", + "Pedro y Noé", + ), + "Arquitectura multi-tenant (tenant_id + RLS)": ( + "4 días", + "mar 14/07/26", + "vie 17/07/26", + "Johan", + ), +} + +for task, (duration, start, end, resources) in updates.items(): + row = find_row(sheet, task) + sheet.cell(row, 2, duration) + sheet.cell(row, 3, start) + sheet.cell(row, 4, end) + sheet.cell(row, 6, resources) + +rules_row = find_row(sheet, "Sesión de reglas de negocio con Arturo") +sheet.cell(rules_row, 1, "Sesión de reglas y dudas de Etapa 1") +repo_row = find_row(sheet, "Repositorio + CI/CD + gestión de secretos") +sheet.cell(repo_row, 1, "Repositorio privado GitHub") + +headers = { + 8: "Horas al 15/07", + 9: "Tipo de registro", + 10: "Notas de horas", + 11: "Rango estimado", +} +for column, value in headers.items(): + cell = sheet.cell(1, column, value) + cell.fill = copy(sheet.cell(1, 1).fill) + cell.font = copy(sheet.cell(1, 1).font) + cell.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True) + +# Corte: 22 h de Etapa 0 + 8 h del inicio de Etapa 1 = 30 h. +hours = { + "Sesión de arranque (kickoff) con el Ing. Noé": ( + 2.00, + "Incluye preparación y sesión de 1 h", + ), + "Sesión de Discovery: proceso actual de facturación y cobranza": ( + 5.50, + "Incluye preparación, sesiones y documentación de facturación/cobranza", + ), + "Entrega y validación de accesos (BIND + manual de marca)": ( + 1.00, + "Coordinación, recepción y salvaguardas", + ), + "Validación técnica de la API de BIND con la cuenta real": ( + 4.50, + "117 consultas GET, análisis y reporte técnico", + ), + "Prototipo visual navegable": ( + 6.00, + "Diseño, construcción y ajustes con datos ficticios", + ), + "Sesión de validación del prototipo": (0.00, "Agendada para el 23-jul"), + "Documento de hallazgos + ADRs + plan refinado": ( + 3.00, + "PDF/correo de entrega, hallazgos, ADRs y actualización del plan", + ), + "Sesión de reglas y dudas de Etapa 1": (0.00, "Agendada para el 22-jul"), + "Definición de alcance Jira → cotización BIND": ( + 0.00, + "Se define con Balam el 22–23 jul", + ), + "Backend base: autenticación, roles y bitácora de auditoría": ( + 3.50, + "Trabajo local del 13–15 jul", + ), + "Repositorio privado GitHub": (0.50, "Coordinación de creación y acceso"), + "CI/CD + gestión de secretos": (0.00, "Programado para el 24-jul"), + "Arquitectura multi-tenant (tenant_id + RLS)": ( + 1.50, + "Diseño técnico inicial", + ), + "Cliente de la API de BIND (reintentos, OData, errores)": ( + 2.00, + "Inicio del cliente productivo", + ), + "Demostración semanal (viernes) + reporte de horas": ( + 0.50, + "Seguimiento, ajuste de calendario y corte de horas", + ), +} + +pending = { + "Sesión de validación del prototipo", + "Sesión de reglas y dudas de Etapa 1", + "Definición de alcance Jira → cotización BIND", + "CI/CD + gestión de secretos", +} + +stage_rows = {0: [], 1: []} +current_stage = None +for row in range(2, sheet.max_row + 1): + task = sheet.cell(row, 1).value + if task == "Etapa 0": + current_stage = 0 + sheet.cell(row, 11, "18–22 h") + continue + if task == "Etapa 1": + current_stage = 1 + sheet.cell(row, 11, "32–39 h") + continue + if task == "Integracion de plataformas Balam": + sheet.cell(row, 11, "112–136 h") + continue + if task not in hours: + continue + value, note = hours[task] + sheet.cell(row, 8, value) + sheet.cell(row, 9, "Pendiente" if task in pending else "Reconstruida") + sheet.cell(row, 10, note) + if current_stage in stage_rows: + stage_rows[current_stage].append(row) + +project_row = find_row(sheet, "Integracion de plataformas Balam") +stage0_row = find_row(sheet, "Etapa 0") +stage1_row = find_row(sheet, "Etapa 1") +sheet.cell(stage0_row, 8, f"=SUM({','.join(f'H{row}' for row in stage_rows[0])})") +sheet.cell(stage1_row, 8, f"=SUM({','.join(f'H{row}' for row in stage_rows[1])})") +sheet.cell(project_row, 8, f"=H{stage0_row}+H{stage1_row}") + +summaries = { + project_row: "Corte reconstruido al 15-jul", + stage0_row: "22 h: límite superior estimado de la etapa", + stage1_row: "8 h consumidas al 15-jul; etapa aún en curso", +} +for row, note in summaries.items(): + sheet.cell(row, 9, "Resumen") + sheet.cell(row, 10, note) + +for row in range(2, sheet.max_row + 1): + sheet.cell(row, 8).number_format = '0.00 "h"' + for column in range(8, 12): + sheet.cell(row, column).alignment = Alignment(vertical="top", wrap_text=True) + if sheet.cell(row, 1).value in { + "Integracion de plataformas Balam", + "Etapa 0", + "Etapa 1", + }: + for column in range(8, 12): + sheet.cell(row, column).font = Font(bold=True, color="FFFFFF") + sheet.cell(row, column).fill = PatternFill("solid", fgColor="331F0E") + +widths = { + 1: 58, + 2: 13, + 3: 16, + 4: 16, + 5: 14, + 6: 22, + 7: 14, + 8: 16, + 9: 18, + 10: 55, + 11: 18, +} +for column, width in widths.items(): + sheet.column_dimensions[get_column_letter(column)].width = width + +sheet.freeze_panes = "A2" +sheet.auto_filter.ref = f"A1:K{sheet.max_row}" +sheet.sheet_properties.pageSetUpPr.fitToPage = True +sheet.page_setup.fitToWidth = 1 +sheet.page_setup.fitToHeight = 0 +sheet.oddFooter.center.text = ( + "Horas reconstruidas al 15-jul-2026; validar contra Jira antes de facturar" +) + +stage0_total = sum(hours[sheet.cell(row, 1).value][0] for row in stage_rows[0]) +stage1_total = sum(hours[sheet.cell(row, 1).value][0] for row in stage_rows[1]) +assert stage0_total == 22.0 +assert stage1_total == 8.0 + +temporary = PATH.with_suffix(".tmp.xlsx") +workbook.save(temporary) +check = openpyxl.load_workbook(temporary, data_only=False)["Plan"] +assert check.max_column == 11 +assert check.cell(find_row(check, "Etapa 0"), 8).value.startswith("=SUM(") +assert check.cell(find_row(check, "Etapa 1"), 8).value.startswith("=SUM(") +temporary.replace(PATH) + +print(f"Actualizado: {PATH}") +print("Etapa 0: 22.00 h | Etapa 1: 8.00 h | Total al 15-jul: 30.00 h") diff --git a/prototipo/Correo-prototipo-Etapa0.md b/prototipo/Correo-prototipo-Etapa0.md new file mode 100644 index 0000000..6f90271 --- /dev/null +++ b/prototipo/Correo-prototipo-Etapa0.md @@ -0,0 +1,33 @@ +# Correo — Prototipo navegable Etapa 0 (para validación) + +Enviado · 10-jul-2026 +Adjunto: Prototipo-Balam-Etapa0.pdf + +Para: Erika Chávez; Ing. Noé Rocha +CC: Pedro Ayala +(sin Araceli, según indicó Erika el 10-jul) + +**Respuesta de Balam:** revisión interna en curso; sesión de validación confirmada para el 23-jul-2026 a las 7:00 pm. + +Asunto: Balam · Prototipo navegable de la Etapa 0 (para validación) + +====================================================================== + +Hola Erika, Ing. Noé: + +Como lo comentamos, les comparto el prototipo navegable de la plataforma de facturación y cobranza, correspondiente al entregable de la Etapa 0 (Discovery). + +El prototipo refleja el proceso real que levantamos en las sesiones con Araceli y Arturo: solicitud en Jira, cotización BIND, prefactura, aprobación humana, CFDI y envío al cliente; más la parte de cobranza (antigüedad de saldos por factura con tolerancia a comisiones, pagos y recordatorios). También incorpora las reglas de validación que surgieron en el Discovery: PPD por defecto, IVA 16%/0%, prefactura siempre antes de timbrar y la cotización BIND como punto de partida obligatorio. + +Lo pueden revisar de dos formas: + +1. PDF adjunto: recorrido pantalla por pantalla con una breve descripción de cada una. + +2. Versión navegable (por si quieren recorrerla ustedes mismos): paputec.mx/balam, entran directo. Es un entorno temporal de demostración con datos 100% ficticios, sin conexión a BIND ni a datos reales; lo doy de baja al cerrar la validación. + +Toda la información que ven (clientes, montos, folios) es ilustrativa, únicamente para visualizar el flujo. + +Quedo muy atento a sus comentarios; si les resulta más cómodo, con gusto agendamos una sesión corta para recorrerlo juntos y afinar detalles. + +Saludos cordiales, +Johann Velázquez diff --git a/prototipo/Prototipo-Balam-Etapa0.pdf b/prototipo/Prototipo-Balam-Etapa0.pdf new file mode 100644 index 0000000..2e27ad1 Binary files /dev/null and b/prototipo/Prototipo-Balam-Etapa0.pdf differ diff --git a/prototipo/capturas/00-login.png b/prototipo/capturas/00-login.png new file mode 100644 index 0000000..50d0e57 Binary files /dev/null and b/prototipo/capturas/00-login.png differ diff --git a/prototipo/capturas/01-dashboard.png b/prototipo/capturas/01-dashboard.png index 1cac4e7..7e6b10e 100644 Binary files a/prototipo/capturas/01-dashboard.png and b/prototipo/capturas/01-dashboard.png differ diff --git a/prototipo/capturas/02-solicitudes.png b/prototipo/capturas/02-solicitudes.png index 9332ce5..916a204 100644 Binary files a/prototipo/capturas/02-solicitudes.png and b/prototipo/capturas/02-solicitudes.png differ diff --git a/prototipo/capturas/03-solicitud-detalle.png b/prototipo/capturas/03-solicitud-detalle.png index e319268..a27ddf1 100644 Binary files a/prototipo/capturas/03-solicitud-detalle.png and b/prototipo/capturas/03-solicitud-detalle.png differ diff --git a/prototipo/capturas/04-emision.png b/prototipo/capturas/04-emision.png index 402b61a..6ac460a 100644 Binary files a/prototipo/capturas/04-emision.png and b/prototipo/capturas/04-emision.png differ diff --git a/prototipo/capturas/05-envio.png b/prototipo/capturas/05-envio.png index 91e4a2d..7b2387b 100644 Binary files a/prototipo/capturas/05-envio.png and b/prototipo/capturas/05-envio.png differ diff --git a/prototipo/capturas/06-cobranza.png b/prototipo/capturas/06-cobranza.png index 39c862e..fb83cef 100644 Binary files a/prototipo/capturas/06-cobranza.png and b/prototipo/capturas/06-cobranza.png differ diff --git a/prototipo/capturas/07-pagos.png b/prototipo/capturas/07-pagos.png index 5cc76fe..8d67d85 100644 Binary files a/prototipo/capturas/07-pagos.png and b/prototipo/capturas/07-pagos.png differ diff --git a/prototipo/capturas/08-bitacora.png b/prototipo/capturas/08-bitacora.png index 11fa717..42d3eff 100644 Binary files a/prototipo/capturas/08-bitacora.png and b/prototipo/capturas/08-bitacora.png differ