繁体   English   中英

Netsuite 客户声明

[英]Netsuite Customer statements

我希望从 Netsuite 向存储在客户记录自定义字段中的多个 email 地址发送客户声明。

现在它只会发送到客户记录上的主要 email,它只能是 1 email。

从报表页面为客户生成报表时,有没有办法发送到多个电子邮件?

如果没有,有没有办法解决这个问题? 谢谢。

不是来自声明页面,但您可以使用脚本或工作流添加自定义按钮以使用“N/render”模块生成声明,然后将结果声明 email 发送到每个“N/email”模块的任何电子邮件列表。

下面的代码是一个工作流操作脚本(在 Typescript 中——参见https://github.com/headintheclouddev/typings-suitescript-2.0 ),当客户进入关联的工作流 state 时,它会向客户发送语句。

这是一个 cc 的员工,但您可以轻松地从客户记录中加载 cc 列表。

/**
 * @NApiVersion 2.1
 * @NScriptType WorkflowActionScript
 */

import {EntryPoints} from 'N/types';
import * as email from 'N/email';
import * as log from 'N/log';
import * as record from 'N/record';
import * as render from 'N/render';
import * as runtime from 'N/runtime';
import * as search from 'N/search';

function iter(rec, listName, cb){
    var lim = rec.getLineCount({sublistId:listName});
    var i = 0;
    var getV = function (fld){
        return rec.getSublistValue({sublistId:listName, fieldId:fld, line:i});
    };
    for(; i< lim; i++){
        cb(i, getV);
    }
}

export function onAction(ctx){
    const rec: record.Record = ctx.newRecord;
    try{
        var me = runtime.getCurrentScript();
        var getSetting = (fld):any => me.getParameter({name: fld});

        var statementOpts = {
            entityId:rec.id, 
            printMode:render.PrintMode.PDF,
            inCustLocale:true,
            openTransactionsOnly: true,
            startDate : null
        }

        var oldestTransactionid = null;
        var openTrans = [];
        search.create({
            type:'transaction',
            filters:[
                ['entity', 'is', rec.id], 'AND',
                ['status', 'anyof', ['CustInvc:A']], 'AND',
                ['mainline', 'is', 'T']
            ],
            columns:[
                search.createColumn({name:'trandate', sort:search.Sort.ASC})
            ]
        }).run().each(ref=>{
            log.debug({
                title:"getting oldest transaction for "+ rec.getValue({fieldId:'entityid'}),
                details: ref.id
            });
            if(!oldestTransactionid) oldestTransactionid = ref.id;
            openTrans.push(render.transaction({
                entityId: parseInt(ref.id),
                inCustLocale:true
            }))
            return true;
        });

        var statement = render.statement(statementOpts);

        var lang = rec.getValue({fieldId:'language'});

        var emailTemplate = ((lang == 'fr_CA') && getSetting('custscript_dunning_template_fr')) || getSetting('custscript_dunning_template');


        var emailSpec = render.mergeEmail({
            templateId: emailTemplate,
            entity:{
                type:'customer', 
                id:rec.id
            }, 
            transactionId: oldestTransactionid ? parseInt(oldestTransactionid) : null
        });

        log.debug({
            title:'sending overdue letter to '+ rec.getValue({fieldId:'entityid'}),
            details: emailSpec.subject +' '+ emailSpec.body.length
        });

        var team = [];
        iter(rec, 'salesteam', (idx, getV)=>{
            if(getV('issalesrep')) team.push(getV('employee'));
        });

        var sendTeam = [];
        if(team.length){
            search.create({
                type:'employee', 
                filters:[
                    ['internalid', 'anyof', team], 'AND',
                    ['email', 'isnotempty', null]
                ]
            }).run().each(ref=>{
                sendTeam.push(ref.id);
                return true;
            });
        }

        email.send({
            author: getSetting('custscript_dunning_from_emp') || rec.getValue({fieldId:'salesrep'}) || -5,
            recipients: getSetting('custscript_dunning_to_addr') || rec.id,  // to address param to facilitate testing.
            cc:sendTeam.length ? sendTeam : null,
            subject:emailSpec.subject,
            body: emailSpec.body, 
            attachments:[statement].concat(openTrans)
        });
    
    }catch(e){
        log.error({
            title:'sending dunning letter '+ rec.getValue({fieldId:'entityid'}),
            details:(e.message || e.toString()) + (e.getStackTrace ? (' \n \n' + e.getStackTrace().join(' \n')) : '')
        });
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM