8.5 KiB
8.5 KiB
Guion — prueba completa en producción: ticket → cotización → prefactura → factura (1-oct-2026)
Para la llamada con Balam. Producción (https://paputec.mx/balam/) corre el commit f5b3743 desde las 22:40 del 30-sep, con el puente a la web app de BIND encendido y con credenciales (usuario CTO) y el timbrado desde la plataforma publicado y probado contra BIND/Jira falsos (REGISTRO #89). Todo lo de abajo escribe en el BIND de producción: la cotización y la prefactura son reales, y el CFDI también.
0. Antes de empezar (5 min)
- Usuario de la plataforma con permiso de escritura:
admin@balam.paputec.mx(Dirección + Finanzas) ofinanzas@balam.paputec.mx. Un rol de solo consulta ve la tarjeta pero no puede generar ni timbrar (lo dice en pantalla). - Nadie entra a app.bind.com.mx con el usuario
CTOdurante la prueba. BIND permite una sesión por usuario: si alguien está dentro comoCTO, la plataforma recibe "sesión abierta en otro equipo" (409 con instrucciones). Pedro/Araceli entran con su propio usuario si quieren mirar. - El ticket de Jira (formulario Cotización Bind del proyecto FAC) con:
- Cliente: uno que exista en BIND con ese nombre (los 17 del combo resuelven). Para que el CFDI salga sin fricción, un cliente con facturas timbradas recientes (de él se hereda el uso CFDI) — p. ej. el que usen siempre para pruebas.
- Servicio/Producto: una de las 10 categorías que ya resuelven (p. ej. "Servicios Profesionales Generales" → 101 o "Servicio de Enlace" → 106). Las 7 sin mapear (PMO, Mesa de Servicio/SDM, Soporte L1, L2, Gestión de Incidentes, de Cambios, de Capacidad) caen en "Faltan datos" y la cotización se completa a mano en la pantalla (sigue funcionando, con un paso más).
- Monto sin IVA reconocible (p. ej.
1234), Cantidad 1, IVA según el cliente (0 % para extranjero), Moneda MXN.
- Modo de la campana en "Pedir confirmación" (es como está): el modal aparece y alguien da "Aceptar". Si Balam quiere ver el modo automático, se cambia ahí mismo (el servidor ya lo permite) — ese cambio crea cotizaciones sin clic en adelante; decidirlo con ellos.
- Acordar el final: el CFDI será real. Quién lo cancela en BIND (motivo SAT 02 "sin relación") y cuándo. La plataforma lo reflejará como Cancelada con «Verificar» o en el siguiente sync.
- (Johann) ventana al servidor para seguir la prueba:
ssh johann@paputec.mxysudo docker logs -f balam-api 2>&1 | grep -v "libgssapi".
1. Ticket → cotización (lo que debe verse)
- Pedro crea el ticket en Jira. En 1–5 s aparece en la plataforma el modal "Ticket FAC-nnn detectado" con la línea de tiempo (creado → detectado → vista previa) y los números de la cotización preparada.
- "Aceptar y crear cotización" → "Cotización N creada". En Cotizaciones (BIND) la fila nueva aparece con su total correcto de inmediato (ya no $0.00) y la columna Ticket con FAC-nnn.
- En Solicitudes (Jira) el ticket muestra "Cotizada · N".
Si algo no sale:
- No aparece el modal: mirar la campana (punto verde = canal en vivo; ámbar = consulta cada 4 s) — el aviso está ahí como pendiente, con "Ver detalle". Si tampoco: Solicitudes (Jira) → el ticket dice "Lista para revisar" o "Faltan datos"; desde ahí "Cotizar".
- "No se pudo armar la cotización sola" (Faltan datos): el detalle dice qué falta (cliente sin coincidencia única, categoría sin mapear, monto). "Ver detalle" → pantalla de cotizar → completar → Vista previa → Confirmar. Mismo resultado.
- "Fallida" (BIND rechazó): el motivo queda en el aviso; se cotiza desde la pantalla. Nunca se reintenta solo (una escritura que falló pudo haber llegado).
- Dos personas dan Aceptar a la vez: solo una crea; la otra ve "ya se está creando / ya tiene cotización".
2. Cotización → prefactura
- En el ticket: "Facturar" (wizard). Paso 1 trae solo la cotización vinculada, ya seleccionada, con subtotal y total (sin IVA doble). Pasos 2–4: datos, concepto, borrador. Paso 5: aprobador (solo Araceli) → "Aprobar prefactura".
- Tarjeta "Prefactura vía UI de BIND" (dice Sesión automática · CTO @ 128469):
- "2 · Ver JSON exacto (dry-run)" → resumen (cliente, partidas, subtotal, folio previsto = consecutivo real de BIND, hoy 2468) y la lista de avisos (uso CFDI heredado, método de pago…). Leerlos.
- "3 · Generar prefactura en BIND →" → confirmación → "Prefactura (sin timbrar, folio de la secuencia compartida)" con folio, total, "UUID null (sin timbrar ✓)".
- También se puede desde Cotizaciones (BIND) → "Generar prefactura" (el panel se abre debajo de la fila).
- En BIND: Ventas → la prefactura con ese folio, generada por "Noé Rocha Castillo" (usuario CTO), cotización surtida.
Si algo no sale:
- 409 "La cotización N ya está surtida/cancelada en BIND": BIND manda; se refleja en la BD. Hay que partir de otra cotización activa.
- 409 "BIND ya aceptó una prefactura de la cotización N hace M min": ya existe; no se manda otra en 10 min. Buscarla en BIND / recargar el ticket ("ya está en prefactura").
- 409 "sesión abierta en otro equipo": alguien está en BIND como
CTO; que cierre sesión ahí, o esperar unos minutos a que expire. - 502 "BIND no respondió al guardar… No se sabe si creó la prefactura": NO reintentar. Revisar en BIND; si existe, el sync (≤ 15 min) la trae y el ticket la muestra; la plataforma bloquea 10 min el reenvío.
- "Prefactura creada… Su API aún no la muestra": normal (el API de BIND tarda ~1 min en ver lo que crea la web app). Seguir al paso 3 cuando el dry-run del CFDI ya la lea.
3. Prefactura → factura (timbrado) — efecto fiscal
Debajo de la prefactura aparece "Factura (CFDI) desde la prefactura · folio" (también en el ticket, "ya está en prefactura").
- "1 · Ver con qué saldrá el CFDI (dry-run)" → resumen: cliente, RFC, total, método de pago según BIND (PUE/PPD), forma de pago, uso CFDI enviado al crearla, partidas; y los avisos. Leer el método de pago: BIND deja las prefacturas en PUE ("PAGO EN UNA SOLA EXHIBICIÓN"); si debe salir PPD, se cambia en BIND antes de timbrar (la plataforma no modifica la prefactura: pide emitirla tal cual está).
- "2 · Timbrar en BIND (emitir CFDI) →" → el navegador pide teclear
TIMBRAR→ en 3–15 s: "✓ Timbrada — ya es factura · CFDI {uuid}", chip Timbrada ✓, botón "Ver la factura →". - Comprobar: el ticket dice "FAC-nnn ya está facturado" con la cadena completa (cotización ✓ · prefactura ✓ · factura ✓ uuid); en Facturas el folio pasó de Prefactura a Vigente con UUID; en BIND el documento tiene UUID (mismo folio).
Si algo no sale:
- 409 "BIND aún no muestra la prefactura por su API": esperar un minuto y repetir el dry-run.
- 502 "BIND rechazó el timbrado (500): ": es el PAC/BIND (RFC no inscrito, régimen, código postal, uso CFDI…). Nada quedó timbrado. Corregir el dato en BIND (ficha del cliente o la prefactura) y volver a "2 · Timbrar".
- "BIND aceptó el timbrado; su API aún no muestra el UUID": normal; "¿Ya se timbró? Verificar" al minuto. No se reenvía (bloqueo de 10 min).
- 502 "BIND no respondió al timbrar… no se sabe si emitió": NO reintentar; "Verificar" al minuto o mirar en BIND. Bloqueo de 10 min.
- 409 "ya está timbrada (CFDI …)": alguien la timbró en BIND; la plataforma ya lo reflejó.
- 409 "cancelada en BIND": no se timbra; generar otra prefactura desde una cotización activa.
4. Cierre
- Cancelar el CFDI de prueba en BIND (quien Balam decida). En la plataforma: "Verificar" en la tarjeta → Cancelada; el ticket vuelve a mostrar solo la cotización (surtida).
- Lo que se creó queda auditado en
WriteOperations(dry-run, confirmación, resultado) y en la bitácora de la app. - Pedir a Balam en la misma llamada: los códigos de BIND de las 7 categorías sin mapear y si quieren el modo automático (sin clic) — en ese caso, autorización escrita (ADR-001).
Lo que la plataforma NO hace (para no prometerlo en la llamada)
- No edita la prefactura (método/forma de pago, uso CFDI, domicilio fiscal): eso se hace en BIND antes de timbrar.
- No manda el correo al cliente ni descarga PDF/XML del CFDI: viven en BIND (el PDF de factura sí se ve por el proxy en Facturas).
- No cancela CFDI.
- No reintenta sola una escritura: ante la duda, bloquea y pide verificar.