PROCESO CARGA DE OP
Para los componentes de las OP podemos realizar el abastecimiento orden a orden creando respectivos pickings o bien mediante una gestión centralizada de necesidades por producto. Excluye productos tipo "fuera de inventario".
En la imagen vemos las necesidades agrupadas y podemos gestionar la cantidad mínima por la que se generará el Picking (cuando haya menos stock de esa cantidad) y la máxima que será la cantidad que queremos.
Por ejemplo la línea primera tenemos:
Min: 55, Max: 110 y actualmente hay Stock de 1 y necesidad de componentes de 2, por tanto pedirá porque hay menos de 55u la cantidad 110-1= 109

Si calculamos la carga con desglose de OP’s veríamos el detalle:

Si creamos el Picking de Producción para abastecer las OP’s.
Eventos
/// <summary>
/// Está al inicio de la función que relaciona las líneas de actividad de movimientos con el registro actual del componente de producción.
/// Es antes de aplicar los filtros a las líneas de actividad.
/// Se puede utilizar para añadir algún filtro o mediante IsHandled poner los filtros personalizados.
/// </summary>
/// <param name="SalesLine">Es el registro temporal con información sobre el componente de la orden de producción.</param>
/// <param name="WAL">Tendrá las líneas de actividad de movimientos relacionadas.</param>
/// <param name="IsHandled">Para manipular el código de programación por uno personalizado.</param>
[IntegrationEvent(false, false)]
local procedure OnBeforeFilterWAL_PO_awa(SalesLine: Record "Sales Line"; var WAL: Record "Warehouse Activity Line"; var IsHandled: Boolean)
begin
end;
/// <summary>
/// Está al final de la función que relaciona las líneas de actividad de movimientos con el registro actual del componente de producción.
/// Es después de aplicar los filtros a las líneas de actividad.
/// Se puede utilizar para añadir algún filtro.
/// </summary>
/// <param name="SalesLine">Es el registro temporal con información sobre el componente de la orden de producción.</param>
/// <param name="WAL">Líneas de actividad de movimientos relacionadas.</param>
[IntegrationEvent(false, false)]
local procedure OnAfterFilterWAL_PO_awa(SalesLine: Record "Sales Line"; var WAL: Record "Warehouse Activity Line")
begin
end;
/// <summary>
/// Está al inicio de la función que calcula valores de BinContent y que se visualizan como campos en la page: Cant. Mín, Cant. Max y Stock.
/// Se puede utilizar para cambiar el cálculo de esas variables.
/// </summary>
/// <param name="Rec">Registro actual sobre los componentes.</param>
/// <param name="gblQtyMin">Cantidad Mínima.</param>
/// <param name="gblQtyMax">Cantidad Máxima.</param>
/// <param name="gblStock">Stock</param>
/// <param name="IsHandled">Para manipular el código de programación por uno personalizado.</param>
[IntegrationEvent(false, false)]
local procedure OnBeforeGetQtyBinContent_awa(Rec: Record "Sales Line" temporary; var gblQtyMin: Decimal; var gblQtyMax: Decimal; var gblStock: Decimal; var IsHandled: Boolean)
begin
end;
/// <summary>
/// Está al final de la función que calcula valores de BinContent y que se visualizan como campos en la page: Cant. Mín, Cant. Max y Stock.
/// Se puede utilizar para cambiar el cálculo de esas variables una vez calculadas.
/// </summary>
/// <param name="Rec">Registro actual sobre los componentes.</param>
/// <param name="gblQtyMin">Cantidad Mínima.</param>
/// <param name="gblQtyMax">Cantidad Máxima.</param>
/// <param name="gblStock">Stock</param>
/// <param name="IsHandled">Para manipular el código de programación por uno personalizado.</param>
[IntegrationEvent(false, false)]
local procedure OnAfterGetQtyBinContent_awa(Rec: Record "Sales Line" temporary; var gblQtyMin: Decimal; var gblQtyMax: Decimal; var gblStock: Decimal)
begin
end;