bulkRequest で複数アプリの一括処理(在庫管理や予約申請など) - cybozu developer network
この記事を参考にして有給管理アプリ、有給申請アプリ、有給申請付与アプリの
3つのアプリを作成しました。有給申請(減る)や有給付与(増える)の変更数値は有給管理にデータが反映されています。
ここから更に有給付与アプリ内に有給期限(2年間)以内の有給を対象有給日数として例対象有給日数を9日とする、有給申請アプリ内の有給申請日数で1とした場合、有給管理アプリの残有給数と有給付与アプリ内の対象期限有給日数を変動するようにしたいです
↓有給申請アプリと有給管理アプリのコードです↓
コードをここに入力または貼り付け
```/*
* kintone で安全に有給申請を行うサンプルプログラム
* Copyright (c) 2017 Cybozu
*
* Licensed under the MIT License
* https://opensource.org/license/mit/
*/
(() => {
'use strict';
kintone.events.on('app.record.create.submit', (event) => {
const record = event.record;
const pickNum = Number(record.pickNum.value); // 有給申請日数
const destination = record.destination.value; // 詳細
const 有給区分 = record.有給区分.value; // 有給区分
const 有給申請日 = record.有給申請日.value; // 有給申請日
const itemCode = record.itemCode.value; // 社員コード
const itemAppId = kintone.app.getLookupTargetAppId('itemCode'); // 有給管理アプリの社員コード
// kintone JS SDK
const con = new kintoneJSSDK.Connection();
const kintoneRecord = new kintoneJSSDK.Record(con);
// 商品アプリから在庫数を取得
return kintoneRecord
.getRecords(itemAppId, 'itemCode = "' + record.itemCode.value + '"', ['$id', '$revision', 'stockNum'], false)
.then((getRes) => {
if (getRes.records.length !== 1) {
event.error = '氏名が特定できません。';
return event;
}
const stockRecord = getRes.records[0];
const recordId = stockRecord.$id.value;
const recordRevision = stockRecord.$revision.value;
const stockNum = Number(stockRecord.stockNum.value); // 現在の有給残数
const newStockNum = stockNum - pickNum; // 申請後の有給残数
if (newStockNum < 0) {
event.error = '有給残数が足りません。今の有給残数は' + stockNum + '日です。';
return event;
}
// 在庫アプリのアプリID
const warehouseAppId = kintone.app.getId();
// 商品アプリの有給数を更新し、有給管理アプリに有給申請情報を登録
const stock = {
stockNum: {value: newStockNum}
};
const warehouse = {
destination: {value: destination},
itemCode: {value: itemCode},
有給区分: {value: 有給区分},
有給申請日: {value: 有給申請日},
pickNum: {value: pickNum}
};
const kintoneBulkRequest = new kintoneJSSDK.BulkRequest(con);
const responseBulkRequest = kintoneBulkRequest
.updateRecordByID(itemAppId, recordId, stock, recordRevision)
.addRecord(warehouseAppId, warehouse)
.execute();
// 実行
return responseBulkRequest
.then((postRes) => {
// bulkRequestで登録した詳細ページに移動
location.href = '/k/' + warehouseAppId + '/show#record=' + postRes.results[1].id;
// 登録画面のレコードは保存しない
return false;
})
.catch((error) => {
console.log(error);
event.error = '有給申請に失敗しました。';
return event;
});
})
.catch((error) => {
console.log(error);
event.error = '氏名を取得できませんでした。';
return event;
});
});
})();