c#
public class CommonInvoice
{
public int Id { get; set; }
public DateTime CreatedAt { get; init; } = DateTime.Now;
public DateTime? DeletedAt { get; set; }
public required string Number { get; set; }
public required DateOnly DueDate { get; set; }
public required int CompanyId { get; set; }
public double DiscountPercentage { get; set; }
public double DiscountFixedValue { get; set; }
public virtual Company Company { get; set; } = default!;
public required int CustomerId { get; set; }
public virtual Customer Customer { get; set; } = default!;
public string? GeneratedFileName { get; set; }
public required int CreatedById { get; set; }
public virtual User CreatedBy { get; set; } = default!;
public required List<ItemizeItem> Items { get; set; }
public double TotalPrice
{
get
{
double total = 0;
foreach (var item in Items)
{
total += item.TotalPrice;
}
if (DiscountPercentage > 0)
{
total -= total * (DiscountPercentage / 100);
}
if (DiscountFixedValue > 0)
{
total -= DiscountFixedValue;
}
return Math.Max(total, 0);
}
}
}
public class Invoice : CommonInvoice
{
public required DateOnly DeliveryDate { get; set; }
public int? FromDepositInvoiceId { get; set; }
public virtual DepositInvoice? FromDepositInvoice { get; set; }
}