締めた日の数字は、もう動かない
給与明細でいちばん怖いのは、あとから数字が動くことだと思っている。 昨日書いたキャスト本人の売上タブと、店側の精算画面は同じ計算を見ているので、 締めるまでは両方とも「今この瞬間の計算結果」だ。バック率を直せば直る。予約を取り消せば消える。 それ自体は正しい挙動なのだが、いったん本人に「今日はこの金額です」と言ったあとで 数字が動くと、店と本人のどちらかが嘘をついたことになる。 だから営業日ごとに「締める」を押した瞬間、その日の明細を丸ごと凍結することにした。
凍結の中身は、予約1件ごとの対象金額・掛けた率・取り分と、雑費や罰金やボーナスの調整行を そのまま JSON にして明細に焼き付けるというもの。以後にバック率を変えても、ランクを上げても、 締め済みの日は1円も動かない。締めた営業日には調整を足すことも消すこともできない。 直したいときは締めを解除して、もう一度締め直す。この一手間を挟むのがこのデリヘル管理システムの流儀で、 「気づいたら数字が変わっていた」を作らないためにわざと面倒にしてある。
営業日は朝5時で切る
この店の一日は暦の一日ではない。深夜0時を回ってからのお仕事は、本人の感覚では「今日の分」なので、 営業日の境目は朝5時に置いた。深夜2時の予約は前日の明細に入る。 まだ始まっていない営業日は締められないが、いま進行中の営業日は締められるようにしてある。 閉店後に事務所で締めるとき、日付が変わっていても困らないようにするためだ。 締めには2つの前提があって、率が未設定で取り分を計算できない行が1つでもあれば締められないし、 実績も調整も無い日も締められない。「バック率未設定あり」の赤いバッジが出ているうちは、 画面の「一括締め」を押しても該当のキャストだけ弾かれてエラーが並ぶ。
凍結には副作用もある。締めたあとに予約の取り消しや金額変更が起きても、明細は知らん顔をする。 これは仕様どおりなのだが、黙っていると支払額が実態とずれる。そこで締め済みの行については、 今の実績を都度計算し直して件数とサービス金額と自走の交通費を凍結分と突き合わせ、 食い違ったら「締め後に実績が変更」のバッジを出すようにした。 率の変更では発火しない。率は凍結するのが約束だからで、動いたら困るのは実績のほうだけだ。 リリース当日のバグチェックでは、2人が同時に同じキャストを締めると2人目が500で落ちる問題も見つけた。 二重明細はユニーク制約が防いでくれていたので、それを普通のエラー文に読み替えるだけで済んだ。
締めたあとは「支払を記録」で支払済みに変わり、支払済みの明細は締め解除も清算方式の変更もできなくなる。 月次タブは締め済みの日だけを集計して、未払いの合計とExcelでそのまま開けるCSVを出す。 締めていない日は月次に載らない。載らないから締める、という順番にしたかった。 支払を記録した瞬間に現金台帳へ給与渡しが自動で起票されるのだが、この台帳の話は明日にする。