通过网络服务访问采购订单

时间:2015-04-07 15:25:58

标签: ruby web-services soap acumatica

我们正忙着通过网络服务开发Acumatica和我们的应用程序之间的接口。我们正在使用Savon gem在Ruby中开发它。

我们已经有一些出口工作用于我们需要的信息,例如供应商数据:

我们发布以下SOAP调用(登录后):

<?xml version="1.0"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.acumatica.com/typed/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <tns:Export>
      <tns:commands>
        <tns:Command>
          <tns:FieldName>AcctCD</tns:FieldName>
          <tns:ObjectName>BAccount</tns:ObjectName>
          <tns:Value>Account code</tns:Value>
        </tns:Command>
        <tns:Command>
          <tns:FieldName>AcctName</tns:FieldName>
          <tns:ObjectName>BAccount</tns:ObjectName>
          <tns:Value>Account name</tns:Value>
        </tns:Command>
      </tns:commands>
      <tns:filters/>
      <tns:startRow>0</tns:startRow>
      <tns:topCount>0</tns:topCount>
      <tns:includeHeaders>false</tns:includeHeaders>
      <tns:breakOnError>false</tns:breakOnError>
    </tns:Export>
  </env:Body>
</env:Envelope>

到测试终点:

http://p3.tryacumatica.com/(W(10003))/Soap/AP303000.asmx?WSDL

我们也可以为库存和网站做同样的事情。但是,我们正在努力使其适用于采购订单。

我们发布以下内容:

<?xml version="1.0"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.acumatica.com/typed/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <tns:Export>
      <tns:commands>
        <tns:Command>
          <tns:FieldName>Type</tns:FieldName>
          <tns:ObjectName>POOrder</tns:ObjectName>
          <tns:Value>Type</tns:Value>
        </tns:Command>
        <tns:Command>
          <tns:FieldName>OrderNbr</tns:FieldName>
          <tns:ObjectName>POOrder</tns:ObjectName>
          <tns:Value>Order number</tns:Value>
        </tns:Command>
      </tns:commands>
      <tns:filters/>
      <tns:startRow>0</tns:startRow>
      <tns:topCount>0</tns:topCount>
      <tns:includeHeaders>false</tns:includeHeaders>
      <tns:breakOnError>false</tns:breakOnError>
    </tns:Export>
  </env:Body>
</env:Envelope>

到测试终点:

http://p3.tryacumatica.com/(W(3))/Soap/PO301000.asmx?WSDL

我们总是得到空洞的回应。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

检查PO模块是否已打开。还要检查用户是否有权查询PO对象。数据库是否收到查询?一种选择是从数据库端调试。查看数据库是否选择从Web服务输入提交的查询 我知道这些都是简单的想法,但值得一看。

答案 1 :(得分:0)

好吧,我的第一个问题是你为什么需要一个完整的PO清单?它可能是一个巨大的数据。 PO有一个复合键 - Type,OrderNbr,基本上使用Export命令你必须像EveryOrderNbr那样指定值

请参阅下面的链接 link

答案 2 :(得分:0)

+

旧的c#示例SO

            Content SO301000 = context.GetSchema();
        context.Clear();

        string[][] data = context.Export(new Command[] 
        { 
            SO301000.OrderSummary.ServiceCommands.EveryOrderType,
            SO301000.OrderSummary.ServiceCommands.EveryOrderNbr,
            SO301000.OrderSummary.OrderType,
            SO301000.OrderSummary.OrderNbr,
            SO301000.OrderSummary.Description,
            SO301000.OrderSummary.Hold,
        }, null,

        new Filter[]
        {

            new Filter { Field = SO301000.OrderSummary.OrderType, Condition = FilterCondition.Equals, Value = "IN", Operator = FilterOperator.And },
            new Filter { Field = SO301000.OrderSummary.OrderNbr, Condition = FilterCondition.Equals, Value = "23630843", Operator = FilterOperator.And }
        },
              0, false, true);