我正在尝试使用 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);
这方面还有更多工作要做,但至少这应该让任何人都能继续前进。
在回答您的参考问题时,有一些资源可能会有所帮助。
我强烈建议浏览 Netsuite Usergroup 论坛,它有很多代码示例。
您仍然可以在 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();