Events
Este documento detalla las colas y eventos utilizados en el worker para procesar reportes de mermas de inventario y enviarlos a SAP.
Visión General
Section titled “Visión General”El worker utiliza AWS Simple Queue Service (SQS) para recibir eventos de reportes de mermas. Estos eventos son procesados y transformados en documentos de transferencia de stock de SAP, que luego son enviados al sistema SAP.
Cola de Mermas de Inventario
Section titled “Cola de Mermas de Inventario”URL de la Cola: Configurada mediante la variable de entorno QUEUE_DATA_INVENTORY_WASTE_URL
Propósito: Recibe eventos de confirmación de reportes de mermas que necesitan ser procesados y enviados a SAP.
Consumidores:
- Este worker, que procesa los eventos y los envía a SAP
Formato del Mensaje:
export interface WasteReportEventMessage { type: 'WasteReportConfirm' data: { id: string ean: string quantity: number reason: string comment?: string costCenter?: string toWarehouse?: string } context: { country: string warehouse: string }}Procesamiento:
- El worker recibe mensajes de la cola con un tiempo de visibilidad de 30 segundos
- Cada mensaje es validado para asegurar que tiene el formato y tipo correctos
- El almacén es validado para asegurar que existe y está habilitado
- El mensaje es transformado en un documento de transferencia de stock de SAP según el país
- La transferencia de stock es registrada en SAP
- Si es exitoso, el mensaje es eliminado de la cola
- Si no es exitoso, el mensaje permanece en la cola y será reintentado
Manejo de Errores y Reintentos
Section titled “Manejo de Errores y Reintentos”El manejo de errores y reintentos se implementa de la siguiente manera:
-
Errores de Validación:
- Si un evento tiene un formato o tipo inválido, se registra y se elimina de la cola
- Si un almacén no está habilitado, el evento se registra y se elimina de la cola
-
Errores de Procesamiento:
- Si hay un error durante el procesamiento (por ejemplo, error de la API de SAP), el evento permanece en la cola
- El tiempo de visibilidad asegura que el mensaje estará disponible para procesamiento nuevamente después de 30 segundos
-
Logging:
- Todos los errores se registran con el contexto apropiado
- El procesamiento exitoso también se registra con información del tiempo de procesamiento