Acumatica-如何自定义“重新计算价格”公式?

时间:2020-01-21 00:27:16

标签: overriding formula acumatica calculation

已要求我自定义使用“销售价格工作表”时计算单价的公式。他们希望对总的SO总数量打折,而不是对生产线数量打折。

如果订购了100个,则Widget1的单价为.80。 如果订购150件,则Widget2的单价为1.75。

销售订单第1行用于Widget1,单价为200 ...该行的单价为0.80。 销售订单第2行用于Widget2,单位数量为10 ...该行的单价为1.75,因为它基于等于210(超过150)的总单位数量。

我找不到覆盖它的计算代码。我有一个主意 /在OldUnitQty变量中存储SOLine unitqty /将SOLine不整洁更新为SOOrder unitqty /调用GetPriceCalculationScope /将SOLine unitqty设置回OldUnitQty

我不确定这是个好主意还是不确定。谁能给我一些如何做的指导?

1 个答案:

答案 0 :(得分:0)

您可以处理unitqty更新事件(标头总数量已经更新),检查总数量是否大于150,并更新当前行的单位成本。 代码如下:

protected virtual void SOLine_OrderQty_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e, PXFieldUpdated del)
{
    del?.Invoke(cache, e);

    SOLine line = (SOLine)e.Row;
    if (line != null)
    {
        if (Base.Document.OrderQty > ...)
        {
            line.CuryUnitPrice = ...;
        }
    } 
}
相关问题