【发布时间】:2020-09-08 05:25:00
【问题描述】:
我正在尝试自动将 NetSuite 采购订单链接到 NetSuite 销售订单,以下是我尝试完成此任务的代码。但是我遇到了错误(见底部)。你能检查一下并告诉我我在这里缺少什么吗?
采购订单创建代码:
var createPurchaseOrder = new PurchaseOrder();
createPurchaseOrder.entity = new RecordRef()
{
internalId = “653”
//type = RecordType.purchaseOrder,
//typeSpecified = true
};
RecordRef soRecordRef = new RecordRef();
soRecordRef.internalId = “XXXXXXXX”;
soRecordRef.type = RecordType.salesOrder;
soRecordRef.typeSpecified = true;
createPurchaseOrder.createdFrom = soRecordRef;
RecordRef depRecordRef = new RecordRef();
depRecordRef.internalId = “3”;
depRecordRef.name = “eBay : eBay FNC”;
depRecordRef.type = RecordType.department;
depRecordRef.typeSpecified = true;
createPurchaseOrder.department = depRecordRef;
PurchaseOrderItem[] Items = new PurchaseOrderItem[1];
Items[0] = new PurchaseOrderItem();
RecordRef item = new RecordRef();
item.type = RecordType.nonInventoryPurchaseItem;
item.typeSpecified = true;
item.internalId = “XXXXX”;
Items[0].item = item;
Items[0].rate = “5”;
Items[0].quantity = 1;
Items[0].quantitySpecified = true;
PurchaseOrderItemList purchaseOrderItemList = new PurchaseOrderItemList();
purchaseOrderItemList.item = Items;
createPurchaseOrder.itemList = purchaseOrderItemList;
WriteResponse response = Service.add(createPurchaseOrder);
我用来更新销售订单中的采购订单号的代码:
var updateSalesOrder = new SalesOrder();
updateSalesOrder.internalId = “XXXXXXXX”;
SalesOrderItem[] soItems = new SalesOrderItem[1];
var soItem = new SalesOrderItem();
RecordRef roItem = new RecordRef();
roItem.type = RecordType.inventoryItem;
roItem.typeSpecified = true;
roItem.internalId = “XXXXX”;
soItem.item = roItem;
RecordRef prLevel = new RecordRef();
prLevel.type = RecordType.priceLevel;
prLevel.internalId = “-1”;
prLevel.typeSpecified = true;
soItem.price = prLevel;
soItem.rate = “15”;
soItem.quantity = 1;
soItem.quantitySpecified = true;
RecordRef poItem = new RecordRef();
poItem.type = RecordType.purchaseOrder;
poItem.typeSpecified = true;
poItem.internalId = purchaseOrder.internalId;
soItem.createdPo = poItem;
soItems[0] = soItem;
SalesOrderItemList salesOrderItemList = new SalesOrderItemList();
salesOrderItemList.item = soItems;
updateSalesOrder.itemList = salesOrderItemList;
response = Service.update(updateSalesOrder);
if (response.status.isSuccess != true) throw new Exception(response.status.statusDetail[0].message);
但我得到以下错误: 由于以下原因之一,您无权为元素 createPOSpecified 设置值: 1) 该字段是只读的; 2) 相关功能被禁用; 3) 该字段在创建或更新记录时可用,但在这两种情况下都不可用。
注意: createPOSpecified 不会显示在 NetSuite 的销售订单屏幕中。当我尝试更新表单中存在的销售订单中的字段时,我能够成功更新它,但我尝试更新的字段 (createPOSpecified ) 在此销售表单中不可用。在这种情况下,我该如何更新?这也是将采购订单与销售订单联系起来的更好方法吗?
谢谢, 赫曼特。
2020 年 5 月 25 日更新(回应 Anand Rajaram)
我们使用管理员角色来创建采购订单并将其链接到销售订单。我们的客户提供了具有此角色的用户,我们无权查看屏幕上显示的字段,并且已被限制为 EDIT。但我们可以编辑屏幕中显示的大部分字段。
createPOSpecified 不是自定义字段。它是 SALESORDETITEM 类中的一个属性。它不会显示在任何销售订单表单中。
-
如果这是创建采购订单并将其链接到销售订单的正确代码,那么我有几个疑问:
3.1 当我们通过 NetSuite 通过单击销售订单项目网格中的 dropship 链接创建采购订单时,我们可以看到 Mark Shipped 按钮。
但是当我们通过代码创建采购订单时,显示的是接收按钮,采购订单状态没有变化。
3.2 **createdFrom** field is displaying as below when we create purchase order through netsuite.
当我们通过代码创建采购订单时,该字段不显示。我们提供了 createdFrom 属性的信息,但不确定为什么它没有显示
我们假设这是有助于与销售订单链接的字段。我们在创建项目履行和供应商账单时提供了这些信息,这些信息与销售订单正确链接,但我们不确定为什么采购订单没有与销售订单链接。
- 最后在您提供的以下 cmets 上 这基本上是在销售订单表单上有一个自定义交易主体字段,一旦创建了采购订单,就在销售订单字段中更新新创建的采购订单。
我们的销售订单表单中没有任何自定义交易正文字段来提供采购订单。但是一旦通过 NetSuite 创建采购订单,采购订单编号就会显示在销售订单项目网格中。
所以这一切归结为:我们在代码中遗漏了什么以及我们必须修复什么以显示“标记已发货”按钮、“创建自”标签和链接采购订单到销售订单。
谢谢, 赫曼特。
【问题讨论】: