将 SalesOrderItem 添加到 NetSuite SuiteTalk Web 服务中的 SalesOrder

问题描述 投票:0回答:2

我正在尝试使用 NetSuite Web 服务下一个简单的销售订单,但我认为这是一个非常简单的过程,但运气为零:

首先,我实例化我的对象以与 Web 服务一起使用:

SalesOrder order = new SalesOrder();
SalesOrderItemList items = new SalesOrderItemList();
SalesOrderItem item = new SalesOrderItem();

现在你可能会认为我只是寻找一些方法,例如:

items.Add(item);

创建我的 SalesOrderItems 列表,但现在存在这样的方法,或者任何我似乎可以理解的类似方法。我有《SuiteTalkWebServices 平台指南》并已通读,但我被难住了。

这个 API 有什么好的参考吗?我认为 NetSuites 有所欠缺。顺便说一句,我正在使用 C#。

更新:

我通过谷歌搜索找到了这个 PDF,巨大的帮助:
http://www.netsuite.com/portal/partners/integration/download/SuiteTalkWebServicesPlatformGuide_2011.2.pdf

令我困惑的是我需要创建一个数组,然后将该数组分配给定义的对象,而不是像我想象的那样一一添加东西。整个 API 都是这样工作的,所以一旦你完成了它,你就可以了(基本测试添加 2 个项目到订单中):

// create sales order
            SalesOrder so = new SalesOrder();
            SalesOrderItem[] orderItemsArray = new SalesOrderItem[2];

            for (int i = 0; i < orderItemsArray.Length; i++)
            {
                SalesOrderItem item = new SalesOrderItem();
                item.quantity = i;
                item.description = "test item" + i;
                item.amount = (double)75.00;
                orderItemsArray[i] = item;
            }

            SalesOrderItemList orderItems = new SalesOrderItemList();
            orderItems.item = orderItemsArray;
            so.itemList = orderItems;

            so.orderStatus = SalesOrderOrderStatus._pendingApproval;
            service.add(so);

这方面还有更多工作要做,但至少这应该让任何人都能继续前进。

c# web-services netsuite
2个回答
0
投票

在回答您的参考问题时,有一些资源可能会有所帮助。

  • Netsuite 用户表格 - 该论坛得到相当快的回复,Netsuite 员工经常会回答问题(需要注册,但免费)
  • 我写了一篇博客,其中包含许多 Netsuite API 调用的 PHP 代码示例。它不是 C#,但您可能仍然会发现它很有用。 (更重要的是,这是一个销售订单请求的示例)

我强烈建议浏览 Netsuite Usergroup 论坛,它有很多代码示例。


0
投票

您仍然可以在 while 循环中做您想做的事情并使用列表。像这样的东西应该有效。使用 SQLiteDataReader 但您可以使用任何数据读取器。这样,您可以使用读取器而不是数据表或 2 个 sql 语句来获取项目数和项目行数。我将在测试之前发布,希望它可以帮助其他人避免数组计数问题并使用索引。

enter sSQL = string.Format("SELECT Transactionitems.* From TransactionItems Where TransactionId = {0}", transactionid);
SQLiteDataReader drTransactionItems = SQLDB.getDataReader(sSQL, conn);
List<SalesOrderItem> salesOrderItems = new List<SalesOrderItem>();                                        
while (drTransactionItems.Read())
{
    SalesOrderItem item = new SalesOrderItem();
    item.description = drTransactionItems["ItemName"].ToString();
    item.item.internalId =   drTransactionItems["NetSuiteItemId"].ToString();
    item.amount = Convert.ToDouble(drTransactionItems["OriginalPricePerUnit"].ToString());
    item.price = new RecordRef();
    item.price.internalId = Program.RegisterConfiguration.NetSuite_PriceLevelId.ToString();
    item.quantity = Convert.ToInt32(drTransactionItems["Quantity"].ToString());
    salesOrderItems.Add(item);                       
}
drTransactionItems.Close();
salesorder.itemList = new SalesOrderItemList();
salesorder.itemList.item = salesOrderItems.ToArray();
© www.soinside.com 2019 - 2024. All rights reserved.