在调整屏幕上更改Usr字段时,数量更新

时间:2019-03-22 19:54:25

标签: c# acumatica acumatica-kb

我在调整屏幕上添加了2个USR字段来更改“交易”网格的数量,“ Usr”字段的用法如下...

第一个(手头数量)包含他们在选定位置和LotSerialNbr中拥有此商品的手头数量。

第二个(物理数量)是要在(位置-LotSerialNbr)上设置他们想要的剩余数量。

当用户打开“调整”屏幕时,它会显示两个具有相同数量的字段,例如,“现有数量” = 100和“实际数量” = 100,因此交易屏幕的“数量”必须为零(这意味着他们不想调整任何内容)如果用户更改了物理量,则系统需要计算要调整的数量,例如,手头数量= 100而物理数量= 50意味着数量必须为-50,因此Acumatica将数量调整为50。

我试图通过更改Physical Qty USR字段的FieldUpdated事件的数量来做到这一点,但是LotSerialNbr有时会消失,而在INTran的RowUpdated事件中,调整的总数量不会更改其值< / p>

    protected virtual void _(Events.FieldUpdated<INTranTGExt.usrQtyPhysical> e)
    {
        if (e.Row == null) return;

        INTran iNTranRow = (INTran)e.Row;

        INTranTGExt iNTranTGExtRow = PXCache<INTran>.GetExtension<INTranTGExt>(iNTranRow);

        Base.transactions.Cache.SetValueExt<INTran.qty>(iNTranRow, (iNTranTGExtRow.UsrQtyOnHand - (iNTranTGExtRow.UsrQtyPhysical)) * (-1));
    }

    protected virtual void _(Events.RowUpdated<INTran> e)
    {
        if (e.Row == null) return;

        INTran iNTranRow = (INTran)e.Row;

        INTranTGExt iNTranTGExtRow = PXCache<INTran>.GetExtension<INTranTGExt>(iNTranRow);

        Base.transactions.Cache.SetValueExt<INTran.qty>(iNTranRow, (iNTranTGExtRow.UsrQtyOnHand - (iNTranTGExtRow.UsrQtyPhysical)) * (-1));
    }

0 个答案:

没有答案