Javascript 从suitescript 2.0中的销售订单生成发票时出错?
我试图在销售订单上包含一个按钮(由用户事件创建)。单击它,将生成发票。只要按下按钮,就会出现一个错误,并且无法生成发票。有人能帮我吗Javascript 从suitescript 2.0中的销售订单生成发票时出错?,javascript,netsuite,suitescript2.0,Javascript,Netsuite,Suitescript2.0,我试图在销售订单上包含一个按钮(由用户事件创建)。单击它,将生成发票。只要按下按钮,就会出现一个错误,并且无法生成发票。有人能帮我吗 //Client script function pageInit() { } function csForButton(ctx) { var rec = curr.get(); var customer = rec.getValue({ "fieldId": "customer" });
//Client script
function pageInit() {
}
function csForButton(ctx) {
var rec = curr.get();
var customer = rec.getValue({ "fieldId": "customer" });
log.error({
title: 'customer',
details: customer
});
var scriptURL = url.resolveScript({
"scriptId": "customscript_button_task_sl",
"deploymentId": "customdeploy_button_task_sl"
});
console.log('scriptURL', scriptURL);
window.onbeforeunload = null;
window.open(scriptURL + '&id=' + rec.id);
}
return {
pageInit: pageInit,
csForButton: csForButton
};
//用户事件脚本
function beforeLoad(ctx) {
//if (context.type == context.UserEventType.VIEW) {
addbutton(ctx);
// }
}
function addbutton(ctx) {
try {
var rec = ctx.newRecord;//record object, now we can get its properties through it(e.g. fields)
var statusOfTrans = rec.getValue({ fieldId: 'status' });
log.error('statusOfTrans', statusOfTrans);
ctx.form.clientScriptFileId = "16474"
if (ctx.type == "view" && statusOfTrans == 'Pending Fulfillment') {
ctx.form.addButton({
id: 'custpage_make_invoice',
label: 'create invoice!',
functionName: 'csForButton'
});
}
}
catch (error) {
log.error('addbutton', error);
}
}
return {
beforeLoad: beforeLoad,
}
//Suitelet脚本
function onRequest(ctx) {
try {
var req = ctx.request;
var res = ctx.response;
if (req.method == 'GET') {
var objRecord = rec.transform({
fromType: rec.Type.SALES_ORDER,
fromId: req.parameters.id,
toType: rec.Type.INVOICE,
isDynamic: true,
});
objRecord.save({
ignoreMandatoryFields: true
});
res.write({output: 'Invoice created'});
}
} catch (error) {
log.error('onRequest', error);
}
}
return {
'onRequest': onRequest
}
错误(在suitelet中):
{“type”:“error.suiteScriptorror”,“name”:“USER_error”,“message”:“您必须为此事务输入至少一个行项目”,“stack”:[“anonymous(N/serverRecordService)”,“onRequest(/SuiteScripts/button SL.js:39)”,“cause”:{“type”:“内部错误”,“代码”:“USER_error”,“详细信息”:“您必须为此事务输入至少一个行项目。”,“userEvent”:null,“stackTrace”:[“anonymous(N/serverRecordService)”,“onRequest(/SuiteScripts/button SL.js:39)”,“notifyOff:false},“id”:“notifyOff:false”,面向用户的:false}
正如错误所说,至少包含1行,但我希望它能够自动生成。我是suitescript的新手,并从文档中获得了所有帮助。有没有jst可以指导我,我到底做错了什么?
谢谢你,你需要SO状态为待结算。如果SO状态为待结算,则没有行项目准备好开票。是的!没错!非常感谢。我需要获得财务方面的基本知识,我想:PNitpick-可以启用允许提前结算的选项,尽管这是典型的ally DisabledHanks@michoel肯定也会这么做