3

請求書項目および請求書全体の割引は、負の項目または請求書の個別のプロパティにする必要がありますか?

同様の質問で、料金/割引のリストを注文クラスに組み込むか、アイテムラインにする必要があります。質問者は請求書よりも注文に重点を置いています(これはビジネス エンティティとは少し異なります)。割引は料金または製品と同等ではなく、異なるレポート要件がある可能性があるため、注文アイテムとは別にすることが提案されています。したがって、割引は単にマイナスの項目であってはなりません。

以前は、マイナス項目を使用して割引を明確に示して計算することに成功していましたが、これは柔軟性に欠け、ビジネスの観点からは不正確だと感じています。ここで、請求書全体の割引とともに、各項目に割引を追加することにしました。

  • これは正しい方法ですか?
  • 各商品に独自の割引額とパーセンテージを設定する必要がありますか?

ドメイン モデルのコード サンプル

これは、SQL リポジトリにマップされる私のドメイン モデルの外観です。

public class Invoice
{
    public int ID { get; set; }
    public Guid JobID { get; set; }
    public string InvoiceNumber { get; set; }
    public Guid UserId { get; set; } // user who created it
    public DateTime Date { get; set; }

    public LazyList<InvoiceLine> InvoiceLines { get; set; }
    public LazyList<Payment> Payments { get; set; } // for payments received

    public boolean IsVoided { get; set; }   // Invoices are immutable.
                                            // To change: void -> new invoice.

    public decimal Total
    {
        get {
            return InvoiceLines.Sum(i => i.LineTotal);
        }
    }
}

public class InvoiceLine
{
    public int ID { get; set; }
    public int InvoiceID { get; set; }
    public string Title { get; set; }
    public decimal Quantity { get; set; }
    public decimal LineItemPrice { get; set; }

    public decimal DiscountPercent { get; set; } // line discount %?
    public decimal DiscountAmount { get; set; } // line discount amount?

    public decimal LineTotal {
        get {
            return (1.0M - DiscountPercent)
                    * (this.Quantity * (this.LineItemPrice))
                    - DiscountAmount;
        }
    }
}
4

1 に答える 1

1

除外広告申込情報

クレジットの取り扱いはどうなりますか?つまり、誰かに 3 つの商品を請求したが、そのうち 2 つが不良品だったので、2 つの不良品の請求を取り消すとします。これにはいくつかの方法があります。1 つの解決策は、請求書の発行者に金額が返金されることを除いて、請求書の変形であるクレジットです。負の数を許可しない場合は、クレジットを個別に保存する手段を見つけるか、請求書をクレジットとしてマークする必要があります。この後者のシナリオでは、クレジットとしてマークされた別の請求書を発行します。もちろん、別の解決策は、負の広告申込情報を保存できるようにすることです。クレジットがどのように処理されるかによって、負の項目の使用が適切なアプローチであるかどうかが決まります。

手数料と割引

1 つのアプローチは、割引と手数料を 2 つのタイプに分類することです。

  1. 特定の注文商品に適用される割引
  2. アイテムとして列挙されているが、特定の注文アイテムには適用されない割引。

注文に適用される割引は含まれていないことに注意してください。それは意図的なものです。すべての割引または手数料は、アイテムとして列挙する必要があります (ただし、必ずしも製品に適用されるとは限りません)。このように、各割引と料金はそのソースで明示されています。これにより、誰もソースや承認を特定できないような割引を注文に投入することを防ぎます。税金以外の手数料についても同様です。

于 2010-04-23T15:29:52.430 に答える