Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Acumatica 更新POOrderEntry中的缓存时发生异常_Acumatica - Fatal编程技术网

Acumatica 更新POOrderEntry中的缓存时发生异常

Acumatica 更新POOrderEntry中的缓存时发生异常,acumatica,Acumatica,创建采购订单后添加SOLine时,SOLineSplit中“POType”、“PONbr”、“POLineNbr”、“RefNoteID”的值存储为空值 当我在创建的采购订单中添加相同的SOLine时,我试图用POLine值更新SOLineSplit NULL值,但在弹出窗口中出现错误,提示“订单日期不能为空”。下面是我在一个事件中编写的代码,用于更新缓存中的值,但在graph.Actions.PressSave()中出现异常;有人能帮我吗 public PXSelectJoin<

创建采购订单后添加SOLine时,SOLineSplit中“POType”、“PONbr”、“POLineNbr”、“RefNoteID”的值存储为空值

当我在创建的采购订单中添加相同的SOLine时,我试图用POLine值更新SOLineSplit NULL值,但在弹出窗口中出现错误,提示“订单日期不能为空”。下面是我在一个事件中编写的代码,用于更新缓存中的值,但在graph.Actions.PressSave()中出现异常;有人能帮我吗

     public PXSelectJoin<SOLineSplit, InnerJoin<POOrder, On<SOLineSplit.orderType, Equal<POOrder.sOOrderType>,
                                                      And<SOLineSplit.orderNbr, Equal<POOrder.sOOrderNbr>>>>,
                                                      Where<SOLineSplit.pOType, IsNull, And<SOLineSplit.pONbr, IsNull>>> UnmappedSoLine;


    protected void POOrder_RowPersisted(PXCache sender, PXRowPersistedEventArgs e, PXRowPersisted BaseEvent)
    {


        POOrder row = e.Row as POOrder;
        if (row != null && e.TranStatus == PXTranStatus.Completed)
        {
            SOLinePartial graph = PXGraph.CreateInstance<SOLinePartial>();
            foreach (POLine poline in Base.Transactions.Select())
            {
                foreach (SOLineSplit sosplititem in UnmappedSoLine.Search<SOLineSplit.inventoryID>(poline.InventoryID))
                {
                    sosplititem.POType = poline.OrderType;
                    sosplititem.PONbr = poline.OrderNbr;
                    sosplititem.POLineNbr = poline.LineNbr;
                    sosplititem.OrderDate = poline.OrderDate;
                    SOLineSplit sp = PXSelectJoin<SOLineSplit,
                InnerJoin<POLine, On<
                SOLineSplit.pOType, Equal<POLine.orderType>,
                                And<SOLineSplit.pONbr, Equal<POLine.orderNbr>, And<SOLineSplit.pOLineNbr, Equal<POLine.lineNbr>>>>>,
               Where<POLine.orderNbr, Equal<Required<POOrder.orderNbr>>>>.Select(Base, row.OrderNbr);
                    if (sp != null)
                        sosplititem.RefNoteID = sp.RefNoteID;

                    graph.soLineSplit.Cache.Update(sosplititem);
                }


            }

            graph.Actions.PressSave();
        }          


    }
public PXSelectJoin unappedsoline;
受保护的void POOrder_RowPersisted(PXCache发送方、PXRowPersistedEventArgs e、PXRowPersisted BaseEvent)
{
POOrder行=e。行作为POOrder;
if(行!=null&&e.TranStatus==PXTranStatus.Completed)
{
SOLinePartial graph=PXGraph.CreateInstance();
foreach(POLine POLine在Base.Transactions.Select()中)
{
foreach(unappedsoline.Search(poline.InventoryID)中的SOLineSplit sosplititem)
{
sosplititem.POType=poline.OrderType;
sosplititem.PONbr=poline.OrderNbr;
sosplititem.POLineNbr=poline.LineNbr;
sosplititem.OrderDate=poline.OrderDate;
SOLineSplit sp=PXSelectJoin,
其中>.Select(Base,row.OrderNbr);
如果(sp!=null)
sosplititem.RefNoteID=sp.RefNoteID;
graph.soLineSplit.Cache.Update(sosplititem);
}
}
graph.Actions.PressSave();
}          
}

销售到采购链接逻辑不是自动填入这些值吗?(从销售订单添加到现有或新采购订单时)。可能与您正在使用的图形有关,并且当前SOOrder为null(基于SOLineSplit.OrderDate[PXDBDefault(typeof(SOOrder.OrderDate)))@Brendan此逻辑不同,因此这是在启用“标记为PO”的SOLine创建salesorder后,创建采购订单操作将创建采购订单的场景。在此之后,我将在Salesorder中添加一个新的SOLine,它在SOLineSplit中创建空值。当采购订单中创建了与POLine相同的SOLine时,也就是当我尝试更新空值七时,如果您将销售行添加到现有PO中?或者您是否有一个自定义流程,将一个新行添加到采购订单并将其自动链接到销售行?没有自定义流程。Acumatica为现有采购订单添加了新的PoLine。但添加新SOLine时,SoLineSplit值为空。我猜SOLinePartial graph没有SOOrder的当前值,或者您的OrderDate值为空。理想情况下,您希望在PO上使用rowserted,然后在POGraph缓存上使用SOLinesplit更改vs使用新的图形。