Otro clásico que surge en toda implantación de Business Central.
¿Cómo calcula Business Central la disponibilidad de producto?
Mucho ha mejorado el asunto de la presentación del cálculo de disponibilidad en documentos de venta y compra. ¿Recordáis los primeros cálculos de disponibilidad y su representación gráfica? Ahora nos encontramos con una pantalla tal que así:

Esas opciones (relativamente) nuevas donde encontramos el desglose de cantidad disponible, (indicando claramente la cantidad física actual = inventario), así como la posibilidad de incluir previsiones, pedidos abiertos, etcétera.
¿Pero cómo se calcula realmente la disponibilidad? Vamos a ver un poco de código. Poco.
El panel de exploración que tenemos a la derecha de nuestra, (por ejemplo), pantalla de pedidos de venta nos informa de muchas cosas, entre otras, de la disponibilidad actual de ese artículo.

Ese campo «Disponibilidad de producto» marcado en amarillo con un valor -2 se calcula en esta función que os marco en la imagen siguiente:

ItemAvaliFormsMgt.ShowItemAvalilFromSalesLine es la función encargada de calcular el valor del campo «Disponibilidad de producto».
¿Qué cálculos se producen dentro de esa función? Vamos a ver el detalle.
Entre otras muchísimas cosas nos encontramos otra llamada a la función encargada de calcular las cantidades, se trata de: ShowItemAvailByEvent. Venga chicos, seguimos bajando al detalle:

Esta acción es la encargada de mostrar la pantalla que veíamos al comienzo del artículo. La pantalla de «Disponibilidad producto por evento».
En líneas anteriores a la ejecución de la función que permite mostrar la pantalla de «Disponibilidad producto por evento», el sistema configura los filtros previos a la apertura de la página.
A partir de ese punto, el sistema comienza a realizar los cálculos de cantidades que darán como resultado el definitivo de «Disponibilidad de producto». En la CodeUnit 5530 se encuentra la madre de toda disponibilidad. Aquí encontraremos las funciones encargadas de sumar y restar cantidades hasta llegar a nuestra querida y amada «Disponibilidad de producto».
¡VAMOS!
Aquí está. Se viene código maestro. Atenta la compañía. Nos vamos a la CodeUnit 5530 – «Calc. Item Availability» y sin comerlo ni beberlo localizamos la función: CalcNewInvtEventBuf.
Ya está, no busquéis más, aquí la tenéis:

Os he marcado tres funciones clave.
- GetDocumentEntries. Encargada de agrupar las cantidades existentes en los diferentes tipos de documentos de Business Central. (Documentos de venta y compra, cantidad en líneas de proyectos, pedidos servicio, cantidad en inventario, etcétera).
- GetAnticipatedDemand. Encargada de agrupar las cantidades existentes en producción prevista y/o planificada.
- GetPlanningEntries. Encargada de agrupar las cantidades existentes en «Hoja de demanda», «Componentes» en producción y «Transferencias» planificadas.
Sí amigos. La disponibilidad es mucho más que el campo «Inventario». ¿Qué cantidad tengo en almacén? ¿De cuánta cantidad dispongo para comprometer una posible venta a una fecha determinada? Entender cómo funciona la «Disponibilidad de producto» nos hará tomar las decisiones correctas.
Os invito a seguir profundizando en esta funcionalidad, ya tenéis una primera pista.
La CodeUnit 5530 – «Calc. Item Availability» es vuestra nueva mejor amiga.