以前記述した,「サロゲートキーと業務キー」に関連するんですが、恩恵を感じた事がありました。
一般的な売上伝票の作成処理は'入力2FILE'の処理で作成すると思います。
伝票の訂正の処理、と言う辺りから上流過程の意識が見えてきます。
普通にありそうな処理としては、売上確定しない場合は直接、値の変更を許す。
売上げ確定後の変更は、訂正伝票を起こし、赤黒処理を発生させて、変更履歴を残す。
締め処理後は変更不可とする。
売上げの取り消しは、取消日の日付で赤伝を切る。
他にも方法は考えられるでしょうが、いずれにしても、変更/中止の追跡を可能にするのが前提だと思います。
ところが、実業務の要求として,前月の請求内容/売上を訂正したいとか,前月の売上伝票を直接無効にしたいなどがあります。
経理的にも不味い運用ルールだとは思うのですが、Accessシステムなどで,このような運用を許しているのをしばしば見かけます。
このAccessシステムをアップロードする際に、不味い点は指摘して、運用ルールの改善をお願いしています。
中には,大人の事情で,不味い運用ルールで実装せざるを得ない時もあります。
「売上げ伝票の取り消しをしたい」というのに加えて、「取り消しした伝票を復活したい」というのもあったりします。
どうしようかな? 売上伝票NOを独立した2種類設定しました。一つは,業務的にみた売上伝票NO,もう一つは,永久連番の売上げ伝票NO(サロゲートキー)です。
システムはサロゲートキーで展開していきます。業務的にみた売上伝票NOは修飾項目としか機能させません。取消処理は,赤伝を切る。 修正の時は,赤伝を切り,新規売上げを発生させる。これで対応するようにしました。
「取消をやめた」処理は赤伝レコードの内容で新規レコードの作成で対応します。
システム的にはサロゲートキーで回るので,伝票の訂正は発生しない。赤黒処理なので追跡が可能です。
業務的には業務的売上伝票NOの最新日付を使うようにしているので不都合がない。
どうにか恰好はついた。業務担当者が年配者で、仕事の流れを変えるのが不可能か,改善に相当以上のパワーを要する時は、サロゲートキーを活用することで、妥協できる仕組みが可能と実感しました。
PS.Accessアプリを作成する職業SEさんへお願い、Accessであっても、不条理な業務ルールを実装しないで下さい。業務改善を提案するのがSEであって、ユーザー要求を何でも聞き入れるのはパシリSEです。顧客と喧嘩できるSEを目指しましょう。
Accessで実装されてしまうと、アップサイジングする際に、「現行のAccessで出来ているので新システムでもやってくれ」と言われると断り難いのです。