Обновление количества при изменении поля Usr на экране настроек - PullRequest
0 голосов
/ 22 марта 2019

Я добавил 2 поля USR для изменения кол-ва сетки транзакций на экране настройки. Использование полей USR выглядит следующим образом ...

1-й (Qty On Hand) содержит Qty On Hand, имеющийся у этого предмета в выбранном месте, и LotSerialNbr.

2-й (Physical Qty) - установить оставшийся кол-во, которое они хотят иметь в (Location - LotSerialNbr).

Когда пользователь открывает экран корректировок, он отображает оба поля с одинаковыми количествами, например, Qty On Hand = 100 и Physical Qty = 100, поэтому кол-во экрана транзакций должно быть нулевым (то есть, они не хотят отрегулируйте все, что угодно) если пользователь изменяет физическую величину, необходимую системе для вычисления количества, которое нужно отрегулировать, например, Qty on Hand = 100 и Physical Qty = 50 означает, что у Qty должно быть -50, поэтому Acumatica отрегулирует Qty до 50.

Я пытался сделать это, изменив Qty в событии FieldUpdated поля USR Physical Qty, но LotSerialNbr иногда исчезает, а в событии RowUpdated INTran Total Qty корректировки не меняет своего значения

    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));
    }
...