支払い管理システム — 仕組み解説
調整額が支払い一覧から
消えて見える仕組み
「手入力した調整額が一覧に反映されない」「保存したはずの金額がハイフンになる」—— これはデータが消えたのではなく、締め日の紐付けルールにより、 現在選択中の締め日と保存時の締め日がずれているためです。 このページでは、その仕組みを4つのパートで丁寧に説明します。
支払い一覧は「2種類のデータ」を混ぜて表示している
一覧に並ぶ各行は、実は出どころが違う2系統からできています。 「未払」の行と「下書き/確認済み」の行では、持っているデータの種類が根本的に異なります。
| 行の種類 | データの出どころ | 調整額を表示できる? |
|---|---|---|
| 未払 |
配置データをその場でリアルタイムに自動集計 (基本金額・人工割・交通費・源泉税のみを計算) |
持たない — 必ず「−」 |
| 下書き |
調整額を入力して「保存」した支払いレコード (DBに保存済みの確定前データ) |
持つ ✓ |
| 確認済み |
承認・確定された支払いレコード (最終確定済みデータ) |
持つ ✓ |
調整額は「保存したときの締め日」に紐づく
調整額を入力して保存すると、支払いレコード(下書き)が作られます。 このとき、保存した瞬間に画面で選んでいた締め日が、 レコードの内部フィールド period_end に記録されます。
操作
画面で締め日を選ぶ
支払い一覧上部のドロップダウンで締め日を選択。 この例では「6月17日」を選んでいる状態。
入力
調整額を入力する
佐藤さんの行に「+5,000円」と調整額を入力。 この時点ではまだ保存されていない(画面内の一時状態)。
保存
「保存」ボタンを押す
保存ボタンを押すと、支払いレコード(下書き)が作成され、 その瞬間に選んでいた締め日(6/17)が自動的に記録されます。
完了
DBに「締め日6/17 の調整額レコード」が存在する状態に
これ以降は画面の締め日が 6/17 のときだけ この調整額が取り出されて一覧に表示されます。
締め日が「一致する」か「しない」かで表示が変わる
一覧画面は、「いま画面で選んでいる締め日」と完全に一致する下書きだけを 取り出して未払行に差し込みます。 一致しなければ下書きが存在しても表示されません。
- 田中さん −
- 佐藤さん +5,000
- 鈴木さん −
締め日 6/17 を選んでいるので、6/17 に保存した佐藤さんの下書きが取り出され、 調整額 +5,000 が表示される。
- 田中さん −
- 佐藤さん −
- 鈴木さん −
締め日 6/20 を選んでいるため、6/17 に保存した佐藤さんの下書きは取り出されない。 データはDBに残っているが、一覧には出てこない。
なぜ「締め日が完全一致しないと出さない」のか
この仕様は意図的な安全策です。過去に別の動作を試したことで、 深刻な計算ミスが発生した経緯があります。
トレードオフの整理
得られた安全性
- ✓ 別期間の調整額が混入しない
- ✓ 支払い金額の計算が正確
- ✓ どの締め日のデータか常に明確
生じる注意点
- △ 締め日を変えると調整額が見えなくなる
- △ 「消えた」と見えることがある
- △ 確認には保存時と同じ締め日を選ぶ必要がある
まとめ
調整額を確認するときの鉄則
調整額を入れたとき(保存したとき)と同じ締め日を、画面で選んでください。
「消えた」と思ったら、まず画面の締め日が当時と同じかを確認しましょう。
データ自体は支払いレコードとしてDBに残っています。
削除されたわけではありません。