血液ガッ手形・補遺

ちょっと(いやかなりの)問題発覚。失敗失敗。

SELECT
    得.与信先ID,
    手.記載番号,
    手.入金ID,
    手.決済日,
    手.ステータス,
    SUM(手.金額)
FROM 受取手形テーブル 手
INNER JOIN 入金テーブル 入
    ON 手.入金ID = 入.入金ID
INNER JOIN 得意先マスタ 得
    ON 入.得意先ID = 得.得意先ID
GROUP BY
    得.与信先ID,
    手.記載番号,
    手.入金ID,
    手.決済日,
    手.ステータス

このSQLでは大前提として、手形は必ず与信先単位で管理する、って事になってしまう。明示的に得意先単位で管理したいって事もあるはずだ。

与信先がその得意先と等しい場合は問題ない。でも、与信限度額管理は本社でやってるけど、手形は支社から来ましたー、支社に領収書出して下さーいって要件で、どかーん、だ。

実際、俺、こんな風に作ってなかったし。さて、どうしたかと云うと、受取手形テーブルの項目を再考。

  • 受取手形ID
  • 記載番号
  • 入金ID
  • 発行元得意先ID ←追加しました
  • 決済日
  • 金額
  • ステータス

これでどうだ。入金登録時、画面上の発行元得意先入力欄に、今入金登録しようとしてる得意先をデフォルト表示してあげる、って寸法。で、債権管理上の得意先と違う場合は適宜変更してね、と。勿論入力必須。

入力確定時、発行元得意先と入金の得意先との整合性チェックの要否、仕様などはお客様と要相談。

手形管理業務で扱う単位のSQLはこうなる。

SELECT
    発行元得意先ID,
    記載番号,
    入金ID,
    決済日,
    ステータス,
    SUM(金額)
FROM 受取手形テーブル
GROUP BY
    発行元得意先ID,
    記載番号,
    入金ID,
    決済日,
    ステータス

とってもシンプル。

あっ、入金IDでGROUP BYしちゃ駄目ジャン、折角合算してんのに!今気が付いた。バカだなあ俺。

SELECT
    発行元得意先ID,
    記載番号,
    決済日,
    ステータス,
    SUM(金額)
FROM 受取手形テーブル
GROUP BY
    発行元得意先ID,
    記載番号,
    決済日,
    ステータス

これで、ケーオツですか。さあ領収書発行でも取立でも不渡でもやりやがれ。