¿Necesitas obtener el precio de un artículo que tiene un acuerdo comercial, ya sea de compra o de venta? ¡Pues aquí tenemos a nuestra amiga la clase PriceDisc para salvarnos!

Intentando pescar el mejor precio con el PriceDisc framework
Intentando pescar el mejor precio con el PriceDisc framework

Esto es uno de esos post referencia que escribo para el Adrià del futuro, porque es algo que olvido con una facilidad pasmosa.

¡La magia del PriceDisc!

Existe un método obsoleto, creo que el findItemPriceAgreement, para obtener el precio, pero está obsoleto como acabo de decir. Así que lo más sencillo es usar la clase PriceDisc que sustituye al método obsoleto.

Para usarlo sólo tenemos que instanciar un objeto de tipo PriceDiscParameters y llamar a sus métodos parm. Luego creamos otro objeto de tipo PriceDisc usando el método newFromPriceDiscParameters y pasándole el de tipo PriceDiscParameters, y… bueno, mejor echa un ojo al código:

public static Amount getPrice(AccountNum _accountNum, 
                                CurrencyCode _currencyCode,
                                InventDim _inventDim,
                                ItemId _itemId,
                                ModuleInventPurchSales _module,
                                TransDate _date,
                                Qty _qty,
                                UnitId _unitId,
                                PriceGroupId _priceGroupId)
{
    PriceDiscParameters priceDiscParameters = PriceDiscParameters::construct();            
    priceDiscParameters.parmAccountNum(_accountNum);
    priceDiscParameters.parmCurrencyCode(_currencyCode);
    priceDiscParameters.parmInventDim(_inventDim);
    priceDiscParameters.parmItemId(_itemId);
    priceDiscParameters.parmModuleType(_module);
    priceDiscParameters.parmPriceDiscDate(_date);
    priceDiscParameters.parmQty(_qty);
    priceDiscParameters.parmUnitId(_unitId);
    PriceDisc priceDisc = PriceDisc::newFromPriceDiscParameters(priceDiscParameters);
    priceDisc.findPrice(_priceGroupId);
    return priceDisc.price();
}

Y nada, ya está, eso es todo. Sé que es una entrada bastante estúpida, pero yo también lo soy y se me olvidan estas cosas.

¡Suscríbete!

Recibe un correo cuando se publique un nuevo post
Author

Microsoft Dynamics 365 Finance & Operations technical architect and developer. Business Applications MVP since 2020.

Write A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

ariste.info