私はあまりビジネスマンではないので、(クライアントからの売掛金を処理する) アプリケーションで請求書のデータ構造 (インメモリとデータベース スキーマの両方) をどのように設計すればよいかわかりません。
請求書の項目に関する質問です。アイテムには、名前またはテキストによる説明、単位あたりの価格、および数量の値があることが既にわかっています (したがって、単位あたりの価格に数量を掛けると、行の合計が得られます)。ただし、特に両方がパーセンテージまたは固定額として表現できる場合は特に、行ごとの割引と税金をどのように考慮に入れる必要があるのか わかりません。次に、操作の順序を考慮する必要があります(固定価格です減税は増税前か後か?)
私が考えているDBスキーマは次のとおりです。
InvoiceItems
InvoiceId bigint
ProductId bigint NULL -- Optional reference to the product this item is generated from
Description nvarchar(255)
PricePerUnit money
Quantity decimal(9,4)
AdjustmentBT money NULL -- before-tax fixed-value price adjustment
AdjustmentBTPerc decimal(9,4) NULL -- before-tax percentage price adjustment
Tax decimal(9,4) NULL -- tax as a percentage
AdjustmentPT money NULL -- after-tax fixed-value price adjustment
AdjustmentPTPerc decimal(9,4) NULL -- after-tax percentage price adjustment
したがって、行合計は次の関数です。
LineTotal = ( ( ( ( ( PricePerUnit * Quantity ) + AdjustmentBT ) * AdjustmentBTPerc ) * Tax ) + AdjustmentBT ) * AdjustmentPTPerc
またはRPNで:
LineTotal = PricePerUnit Quantity * AdjustmentBT + AdjustmentBTPerc * Tax * AdjustmentBT + AdjustmentPTPerc *
私は請求書を扱う人ではなく、このプログラムを書いている相手からのフィードバックが限られているので、考えすぎているのかどうかはわかりません。十分な柔軟性を提供する必要がありますが、複雑になることはありません。このアプローチでは、各請求書の項目は次のようになります。
Description | PricePerUnit | Quantity | Before-tax Adjustment | Tax | Post-tax Adjustment | %computedTotal%
...調整フィールドは、「%」文字の有無に応じて、入力された値をパーセンテージまたは固定値として解釈します。