在NETSUITE中单击无效按钮时添加代码

问题描述

一旦用户单击NS中的标准void按钮,我想先执行一些操作,然后再提交。由于没有从客户端事件脚本触发任何功能,因此我尝试在提交之前使用User事件,但是无法看到一种方法来识别事件是由VOID还是由SAVE按钮触发的。您对可以解决的问题有任何建议/想法吗?

解决方法

用法和说明

  • 在日记记录中部署为用户事件脚本
  • 此代码将找到被取消的相关交易,在被取消之前会将其备注更改为“此交易已被取消!”
  • 请注意,“ 作废前”是指您单击作废日记记录上的“保存”按钮时的情况,而不是指按“作废”按钮时的情况在原始交易上。
  • 您可以以此为基础来对voidedRecord对象执行其他操作。

SuiteScript 1

function beforeSubmit(type) {
    if (type == 'create') {
        var voidRecord = nlapiGetNewRecord();
        var voidedRecordId = voidRecord.getFieldValue('createdfrom');
        var voidedRecordType = voidRecord.getFieldValue('transform');

        var voidedRecord = nlapiLoadRecord(voidedRecordType,voidedRecordId);
        voidedRecord.setFieldValue('memo','This transaction has been voided!');
        nlapiSubmitRecord(voidedRecord);
    }
}

SuiteScript 2

/**
 *@NApiVersion 2.x
 *@NScriptType UserEventScript
 */
define(['N/record'],function (record) {
        function beforeSubmit(context) {
            if (context.type == context.UserEventType.CREATE) {
                var voidRecord = context.newRecord;
                var voidedRecordId = voidRecord.getValue({fieldId: 'createdfrom'});
                var voidedRecordType = voidRecord.getValue({fieldId: 'transform'});
                
                var voidedRecord = record.load({
                    type: voidedRecordType,id: voidedRecordId
                });
                voidedRecord.setValue({
                    fieldId: 'memo',value: 'This transaction has been voided!'
                });
                voidedRecord.save();
            }
        }
    }
);
,

请注意,这是假定您已将选项设置为“使用冲销日记帐以使交易无效”。如果未打开该选项,则不会创建J / E。基本交易被设置为posting = N,清零并保存。无效的交易无法恢复。