Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 创建装运后销售订单状态未更改_Acumatica - Fatal编程技术网

Acumatica 创建装运后销售订单状态未更改

Acumatica 创建装运后销售订单状态未更改,acumatica,Acumatica,我正在从自定义屏幕创建类型为Transfer的装运,使用下面的代码,装运正在成功创建,但销售订单屏幕中的状态未更新,而且它也不允许我再次从销售订单屏幕创建装运,因为它已经有一个打开的装运 soShipmentGraph.CreateShipment(soOrderGraph.Document.Current, graph.Document.Current.SiteID, graph.Document.Current.ShipDate, false, SOOperation.Issue, crea

我正在从自定义屏幕创建类型为Transfer的装运,使用下面的代码,装运正在成功创建,但销售订单屏幕中的状态未更新,而且它也不允许我再次从销售订单屏幕创建装运,因为它已经有一个打开的装运

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);}