使用 SuiteScript 创建直销库存项目时出错

Error creating dropship inventory item with SuiteScript

我收到以下错误:

“下降 ship/Special 订单商品必须有首选供应商和购买价格。”

来自此 SuiteScript 函数,其中包含首选供应商和购买价格的赋值。所以,我 setting/creating itemvendor 子列表的方式一定有问题吗?

    function createItemRecord(item, vendor, subsidiary) {
        log.audit({
            title: 'createItemRecord...',
            details: {ITEM: item, VENDOR: vendor, SUBSIDIARY: subsidiary}
        });
        var itemRecord = record.create({
            type: record.Type.INVENTORY_ITEM,
            isDynamic: true
        });
      
       itemRecord.setValue({
            fieldId: "itemid",
          value: item.sku
        }).setValue({
            fieldId: "displayname",
          value: item.summary
        }).setValue({
            fieldId: "purchasedescription",
          value: item.details
        }).setValue({
            fieldId: "isspecialorderitem",
          value: true
        }).setValue({
            fieldId: "cost",
          value: item.price
        });
      
       itemRecord.selectNewLine({
          sublistId: 'itemvendor'
        });
      
      itemRecord.setCurrentSublistValue({
            sublistId: 'itemvendor',
            fieldId: 'vendor',
            value: vendor
          });
      /* vendor.internalId */
      itemRecord.setCurrentSublistValue({
            sublistId: 'itemvendor',
            fieldId: 'purchaseprice',
            value: item.price
          });
      
      itemRecord.setCurrentSublistValue({
            sublistId: 'itemvendor',
            fieldId: 'subsidiary',
            value: subsidiary.internalId
          });
      
      itemRecord.setCurrentSublistValue({
            sublistId: 'itemvendor',
            fieldId: 'preferredvendor',
            value: true
          });
      
      itemRecord.commitLine({
          sublistId: 'itemvendor'
        });
      
      itemRecord.save({
          enableSourcing: true,
          ignoreMandatoryFields: false
        });
    }

函数开头的审核日志消息表明正在将以下值传递给函数:

{"ITEM":{"sku":"SKU #1","catalogcode":"1804","summary":"Billiard Table","details":"Billiard Table","价格":9999.99}, “供应商”:“1648”, "SUBSIDIARY":{"internalId":"3","externalId":"","type":"subsidiary"} }

我不确定为什么它必须以这种方式工作,但我为解决此问题所做的是在 createItemRecord 函数之外设置特殊订单项目标志。 createItemRecord 将设置包含子列表供应商项目的项目并保存记录。 Return 给调用者的新记录 ID。调用者将此记录 ID 传递给函数以通过将特殊订单项目标志设置为 true 来更新记录。

function createItemRecord(item, vendor, subsidiary) {

...

      var recordId = itemRecord.save({
          enableSourcing: true,
          ignoreMandatoryFields: false
        });
      
      return recordId;
    }
  
  function makeItemSpecialOrder(itemId)
  {
    log.audit({
      title: 'makeItemSpecialOrder...',
      details: itemId
    });
    
    var itemRecord = record.submitFields({
      type: record.Type.INVENTORY_ITEM,
      id: itemId,
      values: {
        isspecialorderitem: true
      },
      options: {
        enableSourcing: false,
        ignoreMandatoryFields: true
      }
    });
  }