Acumatica 为什么我需要2个API调用才能将未确认的包添加到装运中

Acumatica 为什么我需要2个API调用才能将未确认的包添加到装运中,acumatica,Acumatica,当我尝试将一个包添加到装运时,即使我将确认值设置为false,Acumatica似乎也会用true值覆盖它 这是我在第一次调用中使用的代码示例,因为第二次调用只是再次将确认值设置为false static void Main(string[] args) { DefaultSoapClient client = new DefaultSoapClient(); client.Login("admin", "admin", "Company", null, null);

当我尝试将一个包添加到装运时,即使我将确认值设置为false,Acumatica似乎也会用true值覆盖它

这是我在第一次调用中使用的代码示例,因为第二次调用只是再次将确认值设置为false

static void Main(string[] args)
{
    DefaultSoapClient client = new DefaultSoapClient();
    client.Login("admin", "admin", "Company", null, null);

    Shipment ship = new Shipment
    {
        ShipmentNbr = new StringSearch { Value = "001301", Condition = StringCondition.Equal },
        Packages = new ShipmentPackage[]
        {
            new ShipmentPackage
            {
                BoxID = new StringValue {Value = "Large" },
                Confirmed = new BooleanValue {Value=false },
                Weight = new DecimalValue {Value = 1.5m }
            }
        }
    };
    client.Put(ship);
    client.Logout();
}

这里的问题是SoShipping Graph(SOPackageDetail_Weight_FieldUpdated)中存在一个事件,该事件将在称重字段更新时将确认复选框的值更改为true

一个简单的修复方法是添加一个小的定制,当使用基于契约的API时,它将禁用该事件的内容

public class SOShipmentEntry_Extension : PXGraphExtension<SOShipmentEntry>
{

    #region Event Handlers

    protected void SOPackageDetail_Weight_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
    {
        if (InvokeBaseHandler != null)
            if (!Base.IsContractBasedAPI)
                InvokeBaseHandler(sender, e);
    }
    #endregion
}
公共类SOShipmentEntry_扩展:pXgrapherExtension
{
#区域事件处理程序
受保护的无效SOPackageDetail\u Weight\u FieldUpdated(PXCache发送器、PXFieldUpdatedEventArgs e、PXFieldUpdated InvokeBaseHandler)
{
if(InvokeBaseHandler!=null)
如果(!Base.IsContractBasedAPI)
InvokeBaseHandler(发送方,e);
}
#端区
}

但是,如果您不希望此事件在任何其他时间发生,您可以始终添加该事件,但将其保留为空。

这里的问题是SoShipping Graph(SOPackageDetail\u Weight\u FieldUpdate)中存在一个事件,该事件将在称重字段更新时将确认复选框的值更改为true

一个简单的修复方法是添加一个小的定制,当使用基于契约的API时,它将禁用该事件的内容

public class SOShipmentEntry_Extension : PXGraphExtension<SOShipmentEntry>
{

    #region Event Handlers

    protected void SOPackageDetail_Weight_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
    {
        if (InvokeBaseHandler != null)
            if (!Base.IsContractBasedAPI)
                InvokeBaseHandler(sender, e);
    }
    #endregion
}
公共类SOShipmentEntry_扩展:pXgrapherExtension
{
#区域事件处理程序
受保护的无效SOPackageDetail\u Weight\u FieldUpdated(PXCache发送器、PXFieldUpdatedEventArgs e、PXFieldUpdated InvokeBaseHandler)
{
if(InvokeBaseHandler!=null)
如果(!Base.IsContractBasedAPI)
InvokeBaseHandler(发送方,e);
}
#端区
}
但是,如果您不希望此事件在任何其他时间发生,您可以始终添加该事件,但将其保留为空