Epicor 10 Связывание BAQ в BPM Workflow Designer (избегая пользовательского кода)

В настоящее время мне поручено проверить BPM, созданный Epicor, который не работает должным образом. В настоящее время с BPM, основанным на коде ниже, его целью является ссылка на заказы в системе, и когда пришло время отправлять заказы в случае изменения цены, заказ / часть будет отражать новую цену. Похоже, что код вызывает неправильные прайс-листы от клиентов не ожидается. Например, прайс-лист прикреплен к клиенту № 1242, но он обновляет цену на основе клиента № 1269. (Предполагаю, что они разделяют общую часть # и код получает последнее значение)

Теперь моя проблема в том, что у меня нет опыта в написании кода, я уже проверял код раньше, но в небольшой степени и из того, что я перечислил выше, что было предоставлено мне. Теперь я подумал, что для меня легче понять эту практику - создать BAQ и указать его в BPM, а также использовать BAQ в качестве ориентира для BPM для обновления цен.

Изучая несколько форумов и учебных материалов Epicors, я не нашел однозначного ответа о том, как связать BAQ в BPM.

(Также, если мое описание имеет смысл, и код отражает проблему, не стесняйтесь делать предположения)

Код BPM:

var ttShipHead_xRow = (from ttShipHead_Row in ttShipHead
                      where ttShipHead_Row.ReadyToInvoice == true
                      select ttShipHead_Row).FirstOrDefault();
if (ttShipHead_xRow != null)
{

foreach (var ShipDtl_iterator in (from ShipDtl_Row in Db.ShipDtl
                                            where ttShipHead_xRow.PackNum == ShipDtl_Row.PackNum
                                            && ttShipHead_xRow.Company == ShipDtl_Row.Company
                                            select ShipDtl_Row))
{
var ShipDtl_xRow = ShipDtl_iterator;
//ShipDtl_xRow.UnitPrice = 1;
var today = DateTime.Today;
 var PriceList_xRow = (from PriceLst_Row in Db.PriceLst
                                                from PriceLstParts_Row in Db.PriceLstParts
                                             where ShipDtl_xRow.PartNum == PriceLstParts_Row.PartNum
                                                && PriceLst_Row.ListCode == PriceLstParts_Row.ListCode
                                                && PriceLst_Row.Company == PriceLstParts_Row.Company
                                                && PriceLst_Row.Company == ShipDtl_xRow.Company
                                                && PriceLst_Row.EndDate >= today
                             select PriceLstParts_Row).FirstOrDefault();                                     
                    if (PriceList_xRow != null)
                  {
                                    var OrderDtl_xRow = (from OrderDtl_Row in Db.OrderDtl
                                                                       where ShipDtl_xRow.OrderLine == OrderDtl_Row.OrderLine
                                                                       && ShipDtl_xRow.PartNum == OrderDtl_Row.PartNum
                                                                          && ShipDtl_xRow.OrderNum == OrderDtl_Row.OrderNum
                                                                            && ShipDtl_xRow.Company == OrderDtl_Row.Company
                                                                            select OrderDtl_Row).FirstOrDefault(); 
                                                    {                                     
                                             if (OrderDtl_xRow != null)
                                                    {
                                                                                            if (ShipDtl_xRow.UnitPrice != PriceList_xRow.BasePrice)
                                                                                            {
                                                                                                ShipDtl_xRow.UnitPrice = PriceList_xRow.BasePrice;
                                                                                            }
                                                                                            if (ShipDtl_xRow.UnitPrice != OrderDtl_xRow.UnitPrice)
                                                                                            {
                                                                                                OrderDtl_xRow.DocUnitPrice = PriceList_xRow.BasePrice;
                                                                                                OrderDtl_xRow.UnitPrice = PriceList_xRow.BasePrice;     
                                                                                            }
                                                    } 
                                                     }
          } 
        } 
    }

1 ответ

Решение

Я решил код, но все еще не мог определить действительный метод, чтобы связать BAQ в BPM

Проблема заключалась в следующем коде:

&& ttShipHead_xRow.CustNum == ShipDtl_Row. CustNum

к первому утверждению foreach.

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