Acumatica 在插入采购订单时,修订ID不能为空

Acumatica 在插入采购订单时,修订ID不能为空,acumatica,Acumatica,您好,我正在创建一个插入采购订单的流程,但我遇到了一个无法解决的错误。当我坚持我的采购订单时,我得到一个错误修正ID可能不是空的。我感到困惑,并且修订ID没有出现在DAC的任何POOrder或POLine上 这里是错误 Message: Error #4: 'RevisionID' may not be empty. Date/Time: 18/06/2015 12:22 Platform: Browser: Source: PX.Data Target Site: Boolean Mo

您好,我正在创建一个插入采购订单的流程,但我遇到了一个无法解决的错误。当我坚持我的采购订单时,我得到一个错误修正ID可能不是空的。我感到困惑,并且修订ID没有出现在DAC的任何POOrder或POLine上

这里是错误

Message: Error #4: 'RevisionID' may not be empty.

Date/Time: 18/06/2015 12:22
Platform: 
Browser: 

Source: PX.Data
Target Site: Boolean MoveNext()
Stack Trace:    at PX.Data.PXDefaultAttribute.RowPersisting(PXCache sender,  PXRowPersistingEventArgs e)
at PX.Data.PXCache.OnRowPersisting(Object item, PXDBOperation operation)
at PX.Data.PXCache`1.PersistInserted(Object row)
at PX.Objects.CS.SharedRecordAttribute.RowPersisting(PXCache sender, PXRowPersistingEventArgs e)
at PX.Data.PXCache.OnRowPersisting(Object item, PXDBOperation operation)
at PX.Data.PXCache`1.PersistInserted(Object row)
at PX.Data.PXCache`1.Persist(PXDBOperation operation)
at PX.Data.PXGraph.Persist(Type cacheType, PXDBOperation operation)
at PX.Data.PXGraph.Persist()
at PX.Objects.PO.POOrderEntry.Persist()
at PX.Data.PXSave`1.<Handler>d__4.MoveNext()
at PX.Data.PXAction`1.<Press>d__c.MoveNext()
at PX.Data.PXAction`1.<Press>d__c.MoveNext()
at PX.Data.PXAction`1.Press()
at    Exosoft.MP.MikePero.Graphs.GeneratePurchaseOrdersProcess.GeneratePurchaseOrders (List`1 sOrderLines) in c:\Projects\Exosoft\Mike Pero Rex  Integration\Dev\Main\Source\MP\MikePero\Graphs\Processes\GeneratePurchaseOrdersProcess.cs:line 102
消息:错误#4:“修订ID”不能为空。
日期/时间:2015年6月18日12:22
站台:
浏览器:
资料来源:PX.Data
目标站点:布尔MoveNext()
堆栈跟踪:位于PX.Data.PXDefaultAttribute.RowPersisting(PXCache发送方,PXRowPersistingEventArgs e)
在PX.Data.PXCache.OnRowPersisting(对象项,PXDBOperation操作)
在PX.Data.PXCache`1.persisted处(对象行)
位于PX.Objects.CS.SharedRecordAttribute.RowPersisting(PXCache发送方,PXRowPersistingEventArgs e)
在PX.Data.PXCache.OnRowPersisting(对象项,PXDBOperation操作)
在PX.Data.PXCache`1.persisted处(对象行)
在PX.Data.PXCache`1.Persist处(PXDBOperation操作)
在PX.Data.PXGraph.Persist(类型cacheType,PXDBOperation)
在PX.Data.PXGraph.Persist()处
在PX.Objects.PO.POOrderEntry.Persist()处
在PX.Data.PXSave`1.d_uuu4.MoveNext()中
在PX.Data.PXAction`1.d_uc.MoveNext()中
在PX.Data.PXAction`1.d_uc.MoveNext()中
在PX.Data.PXAction`1.Press()处
在c:\Projects\Exosoft\Mike Pero Rex Integration\Dev\Main\Source\MP\MikePero\Graphs\processs\GeneratePurchaseOrdersProcess中的Exosoft.MP.MikePero.Graphs.GeneratePurchaseOrdersProcess.GeneratePurchaseOrders(列表'1排序行)中
这里是我创建采购订单的代码(未完成)

private static void GeneratePurchaseOrders(列表排序行)
{
尝试
{
DateTime firstOfMonth=新的日期时间(DateTime.Today.Year,DateTime.Today.Month,1);
DateTime lastOfMonth=firstOfMonth.AddMonths(1.AddSeconds(-1);
foreach(PX.Objects.SO.soLine排序行中的自定义soLine){
POOrderEntry graph=PXGraph.CreateInstance();
graph.Clear(PXClearOption.ClearAll);
PX.Objects.IN.InventoryItem项=AdvancedMethods.GetInventoryItemByInventoryID(soLine.InventoryID);
PX.Objects.AP.VendorR vendor vendor=AdvancedMethods.GetVendorByID(item.PreferredVendorID);
如果(供应商==null)返回;
PX.Objects.CR.Location vLocation=AdvancedMethods.GetLocationByLocationID(vendor.DefLocationID);
if(vLocation==null)返回;
//获取现有的当前月份采购订单
PX.Objects.PO.POOrder pOrder=PXSelect.Select(new PXGraph(),item.PreferredVendorID,firstOfMonth,lastOfMonth);
if(pOrder==null)
{
//添加新的采购订单
pOrder=new PX.Objects.PO.POOrder();
pOrder.OrderType=PX.Objects.PO.POOrderType.RegularOrder;
pOrder=PXCache.CreateCopy(graph.Document.Insert(pOrder));
pOrder.VendorID=vendor.ID;
pOrder.VendorLocationID=vendor.DefLocationID;
pOrder.SiteID=soLine.SiteID;
pOrder.OrderDesc=“生成的采购订单”;
pOrder.OrderDate=最后一个月;
pOrder.TermsID=vendor.TermsID;
}
graph.Document.Current=graph.Document.Search(pOrder.OrderNbr,pOrder.OrderType);
graph.vendor.Current=供应商;
graph.location.Current=v位置;
//将行添加到采购订单
PX.Objects.PO.POLine pLine=新PX.Objects.PO.POLine();
pLine.LineType=POLineType.Service;
pLine.OrderType=pOrder.OrderType;
pLine.RequestedDate=soLine.ShipDate;
pLine.VendorID=pOrder.VendorID;
pLine.VendorLocationID=pOrder.VendorLocationID;
pLine.InventoryID=soLine.InventoryID;
pLine.SubItemID=pLine.SubItemID;
pLine.SiteID=soLine.SiteID;
pLine.UOM=soLine.UOM;
pLine.OrderQty=单列数量;
pLine.TranDesc=soLine.TranDesc;
pLine.projectd=soLine.projectd;
pLine.TaskID=soLine.TaskID;
pLine.UnitCost=soLine.UnitCost;
pLine.CuryUnitCost=soLine.CuryUnitCost;
pLine=图形.Transactions.Insert(pLine);
graph.Save.Press();
}//弗雷奇
}
捕获(例外情况除外)
{
错误处理。日志错误(ex);
抛出新的PXException(String.Format(“生成采购订单时出错:{0}”,例如Message));
}
}
}//生成采购订单流程

好的,我更改属性后忘记更新采购订单了


pOrder=graph.Document.Update(pOrder)

此错误消息发生在哪一行代码?graph.save.press();后来我将其更改为graph.actions.presssave(),但我得到了相同的错误
        private static void GeneratePurchaseOrders(List<PX.Objects.SO.SOLineCustom> sOrderLines)
    {
        try
        {
            DateTime firstOfMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
            DateTime lastOfMonth = firstOfMonth.AddMonths(1).AddSeconds(-1);

            foreach (PX.Objects.SO.SOLineCustom soLine in sOrderLines) {
                POOrderEntry graph = PXGraph.CreateInstance<POOrderEntry>();
                graph.Clear(PXClearOption.ClearAll);

                PX.Objects.IN.InventoryItem item = AdvancedMethods.GetInventoryItemByInventoryID(soLine.InventoryID);
                PX.Objects.AP.VendorR vendor = AdvancedMethods.GetVendorByID(item.PreferredVendorID);

                if (vendor == null) return;

                PX.Objects.CR.Location vLocation = AdvancedMethods.GetLocationByLocationID(vendor.DefLocationID);

                if (vLocation == null) return;

                //Get Existing Current Months Purchase Order
                PX.Objects.PO.POOrder pOrder = PXSelect<PX.Objects.PO.POOrder, 
                    Where<PX.Objects.PO.POOrder.vendorID, Equal<Required<PX.Objects.PO.POOrder.vendorID>>,
                        And<Where<PX.Objects.PO.POOrder.orderDate, Greater<Required<PX.Objects.PO.POOrder.orderDate>>,
                            And<PX.Objects.PO.POOrder.orderDate, LessEqual<Required<PX.Objects.PO.POOrder.orderDate>>>>>>>.Select(new PXGraph(), item.PreferredVendorID, firstOfMonth, lastOfMonth);

                if (pOrder == null)
                {
                    //Add new purchase order
                    pOrder = new PX.Objects.PO.POOrder();
                    pOrder.OrderType = PX.Objects.PO.POOrderType.RegularOrder;
                    pOrder = PXCache<PX.Objects.PO.POOrder>.CreateCopy(graph.Document.Insert(pOrder));                       
                    pOrder.VendorID = vendor.ID;
                    pOrder.VendorLocationID = vendor.DefLocationID;
                    pOrder.SiteID = soLine.SiteID;
                    pOrder.OrderDesc = "Generated Purchase Order";
                    pOrder.OrderDate = lastOfMonth;
                    pOrder.TermsID = vendor.TermsID;
                }

                graph.Document.Current = graph.Document.Search<POOrder.orderNbr>(pOrder.OrderNbr, pOrder.OrderType);

                graph.vendor.Current = vendor;
                graph.location.Current = vLocation;



                //Add Line to Purchase Order
                PX.Objects.PO.POLine pLine = new PX.Objects.PO.POLine();
                pLine.LineType = POLineType.Service;
                pLine.OrderType = pOrder.OrderType;

                pLine.RequestedDate = soLine.ShipDate;
                pLine.VendorID = pOrder.VendorID;
                pLine.VendorLocationID = pOrder.VendorLocationID;
                pLine.InventoryID = soLine.InventoryID;
                pLine.SubItemID = pLine.SubItemID;
                pLine.SiteID = soLine.SiteID;
                pLine.UOM = soLine.UOM;
                pLine.OrderQty = soLine.Qty;
                pLine.TranDesc = soLine.TranDesc;
                pLine.ProjectID = soLine.ProjectID;
                pLine.TaskID = soLine.TaskID;

                pLine.UnitCost = soLine.UnitCost;
                pLine.CuryUnitCost = soLine.CuryUnitCost;

                pLine = graph.Transactions.Insert(pLine);

                graph.Save.Press();

            }//foreach


        }
        catch (Exception ex)
        {
            ErrorHandling.LogError(ex);
            throw new PXException(String.Format("An error occurred generating purchase orders: {0}", ex.Message));
        }
    }

}//GeneratePurchaseOrdersProcess