自動処理でレコードを転記する際、既存の金額と重複させずに差分のみを更新する方法
例えば発注後に発注明細(追加の費用)を追加して自動処理を再実行した際、既存の金額と二重に計算されてしまう場合は、自動処理の冒頭に「転記済みフラグ」による条件分岐を組み込むことで、未処理の明細だけを安全に追加加算できます。
「転記済みフラグ」による差分転記の仕組み
例えば、100円の発注を転記した後に、10円の追加費用を追加した場合の動きは以下のようになります。
- 1回目の自動処理実行(100円の明細):
「未転記」のため支払管理DBへ 100円 を転記し、明細のフラグを「転記済み」に変更します。 - 2回目の自動処理実行(10円の明細を追加後):
既存の100円明細は「転記済み」のため処理をスキップ(除外)します。新しく追加された10円明細(未転記)のみが判定を通過し、支払管理DBの既存額(100円)へ +10円 加算され、正確な合計額 110円 になります。
設定手順
Step 1. データベースに「転記フラグ」項目を追加する
発注管理DBの明細項目(行項目)に、以下の項目を追加します。
- 項目タイプ: 選択肢(1件選択)
- 項目名: 転記フラグ(支払管理)
- 選択肢の値: 「未転記」「転記済み」
- 初期値: 「未転記」
Step 2. 自動処理を作成する(実行単位:明細単位)
発注管理DB側に、実行単位を「明細単位」で自動処理を新規作成し、以下のパーツを順番に配置・設定します。
- 【パーツ1:条件分岐パーツ】未転記の明細か判定する
- 分岐条件: 【選択明細】[発注管理DB]:転記フラグ が 「未転記」 と等しい
- NOルート(転記済みの場合): 処理なし(そのまま自動処理を終了し、スキップさせます)
- YESルート(未転記の場合): パーツ2へ進む
- 【パーツ2:レコード検索パーツ】支払管理DBに既存レコードがあるか検索する
- 検索対象DB: 支払管理DB
- 検索条件: 支払管理DBの「発注No.」 = 【選択明細】[発注管理DB]:「発注No.」
- 【パーツ3(検索YESルート):レコード更新パーツ】既存レコードの金額へ加算する
- 対象レコード: 【検索レコード】[支払管理DB]
- 支払金額項目の設定: (元の値) + 【選択明細】[発注管理DB]:発注金額(※加算計算を指定)
- 【パーツ4(検索NOルート):レコード登録パーツ】支払管理DBに新規レコードを作成する
- 登録対象DB: 支払管理DB
- 支払金額項目の設定: 【選択明細】[発注管理DB]:発注金額
- 【パーツ5:レコード更新パーツ】転記元の明細フラグを「転記済み」に更新する
- 対象レコード: 【選択明細】[発注管理DB](※自分自身の明細行)
- 転記フラグ項目の設定: 「転記済み」
設定時の注意点
・自動処理の実行単位は必ず「明細単位」で作成してください(レコード単位では明細1行ごとのフラグ制御ができません)。
・自動処理の最後で【選択明細】のフラグを「転記済み」へ更新するパーツを忘れないよう配置してください。この更新を行わないと、次回実行時にも未転記と判定され二重加算の原因となります。
関連記事
条件分岐パーツや明細単位の自動処理に関する詳細仕様については、下記マニュアルをご確認ください。
自動処理設定:「条件分岐」パーツ
条件判定によって処理ルートを枝分かれさせる基本的な設定方法です。
自動処理設定:「条件分岐」パーツ
自動処理設定:レコード単位/明細単位
自動処理の実行単位の違いと、明細行ごとに処理を行う「明細単位」の仕組みについて解説しています。
自動処理設定:レコード単位/明細単位
(記事ID:3033)
「自動処理設定」の関連記事一覧
こちらの記事もあわせてご確認ください。
- 自動処理設定において、特定のパーツや設定内容を一括検索する
- 数値項目(5・15・25など)をもとに「次回予定日(請求日・発送日など)」を自動計算する方法
- 一般ユーザーに「一括自動処理状況確認」画面のみを閲覧させる方法
- 明細項目として登録しているDBリンク項目のリンク先レコードを「レコード更新パーツ」で更新する方法
- 自動処理で帳票を再発行する際に管理番号へ枝番(-1、-2…)を自動付与する方法
- 自動処理で生成されるパスワード付きZIPファイル名を固定・識別可能にする方法
- 選択した複数のレコードに対して、自動処理実行時に1から始まる連番を項目に自動入力する方法
- ファイル生成パーツで複数の項目の内容を結合して1つのセルに出力する方法
- 年度ごとにデータを絞り込み・集計する2つの方法(日時項目の範囲指定/年度管理項目の作成による自動化)