Add DeliveryTask, Payment, and Sale features
Implemented DeliveryTask, Payment, and Sale entities with full CRUD, business logic, and API endpoints. Updated Order/OrderItem for sale linkage and fulfillment tracking. Registered new DbSets and DI services. Revised documentation for delivery, sale, and payment workflows.
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Distribution.Models
|
||||
{
|
||||
public class DeliveryTask : Template
|
||||
{
|
||||
public Guid FK_RideId { get; set; }
|
||||
[ForeignKey("FK_RideId")]
|
||||
public DeliveryRun Ride { get; set; }
|
||||
|
||||
public Guid FK_OrderId { get; set; }
|
||||
[ForeignKey("FK_OrderId")]
|
||||
public Order Order { get; set; }
|
||||
|
||||
public int Sequence { get; set; }
|
||||
public DeliveryTaskStatus Status { get; set; } = DeliveryTaskStatus.Pending;
|
||||
public bool CustomerConfirmed { get; set; } = false;
|
||||
public DateTime? ConfirmedAt { get; set; }
|
||||
public string? Note { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -42,4 +42,20 @@ namespace Distribution.Models
|
||||
public enum CancelRequestStatus { Pending, Approved, Rejected }
|
||||
|
||||
public enum PurchaseOrderStatus { Issued, PartiallyReceived, Received, Closed, Cancelled }
|
||||
|
||||
public enum SaleStatus { Pending, Completed, Cancelled }
|
||||
|
||||
public enum OrderStatus { Pending, PartiallyFulfilled, Fulfilled, Cancelled }
|
||||
|
||||
public enum PaymentStatus { Pending, PartiallyPaid, Paid }
|
||||
|
||||
public enum PaymentMethod { Cash, Credit }
|
||||
|
||||
public enum DeliveryTaskStatus
|
||||
{
|
||||
Pending,
|
||||
Delivered,
|
||||
PartiallyDelivered,
|
||||
Failed
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,18 @@ namespace Distribution.Models
|
||||
{
|
||||
public class Order : Template
|
||||
{
|
||||
public Guid FK_SaleId { get; set; }
|
||||
[ForeignKey("FK_SaleId")]
|
||||
public Sale Sale { get; set; }
|
||||
|
||||
public DateTime OrderDate { get; set; }
|
||||
public Guid FK_StoreId { get; set; }
|
||||
[ForeignKey("FK_StoreId")]
|
||||
public Store Store { get; set; }
|
||||
public decimal TotalAmount { get; set; }
|
||||
public OrderStatus Status { get; set; } = OrderStatus.Pending;
|
||||
public DateTime? FulfilledAt { get; set; }
|
||||
|
||||
public ICollection<OrderItem> OrderItems { get; set; } = new List<OrderItem>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace Distribution.Models
|
||||
[ForeignKey("FK_ItemId")]
|
||||
public Item Item { get; set; }
|
||||
public int Quantity { get; set; }
|
||||
public int QuantityFulfilled { get; set; } = 0;
|
||||
public decimal UnitPrice { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Distribution.Models
|
||||
{
|
||||
public class Payment : Template
|
||||
{
|
||||
public Guid FK_SaleId { get; set; }
|
||||
[ForeignKey("FK_SaleId")]
|
||||
public Sale Sale { get; set; }
|
||||
|
||||
public Guid FK_StoreId { get; set; }
|
||||
[ForeignKey("FK_StoreId")]
|
||||
public Store Store { get; set; }
|
||||
|
||||
public decimal Amount { get; set; }
|
||||
public PaymentMethod Method { get; set; }
|
||||
public DateTime CollectedAt { get; set; }
|
||||
public Guid CollectedBy { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Distribution.Models
|
||||
{
|
||||
public class Sale : Template
|
||||
{
|
||||
public DateTime SaleDate { get; set; }
|
||||
|
||||
public Guid FK_StoreId { get; set; }
|
||||
[ForeignKey("FK_StoreId")]
|
||||
public Store Store { get; set; }
|
||||
|
||||
public Guid CreatedByUserId { get; set; }
|
||||
[ForeignKey("CreatedByUserId")]
|
||||
public User CreatedByUser { get; set; }
|
||||
|
||||
public Guid? FK_RideId { get; set; }
|
||||
[ForeignKey("FK_RideId")]
|
||||
public DeliveryRun? Ride { get; set; }
|
||||
|
||||
public decimal TotalAmount { get; set; }
|
||||
public SaleStatus Status { get; set; } = SaleStatus.Pending;
|
||||
public PaymentStatus PaymentStatus { get; set; } = PaymentStatus.Pending;
|
||||
public bool FulfillImmediately { get; set; }
|
||||
public DateTime? CompletedAt { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user