スクリプトを用いた主キーの拡張 (2) コピー登録時に枝番を付与する
最終更新日: 2023年1月30日
新規登録時に「見積No」項目を手動で入力する、とします。(このコード体系は利用者ごとに異なるものです。例では "M" + 0詰め3桁としています。)
なお「(隠し・元見積No)」「(隠し・枝番)」は実際は隠し項目とします。ここでは説明のため、読み込み専用として表示させています。
初回の登録時に、手入力した「見積No」を「(隠し・元見積No)」にコピーしています。また「(隠し・枝番)」に初期値 "1" をセットしています。
続いて、コピー登録ボタンをクリックします。
再度コピー登録を行うと、枝番が2となっていることがわかります。
本サンプルで用意した「見積書」モデルは次のとおりです。
このスクリプトは新規登録とコピー登録の両方で呼び出されます。新規登録のみの処理は(スクリプトで使える暗黙変数)SCREENTYPE が insert かどうかで判定します。
コピー登録ボタンクリック時、コピー元から値が転記されたあとに呼び出されます。コピーされた値を加工することができます。
例
「見積No」にハイフンと3桁の数値を枝番として付与しています。
定義方法
登録時のスクリプト
if (SCREENTYPE==='insert') {
QUOTATION.OLDNO = QUOTATION.QUOTATIONNO;
QUOTATION.EDANO = 1;
}
コピー時のスクリプト
var entityService = p.appctx.getBean("QUOTATIONEntityService");
var criteriaConverter = p.appctx.getBean("QUOTATIONCriteriaConverter");
var criteria = criteriaConverter.defaultCriteria();
var QUOTATIONMeta = Java.type("jp.jasminesoft.wagby.model.QUOTATION.QUOTATIONMeta");
var meta = new QUOTATIONMeta();
criteria.eq(meta.QUOTATIONNO, QUOTATION.QUOTATIONNO);
var OrderClass = Java.type("org.hibernate.criterion.Order");
var order = OrderClass.desc(meta.EDANO.name());
criteria.addOrder(order);
var list = entityService.find(criteria);
if (list.size() === 0) {
return;
}
var OLD_QUOTATION = list.get(0);
QUOTATION.QUOTATIONNO = QUOTATION.OLDNO + "-" + ExcelFunction.LPAD(ExcelFunction.TOSTR(QUOTATION.EDANO), 3, "0");
QUOTATION.EDANO = OLD_QUOTATION.EDANO + 1;
関連するページ