Javascript Netsuite上的Epad签名表
我没有太多的编码经验,但我们在几年前开发了这个脚本,我们可以在Netsuite上签署发票,2016年的某个时候,它停止了在chrome和firefox上的工作,假设chrome中的某些功能已被删除或更改,因为该脚本在IE中仍然有效 有没有人能理解为什么它会停止工作,因为在IE上使用netsuite是一件非常痛苦的事情,加载和/或处理我们正在运行的任何工作流或脚本都非常慢Javascript Netsuite上的Epad签名表,javascript,forms,netsuite,Javascript,Forms,Netsuite,我没有太多的编码经验,但我们在几年前开发了这个脚本,我们可以在Netsuite上签署发票,2016年的某个时候,它停止了在chrome和firefox上的工作,假设chrome中的某些功能已被删除或更改,因为该脚本在IE中仍然有效 有没有人能理解为什么它会停止工作,因为在IE上使用netsuite是一件非常痛苦的事情,加载和/或处理我们正在运行的任何工作流或脚本都非常慢 ///////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
//
// Filename: suit_epad_sign.js
// Version: 1.0
//
// Suitelet to sign an Invoice using an ePad
//
/////////////////////////////////////////////////////////////////////////////////
function captureSignature(request, response)
{
var context = nlapiGetContext();
if (request.getMethod() == 'GET' ) {
try {
var caburl = context.getSetting('SCRIPT', 'custscript_tris_activex_cab_url');
// Find which browser is being used
var isChrome = new Boolean(false);
var agent = request.getHeader('User-Agent');
if (agent.search("Chrome") >= 0) {
isChrome = true
}
var form = nlapiCreateForm('Sign Invoice');
form.setScript('customscript_tric_epad_sign_inv_client');
var uploaddone = request.getParameter('custparam_upd');
var invoiceid = request.getParameter('custparam_iid');
var record = nlapiLoadRecord ('invoice', invoiceid);
var invoiceidfield = form.addField('invoiceid','text', 'Invoice ID');
invoiceidfield.setDisplayType ('hidden');
invoiceidfield.setDefaultValue(invoiceid);
var customerid = record.getFieldValue('entity');
var isCashCompany = nlapiLookupField('customer', customerid, 'custentity_is_cash_company');
var entity = '';
if (isCashCompany == 'T') {
var contactid = record.getFieldValue('custbody_invoice_contact');
entity = nlapiLookupField('contact', contactid, 'custentity_cash_company', true);
} else {
entity = record.getFieldText('entity');
}
var entityfield = form.addField('entity','text', 'Customer');
entityfield.setDefaultValue(entity);
entityfield.setDisplayType('disabled');
entityfield.setLayoutType('normal', 'startcol');
var contact = record.getFieldText('custbody_invoice_contact');
var contactfield = form.addField('contact','text', 'Contact');
contactfield.setDefaultValue(contact);
contactfield.setDisplayType('disabled');
contactfield.setLayoutType('normal', 'none');
var invoiceno = record.getFieldValue('tranid');
var invoicenofield = form.addField('invoiceno','text', 'Invoice Number');
invoicenofield.setDefaultValue(invoiceno);
invoicenofield.setDisplayType('disabled');
invoicenofield.setLayoutType('normal', 'none');
var total = record.getFieldValue('total');
var totalfield = form.addField('total','text', 'Invoice Total');
totalfield.setDefaultValue(total);
totalfield.setDisplayType('disabled');
totalfield.setLayoutType('normal', 'none');
var affirmationfield = form.addField('affirmation','text', 'Affirmation');
var affirmation = 'Contact: ' + contact + ' from company: ' + entity + '\n';
affirmation += 'Invoice Number: ' + invoiceno + ' for amount: R' + total;
affirmationfield.setDefaultValue(affirmation);
affirmationfield.setDisplayType('hidden');
if (isChrome == true) {
// Chrome specific fields start
// var chromesignfield = form.addField('chromesign','inlinehtml', 'Chrome Signature');
// chromesignfield.setDefaultValue ('<input type="image" src="images/start.png" id="connect"/>');
var chromesignimagefield = form.addField('chromesignimage','inlinehtml', 'Chrome Signature Image');
chromesignimagefield.setLayoutType('normal', 'startcol');
chromesignimagefield.setDefaultValue ('<img id="signImage" width="400" height="200" style="border:thin solid #696969;"/>');
// chromesignimagefield.setDefaultValue ('<img id="signImage" src="images/signImage_400.png" width="400" height="200" style="border:thin solid #696969;"/>');
var chromesignlabelfield = form.addField('chromesignlabel','inlinehtml', 'Chrome Signature Label');
chromesignlabelfield.setDefaultValue ('<label id="lblError"></label>');
// Chrome specific fields end
} else {
// IE Specific fields
var signaturefield = form.addField('signature','inlinehtml', 'Signature');
signaturefield.setLayoutType('normal', 'startcol');
var signobject = '<OBJECT id=esCapture1 classid=clsid:84C046A7-4370-4D91-8737-87C12F4C63C5 width="300" height="160" codebase="' + caburl + '" VIEWASTEXT>';
signobject += '<param name="useslibrary" value="websignAx">';
signobject += '<param name="useslibrarycodebase" value="websignax.cab">';
signobject += '<param name="useslibraryversion" value="10,0,0,1">IntegriSign Signature Control';
signobject += '</OBJECT>';
signaturefield.setDefaultValue(signobject);
}
var jpegfield = form.addField('jpegcontents','inlinehtml', 'JPEG');
jpegfield.setDefaultValue('<input type="hidden" name="jpegcontents">');
var printedfield = form.addField('printed','checkbox', 'Already Printed');
printedfield.setDisplayType ('hidden');
var timestampfield = form.addField('timestamp','text', 'Timestamp');
timestampfield.setDisplayType ('hidden');
var hashfield = form.addField('hash','longtext', 'Hash');
hashfield.setDisplayType ('hidden');
var host = request.getURL().substring(0, (request.getURL().indexOf('.com') + 4) );
if (isChrome == true) {
form.addButton('bb1GetSignature', 'Sign');
} else {
form.addButton('bb1GetSignature', 'Sign', 'signNow');
}
form.addButton('capture', 'Save Signature', 'saveSignature');
if (uploaddone == 'Y') {
form.addButton('print', 'Print Invoice', "printInvoice('" + host + "','" + invoiceid + "')");
}
response.writePage(form);
} catch (err) {
var errMessage = err;
if (err instanceof nlobjError) {
errMessage = errMessage + ' ' + err.getDetails();
}
nlapiLogExecution ('ERROR', 'Get Error', errMessage);
var errorhtml = '<html><body><h1>Get Error: ' + errMessage + '</h1></body></html>';
response.write(errorhtml);
}
} else {
// Post
try {
var folderid = context.getSetting('SCRIPT', 'custscript_tris_signature_folder');
var jpegcontents = request.getParameter('jpegcontents');
var invoiceid = request.getParameter('invoiceid');
var invoiceno = request.getParameter('invoiceno');
var timestamp = request.getParameter('timestamp');
nlapiLogExecution ('DEBUG', 'invoiceid', invoiceid + ' invoiceno ' + invoiceno + ' timestamp ' + timestamp);
nlapiLogExecution ('DEBUG', 'jpegcontents', jpegcontents);
var filename = 'INV-' + invoiceno + '.jpg';
var jpegfile = nlapiCreateFile(filename, 'JPGIMAGE', jpegcontents);
jpegfile.setFolder(folderid);
jpegfile.setIsOnline(true);
var fileid = nlapiSubmitFile(jpegfile);
// Attach the signature to the Invoice record
nlapiAttachRecord('file', fileid, 'invoice', invoiceid);
jpegfile = nlapiLoadFile(fileid);
var host = request.getURL().substring(0, (request.getURL().indexOf('.com') + 4) );
var url = host + jpegfile.getURL();
// var url = 'https://system.netsuite.com/core/media/media.nl?id=6317&c=TSTDRV163439&h=ab7cf81a28cc968d297b';
// Store the signature hash on the invoice record
var hash = request.getParameter('hash');
// var record = nlapiLoadRecord ('invoice', invoiceid);
// record.setFieldValue('custbody_tris_signature_hash', hash);
// record.setFieldValue('custbody_tris_signature_file_url', url);
// record.setFieldValue('custbody_tris_signature_time', timestamp);
// nlapiSubmitRecord(record);
var fields = new Array();
var values = new Array();
fields[0] = 'custbody_tris_signature_hash';
values[0] = hash;
fields[1] = 'custbody_tris_signature_file_url';
values[1] = url;
fields[2] = 'custbody_tris_signature_time';
values[2] = timestamp;
nlapiSubmitField('invoice', invoiceid, fields, values);
var params=[];
params['custparam_iid'] = invoiceid;
params['custparam_upd'] = 'Y';
// Redirect back to Get
response.sendRedirect('SUITELET', context.getScriptId(), context.getDeploymentId(), null, params);
} catch (err) {
var errMessage = err;
if (err instanceof nlobjError) {
errMessage = errMessage + ' ' + err.getDetails();
}
nlapiLogExecution ('ERROR', 'Post Error', errMessage);
var errorhtml = '<html><body><h1>Post Error: ' + errMessage + '</h1></body></html>';
response.write(errorhtml);
}
}
}
/////////////////////////////////////////////////////////////////////////////////
//
//文件名:suit_epad_sign.js
//版本:1.0
//
//Suitelet使用ePad签署发票
//
/////////////////////////////////////////////////////////////////////////////////
函数captureSignature(请求、响应)
{
var context=nlapiGetContext();
if(request.getMethod()=“GET”){
试一试{
var caburl=context.getSetting('SCRIPT','custscript_tris_activex_cab_url');
//查找正在使用的浏览器
var isChrome=新布尔值(false);
var-agent=request.getHeader('User-agent');
如果(代理搜索(“Chrome”)>=0){
变色=真
}
var form=nlapiCreateForm(“签署发票”);
form.setScript('customscript\u tric\u epad\u sign\u inv\u client');
var uploaddone=request.getParameter('custparam_upd');
var invoiceid=request.getParameter('custparam_iid');
var记录=nlapiLoadRecord(“发票”,发票ID);
var invoiceidfield=form.addField('invoiceid','text','invoiceid');
invoiceidfield.setDisplayType('hidden');
invoiceidfield.setDefaultValue(invoiceid);
var customerid=record.getFieldValue('entity');
var isCashCompany=nlapiLookupField('customer',customerid,'custentity_是现金公司');
var实体=“”;
如果(isCashCompany=='T'){
var contactid=record.getFieldValue('custbody\u invoice\u contact');
实体=nlapiLookupField('contact',contactid,'custentity\u cash\u company',true);
}否则{
entity=record.getFieldText('entity');
}
var entityfield=form.addField('entity','text','Customer');
entityfield.setDefaultValue(实体);
entityfield.setDisplayType('disabled');
setLayoutType('normal','startcol');
var contact=record.getFieldText('custbody\u invoice\u contact');
var contactfield=form.addField('contact','text','contact');
contactfield.setDefaultValue(触点);
contactfield.setDisplayType('disabled');
contactfield.setLayoutType('normal','none');
var invoiceno=record.getFieldValue('tranid');
var invoicenofield=form.addField('invoiceno','text','Invoice Number');
invoicenofield.setDefaultValue(invoiceno);
invoicenofield.setDisplayType('disabled');
setLayoutType('normal','none');
var total=record.getFieldValue('total');
var totalfield=form.addField('total','text','Invoice total');
totalfield.setDefaultValue(总计);
setDisplayType(“已禁用”);
setLayoutType('normal','none');
var assignment field=form.addField('assignment','text','assignment');
var确认='Contact:'+Contact+'来自公司:'+entity+'\n';
确认+='发票编号:'+发票编号+'金额:R'+总计;
确认字段。设置默认值(确认);
assignmentfield.setDisplayType('hidden');
如果(isChrome==真){
//特定于Chrome的字段开始
//var chromesignfield=form.addField('chromesign','inlinehtml','chromesign');
//chromesignfield.setDefaultValue(“”);
var chromesignimagefield=form.addField('chromesignimage','inlinehtml','Chrome签名图像');
设置布局类型('normal','startcol');
chromesignimagefield.setDefaultValue(“”);
var chromesignlabelfield=form.addField('chromesignlabel','inlinehtml','chromesignlabel');
chromesignlabelfield.setDefaultValue(“”);
//铬特定字段结束
}否则{
//IE特定字段
var signaturefield=form.addField('signature','inlinehtml','signature');
signaturefield.setLayoutType('normal','startcol');
var signobject='';
signobject+='';
signobject+='';
signobject+='IntegriSign签名控制';
signobject+='';
signaturefield.setDefaultValue(signobject);
}
var jpegfield=form.addField('jpegcontents','inlinehtml','JPEG');
jpegfield.setDefaultValue(“”);
var printedfield=form.addField('printed','checkbox','ready printed');
printedfield.setDisplayType(“隐藏”);
var timestampfield=form.addField('timestamp','text','timestamp');
timestampfield.setDisplayType('hidden');
var hashfield=form.addField('hash','longtext','hash');
hashfield.setDisplayType(“隐藏”);
var host=request.getURL().substring(0,(request.getURL().indexOf('.com')+4));
如果(isChrome==真){
表单.addButton('bb1GetSignature','Sign');
}否则{
表单.addButton('bb1GetSignature','Sign','signNow');
}
form.addButton(“捕获”、“保存签名”、“保存签名”);
如果(uploaddone==“Y”){
form.addButton('print'、'print Invoice'、'printInvoice('“+host+”、'“+invoiceid+”));
}
答复.书面页(表格);
}捕捉(错误){
var errMessage=err;
if(err instanceof nlobjError){
errMessage=errMessage+“”+err.getDetails();
}
nlapiLogExecution('ERROR','Get ERROR',errMessage);
var errorhtml='Get Error:'+errMessage+'';
response.write(errorhtml);
}
}否则{
//职位
试一试{
var folderid=context.getSetting('SCRIPT'、'custscript\u tris\u signature\u folder');
var jpegcontents=request.getParameter('jpegcontents');
var invoiceid=request.getParameter('invoiceid');
var invoiceno=request.getParameter('invoiceno');