Manejo de Pedidos No Completados en Tiempo Real
Documentación completa del proceso `handle_unfulfilled_order_in_realtime` que gestiona la visibilidad de los pedidos no completados en el dashboard operativo del partner.
Identificador de la Función: handle_unfulfilled_order_in_realtime
Ubicación: /app/realtime/signals.py
Tipo: Django Signal (post_save receiver)
Disparador
Esta regla se activa automáticamente cada vez que un pedido es marcado como No Completado (UnfulfilledOrder) cuando un pedido es:
- Creado por primera vez.
- Modificado (actualizado) en el sistema.
Objetivo Principal
Gestionar la visibilidad de los No Completados en dashboard operativo del Partner (carrusel). Esto implica:
- Crear una notificación en tiempo real cuando un pedido es un No Completado.
- Eliminar dicha notificación cuando el pedido fue gestionado.
Contexto y Definiciones
UnfulfilledOrder: Un pedido que no pudo ser completado durante la operación de la tienda.Order: Representa el pedido general al que pertenece el Unfulfilled.- Carrusel: Dashboard operativo donde aparecen los pedidos no completados que requieren gestión del partner.
Reglas de Negocio Detalladas
1. Manejo al CREAR un Nuevo Pedido No Completado
Condición Principal:
Se registra un nuevo pedido No Completado.
Sub-Condiciones y Acciones:
Regla 1.1: Pedido Sin Respuesta de Tienda
- Condición:
- La tienda aún NO ha dado una respuesta sobre este pedido (
unfulfilled_order.store_answeres nulo/vacío) - Y el estado del unfulfilled NO es "4" (Unfulfilled by User)
- La tienda aún NO ha dado una respuesta sobre este pedido (
- Acción:
- Crear registro en el sistema de tiempo real
- Mostrar en carrusel del partner
Regla 1.2: Pedido Cancelado con Stock No Devuelto (Cancelado a Destiempo Retail)
- Condición:
- La tienda aún NO ha dado una respuesta (
unfulfilled_order.store_answeres nulo/vacío) - Y el stock NO ha sido devuelto (
order.stock_returned = False) - Y el pedido está cancelado (
order.status = "8")
- La tienda aún NO ha dado una respuesta (
- Acción:
- Crear registro en el sistema de tiempo real
- Genera un Unfulfilled by User.
- Mostrar en carrusel del partner para gestión de conciliación
Casos de Uso:
- Caso A: Pedidos que requieren respuesta del partner (encuesta).
- Caso B: Pedidos cancelados a destiempo que requieren paso por caja para conciliación
2. Manejo al ACTUALIZAR un Pedido No Completado
Condición Principal:
Se modifica un pedido No Completado existente.
Sub-Condiciones y Acciones:
Regla 2.1: Pedido Respondido por la Tienda
- Condición:
- La tienda HA DADO una respuesta sobre el pedido (
unfulfilled_order.store_answertiene un valor) es decir contesto la encuesta.
- La tienda HA DADO una respuesta sobre el pedido (
- Acción:
- Eliminar registro del sistema de tiempo real
- Remover del carrusel (considerado gestionado)
Regla 2.2: Pedido Resuelto Sin Respuesta Directa
- Condición:
- La tienda aún NO ha dado una respuesta (
unfulfilled_order.store_answeres nulo/vacío) - Y el estado del unfulfilled NO se encuentra entre:
- "9" (Unfulfilled)
- "14" (In Review)
- La tienda aún NO ha dado una respuesta (
- Acción:
- Eliminar registro del sistema de tiempo real
- Remover del carrusel (considerado resuelto automáticamente)
Regla 2.3: Pedido Pasado por Caja Sin Respuesta Directa.
- Acción:
- Eliminar registro del sistema de tiempo real
- Remover del carrusel (considerado gestionado)
Estados y Códigos
Estados de UnfulfilledOrder
- "4": Unfulfilled by User (No Recogido)
- "9": Unfulfilled (Pendiente)
- "14": In Review (En revisión)
Estados de Order
- "8": Canceled (Cancelado)
- "4": Unfulfilled by User (No Recogido)
- "9": Unfulfilled (Pendiente)
- "14": In Review (En revisión)
Campos Clave
store_answer: Respuesta de la tienda (null/vacío = sin respuesta)stock_returned: Indica si el stock fue devuelto (Boolean)status: Estado del pedido/unfulfilled
Comportamiento del Sistema
Creación en Carrusel
Los pedidos aparecen en el carrusel cuando:
- Son nuevos unfulfilled sin respuesta de tienda
- Son pedidos cancelados con stock no devuelto
Eliminación del Carrusel
Los pedidos se eliminan del carrusel cuando:
- La tienda proporciona una respuesta
- El estado cambia a uno que indica resolución
- El Pedido es pasado por Caja (Cencosud/Retail).
Gestión Automática
- Timeout: Si el pedido no es gestionado en 24 horas, el cron
cencosud_unfulfilledlo procesará
Generación de Deuda
Documentación completa del sistema de gestión de deuda que evalúa y procesa la responsabilidad financiera de los usuarios cuando no recogen sus pedidos.
Resolución de Pedidos No Completados en Cencosud
Documentación completa del comando `cencosud_unfulfilled` que finaliza y resuelve los pedidos no completados después de 24 horas de su creación, específicamente para las operaciones en Chile y Argentina.