feat: add invoice versioning models and enums
This commit is contained in:
@@ -18,6 +18,7 @@ namespace Distribution.Models
|
|||||||
public enum ShopPOStatus { Pending, PartiallyFulfilled, Fulfilled, Cancelled }
|
public enum ShopPOStatus { Pending, PartiallyFulfilled, Fulfilled, Cancelled }
|
||||||
|
|
||||||
public enum InvoiceStatus { Draft, Printed, Finalized }
|
public enum InvoiceStatus { Draft, Printed, Finalized }
|
||||||
|
public enum InvoiceVersionStage { Created, DraftEdited, Printed, Finalized }
|
||||||
|
|
||||||
public enum PaymentStatus { Pending, PartiallyPaid, Paid }
|
public enum PaymentStatus { Pending, PartiallyPaid, Paid }
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ namespace Distribution.Models
|
|||||||
|
|
||||||
public decimal TotalAmount { get; set; }
|
public decimal TotalAmount { get; set; }
|
||||||
|
|
||||||
|
public ICollection<InvoiceItem> Items { get; set; } = new List<InvoiceItem>();
|
||||||
public ICollection<Payment> Payments { get; set; } = new List<Payment>();
|
public ICollection<Payment> Payments { get; set; } = new List<Payment>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Distribution.Models
|
||||||
|
{
|
||||||
|
public class InvoiceItem : Template
|
||||||
|
{
|
||||||
|
public Guid FK_InvoiceId { get; set; }
|
||||||
|
[ForeignKey("FK_InvoiceId")]
|
||||||
|
public Invoice Invoice { get; set; }
|
||||||
|
|
||||||
|
public Guid? FK_ShopPOItemId { get; set; }
|
||||||
|
[ForeignKey("FK_ShopPOItemId")]
|
||||||
|
public ShopPOItem? ShopPOItem { get; set; }
|
||||||
|
|
||||||
|
public Guid FK_ItemId { get; set; }
|
||||||
|
[ForeignKey("FK_ItemId")]
|
||||||
|
public Item Item { get; set; }
|
||||||
|
|
||||||
|
public int Quantity { get; set; }
|
||||||
|
public decimal UnitPrice { get; set; }
|
||||||
|
public bool IsRemoved { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Distribution.Models
|
||||||
|
{
|
||||||
|
// Immutable snapshot of an invoice's lines at a point in its lifecycle.
|
||||||
|
public class InvoiceVersion : Template
|
||||||
|
{
|
||||||
|
public Guid FK_InvoiceId { get; set; }
|
||||||
|
[ForeignKey("FK_InvoiceId")]
|
||||||
|
public Invoice Invoice { get; set; }
|
||||||
|
|
||||||
|
public int VersionNumber { get; set; }
|
||||||
|
public InvoiceVersionStage Stage { get; set; }
|
||||||
|
public decimal TotalAmount { get; set; }
|
||||||
|
public Guid CreatedBy { get; set; }
|
||||||
|
|
||||||
|
public ICollection<InvoiceVersionItem> Items { get; set; } = new List<InvoiceVersionItem>();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace Distribution.Models
|
||||||
|
{
|
||||||
|
public class InvoiceVersionItem : Template
|
||||||
|
{
|
||||||
|
public Guid FK_InvoiceVersionId { get; set; }
|
||||||
|
[ForeignKey("FK_InvoiceVersionId")]
|
||||||
|
public InvoiceVersion InvoiceVersion { get; set; }
|
||||||
|
|
||||||
|
public Guid? FK_ShopPOItemId { get; set; }
|
||||||
|
[ForeignKey("FK_ShopPOItemId")]
|
||||||
|
public ShopPOItem? ShopPOItem { get; set; }
|
||||||
|
|
||||||
|
public Guid FK_ItemId { get; set; }
|
||||||
|
[ForeignKey("FK_ItemId")]
|
||||||
|
public Item Item { get; set; }
|
||||||
|
|
||||||
|
public int Quantity { get; set; }
|
||||||
|
public decimal UnitPrice { get; set; }
|
||||||
|
public bool IsRemoved { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user