ディスカッション
AIを用いた自動化で請求書処理を合理化
AIを用いた考察を使用して、計画と予測を迅速化
SuiteScript 2.0で在庫詳細を更新
適用
製品: NetSuite 2022.1
シナリオ
SuiteScript 2.0で既存トランザクションの在庫詳細を更新します。
クライアントスクリプトのsetCurrentSublistSubrecord で在庫詳細を更新すると、「NOT_SUPPORTED_ON_CURRENT_SUBRECORD」のエラーが発生してしまいます。
解決策
機能改善#417206 やSuiteAnswer記事51520 - CurrentRecord.getSubrecord(options)によると、クライアントスクリプトでサブレコードオブジェクトは読み込みモードのみのため、サブレコードのフィールドの値の設定は不可能です。
Suiteletスクリプトで在庫詳細を更新すれば、その問題を解決できます。
以下のSuiteletの例コードはクレジットメモの初行を更新します。
/**
*@NApiVersion 2.x
*@NScriptType Suitelet
*/
define(["N/record"], function (record) {
function onRequest(context) {
var recordType = record.Type.CREDIT_MEMO;
var recordId = 123;//sample credit memo internal ID
// 標準モードでレコードをロード
var recObj = record.load({
type: 'creditmemo',
id: recordId
});
// リストアイテムの量を更新(量の不一致のエラーを回避)
recObj.setSublistValue({
sublistId: 'inventorydetail',
fieldId: 'quantity',
line: 0,
value: 2
});
// サブレコードをロード
var subrec = recObj.getSublistSubrecord({
sublistId: 'item',
fieldId: 'inventorydetail',
line: 0
});
if(subrec){
// サブレコードの量を更新する。注:ラインアイテムの量と合計の量は一致しないと行けない
subrec.setSublistValue({
sublistId: 'inventoryassignment',
fieldId: 'quantity',
line: 0,
value: 2
});
}
recObj.save();
}
return {
onRequest: onRequest
};
});
免責事項
ここに記載されているサンプルコードは、法律で認められている最大限の範囲で、いかなる種類の保証もなく、「現状のまま」で提供されています。Oracle+NetSuite社は、開発者がそれぞれの開発プラットフォームにサンプルコードを実装したり、独自の Web サーバー構成を使用したりする際に、個々の成功を保証するものではありません。
Oracle + NetSuite社は、サンプルコードに関連するデータまたは情報の使用、使用結果、正確性、適時性または完全性に関して、いかなる保証も行わず、表明もしません。Oracle + NetSuite社は、明示的にも黙示的にもすべての保証を放棄し、特に、商品性、特定目的への適合性、およびコード、またはそれに関連するサービスやソフトウェアに関連する保証を放棄します。
Oracle + NetSuite社は、本サンプルコードに関連してお客様または他者が行った行為に起因するいかなる種類の直接的、間接的または結果的な損害または費用についても責任を負いません。