Как ограничить пересылку при отгрузке клиента в 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