Acumatica 创建装运后销售订单状态未更改
我正在从自定义屏幕创建类型为Transfer的装运,使用下面的代码,装运正在成功创建,但销售订单屏幕中的状态未更新,而且它也不允许我再次从销售订单屏幕创建装运,因为它已经有一个打开的装运Acumatica 创建装运后销售订单状态未更改,acumatica,Acumatica,我正在从自定义屏幕创建类型为Transfer的装运,使用下面的代码,装运正在成功创建,但销售订单屏幕中的状态未更新,而且它也不允许我再次从销售订单屏幕创建装运,因为它已经有一个打开的装运 soShipmentGraph.CreateShipment(soOrderGraph.Document.Current, graph.Document.Current.SiteID, graph.Document.Current.ShipDate, false, SOOperation.Issue, crea
soShipmentGraph.CreateShipment(soOrderGraph.Document.Current, graph.Document.Current.SiteID, graph.Document.Current.ShipDate, false, SOOperation.Issue, created);
当我确认装运时,状态正在更新
soShipmentGraph.CreateShipment(soOrderGraph.Document.Current, graph.Document.Current.SiteID, graph.Document.Current.ShipDate, false, SOOperation.Issue, created);
如果在装运创建过程中未引发异常,则状态将根据SOOrder.UpdateShipmentCnt字段值在CreateShipment方法结束时更新:
if (order.OpenShipmentCntr > 0)
{
order.Status = SOOrderStatus.Shipping;
order.Hold = false;
soorder.Update(order);
}
OpenShipmentCntr字段由SOShipmentEntry.UpdateShipmentCntr方法更新:
protected virtual void UpdateShipmentCntr(PXCache sender, object Row, short? Counter)
{
SOOrder order = (SOOrder)PXParentAttribute.SelectParent(sender, Row, typeof(SOOrder));
if (order != null)
{
order.ShipmentDeleted = (Counter == -1) ? true : (bool?)null;
order.ShipmentCntr += Counter;
if (((SOOrderShipment)Row).Confirmed == false)
{
order.OpenShipmentCntr += Counter;
}
soorder.Cache.SetStatus(order, PXEntryStatus.Updated);
}
}
创建发货时,SOShipmentEntry应插入SOOrderShipment记录,该记录将SOOrder(销售订单)与SOShipment(发货)记录链接起来。SOORDERSHIPPTION应在装运的“订单”选项卡中可见:
插入SOOrderShipment记录后,SOShipmentEntry中的SOOrderShipment行插入事件将引发:
protected virtual void SOOrderShipment_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
{
UpdateShipmentCntr(sender, e.Row, (short)1);
}
我无法确定状态不会更改的原因,因此建议调试导致销售订单状态更改的步骤。感谢HB_Acumatica,这解决了我的问题。如果(order.OpenShipmentCntr>0){order.Status=SOOrderStatus.Shipping;order.Hold=false;soorder.Update(order);}