Flujos de Datos

-Flujo de Venta Completo

Secuencia:
 participante UI como Form1 UI
 participante BL como la Lógica de Negocio
 participante Serial como Tmapp_IPOS
 participante DLL como MiDLL.dll
 participante POS como Terminal Físico
 participante Auth como Autorizador
 
 UI->>BL: Usuario completa formulario
 BL->>BL: Validar campos
 BL->>BL: Construir SaleRequest JSON
 BL->>Serial: WriteRead(json, timeout)
 Serial->>DLL: WRITEREADX(bytes)
 DLL->>POS: Enviar por serial/USB
 POS->>Auth: Solicitar autorización
 Auth-->>POS: Respuesta aprobada/rechazada
 POS-->>DLL: Datos de respuesta
 DLL-->>Serial: Bytes de respuesta
 Serial->>BL: Struct_result con JSON
 BL->>BL: Deserializar SaleResponse
 BL->>UI: Mostrar resultado en frmResultado
 UI->>UI: Limpiar formulari

-Estados de una Transacción

  1. Inicialización
    1. Formulario válido
    2. MID Configurado
    3. Terminal conectado
  2. Envío
    1. JSON serializado
    2. Buffer preparado
    3. Timeout configurado
  3. Procesamiento
    1. Comunicación serial activa
    2. Espera respuesta POS
    3. Espera respuesta autorizador
  4. Respuesta
    1. JSON deserializado
    2. Validación de estructura
    3. Interpretación códigos
  5. Finalización
    1. Mostrar resultado
    2. Loggear transacción
    3. Limpiar para siguiente

-Timeouts y Reintentos

```csharp
// Configuración recomendada:
uint timeout = 60; // segundo



What’s Next