請求キャンセルうんぬんでウーンウーン

兎に角ユーザー様のキャンセル機能の実装の要望は強い、強い過ぎる。その割りに作る側にとっちゃヘビーな課題だ。ちょっと意地悪してみようか。

  • この20日締めの取引先の前月請求残が0円とする。
  • この時点での最新請求締め日は2/20とする。

時は3/15、まだ請求しめてない状態で、新規売上計上する。売上明細はこうなる。

001 3/15 黒  1000円 請求対象

時は流れて3/21、一旦請求締めました、と。請求明細はこうなる。

明細1    1000円
                                            • -
請求金額 1000円

ところがどっこい営業側でミスが発覚、その日の内に計上訂正が走りました、と。
3/20がこの取引先の最新請求締め日だよ、と。元伝が請求済みかどうかは、元伝の計上日と最新請求締め日を比較して判定するよ、と。
よって、赤黒両方とも請求対象になるよ、と。

001 3/15 元  1000円 請求対象 ←請求済み
002 3/21 赤 -1000円 請求対象 ←未請求
003 3/21 黒  1200円 請求対象 ←未請求

後はこいつらは次月の請求にのればいいやなと思った矢先、今月は臨時で25日締めでやってくれって頼まれたのを急に思い出しちゃった、と。
取引先マスタの締め日をまずは25日変更、請求をキャンセルしましたよ、と。

で、3/22になりまして、またまた営業のミスが発覚、計上訂正だよ、と。
この場合の訂正対象となる元伝は003だよね、と。最新請求締め日はキャンセルしたから2/20だよね、と。よって003は未請求だから、元を非対象に更新して、赤を非対象、黒を対象で新規追加する。標準的なロジックでケーオツですね。

001 3/15 元  1000円 請求対象 ←未請求
002 3/21 赤 -1000円 請求対象 ←未請求
003 3/21 元  1200円 非対象   ←未請求
004 3/22 赤 -1200円 非対象   ←未請求
005 3/22 黒  1500円 請求対象 ←未請求

3/25になったので締めてみた。

明細1    1000円
明細2   -1000円
明細3    1500円
                                            • -
請求金額 1500円

冗長な明細が。このくらいは許して欲しいダス。

で、思うんだけどこう云うテストってテストファーストとか云う思想からすると、どうやりゃいいってんだろう。FITとか受け入れテストのフレームワークもあるけど、こう云う時の流れまで盛り込めるんだろうか。

システム日付をがっちゃんがっちゃん入れ替えて流しテストを自動化するツールとかあったら、凄いなー。