« 「品番変換」のモデリング | トップページ | アジャイル手法は分野毎に違っていい »

2013.06.20

売上計上基準の設計と実装

 商品を販売する過程で、厳密にはどのタイミングで売上計上が起こるのだろう。スーパーでは商品をレジに持っていったときに売上計上される。B2B(business to business,企業間取引)ではもっとややこしく、「計上基準」によって違う。すなわち、出荷基準(売り手が出荷した時点で売上計上)、納品基準(買い手に渡した時点で売上計上)、検収基準(買い手が検収した時点で売上計上)、といったタイミングの違いが生じる。

 売り手にとっての売上計上は買い手にとっての「仕入計上」なので、本来であればこれらの事象は同時に起こるはずだが、会計基準において仕入計上と売上計上の同時性は大きな問題にならない。業務システムの多くは、顧客側の仕入計上基準に関係なく単一の売上計上基準で処理している。

 国際会計基準(IFRS)では売上計上基準の適用厳格化が図られるため、業務システムが単一の売上計上基準では処理しきれなくなるケースが増えそうだ。業務システムもその点を考慮して設計する必要がある。具体的にはまず、売上計上基準を全社で統一するのではなく、顧客毎に決定できるようにする。さらにこれにもとづいて適宜に売上計上するためのしくみが求められる。それぞれを見てゆこう。

■出荷基準と売上処理

 まず、「出荷基準」の顧客向けについては、従来どおり出荷実績登録において出荷倉庫から在庫を引き落として売上計上すればよい。

 いっぽう、「納品基準」や「検収基準」の顧客向けには、出荷実績登録の時点ではまだ売上計上してはいけない。その代わりに、出荷先を倉庫(出荷先倉庫)とみなした「倉庫間移動」が起こる。その後で顧客から「受領書」や「検収書」を受け取った時点で、出荷先倉庫から在庫が引き落とされて売上計上される。

 この場合、出荷実績報告で記録した出荷数と受領数(または検収数)との差が生じ得る点に注意してほしい。この差をどうするかについては、扱い商品の特性によって違ってくる。

 差数分の商品が売り手に確実に返却されるのであれば、返却分を倉庫間移動で処理して出庫先倉庫の在庫をクリアできる。返却されずに出庫先で破棄などがされるのであれば、受領実績登録(または検収実績登録)において差数を減耗処理してクリアすればよい。返却されるかどうか曖昧であるなら、とりあえず差数を出荷先倉庫で累積させておいて、期末処理などでまとめて減耗処理するといった運用になる。

 なお、「納品基準」や「検収基準」において、受領書や検収書を律儀に受け取ることが期待できないケースもあり得る。その場合は、出荷から売上計上までの「標準リードタイム」を顧客別に設定しておいて、夜間バッチ処理などで売上計上予定日到来分について、出荷実績数にもとづいて「みなし計上」するといったやり方が考えられる。

■業務ルールの置き場所

 このように出荷や売上計上にまつわる業務ルールが複雑になるわけだが、これらのルールをどこに置くかは設計/実装上の大きな課題である。出荷実績登録などの機能の上にプログラムコードとして組み込んでしまえばよいと思われがちだが、それは下策というものだ。

 売上計上のタイミングが変化するとはいえ、この場合の「主人公となる帳簿」は出荷テーブルである。顧客の売上計上基準を参照して計上タイミングを計るのは出荷テーブル自身、と考えるべきだ。具体的には、出荷データが更新されてゆく過程で、出荷テーブル自身が判断して売上計上処理を適宜実行できたほうがよい。出荷テーブル自身がそのための業務ルールを保持すべきであって、出荷実績登録や検収実績登録の機能が抱えるべきではない。

 なぜか。現在のシステム構成では、業務ルールを表すコードが機能側にひどく偏って置かれているからだ。データベース処理にまつわるルールは、本来であればその処理の起点となるテーブルの「拡張定義」とみなせる。それらのルールを機能から引き剥がしてテーブルへ持ち込むことで、機能が「うすっぺらでありきたりなもの」に矮小化され、システムの可読性や保守性が高まる。これはシステム仕様の配置に関するある種の「正規化」であって、開発基盤はそれを支援するものでなければならない。

|

« 「品番変換」のモデリング | トップページ | アジャイル手法は分野毎に違っていい »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 売上計上基準の設計と実装:

« 「品番変換」のモデリング | トップページ | アジャイル手法は分野毎に違っていい »