2015-04-07 97 views
0

我们正在通过Web服务开发Acumatica和我们的应用程序之间的接口。我们正在使用Savon宝石在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 

我们始终只是得到一个空的输入反应。有任何想法吗?

+0

如果在表单中输入相同的数据,你会得到什么?您尝试执行哪种形式的动作? –

+0

我试图执行“导出”命令。我不知道如何在前端?我是否使用报告来做到这一点? –

回答

0

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

+0

不幸的是,我没有Acumatica的本地实例进行测试。我正在http://p3.tryacumatica.com上进行测试,以管理员身份登录 它看起来像PO模块已打开,因为我可以从前端访问它,并且我假定Admin用户拥有权限,因为我可以从前端查看PO的列表。 –

0

那么,我的第一个问题是为什么你需要一个完整的列表PO?它可能是一个巨大的数据。 PO有复合键 - 类型,OrderNbr基本上使用导出命令,你必须像EveryOrderNbr指定值

见下文 link

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