072a3cdab2
Co-Authored-By: Claude Fable 5 (1M context) <noreply@anthropic.com>
75 lines
7.1 KiB
Markdown
75 lines
7.1 KiB
Markdown
# Guion — sesión del viernes 21-ago-2026, 7:00 am (Noé, Araceli, Pedro)
|
||
|
||
**Objetivo:** emitir la **primera cotización real** en BIND desde `FAC-106` y validar las 17 categorías. **Alcance:** termina en la cotización (sin prefactura, sin timbrado, sin tocar Jira). Sondeo y diagnóstico de anoche: [`Sondeo-FAC-106-y-payload-2026-08-20.md`](Sondeo-FAC-106-y-payload-2026-08-20.md).
|
||
|
||
---
|
||
|
||
## 0 · Esta noche (5 min)
|
||
|
||
- [ ] **Avisar a Pedro por WhatsApp** — cumple el compromiso del 12-ago de avisar antes de cada escritura, y corrige el shape que se compartió entonces (llevaba `VATRate: 16`; el correcto es `0.16`). Borrador:
|
||
|
||
> *Pedro, ya quedó listo el caso sobre FAC-106: la plataforma ya lee el formulario nuevo (cliente, servicio, cantidad, IVA) y encontré la causa del error de la sesión pasada — la tasa de IVA iba en porcentaje y BIND la espera como fracción (0.16), ya corregido y probado en simulación. Mañana muestro la vista previa y, con su ok, emitimos la cotización real y Araceli la cancela al terminar. Nos vemos a las 7.*
|
||
|
||
## 1 · Antes de las 7:00 (6:35–6:55)
|
||
|
||
- [ ] `docker compose up -d` (Postgres ya suele estar arriba) · levantar API y frontend.
|
||
- [ ] **Verificar que el modo diga `ReadOnly`** al entrar a la pantalla de emisión (quedó así anoche; el candado se abre solo en el paso 4).
|
||
- [ ] Re-sondeo exprés de `FAC-106` (Pedro anduvo moviendo formularios): abrir la solicitud en la plataforma y confirmar que siga prellenando **CEMEX / Servicio de Enlace / 1 / 16% / 1234 / MXN**. Si algo cambió, el fallback manual sigue funcionando — se captura a mano en la misma pantalla.
|
||
- [ ] Terminal lista con los dos comandos del candado (paso 4 y cierre).
|
||
- [ ] Abrir el [sondeo](Sondeo-FAC-106-y-payload-2026-08-20.md) en una pestaña (plan B §4 y preguntas).
|
||
|
||
## 2 · Al abrir la sesión — ANUNCIAR ANTES DE EJECUTAR (pendiente arrastrado del 12-ago)
|
||
|
||
1. **Destino de la cotización:** se emite real sobre CEMEX con los datos de `FAC-106`; **al terminar, Araceli la cancela en vivo** (ella confirmó el 12-ago: sin timbrar, se cancela sin efecto). Así el ejercicio además demuestra la reversa.
|
||
2. **La prefactura pertenece a otra sesión** (candados: cotización → prefactura → aprobación humana → timbrado).
|
||
3. Qué se corrigió del 500: escala de la tasa, IVA de partida como monto, lista de precios omitida.
|
||
|
||
## 3 · Demo en ReadOnly (el camino feliz, sin riesgo)
|
||
|
||
Abrir bandeja → `FAC-106` → **Cotizar**: la partida se prellena sola desde el formulario nuevo y la **vista previa (dry-run) se genera automática** — enseñar el body exacto. Aquí se valida con Araceli que los datos son los que ella capturaría.
|
||
|
||
## 4 · Emisión real (una sola vez)
|
||
|
||
```bash
|
||
dotnet user-secrets set "Bind:Mode" "Write" --project src/Balam.Api # + reiniciar API
|
||
```
|
||
|
||
**Confirmar** → folio y total en pantalla → **"véanlo en su BIND"** (Ventas → Cotizaciones) → Araceli cancela → candado de vuelta:
|
||
|
||
```bash
|
||
dotnet user-secrets set "Bind:Mode" "ReadOnly" --project src/Balam.Api
|
||
```
|
||
|
||
**Si BIND rechaza:** el body del error se lee en pantalla (ya no es 500 ciego). Orden de ataque: (1) agregar `PriceListID` de una cotización reciente del cliente; (2) mandar el GUID del servicio en `ID`; (3) probar `Type`. Y si no sale en vivo, Araceli ya dijo la vez pasada: *"haz la prueba y podemos agendar otra sesión"* — el dry-run mostrado ya es entregable.
|
||
|
||
## 5 · Preguntas que SOLO se resuelven con ellos (en orden de impacto)
|
||
|
||
1. 🔴 **`Empresa origen` = Balam / RegioTurk / Helmstone — ¿cuentas de BIND distintas?** Hay un solo token; si cada empresa factura en su cuenta, cambia el alcance.
|
||
2. 🔴 **El combo IVA no tiene `0%`** y hay clientes de exportación en el combo (ACUNTIA S.A.U., VictTec, IAMCFORWARDER). ¿Se agrega la opción?
|
||
3. 🔴 **"Servicio de Enlace" existe 5 veces en BIND** con unidad SAT y ChargeVAT distintos — ¿quién depura BIND y cuál es el mapeo etiqueta→ítem? (segunda mitad de lo que pidió Araceli el 12-ago).
|
||
4. **Validar las 17 categorías** (Pedro las condicionó a Noé+Ara — es esta junta).
|
||
5. **Regla de edición:** ¿historial de cotizaciones o modificar la misma? (quedó como "regla de negocio de Balam" el 12-ago).
|
||
6. ☁️ **Azure** — tercera semana; Noé dijo "lo resuelvo con Pedro" y Pedro ahora es el responsable. Requisitos: grupo de recursos + Contributor (app+BD+Key Vault), sin Global Admin.
|
||
7. 👤 Con el relevo a Pedro: **¿a quién se reportan horas/avances/facturación ahora?** (todo el circuito iba por Erika).
|
||
8. Recordatorios menores: fijar que **manda el combo Cliente (11598)** sobre el texto libre (11596); quitar el **SLA** a estos tickets (Pedro lo dijo, confirmar que se hizo); **grabaciones de BIND** que Pedro ofreció el 12-ago.
|
||
|
||
## 6 · Protocolo si la emisión FALLA (decidido en frío, la noche anterior)
|
||
|
||
**Primeros 30 segundos — narrar, no disculparse.** Leer el error de BIND **en voz alta** desde la pantalla: *"BIND lo rechazó con este mensaje — exactamente para esto era la prueba acompañada."* El 12-ago el 500 fue ciego; que hoy el diagnóstico se lea en vivo ES la mejora. No silencio, no disculpa larga, no cerrar la ventana.
|
||
|
||
**Regla de intentos: máximo 2 reintentos, ~10 minutos.** Solo los del plan B y en orden (PriceListID → GUID en `ID` → `Type`) — nada de mutaciones improvisadas: cada reintento es un intento de escritura y el acuerdo con Noé es no probar más de lo definido. **Antes de cada reintento, verificar por lectura que el intento anterior NO haya creado la cotización** (un 500 puede escribir de todos modos) — evita duplicados y de paso demuestra el control.
|
||
|
||
**Al parar (guion literal):** *"Ya tengo el diagnóstico exacto en el mensaje de BIND. Lo corrijo hoy mismo y la emisión son 15 minutos — les propongo repetir solo ese paso mañana o el lunes; les confirmo a Pedro en cuanto esté."* Compromiso corto y específico; nada de "lo reviso y les aviso" vago. Araceli ya ofreció ese formato el 12-ago (*"haz la prueba y podemos agendar otra sesión"*).
|
||
|
||
**Pivotear la hora a lo que vale más que el POST:** las preguntas del §5 (17 categorías, Empresa origen/token, IVA 0%, mapeo, Azure). Si la sesión cierra esas definiciones, fue una buena sesión **aunque no haya folio**. El dry-run mostrado ya es entregable: el flujo Jira→plataforma quedó demostrado; lo que falló es la última milla contra BIND.
|
||
|
||
**Higienes aunque falle:** regresar `Bind:Mode` a ReadOnly antes de cerrar (decirlo en voz alta: *"y regreso el candado a solo-lectura"*) · mencionar que cada intento quedó auditado en `WriteOperations` (es argumento de confianza, no de vergüenza) · mismo día: resultado por WhatsApp a Pedro + entrada en la bitácora.
|
||
|
||
**Qué NO decir:** no culpar al formulario ni a BIND ni a Pedro; no abrir prefactura/timbrado "para compensar"; no aceptar en caliente compromisos de fecha más allá del re-intento de 15 min.
|
||
|
||
## Qué NO hacer
|
||
|
||
- ❌ Emitir antes de la sesión o sin anunciar el destino (candado de Noé, [REGISTRO #65](../bitacora/REGISTRO.md) §8).
|
||
- ❌ Dejar `Bind:Mode=Write` al cerrar.
|
||
- ❌ Abrir el tema de prefactura/timbrado aunque salga bien a la primera — gradualismo explícito de Arturo.
|