「渡した」「もらってない」を台帳で終わらせる

「渡した」「もらってない」。この業態で現金をめぐる揉め事は、だいたいこの二言に集約される。 お客様から現金を受け取るのはキャスト本人で、それがドライバーの手を経て事務所に入り、 給与としてまた出ていく。移動の回数が多いぶん、どこか一箇所の記憶が抜けると全部が怪しくなる。 昨日の最後に書いた「支払を記録すると自動で起票される台帳」が、この現金の流れを追うためのものだ。

台帳の1行は「誰から誰へ、いくら」の1回の移動で、残高は受け取った合計から渡した合計を引くだけ。 お客様と給与の渡し先は「店の外」として残高を持たない。 設計で決めたことは2つある。ひとつは記録するのは受け取った側という規約で、 ドライバーがキャストから預かったらドライバーのアプリで、事務所に納金されたら店側の画面で記録する。 受け取りの事実で残高が動くので、渡した側が「渡したつもり」で記録する余地がない。 もうひとつは台帳は追記しかできないこと。行の書き換えも削除もモデルの層で例外にしてあって、 間違えたら渡した側と受け取った側を入れ替えた同額の「打ち消し行」を足す。打ち消しには理由のメモが必須だ。 スクショの薄い2行がそれで、二郎さんが押し間違えた受け取りを打ち消して、三郎さんの行を足し直している。

精算画面の現金管理タブ。本日の集金¥18,000・本日の納金¥0・事務所の累計残高¥42,450・外で保有中¥18,000のサマリー、「いま現金を持っている人」に配車 三郎(ドライバー)¥18,000、受け渡し・納金・調整を記録するフォーム、台帳の表に給与渡し・受け渡し・打ち消し行・打ち消し済み・集金・納金の行が営業日順に並ぶ
上から本日のサマリー、いま現金を持っている人、手動記録、台帳。灰色の2行が打ち消し(画面はデモデータです)。

手で書くのは真ん中だけ

流れの入口と出口は自動で書かれる。予約が完了になった瞬間に「お客様→担当キャスト」の集金が起票され、 完了を取り消せば同じ額の打ち消しが入る。給与明細で「支払を記録」を押せば「事務所→店の外」の給与渡しが起票され、 支払記録を取り消せばこれも打ち消される。同じ予約で二重に起票しないように、 有効な集金が既にあれば何もしない。人が手で書くのは、キャストからドライバーへ、ドライバーから事務所への 受け渡しと納金、それに現金以外で受け取った分などを補正する調整だけにした。 このデリヘル管理アプリで自動化したかったのは入力の手間ではなく、「入口の数字は人が触っていない」という状態のほうだ。

デモ店の預かり金が無限に増えた

8月9日の午前中に入れて、同じ日の昼にバグチェックで見つけたのがこれだ。 体験用のデモ店は毎分、予約の状態を勝手に進めて完了を量産する。完了するたびに集金が起票されるのに、 誰も受け渡しを記録しないから、キャストの預かり残高が際限なく膨らんでいった。 デモ店だけ自動起票を止めることで収めた。 同じチェックで、実在しないキャストのIDを送ると幽霊の行が作れてしまう穴と、 台帳の表示で打ち消し済みかどうかを1行ずつ問い合わせていて表示のたびに100回近くクエリが飛ぶ問題も直した。 金銭の記録は「書き換えられない」だけでは足りなくて、書けてはいけないものが書けないことまで含めて信用だと思っている。

キャスト本人の画面には「お客様から預かっている売上金」のカードが残高がある間だけ出て、 ドライバーの画面には預かり残高と受け取りの記録欄がある。どちらも同じ台帳を見ているので、 店と本人とドライバーの3者で数字が食い違ったら、それは記録漏れであって計算違いではない。 明日は、ドライバーのほうの同じタブにある経費申請の話を書く。