の在庫量を取得するときに私が午前問題は、NetSuiteの中でユーザイベントスクリプトを実行するとき、私は一貫して、次のエラーを取得しています:未定義のエラーNetSuiteの
TypeError: Cannot read property "amazon" from undefined
ネットスイートは、両方にビジネスロジックを実行するためにJavascriptを使用していますクライアント側とサーバー側。 NetSuiteを使用していない場合、ユーザーイベントスクリプトがサーバー上で実行されます。
var qtyAvail = 0;
qtyAvail = rec.getValue('locationquantityavailable');
if(!qtyAvail || qtyAvail === 'undefined' || qtyAvail === null || isNaN(qtyAvail) || typeof qtyAvail === "undefined"){
qtyAvail = 0;
}
location = rec.getValue(kColumns[3]);
if(location == 7 ||location == 16 ||location == 20 ||location == 3 ||location == 19 ||location == 1 ||location == 27 ||location == 27){
if(location == 7){
fba = qtyAvail;
if(!fba){
qtyAvail = 0;
}
}
...more business code here....
return {
amazon: fba,
ups: upsName
}
を私は次のように戻り値を呼び出しています:
var itemQty = getLocationQty(item);
if(itemQty.amazon){
var fbaStock = itemQty.amazon;
} else { fbaStock = 0;}
このコードは私の場所のいくつかのために正常に動作しますが、そこではない場合、次のように
私が共有できるコードがあります特定の場所で利用可能な量は、私が期待するようにqtyAvailを0に設定するのではなく、未定義に戻しています。
どこにも定義されていないチェックの比較がありませんか、他の誰かがコードに問題があると思いますか?
私は運を0にFBAを初期化してきました。私は戻り値を返すときに関数の外部からオブジェクトを取り出すことができる連想配列を返しているので、qtyAvailをfbaに代入しています。 奇妙なことは、コードがいくつかのレコードでうまく機能し、他はundefinedで失敗するということです。レコードを並べて比較すると、失敗したfbaの場所に値が表示されます。他のアイデア? 私は関数を書き直すことを検討しようとしていますが、避けることはできません。 –
netsuiteデバッガでコードを実行しようとしましたか? – Craig
はい私は悲しみの原因を見つけました。キットのアイテムが原因で失敗していたので、アイテム名のキット部分を落としてメインスキューを返します。変更が効いていると思われるので、私は現在、それがどのように実行されるかを見るために、200個の販売注文のバッチを実行しています。 –