netsuite内部ajax请求,返回Code: 500错误-CarlZeng

500是服务器本身的错误代码。+代表”Internal Server Error”。一般是500都是你响应数据的页面本身就不能正确执行function login(){//alert(‘in login script’)var soap = ”;soap += ”;soap += ‘http://schemas.xmlsoap.org/soap/envelope/”>’;soap += ”;…

500是服务器本身的错误代码。+代表”Internal Server Error”。

一般是500都是你响应数据的页面本身就不能正确执行

function login()
{
//alert(‘in login script’)
var soap = ”;
soap += ‘<?xml version=”1.0″?>’;
soap += ‘<SOAP-ENV:Envelope xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”>’;
soap += ‘‘;
soap += ‘‘;
soap += ‘
‘;
soap += ‘
‘;
soap += ‘‘;
soap += ‘‘;
soap += ‘‘;
soap += ‘[email protected]‘;
soap += ‘******‘;
soap += ‘TSTDRV******‘;
soap += ‘‘;
soap += ‘
‘;
soap += ‘
‘;
soap += ‘
‘;
soap += ‘
‘;
soap += ‘‘;

return soap;
}

把这个soap 传递给 ‘https://webservices.netsuite.com/services/NetSuitePort_2_6’;

response =nlapiRequestURL(ns_ws_url, loginsoap, a);

问题估计是发生在了这个soap上,由于最新的netsuite更新这个soap估计有问题了。

关联应用:

var test_value = request.getAllHeaders();

var the_response =nlapiRequestURL(‘https://system.netsuite.com/app/common/multicurrency/currencyratelist.nl’, null, test_value);

var the_body = the_response.getBody();

这个关联的应用代表登陆后在访问的页面,携带登陆信息。这个应用很经典!就是在服务端通过ajax直接操作了很多东西,用户可能还察觉不到。

netsuite与首信易支付(v4.3)接口-CarlZeng

问题1 ,文档中提及了 URL参数是以http://开头的完整URL地址。 而netsuite中向外开放的可用的地址都是https://,难道首信就不支持?这个问题需要与首信确认。 已答复:支持,曾经只有发现一个https无法返回的案例。说明此问题不是主要问题。问题2,步骤一, 用户从客户中心中自己下了订单后,决定支付,于是到订单页面点’前往支付’按钮,系统要传递订单信息,到suitelet来读取…

问题1 ,文档中提及了 URL参数是以http://开头的完整URL地址。 而netsuite中向外开放的可用的地址都是https://,难道首信就不支持?这个问题需要与首信确认。 已答复:支持,曾经只有发现一个https无法返回的案例。说明此问题不是主要问题。

问题2,步骤一, 用户从客户中心中自己下了订单后,决定支付,于是到订单页面点’前往支付’按钮,系统要传递订单信息,到suitelet来读取订单的资料,并展示给客户(下方定有一个’确认支付’),内容大致如下:


商户编号
订单编号
收货人姓名
收货人地址
收货人电话
收货人邮编
订单总金额
订单产生日期
配货状态
订货人姓名
币种,0为人民币,1为美元
//支付动作完成后返回到该url,支付结果以GET方式发送
//订单数字指纹

function str2binlExpress(str) 是在md5.inc中定义的,也就是说验证的程序需要调用vbscript 这样netsuite支持吗?
javascript中只有Unicode转换没有ascii码转换,所以要用vbscript中的代码来实现…加了这段代码后,最好在页面中有脚本的地方都写清楚脚本语言,否则可能会出现错误。

解决:c=String.fromCharCode(65)
—————————————————————

str.charCodeAt(x),表示将字符串str中的第x个字符转变成ASCII值
求ASCII转字符:javascript用String.fromCharCode(x);vbscript用chr(x)或chrw(x)
求字符转ASCII:javascript用??;vbscript用asc(‘字符’)

_chr_ Asc 这两个函数很难转的 ??碰到了Asc

function str2binlExpress(str)
result = “”
a = “”
b = 0
for i = 1 to len(str)

a = mid(str,i,1)
b = asc(a)

if b > -1 and b < 255 then result = result & b & "," end if if b<0 then result = result & int((b + 65536)/256) & "," result = result & (b and 255) & "," end if if(b > 255) then
result = result & int((b)/256) & “,”
result = result & (b and 255) & “,”
end if
next
str2binlExpress = result
end function

将被从vbscript转化为javascript 转化结果如下:

function str2binlExpress(str)
{
result = “”;
var a = “”;
var b = 0;
for( var i=0; i -1 && b < 255) result = result + b + "," ; if ( b<0 ) { result = result + parseInt( (parseInt(b) + 65536)/256 ) + ","; //result = result + int((b + 65536)/256) + ","; result = result + (b & 255) + "," ; } if( b > 255) {
result = result + parseInt( b/256 ) + “,”; //result = result + int((b)/256) + “,”;
result = result + (b & 255) + “,”;
}
}
var str2binlExpress = result;
//alert(‘str:’+str+’a:’+a+’b:’+b+’str2binlExpress:’+str2binlExpress);
return str2binlExpress;
}

英文状态下是ok的,询问易支付后得知,他们都使用gb2312来校验的,我需要做的就是发送时v_rcvname涉及字符装换;接收时涉及 v_pmode 和 v_pstring的字符转化。

问题4:已确认发送成功,并且银行支付成功,但是没有取得实时的返回,那么原因已排出url是带119个字符并且有参数的原因,那么需要继续测试银行支付成功以后,银行给我中转值的情况。

netsuite 文件上传内部函数-CarlZeng

function new_mediaitem() {document.getElementById(‘mediaitem_popup_new’).onclick()}netsuite 文件上传内部函数;这样就可以打开一个新的窗体 用于上传文件到netsuite文件柜中。已经关联文件的命令。function attach_media() { var mediaitem = getSelectValu…

function new_mediaitem() {
document.getElementById(‘mediaitem_popup_new’).onclick()
}

netsuite 文件上传内部函数;这样就可以打开一个新的窗体 用于上传文件到netsuite文件柜中。

已经关联文件的命令。

function attach_media() {
var mediaitem = getSelectValue(document.forms[‘mediaitem_main_form’].elements[‘mediaitem’]);
var mediatab = ‘history’;
if ( isValEmpty(mediaitem) || parseInt(mediaitem) == -1) {
alert(‘Please select a file.’); return ; }
setSelectValue(document.forms[‘mediaitem_main_form’].elements[‘mediaitem’],”);
window.setIsInited(window,false);
var id = document.forms[‘main_form’].elements[‘id’].value;
document.getElementById(‘server_commands’).src=’/app/common/media/importcrmmedia.nl?action=ADD&recordtype=&fkcol=ktrandoc&fkval=’+id+’&mediaid=’+mediaitem+’&attachfrom=LIST&mediatab=’+mediatab;
}

注意这个getElementById(‘server_commands’).src 这个意味着告诉系统 要做什么,系统内部流程。

隐含字段 :if( nlapiGetFieldValue(‘canbeunapproved’)==’T’ )

可以用来断定该单据是否允许再次需要审批。

netsuite 批次货品 lotnumber 到期日/批号 列的赋值-CarlZeng

在弹出的搜索页面,确认输入的批号时,函数的调用依次是:setTarget(’21/2/2009-269852′,21/2/2009-269852);function setTarget(s,i) {var frm,fldnam,fld;frm = parent.opener.document.forms.item_form;fldnam = ‘serialnumbers’;fld = parent…

在弹出的搜索页面,确认输入的批号时,

函数的调用依次是:

setTarget(’21/2/2009-269852′,21/2/2009-269852);

function setTarget(s,i) {
var frm,fldnam,fld;
frm = parent.opener.document.forms.item_form;
fldnam = ‘serialnumbers’;
fld = parent.opener.getFormElement(frm,fldnam);
addMultiSelectValue(fld,i,s);
window.opener.setTimeout(function() { fld.onchange(); }, 0);;
}

所有批号的赋值关键就在这个addMultiSelectValue(fld,i,s);中,我们接着来看:

function addMultiSelectValue(sel, val, name)
{
if (isNLMultiDropDown(sel))
{
var dd = getMultiDropdown(sel);
var idx = dd.getIndexForValue(val);
dd.addIndex(idx);
}
else if (sel.type == “select-multiple”)
{
var opts = sel.options;
for (var i=0; i < opts.length; i++)
if ( opts[i].value == val )
opts[i].selected = true;
}
else
{
var values = sel.value.split(String.fromCharCode(5));
for (var i=0;i < values.length;i++)
if (values[i] == val) return;
sel.form.elements[sel.name+”_display”].style.color = ‘000000’;
if (values.length == 0 || values[0].length == 0)
{
sel.value = val;
sel.form.elements[sel.name+”_display”].value = name;
sel.form.elements[sel.name+”_labels”].value = name;
}
else
{
sel.value += String.fromCharCode(5)+val;
sel.form.elements[sel.name+”_labels”].value += String.fromCharCode(5)+name;
var lines = sel.form.elements[sel.name+”_display”].value.split(/n|r/);
if (lines.length == values.length)
sel.form.elements[sel.name+”_display”].value += “n”+name;
else
{
lines[values.length] = name;
sel.form.elements[sel.name+”_display”].value = lines.join(“n”);
}
}
}
}

总结:document.item_form.elements[‘serialnumbers_display’].value=’21/2/2009-269852′; 即可完成批号的批量赋值。。。

当然:Syncserialnumbers(true);
nlapiFieldChanged(‘item’,this);
validateInventoryNumbers(); 可不能忘记罗。。。

同样学到一点 ,如果elements 没有id 的话,用默认的 getElementById是取不到值的,在firefox下是这样的。所有系统被迫用了sel.form.elements[sel.name+”_display”].value 去赋值了。

zeng.cz

==================================================================由于SO中的lotnumber的序列号列中所有填写的数量,受到SO界面中Location的影响,所以抓到的东西必须是过滤后的东西,而货品的编辑页面(https://system.netsuite.com/app/common/item/item.nl?id=42)的SubTab(numbers)有两个filter,

一个是Synconhandfilter 另一个是Synclocationfilter ,所以现在取得这两个东西过滤后的东西 成为必须和关键要素。200901071758

To Be Continued….

View “What’s this?”)

All On Hand

Location “What’s this?”)

MX库 NBTY NB库 广州库 总库房 总库房 : MX区 总库房 : NB区 总库房 : PP区 总库房 : 零时区域 缓冲库 赠品库

+

that’s the page we need to catch : https://system.netsuite.com/app/common/item/item.nl?itemtype=InvtPart&costingmethod=LOT&cf=7&id=’+itemid+’&q=locationfilter&si=’+location+’&si_onhandfilter=onhand&f=T&machine=numbers’

itemid is the item’s internalId ; and location is the location’s InternalId;

ok it’ come to more easyer…

netsuite 与google app集成方案(预计)-CarlZeng

什幺是 Google 企业应用套件? 了解更多 | 注册 Google 企业应用套件包含一系列面向企业、基于 Web 的生产性服务,它提供有功能强大的通信和协作工具。 Google 企业应用套件包括: 企业 Gmail – 向您所在域的电子邮件地址发送和接收电子邮件。 日历 – 同步计划并共享事件。 即时消息 – 通过 Google Talk 插件保持联系和展开合作。 文档 – 实时创建在线文档…

什幺是 Google 企业应用套件?

了解更多 | 注册

Google 企业应用套件包含一系列面向企业、基于 Web 的生产性服务,它提供有功能强大的通信和协作工具。 Google 企业应用套件包括:

  • 企业 Gmail – 向您所在域的电子邮件地址发送和接收电子邮件。
  • 日历 – 同步计划并共享事件。
  • 即时消息 – 通过 Google Talk 插件保持联系和展开合作。
  • 文档 – 实时创建在线文档并展开协作。
  • 电子表格 – 在 Web 浏览器窗口中创建按需电子表格。
  • 演示 – 同整个团队一起创作并演示在线演示文稿。
  • 初始页 – 从集中位置访问公司信息并搜索 Web。

属性 1 配置 Google 企业应用套件域

Google 企业应用套件管理联系人

zeng cz

Google 企业应用套件管理联系人是贵组织中 Google 企业应用套件用户的单一联系人;当用户无法访问某个 Google 企业应用套件服务时,将被引导去联系 Google 企业应用套件管理联系人。

Google 企业应用套件管理联系人不需要使用 Google 注册为贵组织的 Google 企业应用套件管理员的同一个人,但只有 Google 企业应用套件管理员能够在您的域上创建新的 Google 企业应用套件用户。

Google 企业应用套件域

netsuitecn.com

属性 2 启用 Google 企业应用套件服务

操作

名称

编辑

选取的

添加 Google 文档到 netsuite

netsuite.com

编辑

选取的

Google 文档选项卡

netsuite.com

编辑

选取的

Gmail 至 netsuite

netsuite.com

编辑

选取的

Gmail 按钮和链接

netsuite.com

编辑

选取的

Google Talk 插件侧栏组件

netsuite.com

1,Google 文档到 Netsuite.直接将Google文档连接到Netsuite系统内部。

一个是直接挂钩客户或者联系人上面的,发生关联,另外一个直接iframe方便编辑,重新打开,会新开窗口不怎么喜欢

2,Email集成到Netsuite中成为Event or phone。。。

Email 至 Netsuite”允许您自动将您从第三方电子邮件帐户发送的电子邮件作为活动记录到 Netsuite 中的潜在客户和联系人记录上。

在启用”Email 至 Netsuite”后,用户可以访问”My Email 至 Netsuite”页以查看其唯一的”Email 至 Netsuite”地址,并自定义设置。

3,Gmail按钮,实现链接至Gmail内部,email将成为’收件人’。

代码:Gmail

/google/googleSplash.apexp?app=GMAIL&appURL=http%3A%2F%2Fmail.google.com%2Fa%2Fnetsuitecn.com%2Fmail%3Fview%3Dcm%26fs%3D1%26tf%3D1%26to%3Djeanne.liang%40sohu.com 一个地址接收mailto 连接netsuite和google mail。

4,Google Talk插件 侧栏组建,如Gmail内部的左侧的GTalk组件。

netsuite you can’t submit this form due to unexpected error-CarlZeng

due to 2009.1 ‘s version upgrate , many custom form down,example : item fulfillment 、 item receipt,it’s terrible!! without any script.. make me crazy now ..the only way :log a case, call netsuite supp…

due to 2009.1 ‘s version upgrate , many custom form down,

example : item fulfillment 、 item receipt,

it’s terrible!! without any script.. make me crazy now ..

the only way :log a case, call netsuite support . … they can check about the unexpected error in back end with you login id (zeng.chuanzhuo (A) totemsuite.com )

only way….
20090415 zeng.cz

netsuite you can’t submit this form due to unexpected error

netsuite url中?whence= 的作用 functionality-CarlZeng

在我书写开发的过程中,有这样的需求,支付帐单的界面 跳转到支付单个供应商的界面 完成支付。这个时候url上添加参数&entity= 系统可以完成默认的打开页面以后entity的指定,这样的结果是,当用户保存那个的支付单个供应商之后,跳转回原来页面,而如果原来的页面时一个suitelet提交过的页面url就会默认成:https://system.netsuite.com/app/site/hosti…

在我书写开发的过程中,有这样的需求,支付帐单的界面 跳转到支付单个供应商的界面 完成支付。

这个时候url上添加参数&entity= 系统可以完成默认的打开页面以后entity的指定,

这样的结果是,当用户保存那个的支付单个供应商之后,跳转回原来页面,而如果原来的页面时一个suitelet提交过的页面url就会默认成:https://system.netsuite.com/app/site/hosting/scriptlet.nl 这样的页面,

而单独打开这个页面系统默认会给出错误提示:

This request is missing a required parameter.

经过观察,发现很多netsuite的页面地址中都包含一个whence参数,作用就是完成该页面的操作后,负责流程跳转的事务,这样就需要在suitelet的跳转链接上 加上一个?whence= 就可以避免出现错误。

20090417
zeng.cz

netsuite split 分隔符 String.fromCharCode(5)-CarlZeng

netsuite中,一些数组在服务端表示时,需要被分隔开来,系统默认用”来分隔。testarray.split( String.fromCharCode(5) );String.fromCharCode(5) 显示html为一个正方形的符号。数组分隔符。

netsuite中,一些数组在服务端表示时,需要被分隔开来,系统默认用”来分隔。

testarray.split( String.fromCharCode(5) );

String.fromCharCode(5) 显示html为一个正方形的符号。

数组分隔符。

netsuiet recordtype url规则-CarlZeng

https://system.netsuite.com/app/common/custom/custrecordentry.nl?rectype=34&pf=CUSTRECORD_LOSE&pi=1282&pr=-30&cf=14rectype=34 代表记录类型的internalidpf=CUSTRECORD_LOSE 代表记录类型名称pi=1282 代表isparent的关联的单据intern…

https://system.netsuite.com/app/common/custom/custrecordentry.nl?rectype=34&pf=CUSTRECORD_LOSE&pi=1282&pr=-30&cf=14

rectype=34 代表记录类型的internalid

pf=CUSTRECORD_LOSE 代表记录类型名称

pi=1282 代表isparent的关联的单据internalid是1282 这里我代表SO的1282

pr=-30 可不带;

&cf=14 代表用的是那个自定义form ; 14是这个记录类型是用的那个form的internalid