如何使用suitecript 2.0创建发票?

时间:2017-03-21 22:58:12

标签: netsuite suitescript

我尝试在客户端脚本事件中创建发票。

var objRecord = record.create({
    type: 'invoice',
    isDynamic: false
});

objRecord.setValue({
    fieldId: 'customform',
    value: '296',
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'account',
    value: '215',
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'entity',
    value: '13276',
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'currency',
    value: '1',
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'postingperiod',
    value: '294',
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'exchangerate',
    value: '1.0',
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'custbody_amortization_partner_currency',
    value: '6',
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'memo',
    value: v_adv_memo,
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'custbody_amortization_advance_id',
    value: v_advanceID,
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'trandate',
    value: parsedDateStringAsRawDateObjectdtl,
    ignoreFieldChange: true
});
objRecord.setValue({
    fieldId: 'duedate',
    value: v_adv_pymt_pymt_date,
    ignoreFieldChange: true
});
objRecord.selectNewLine({
    sublistId: 'item'
});
objRecord.setCurrentSublistValue({
    sublistId: 'item',
    fieldId: 'item',
    value: '5825',
    ignoreFieldChange: true
});
objRecord.setCurrentSublistValue({
    sublistId: 'item',
    fieldId: 'quantity',
    value: '1',
    ignoreFieldChange: true
});
objRecord.setCurrentSublistValue({
    sublistId: 'item',
    fieldId: 'amount',
    value: '100',
    ignoreFieldChange: true
});
objRecord.commitLine({
    sublistId: 'item'
});

var recId = objRecord.save({
    enableSourcing: true,
    ignoreMandatoryFields: true
});

alert(recId);   

我不确定错误发生在哪里。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

通常不会直接创建发票。您通常会执行以下任一操作。请注意,建议在动态模式下将自定义表单设置为初始化的一部分。

var invRec = record.transform({
    fromType: record.Type.CUSTOMER,
    fromId: custId,
    toType: record.Type.INVOICE,
    isDynamic: true,
    defaultValues: {customform:296}
});

var invRec = record.transform({
    fromType: record.Type.SALES_ORDER,
    fromId: soId,
    toType: record.Type.INVOICE,
    isDynamic: true,
    defaultValues: {customform:296}
});

答案 1 :(得分:0)

我遇到了类似的问题,我需要合并发票并将其附加到原始销售订单上,并且无法进行转换。

尝试使用获取一些信息。     log.debug({     标题:“您的标题”,     details:'Details:'+ objrecord.getValue({fieldId:'otherrefnum'})//例如     });

我认为这里的问题是NetSuite期望类型匹配。例如,不能将rate作为字符串接受-至少那是我得到的TypeError。

真实示例,其中我从发票[i]中选取所有字段并将其分配给合并发票: INVALID_FLD_VALUE“,”消息“:”您为以下字段输入了无效字段值1092:item“-NetSuite最有可能期望的是整数,而不是字符串,反之亦然。

此外,请检查以下链接。了解发票中哪些字段是必填字段,哪些不是必填字段,非常有用:http://www.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_2/script/record/invoice.html