🥛 Envíos de leche
🐮 Introducción y Visión General
El Módulo de Envío de Leche es un componente integral del SIIB diseñado para gestionar el ciclo completo de logística y comercialización de la leche.
Este sistema no se limita al registro de salidas, sino que abarca todo el proceso operativo y administrativo relacionado con el producto, incluyendo:
📋 Funcionalidades principales
- 📅 Planificación y estimación de producción diaria
- 🚚 Programación semanal de envíos
- 🧪 Control de calidad del producto
- ✅ Confirmación de entregas por parte del cliente
- 🧾 Agrupación final en lotes para su facturación
En conjunto, el módulo asegura una trazabilidad completa, optimiza la logística y garantiza la eficiencia en la gestión del producto lácteo.
🔗 Integración con otros módulos
Este módulo se integra directamente con el Módulo de Báscula, utilizando las fichas de pesaje de leche como punto de partida para el seguimiento de los envíos físicos.
🎯 Objetivos Principales
-
🚛 Planificación Logística:
Permitir la estimación de la producción diaria de leche por establo y la creación de programas de envío semanales basados en esa estimación. -
🧪 Control de Calidad:
Registrar los resultados de los análisis de laboratorio para cada tanque de leche enviado. -
📦 Seguimiento de Envíos:
Monitorear el estado de cada envío, desde su creación en báscula hasta su confirmación y facturación. -
🤝 Conciliación con Clientes:
Registrar la confirmación de litros recibidos y los folios de recepción proporcionados por el cliente. -
💰 Preparación para Facturación:
Agrupar envíos confirmados en lotes, asignarles precios y vincularlos con una factura generada en un sistema externo (Microsip). -
📊 Generación de Reportes:
Ofrecer vistas detalladas y reportes sobre el cumplimiento de programas, históricos de facturación y estado de los envíos.
🔄 Flujo de Proceso de Negocio y su Mapeo en el Sistema
A continuación, se detalla el flujo de negocio proporcionado y cómo cada paso se implementa dentro del módulo de Envío de Leche.
El proceso asegura una trazabilidad completa desde la recolección en báscula hasta la facturación final, garantizando control operativo, logístico y contable en cada etapa.
🧾 1️⃣ Encargado de Establo envía la Estimación de Producción
-
📍 En el Sistema:
Se realiza en la pestaña "Estimación de producción diaria".
El usuario abre el modal "Estimación diaria", selecciona un establo, año y semana, e ingresa la producción estimada, sobrante y faltante por día. -
⚙️ Función:
ConfirmacionEstimacionDiaria() -
🗂️ Tablas:
C_envios_leche_programacion_diaria_g(encabezado)C_envios_leche_programacion_diaria_d(detalle por día)
🚛 2️⃣ Logística realiza la Programación de Envíos de Leche
-
📍 En el Sistema:
En la pestaña "Programa de leche", el usuario abre el modal "Programación semanal", selecciona una semana (que carga la estimación del paso anterior) y asigna envíos a diferentes clientes y destinos.
El sistema calcula los saldos disponibles por establo en tiempo real. -
⚙️ Función:
ConfirmacionProgramacionDestino() -
🗂️ Tablas:
C_envios_leche_programacion_semanal_gC_envios_leche_programacion_semanal_dC_envios_leche_programacion_semanal_d_dias
⚖️ 3️⃣ Báscula realiza la Ficha de Leche
-
📍 En el Sistema:
Este paso ocurre en el Módulo de Báscula.
Al completar la segunda pesada de una ficha de tipo "Leche", el sistema crea automáticamente:- Un registro en
C_envios_leche_d_fichas - Un registro base en
C_envios_leche_d_calidad
Estas fichas quedan pendientes de ser agrupadas en un envío.
- Un registro en
🚚 4️⃣ Salida de Envíos de Leche desde los Establos
-
📍 En el Sistema:
En la pestaña "Envío de Leche" (dentro del módulo de Báscula), se agrupan las fichas individuales para generar un envío formal.
Esto crea un registro enC_envios_leche_gy asocia las fichas correspondientes deC_envios_leche_d_fichas. -
📦 Estado inicial:
Registrado (id_envio_leche_status = 1) -
La pestaña principal "Envíos de leche" permite consultar y dar seguimiento a estos registros.
🧪 5️⃣ Laboratorio realiza los Análisis de Calidad
-
📍 En el Sistema:
Desde la pestaña "Envíos de leche", el usuario abre el modalm_confirmar_envios_leche.
En la sección "RESULTADOS DE CALIDAD", el personal de laboratorio ingresa los valores de grasa, proteína, antibióticos, etc. -
⚙️ Función:
ConfirmarCalidadLeche() -
🗂️ Tabla:
C_envios_leche_d_calidad -
🔁 Nuevo estado:
Calidad (id_envio_leche_status = 2)
🧾 6️⃣ Logística confirma los Litros de Leche Enviados
-
📍 En el Sistema:
En la pestaña "Confirmación de envíos", se listan los envíos pendientes.
El usuario selecciona un envío e ingresa los litros confirmados por el cliente y el folio de recepción. -
⚙️ Función:
ConfirmacionEnvioLeche() -
🗂️ Tablas:
C_envios_leche_d_fichasC_envios_leche_confirmacion
-
🔁 Nuevo estado:
Confirmado (id_envio_leche_confirmacion_status = 1)
📦 7️⃣ Logística agrupa los Envíos en Lotes
-
📍 En el Sistema:
En la pestaña "Lotes de envío a factura", el usuario presiona "AGRUPAR ENVIOS" para ver los envíos confirmados.
Luego selecciona los envíos (del mismo cliente) y los agrupa en un lote. -
⚙️ Función:
ConfirmacionLoteEnvioLeche() -
🗂️ Tablas:
C_envios_leche_lote_g(encabezado del lote)C_envios_leche_lote_d(detalles del lote)
-
🔁 Nuevo estado:
En Lote (id_envio_leche_lote_status = 2)
🧾 8️⃣ Contabilidad comparte la Factura a Logística
- 📍 En el Sistema:
Este proceso se realiza fuera del SIIB.
El sistema no genera la factura, pero está preparado para consultarla desde una API externa.
💰 9️⃣ Logística asigna la Factura
-
📍 En el Sistema:
En la pestaña "Lotes de envío a factura", el usuario selecciona un lote y abre el modal de facturación.
Ingresa el número de factura, y el sistema realiza una llamada a la API externa: -
(http://192.168.128.2:84/api/GET_INFORMACION_FACTURA_LECHE/GET)para obtener los datos de la factura desde Microsip. La función ConfirmacionFacturaLoteMs() valida que los datos (cliente, litros, importe) coincidan . Si todo es correcto, actualiza el registro en C_envios_leche_lote_g con el número de factura y cambia el estado a "Facturado" (id_envio_leche_lote_status = 3).
🧩 Componentes Detallados
🗄️ Base de Datos
El esquema se organiza en torno al flujo de negocio:
📋 Tablas de Planificación
-
C_envios_leche_programacion_diaria_g
Cabecera para la estimación de producción por establo, año y semana. -
C_envios_leche_programacion_diaria_d
Detalle diario de la estimación (producción, sobrante, faltante). -
C_envios_leche_programacion_semanal_g
Cabecera para un programa de envío semanal. -
C_envios_leche_programacion_semanal_cliente_d y _d_dias
Detalle del programa, asignando litros por cliente, destino y día. -
_id_dias_horas
Detalle a nivel de hora y tipo de pipa para un día específico.
⚙️ Tablas de Ejecución y Calidad
-
C_envios_leche_g
Maestro de un envío agrupado. Contiene totales, folio, cliente, destino, etc. -
C_envios_leche_d_fichas
Detalle de un envío. Vincula cada ficha de báscula (id_ficha_bascula) con un envío maestro (id_envio_leche_g).
También almacena los litros confirmados por el cliente. -
C_envios_leche_d_calidad
Almacena los resultados del análisis de laboratorio para cada ficha.
🧾 Tablas de Lotes y Facturación
-
C_envios_leche_confirmacion
Registra la confirmación de recepción de un envío por parte del cliente. -
C_envios_leche_lote_g
Maestro de un lote de facturación que agrupa múltiples envíos confirmados.
Contiene el número de factura y el estado del lote. -
C_envios_leche_lote_d
Detalle de un lote, vinculando cada envío confirmado (id_envio_leche_confirmacion) al lote maestro.
🗂️ Catálogos
- C_envios_leche_clientes
- C_envios_leche_destinos
- C_envios_leche_precios
- C_envios_leche_status
- C_envios_leche_tipos_tanques
- (entre otros)
⚙️ Lógica del Backend (ENVIOLECHEController.cs)
El controlador ENVIOLECHEController.cs centraliza la lógica de negocio del módulo de envíos de leche, abarcando los procesos de planificación, ejecución, confirmación, agrupación y facturación.
📆 Métodos de Planificación
-
ConfirmacionEstimacionDiaria()
Guarda la estimación de producción ingresada por establo, año y semana.
Inserta registros en las tablasC_envios_leche_programacion_diaria_gyC_envios_leche_programacion_diaria_d. -
ConfirmacionProgramacionDestino()
Registra el programa semanal de envíos, asignando litros por cliente y destino.
Actualiza las tablasC_envios_leche_programacion_semanal_g,_dy_d_dias. -
ObtenerSemanasFechaMensual()
Calcula las semanas correspondientes a un mes/año determinado.
Este método implementa una lógica compleja esencial para la correcta visualización de la planificación en la interfaz de usuario.
🧪 Métodos de Ejecución y Calidad
-
ConsultarEnviosDeLecheTable()
Consulta y filtra los envíos registrados para su visualización en la pestaña principal del módulo. -
ConfirmarCalidadLeche()
Actualiza los resultados de laboratorio (grasa, proteína, antibióticos, etc.) asociados a cada ficha de un envío.
Cambia el estatus del envío a “Calidad” (id_envio_leche_status = 2).
✅ Métodos de Confirmación y Lotes
-
ConsultaConfirmacionLecheTable()
Devuelve la lista de envíos pendientes de confirmación por parte del cliente. -
ConfirmacionEnvioLeche()
Registra los litros confirmados y el folio de recepción del cliente.
Inserta registros enC_envios_leche_confirmaciony actualiza el estado a “Confirmado” (id_envio_leche_confirmacion_status = 1). -
ConfirmacionLoteEnvioLeche()
Agrupa los envíos confirmados en un nuevo lote de facturación.
Genera registros enC_envios_leche_lote_gyC_envios_leche_lote_d, cambiando el estado a “En Lote” (id_envio_leche_lote_status = 2).
🧾 Métodos de Facturación (Integración con Microsip)
-
ConsultarFacturaLote()
Ejecuta una llamadaHttpClient.GetAsynca la API externa
http://192.168.128.2:84/api/GET_INFORMACION_FACTURA_LECHE/GET
para obtener los datos de la factura emitida en Microsip. -
ConfirmacionFacturaLoteMs()
Valida la información obtenida (cliente, litros, importe) contra los datos del lote.
Si la validación es exitosa, actualiza el registro del lote enC_envios_leche_lote_g
y cambia su estado a “Facturado” (id_envio_leche_lote_status = 3).
🖥️ Interfaz de Usuario (Vistas Razor)
El módulo de Envío de Leche cuenta con una interfaz desarrollada en Razor (ASP.NET MVC), organizada en pestañas y modales que reflejan fielmente el flujo de negocio documentado.
📁 Index.cshtml
La vista principal (Index.cshtml) estructura el módulo en cinco pestañas funcionales, cada una alineada con una etapa del proceso operativo:
-
📦 Envíos de Leche
Permite consultar los envíos registrados, acceder al detalle de cada envío y registrar resultados de calidad. -
🥛 Estimación de Producción Diaria
Facilita el registro de la producción estimada, sobrante y faltante por establo, semana y día. -
🗓️ Programa de Leche
Muestra la planeación semanal de envíos, permitiendo asignar litros a clientes y destinos. -
✅ Confirmación de Envíos
Permite registrar los litros confirmados por el cliente y folios de recepción. -
🧾 Lotes de Envío a Factura
Se utiliza para agrupar envíos confirmados y asociarles una factura proveniente del sistema Microsip.
🧩 Modales Principales
Cada pestaña está asociada a uno o más modales que encapsulan la captura o edición de datos específicos:
-
m_produccion_diaria
Formulario para registrar la estimación de producción diaria.
Interactúa con el métodoConfirmacionEstimacionDiaria()del backend. -
m_produccion_semanal
Interfaz principal para la programación de envíos semanales, vinculada al métodoConfirmacionProgramacionDestino(). -
m_confirmacion_leche
Modal utilizado para registrar la confirmación de litros y folio de recepción del cliente.
Invoca el métodoConfirmacionEnvioLeche(). -
m_lotes_leche
Interfaz para agrupar envíos confirmados en un lote.
Conecta con el métodoConfirmacionLoteEnvioLeche(). -
m_lotes_factura
Modal para visualizar la información de un lote y asignarle el número de factura.
Utiliza la integración con Microsip medianteConsultarFacturaLote()yConfirmacionFacturaLoteMs().
💡 Nota:
Todas las vistas y modales comparten un diseño coherente basado en componentes reutilizables (botones, tablas, alertas, tooltips), garantizando la consistencia visual del sistema y la trazabilidad completa del flujo operativo.
⚙️ Lógica del Cliente (JavaScript)
La capa de cliente del módulo Envío de Leche está desarrollada principalmente en JavaScript, utilizando llamadas asíncronas (AJAX) hacia los métodos del controlador ENVIOLECHEController.cs.
Su función es gestionar la interacción del usuario con los modales, la validación de datos y la comunicación con el backend.
🗓️ Funciones de Planificación
-
ModalEstimacionDiaria()
Abre el modal de estimación de producción diaria, cargando los datos del establo, semana y año seleccionados. -
ConfirmacionEstimacionDiaria()
Envía al backend la información capturada (producción, sobrante y faltante).
→ Invoca el métodoConfirmacionEstimacionDiaria()del controlador. -
ModalProgramacionSemanal()
Abre el modal de programación semanal, mostrando la estimación previa de producción y permitiendo asignar litros a clientes y destinos. -
ConfirmacionProgramacionDestino()
Envía el programa semanal confirmado al backend.
→ Se comunica con el métodoConfirmacionProgramacionDestino()del controlador.
🧪 Funciones de Calidad y Confirmación
-
AsignarConfirmacionCalidadLeche()
Carga los datos de un envío específico en el modal de calidad para su revisión o edición. -
ConfirmarCalidadLeche()
Envía los resultados del laboratorio (grasa, proteína, antibióticos, etc.) al backend.
→ Invoca el métodoConfirmarCalidadLeche(). -
EnvioConfirmadoPorAgrupar()
Identifica los envíos confirmados por el cliente que están listos para agruparse en lotes. -
ConfirmacionEnvioLeche()
Registra los litros confirmados por el cliente y el folio de recepción.
→ Llama al métodoConfirmacionEnvioLeche()del backend.
🧾 Funciones de Lotes y Facturación
-
ConsultaEnviosLecheAgrupacion()
Abre el modal de agrupación de lotes y carga los envíos confirmados disponibles para su selección. -
ConfirmacionLoteEnvioLeche()
Recopila los envíos seleccionados y los envía al backend para crear un nuevo lote.
→ Invoca el métodoConfirmacionLoteEnvioLeche(). -
ConsultarFacturaLote()
Llama al backend para obtener la información de la factura desde la API externa de Microsip.
→ Utiliza el métodoConsultarFacturaLote(). -
ConfirmacionFacturaLoteMs()
Envía la confirmación final de la factura al backend, validando coincidencias entre Microsip y el sistema.
→ Invoca el métodoConfirmacionFacturaLoteMs().
💡 Nota:
Todas las funciones JS utilizanSweetAlert,DataTablesy peticiones AJAX conjQuerypara ofrecer una experiencia dinámica y coherente con el resto del sistema.
📌 Puntos Clave y Consideraciones
El módulo Envío de Leche presenta diversas dependencias e interacciones críticas que deben tenerse en cuenta para garantizar su correcto funcionamiento dentro del ecosistema del SIIB.
🧮 Integración con el Módulo de Báscula
El módulo Envío de Leche es el sucesor lógico del proceso de pesaje de leche.
La creación del registro en la tabla C_envios_leche_d_fichas representa el punto de transferencia de datos entre ambos módulos.
🌐 Dependencia de API Externa
El proceso de facturación depende de un servicio web externo alojado en
http://192.168.128.2:84.
Si este servicio no está disponible, el flujo de facturación no podrá completarse dentro del sistema.
📅 Lógica de Fechas y Semanas
El backend implementa una lógica compleja para calcular las semanas de cada mes o año.
Funciones clave como:
ObtenerSemanasFechaMensual()ObtenerSemanasCompromisoMensual()
Estas funciones son esenciales para la visualización correcta de calendarios y la planificación precisa de producción y envíos.
🔄 Flujo de Estados (Status Flow)
El proceso completo de envío sigue un flujo estructurado y progresivo de estados:
Registrado → Calidad → Confirmado → En Lote → Facturado
Estos estados se gestionan mediante las columnas:
id_envio_leche_statusid_envio_leche_lote_status
Esto permite trazabilidad completa en todo el ciclo operativo.
🔐 Permisos Granulares
Las operaciones críticas (como edición de programas, confirmación de envíos o creación de lotes)
están protegidas mediante permisos específicos definidos en el backend, por ejemplo:
permisos.Contains(4047)
📊 Diagrama de flujo
