質問

請求書を無効にできる場合、見積書として使用する必要がありますか?

を持っています Invoices に関連付けられたインベントリから作成されるテーブル Job または Order. 。私は、 Quotes 在庫と請求書の間の中間のハウスとしてのテーブルですが、「これは引用ですか?」少し。

ビジネスの観点からの見積もり 請求書とは異なります:見積もりは作業の前に送信され、請求書は作業が完了して支払い期日になったら送信されますが、これをリポジトリとモデルでどのように表現するか。

  • 見積書と請求書をデータベースに保存して管理するエレガントな方法は何ですか?

編集: 示された Job === Order この特定の例では。

役に立ちましたか?

解決

3つのアプローチがあります:

  1. 請求書と見積もりを別々のテーブルに保存します。

    これは、請求書と引用が複製のフィールドがほとんどない場合(それ以外の場合は、3つのテーブルを備えたオプション#3を使用)、およびそれらの間に1つの多くの多くの関係がある場合(1-1で、オプション#2を使用する場合、良いデザインです。 )。

    これは、引用が請求書になったときに2つの間で「共有」情報が実際に変異する可能性があることが一般的である場合に適切な選択です(ただし、これらの変異の一部は、適用された割引などの個別のフィールド/テーブルで適切に処理する必要があります。 。)。

    複数の引用符が単一の(または複数の)請求書に変換される場合、このオプションのわずかなバリエーションが明らかに行われる必要があります。これにより、一連の引用符と請求書(または請求書のセットが複雑になった場合は請求書のセット)の間のマッピングである3番目のテーブルが追加されます。

  2. 余分なフラグ「請求書または見積もり」と、両方の保存された追加フィールドを備えた同じテーブルにそれらを保存します。これは、請求書と異なる行の引用のいずれかで、または行を共有する(「両方」の値もあるフラグも)で行うことができます。

    後者(同じ行が請求書と引用の両方になる可能性があります)は良い選択です それらが1対1でマッピングされている場合, 、そして、2つを区別するフィールドはほとんどありません。

    前者(請求書と引用のための個別の行)は、一般的にさまざまな優れたデザインではなく、#3または#1のオプションでより良く行われます。

  3. 3つのテーブルがあります。1つは2つの間の一般的なフィールドに、2つは請求書のみの場合と引用のみがあります。

    このオプションのわずかなバリエーションは、複数の引用符が単一の請求書に変換されたときに実行できます。これにより、引用符のセットとインコイス(または請求書のセットが複雑になった場合は請求書のセット)の間のマッピングである4番目のテーブルが追加されます。繰り返しますが、ここでの仮定は、すべての引用符と請求書のリンク/結合の間にかなりの一般的な情報があるということです。そうでなければ、#1に行くだけです。

他のヒント

引用は注文に類似しています。 iSquoteのようなものという名前のブールフラグを備えた注文テーブルを備えたいくつかの流通/小売システムを見てきました。これは、見積もりを注文に変えるのが簡単になるので、簡単に思えることがあります。引用符から出てくる注文は常に見積もり通りではないので、私はそれが好きではありませんでした。その結果、それらのようなシステムは、何らかの使用できる情報を失います(つまり、見積もりを注文と比較するレポート)。したがって、引用と注文表がほぼ同じですが別々のシステムを好みます。配布システムでは、これは多くの場合、Orderheader、Orderline(アイテム/在庫テーブルに関連する)、Quoteheader、およびQuotelineなどのテーブルにつながります。また、1つの引用が複数の注文にマッピングできる関係をモデル化するテーブルがある場合があります。

通常、請求書は注文から生じます。 1つの請求書に複数の注文が請求される場合があります。たとえば、企業が優秀な顧客に毎月請求するのを見た場合があります。また、複数の請求書に複数の出荷を伴う大規模な注文が請求されるという逆の方法で機能するのを見てきました(各出荷に1つ)。

最後に、支払いには通常、請求書と多くの関係があります。 1つの支払いが複数の請求書をカバーする場合があります。時々、1つの請求書が数回の支払いで支払われます。

簡単にするために、単一製品とサービスを無視します。

a 販売見積もり aです 提案 タイムウィンドウ(日付範囲)の価格のために良いものを別のパーティに売ること。この資産はまだ存在する必要はありません。資産(善)の仕様について引用できます。

引用はある時点で期限切れになるはずであり、有効期限が切れる前に受け入れられない場合があります。

a 販売注文 aです 献身 別の当事者に日付の価格で良いものを販売する。受け入れられた引用から作成できます。

注文または見積もりには、「配達後30日後に支払うことができる」などの支払い条件がある場合があります。

注文は、まだ存在しない善のためかもしれません(あなたは資産ではなく善を販売します)。多分あなたはそれを構築しています。多分あなたは他の誰かからそれを買うつもりです。

販売注文はにつながります 調達 物理的資産の(在庫、作成または購入)、そして 出荷 配達で終わる場合と終了しない可能性のある物理的資産の。時々、顧客はベンダーに「電話」して資産をピックアップします。

一般的に言えば、資産はそうでなければなりません 転送されました 注文行をASとして数える前に 収益 (これはあなたの配送条件に依存し、出荷または配達中、またはその間にある可能性があります)。

販売注文は可能です キャンセル (たとえば、一部の業界には冷却期間があります)。

a 販売請求書 aです 支払請求書 注文された製品用。配達前、配達時、配達後、または実際にはまったく発生しない場合があります(マクドナルドで並んでいる場合など)。注文には1つ以上の請求書がある場合があり、請求書はいくつかの注文に対してである場合があります。

請求書が1つ以上につながることを願っています 支払い, 、それです 適用アカウント. 。多くの場合、支払いは1つ以上につながります 支払いの領収書. 。発生会計を使用する場合、支払いは必ずしも収益と同じではありません。

できるだけ柔軟になることをお勧めします。次の表を使用してください

ジョブテーブル、請求書テーブル、引用テーブル

請求書のテーブルと引用テーブルで、ジョブIDを保存し、インデックスを与え、外部キーの制約を作成します。 QUOTE IDと請求書IDにクラスターインデックスを残します。

私が最後に取り組んだシステムでは、見積書と請求書の (データベースの点での) 唯一の違いは、見積書が顧客によって受け入れられたかどうかを示すテーブル上のフラグでした (この時点で、まったく同じ内容の別の明細書が生成されました)見積書ではなく請求書であることを除く情報)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top