在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;
                    }
                }
            }
        }


    });

 

posted @ 2020-08-25 15:26  糖醋排骨26  阅读(228)  评论(0编辑  收藏  举报