有没有办法在搜索商业帐户时获得BAccountID,或者通过Web服务API基于这些主键更新商业帐户?

时间:2015-05-06 19:04:21

标签: c# acumatica

我们正在开发一个项目,通过Web服务API将我们的电子商务订单传递到Acumatica。

作为订单流程的一部分,我们需要搜索客户以获得我们需要的服务,然后我们希望能够根据主键(即BAccountID)更改此客户数据。但是,当我使用Web Service API“AR303000Export”获取客户信息时,我没有在Acumatica获取的数据中看到“BAccountID”,因此我无法根据主键更新该业务帐户记录(BAccountID和CompanyID,我们已经有了CompanyID)。

在通过Web Service API进行搜索时,是否仍然可以获取主键值?

我注意到我可能能够使用“AcctCD”来更新“Customer ID”,但是,我不确定该客户ID在数据库中是否唯一,因为它未被指定为主要键...

任何帮助都会非常感激。

感谢。

1 个答案:

答案 0 :(得分:0)

您的具体问题是如何获得BAccountID,您可以 - 所以我会回答这个问题。但您可能希望使用AcctCD

这段代码构建了AR303000Export

的命令列表
   var commandgroup = new Command[]
        {
                AR303000Schema.CustomerSummary.ServiceCommands.EveryCustomerID
            ,   WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "DefContactID") 
            , AR303000Schema.CustomerSummary.CustomerID 
            , AR303000Schema.CustomerSummary.CustomerName 
            ,   WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "BAccountID") 
            ,   WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "Type") 
            ,AR303000Schema.CustomerSummary.Status 
            , AR303000Schema.GeneralInfoMainContact.Phone1  
            , AR303000Schema.GeneralInfoMainContact.Phone2
            ,   WSTools.NewA4Field(AR303000Schema.GeneralInfoMainContact.Phone1.ObjectName, "Phone1Type") 
            ,   WSTools.NewA4Field(AR303000Schema.GeneralInfoMainContact.Phone1.ObjectName, "Phone2Type") 
            WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "LastModifiedDateTime") 

        };

你会注意到一些有趣的东西在强类型模式中没有暴露,但是如果你知道如何构建命令来引用该字段,它仍然可用。 (例如Phone1中的Phone1Type中的电话号码类型。)

在您的情况下,您需要一个命令来导出BAccountID来自与CustomerID相同的内部对象名称:

<强> WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "BAccountID")

在导出命令列表中。 (它在上面的片段中排在第5位。)

构建“Field”对象的方法有很多种 - 我有一个实用方法:

  public static AcumaticaWS.Field NewA4Field(string objName, string fldName)
    {
        AcumaticaWS.Field nv = new AcumaticaWS.Field();
        nv.ObjectName = objName;
        nv.FieldName = fldName.TrimEnd();
        return nv;
    }

希望这有帮助!