OK、私はパーティーに少し遅れていますが、ここにいくつかの興味深い答えがあり、私は自分のテイクを追加する必要があると思いました。
質問に答えるには:値を正の金額として保存し、借方または貸方としてフラグを立てる必要がありますか?
簡単な答え:フラグを追加する必要はありません。正しい署名された形式で番号を保存すると、どのシステムでもフラグ「デビット」または「クレジット」が自動的に適用されるためです。それは「-」記号です。代わりに、借方または貸方の2つの列のいずれかに値を格納する必要がありますか?絶対にありません !システム内のすべてのトランザクションに空のフィールドを保存するのはなぜですか?正しい符号付きの値を持つ単一の列は、管理がはるかに簡単です。
質問のタイトルに対する長い答え:会計とデータベースの設計、借方と貸方の金額の保存。
複式簿記を理解している限り、それは完全に単純で堅牢です。仕訳帳を名目元帳に転記するときは、仕訳帳の各行の借方項目と貸方項目をユーザーに提供します。アプリケーションでは、フィールドの1つだけに値(1行あたり)を許可します。値は正の符号なしの値である必要があります。トランザクションを作成するときに、借方がある場合は、そのまま書き込みます。クレジットフィールドに値がある場合は、それを逆にして負の数として書き込みます。データベースでは、1行(レコード)ごとに、1つの列に1つの符号付きの値のみが表示されます。会計士なら誰でも言うように、仕訳はバランスを取る必要があるので、仕訳トランザクションラインのデータベースレコードは合計でゼロになります。アプリケーションコードは、ジャーナルのバランスが取れていることを確認する必要があります。
次に、ユーザーがシステムに追加する購入請求書について考えてみます。Widget Companyのこの(ありそうもない)請求書があるとしましょう。
棒鋼は500ポンド
封筒1箱100ポンド
旋盤で£10000
£2120購入税
合計£12720の請求書
アプリケーションは、ドキュメントテーブルに単一のレコードを書き込みます。トランザクションテーブルへの1対多のリンクがあります。3行の請求書の場合、5つのトランザクション行がアプリケーションによって書き込まれます。
500ポンドは、損益計算書の総勘定元帳勘定である売上原価にリンクされています。借方残高=損益計算書にある場合の費用
損益計算書の総勘定元帳であるステーショナリーにリンクされた£100。借方残高=損益計算書にある場合の費用
貸借対照表の総勘定元帳勘定であるMachineryにリンクされた£10000。借方残高=bsにあるときの資産。
£2120は、bsglアカウントであるInputTaxReclaimableにリンクされています。借方残高=資産、私たちは税務署からお金を借りています
-bsglアカウントであるCreditorsControlにリンクされた£12720。クレジット残高=負債、これはサプライヤーのおかげです
トランザクションテーブルに書き込まれた5つのレコードの合計値は£0.00です。
次に、ユーザーが追加する売上請求書について考えてみます。
プレミアムウィジェットは250ポンド
標準ウィジェットの場合は£250
£100の消費税
合計£600の請求書
ここでも、単一のレコードがドキュメントテーブルに書き込まれます。2行の請求書の場合、4つのトランザクション行が書き込まれます。これは売上請求書であるため、アプリケーションはバックグラウンドで値を逆にする必要があります。売上請求書の行は簿記のクレジットですが、ユーザーはそれらを負の値として追加する必要はありません。
£250-プレミアムウィジェットセールス、損益計算書アカウントにリンクされています。クレジット残高=損益計算書にあるときの収入/利益
£250-標準ウィジェットの販売、損益計算書のアカウントにリンクされています。クレジット残高=損益計算書にあるときの収入/利益
£100-未払税金、bsglアカウントにリンクされています。クレジット残高=BSにいるときの負債。私たちはこのお金を税務署に借りています。
bsglアカウントであるDebtorsControlにリンクされた£600。借方残高=資産、これはお客様の負担となります。
トランザクションテーブルに書き込まれた4つのレコードの合計値は£0.00です。
返品されたものにクレジットを付けたい場合は、売上請求書にマイナスの行を追加してもまったく問題ありません。トランザクションを書き込む前に、他のすべての行と逆になります。より一般的には、クレジットノートを発行します。このノートには、売上収益の借方として書かれた行があり、損益計算書の売上高が減少します。
システムが在庫管理を行っている場合、数量は取引明細に書き込まれ、製品テーブルにリンクされます。
銀行のエントリは、多くの場合、本以外のキーパーを追い出します。彼らは、私たちは銀行にお金を入れたので、口座に入金したと言います。銀行をビジネスの外部の人と考えてください。あなたが安全に保管するためにあなたのお金を渡すとき、彼/彼は債務者になり、あなたのお金を要求に応じて返還しなければなりません。したがって、銀行への領収書は借方として記録され、支払いは貸方として記録されます。顧客から支払いを受け取ると、2つのトランザクションラインを記述します。
銀行口座、bsglアカウントにリンクされた£600。借方残高=資産の価値を高め、より多くのお金を持っています。
£600-bsglアカウントであるDebtorsControlにリンクされています。クレジット残高=資産の価値を減らし、私たちはより少ないお金を借りています。
トランザクションテーブルに書き込まれた2つのレコードの合計値は£0.00です。
これを実行すると、Debtors Controlには売上請求書の発行時に600ポンドが書き込まれ、支払いの受領時に600ポンドが書き込まれていることがわかります。正味残高=£0.00。これは、お客様が現在支払うべき金額です。
したがって、適切な設計、関係、およびインデックスを使用すると、すべてのレポートはドキュメントとトランザクションの組み合わせから実行されます。
以上です。トランザクションテーブルを合計すると、常にゼロが返されます。2つの列を維持する必要はありません。アプリケーションは2つのことを行う必要があります。さまざまなトランザクションタイプに正しい署名を適用するようにコーディングする必要があります。また、トランザクションが0より大きいか0より小さいかに応じて、2つの列のいずれかにトランザクションを表示する必要があります。したがって、試算表、顧客とサプライヤの元帳、銀行と現金の勘定科目、および総勘定元帳をすべて借方と貸方の列に適切にフォーマットすることができます。
複式簿記の両面を1回の取引で記録するシステムを構築することは魅力的です。1つのトランザクションが失敗しても、アカウントのバランスが崩れることはありません。署名された値の列は1つだけです。各トランザクションに2つのgl外部キーを記録します。1つは記録した値(借方または貸方を表す正または負の値)用で、もう1つは投稿するアカウントを記録するためのgl外部キーです。反対の(「複式簿記」)値。また、2つの税管理勘定の総勘定元帳も記録する必要がある場合があります。1つは出力税管理勘定用で、もう1つは入力税管理勘定用です。したがって、トランザクションラインを1つではなく4つのglアカウントにリンクすることになります(さらに、顧客のリンク、両方の方法に適用されるサプライヤーと製品の表)。コントロールアカウントには、非常に大量のトランザクションがリンクされています。10行の請求書には、ドキュメントごとに1つではなく、10のトランザクションがリンクされます。伝票の合計としてではなく、各請求書明細の税要素を個別に計算する必要があります(とにかくこれを行う場合があります)。最後に、ジャーナルエントリドキュメントの特別な取り決めが必要になります。これには、借方として10行が含まれ、貸方として1行だけオフセットされるため、ここでは単一トランザクションアプローチは機能しません。伝票の合計としてではなく、各請求書明細の税要素を個別に計算する必要があります(とにかくこれを行う場合があります)。最後に、ジャーナルエントリドキュメントの特別な取り決めが必要になります。これには、借方として10行が含まれ、貸方として1行だけオフセットされるため、ここでは単一トランザクションアプローチは機能しません。伝票の合計としてではなく、各請求書明細の税要素を個別に計算する必要があります(とにかくこれを行う場合があります)。最後に、ジャーナルエントリドキュメントの特別な取り決めが必要になります。これには、借方として10行が含まれ、貸方として1行だけオフセットされるため、ここでは単一トランザクションアプローチは機能しません。