下記2つのアプリを作成しています。
アプリ①:案件管理
アプリ②:受注書
1つの案件について、受注書が複数登録されます。
案件管理アプリに案件合計金額という項目があり、
受注書アプリには受注書金額があり、
案件管理アプリ:案件合計金額=(受注書アプリ:受注書金額)の合計 となる想定です。
上記金額チェックを案件管理アプリの一覧が表示されたときに登録されているデータ全て(ステータスが未完了のデータ)に対して実行し、
その結果(○、×)を案件管理のデータに更新をしたいと思っております。
処理としては、
①一覧画面のデータ分ループ処理(for文(以下、②③④⑤の処理を繰り返し実行))
②案件管理のステータス判定(未完了の場合は、③④⑤を実行)
③案件に関する受注書アプリのデータを取得(GET)
④金額チェック
⑤チェック結果に応じて、案件管理データを更新(PUT)
のように考えておりますが、
処理の順番が思っているのと違うようで、④のチェックがうまく出来ない状況です。
ソースは下記のように記述しています。
kintone.events.on(‘app.record.index.show’, function(event) {
var recs = event.records;
for (var i = 0; i < recs.length; i++) {
var rec = recs[i];
if ( rec[‘ステータス_’][‘value’] == ‘未完了’) {
var param = {
app: 37,
query: '案件管理番号 = ’ + rec[‘案件管理番号’][‘value’]
};
kintone.api(‘/k/v1/records’, ‘GET’, param,
function(resp) {
取得した受注書データの受注書金額を合計
案件管理データの案件合計金額(rec['案件合計金額']['value'])と(受注書金額の合計)を判定
※※この判定がうまくいかない
判定結果により、PUT
}, function(resp) {
エラー処理
});
デバックで見ると、for文のループだけ先にしてしまい、
for文が終わった後に、for文のループ回数分、REST API の処理をしているようです。
色々と調べて、PROMISEを使うと処理順を制御できるようなのも見たのですが、
どのようにすればよいのかよくわかりませんでした。。
どのようにすればよいのかご教示頂けないでしょうか。
よろしくお願い致します。