Как ограничить пересылку при отгрузке клиента в EPICOR ERP

Я хочу запретить пользователю вводить количество отгружаемого задания больше, чем количество заказа на уровне отгрузки клиента в EPICOR Erp.

Создан пользовательский код BPM для проверки значений и отображения сообщения при перегрузке. Впервые работает нормально. Это означает, что при создании нового бланка квитанции и если я ввожу количество отгружаемого на работу больше, чем запрошенное количество, оно работает нормально Но когда я снял флажок отгруженного, затем действия-> открыть (отредактировал отгрузку) и ввели количество отгруженного задания больше, чем запрошенное количество, код BPM не работает.

var ShipDtl = ttShipDtl.Where(sd => (sd.Added()) && ((sd.OurJobShipQty + sd.OurInventoryShipQty) > (sd.SellingReqQty - sd.SellingShippedQty))).FirstOrDefault();

if(ShipDtl != null){
    var msg = "You are attempting to overship. Please correct before you can continue.";
    msg = msg + ShipDtl.SellingReqQty + " " + ShipDtl.SellingShippedQty + " " + ShipDtl.OurJobShipQty + " " + ShipDtl.OurInventoryShipQty;
    throw new Ice.Common.BusinessObjectException(
        new Ice.Common.BusinessObjectMessage(msg){
            Type = Ice.Common.BusinessObjectMessageType.Error,
        }
    );
}

Ожидаемый результат:

Сообщение об ошибке, если пользователь вводит количество отгружаемого задания больше, чем запрашиваемое количество (В случаях полной и частичной отгрузки заказа)

0 ответов

Измените первую строку на следующую, что должно решить проблему:

var ShipDtl = ttShipDtl.Where(sd => (sd.Added() || sd.Updated()) && ((sd.OurJobShipQty + sd.OurInventoryShipQty) > (sd.SellingReqQty - sd.SellingShippedQty))).FirstOrDefault();

Ваш текущий код специально выбирает линии доставки только по мере их добавления, но не по мере их обновления. Вsd.Updated() аналогично выбирает строки, где RowMod == IceRow.ROWSTATE_UPDATED

Другие вопросы по тегам