在Netsuite自定义列表,添加复制上一行按钮
Netsuite系统标准的记录上,有标准的复制上一行按钮,但是自定义记录没有该按钮,可以通过开发来增加此按钮
调用方法 :
在UserEvent脚本中调用函数,beforeLoad时调用addCopyButton函数,beforeLoad时调用changeCopySublistId函数
/* *添加复制按钮,调用:addCopyButton(scriptContext) *解决复制功能保存BUG,调用:changeCopySublistId(scriptContext.newRecord) */ define(['N/record'], function(record) { return { addCopyButton:addCopyButton, //添加复制按钮 changeCopySublistId:changeCopySublistId, //解决复制功能保存BUG }; ////添加复制按钮 function addCopyButton(scriptContext){ var thisNewRecord = scriptContext.newRecord; if(scriptContext.type == 'create'){ thisNewRecord = record.create({type:scriptContext.newRecord.type}) } var newRecordString = JSON.stringify(thisNewRecord); var newRecordJson = JSON.parse(newRecordString); //明细信息 var sublists = newRecordJson.sublists; delete newRecordJson.fields; //保存值 var saveSublistInfo = []; for(var k in sublists){ saveSublistInfo.push(k); } //添加字段 var sublistField = scriptContext.form.addField({ id : 'custpage_sublist_id', type : 'longtext', label : 'sublist_id_list' }); sublistField.updateDisplayType({displayType : 'hidden'}); //默认值 sublistField.defaultValue = JSON.stringify(saveSublistInfo); //按钮HTML var copyButtonHtmlString = getCopyButtonHtmlString(sublists); //新建一个td var copyhtmlString = ''; copyhtmlString += '<script type="text/javascript" defer=true>'; copyhtmlString += 'window.addEventListener("load",'; copyhtmlString += 'function(e){jQuery("#projecttasks__div").on("DOMNodeInserted",function(e){addCopyButton()});addCopyButton()});'; copyhtmlString += 'function addCopyButton(){'; copyhtmlString += copyButtonHtmlString; copyhtmlString += '}'; copyhtmlString += '</script>'; try { scriptContext.form.addField({ type : 'inlinehtml', label : 'custpage_copy_button999', id : 'custpage_copy_button999' }).defaultValue = copyhtmlString; } catch (ex) { log.error({title : 'hide view elements error',details : ex}); } } //按钮HTML function getCopyButtonHtmlString(sublists){ var copyButtonHtmlString = ''; for(sublistID in sublists){ //添加按钮得ID var copyButtonId = 'tbl_'+sublistID+'_copy'; var copyId = sublistID+'_copy'; //添加按钮响应得名称 var copyButtonName = sublistID+'_machine'; //按钮组名称 var buttonListName = sublistID+'_buttons'; copyButtonHtmlString += 'var td=document.createElement("td");'; copyButtonHtmlString += 'td.innerHTML=\'<table class="machBnt" id="'+copyButtonId+'" cellpadding="0" cellspacing="0" border="0" style="cursor:hand;" role="presentation"> <tbody><tr><td class="bntTop"><img src="/images/nav/ns_x.gif" width="1" height="3" alt=""></td></tr> <tr><td class="uir-copy bntBg" valign="top"> <input type="button" style="" class="nlinlineeditbutton bntBgT" value="复制上一个" id="'+copyId+'" name="'+copyId+'" onclick="'+copyButtonName+'.copyline();setWindowChanged(window, true);return false;" onmousedown="this.setAttribute("_mousedown","T"); setButtonDown(true, true, this);" onmouseup="this.setAttribute("_mousedown","F"); setButtonDown(false, true, this);" onmouseout="if(this.getAttribute("_mousedown")=="T") setButtonDown(false, true, this);" onmouseover="if(this.getAttribute("_mousedown")=="T") setButtonDown(true, true, this);"></td> </tr> <tr><td class="bntBot"><img src="/images/nav/ns_x.gif" width="1" height="3" alt=""></td></tr> </tbody></table>\';'; copyButtonHtmlString += 'if(document.getElementById(\"'+buttonListName+'\")){'; copyButtonHtmlString += 'document.getElementById(\"'+buttonListName+'\").childNodes[0].childNodes[0].childNodes[0].appendChild(td);'; copyButtonHtmlString += '}'; } return copyButtonHtmlString; } //解决复制功能保存BUG function changeCopySublistId(newRecord) { var sublistInfo = newRecord.getValue('custpage_sublist_id'); var groupList = []; if(sublistInfo){ groupList = JSON.parse(sublistInfo); } var copyInfo = {}; for(var i=0;i<groupList.length;i++){ var sublistId = groupList[i]; //存储空间初始化 copyInfo[sublistId] = {}; var allLine = newRecord.getLineCount(groupList[i]); for (var j = 0; j < allLine; j++) { var id = newRecord.getSublistValue({sublistId:groupList[i],fieldId:'id',line:j}); if(copyInfo[sublistId][id]){ newRecord.setSublistValue({sublistId:groupList[i],fieldId:'id',line:j,value:''}); }else{ copyInfo[sublistId][id] = id; } } } } });