89 lines
6.1 KiB
C#
89 lines
6.1 KiB
C#
using Distribution.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Distribution.Data.Seed;
|
|
|
|
public static class ProcurementSeed
|
|
{
|
|
private static readonly Guid Supplier1Id = new("38000000-0000-0000-0000-000000000001");
|
|
private static readonly Guid Supplier2Id = new("38000000-0000-0000-0000-000000000002");
|
|
|
|
private static readonly Guid PurchaseOrder1Id = new("41000000-0000-0000-0000-000000000001");
|
|
private static readonly Guid PurchaseOrder2Id = new("41000000-0000-0000-0000-000000000002");
|
|
|
|
private static readonly Guid PurchaseOrderItem1Id = new("42000000-0000-0000-0000-000000000001");
|
|
private static readonly Guid PurchaseOrderItem2Id = new("42000000-0000-0000-0000-000000000002");
|
|
private static readonly Guid PurchaseOrderItem3Id = new("42000000-0000-0000-0000-000000000003");
|
|
|
|
internal static readonly Guid GoodsReceipt1Id = new("43000000-0000-0000-0000-000000000001");
|
|
|
|
private static readonly Guid GoodsReceiptItem1Id = new("44000000-0000-0000-0000-000000000001");
|
|
private static readonly Guid GoodsReceiptItem2Id = new("44000000-0000-0000-0000-000000000002");
|
|
|
|
private static readonly Guid PurchaseReturn1Id = new("45000000-0000-0000-0000-000000000001");
|
|
private static readonly Guid PurchaseReturnItem1Id = new("46000000-0000-0000-0000-000000000001");
|
|
|
|
private static readonly Guid SupplierClaim1Id = new("55000000-0000-0000-0000-000000000001");
|
|
private static readonly Guid SupplierClaimItem1Id = new("56000000-0000-0000-0000-000000000001");
|
|
|
|
public static void Apply(ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.Entity<Supplier>().HasData(
|
|
new Supplier { Id = Supplier1Id, Name = "Ceylon Beverages Ltd", ContactInfo = "+94 11 234 5678", PerformanceScore = 4.2m, CreatedAt = new DateTime(2026, 8, 14), IsActive = true },
|
|
new Supplier { Id = Supplier2Id, Name = "Snack Foods (Pvt) Ltd", ContactInfo = "+94 11 876 5432", PerformanceScore = null, CreatedAt = new DateTime(2026, 8, 14), IsActive = true }
|
|
);
|
|
|
|
modelBuilder.Entity<PurchaseOrder>().HasData(
|
|
new PurchaseOrder { Id = PurchaseOrder1Id, FK_SupplierId = Supplier1Id, FK_CreatedByUserId = MasterDataSeed.Supervisor1UserId, Status = PurchaseOrderStatus.Received, CancelReason = null, CreatedAt = new DateTime(2026, 8, 14), IsActive = true },
|
|
new PurchaseOrder { Id = PurchaseOrder2Id, FK_SupplierId = Supplier2Id, FK_CreatedByUserId = MasterDataSeed.Supervisor1UserId, Status = PurchaseOrderStatus.Received, CancelReason = null, CreatedAt = new DateTime(2026, 8, 14), IsActive = true }
|
|
);
|
|
|
|
modelBuilder.Entity<PurchaseOrderItem>().HasData(
|
|
new PurchaseOrderItem { Id = PurchaseOrderItem1Id, FK_PurchaseOrderId = PurchaseOrder1Id, FK_ItemId = MasterDataSeed.Coke500ItemId, Quantity = 200, UnitCost = 40m, ReceivedQuantity = 200, CancelledQuantity = 0, IsCancelled = false, CreatedAt = new DateTime(2026, 8, 14), IsActive = true },
|
|
new PurchaseOrderItem { Id = PurchaseOrderItem2Id, FK_PurchaseOrderId = PurchaseOrder1Id, FK_ItemId = MasterDataSeed.Coke1500ItemId, Quantity = 100, UnitCost = 80m, ReceivedQuantity = 98, CancelledQuantity = 0, IsCancelled = false, CreatedAt = new DateTime(2026, 8, 14), IsActive = true },
|
|
new PurchaseOrderItem { Id = PurchaseOrderItem3Id, FK_PurchaseOrderId = PurchaseOrder2Id, FK_ItemId = MasterDataSeed.LaysClassicItemId, Quantity = 150, UnitCost = 35m, ReceivedQuantity = 150, CancelledQuantity = 0, IsCancelled = false, CreatedAt = new DateTime(2026, 8, 14), IsActive = true }
|
|
);
|
|
|
|
modelBuilder.Entity<GoodsReceipt>().HasData(
|
|
new GoodsReceipt { Id = GoodsReceipt1Id, FK_PurchaseOrderId = PurchaseOrder1Id, FK_ReceivedByUserId = MasterDataSeed.Supervisor1UserId, FK_WarehouseId = MasterDataSeed.ColomboWarehouseId, ReceivedAt = new DateTime(2026, 8, 15), CreatedAt = new DateTime(2026, 8, 15), IsActive = true }
|
|
);
|
|
|
|
modelBuilder.Entity<GoodsReceiptItem>().HasData(
|
|
new GoodsReceiptItem { Id = GoodsReceiptItem1Id, FK_GoodsReceiptId = GoodsReceipt1Id, FK_PurchaseOrderItemId = PurchaseOrderItem1Id, AcceptedQuantity = 200, RejectedQuantity = 0, CreatedAt = new DateTime(2026, 8, 15), IsActive = true },
|
|
new GoodsReceiptItem { Id = GoodsReceiptItem2Id, FK_GoodsReceiptId = GoodsReceipt1Id, FK_PurchaseOrderItemId = PurchaseOrderItem2Id, AcceptedQuantity = 98, RejectedQuantity = 2, CreatedAt = new DateTime(2026, 8, 15), IsActive = true }
|
|
);
|
|
|
|
modelBuilder.Entity<PurchaseReturn>().HasData(
|
|
new PurchaseReturn { Id = PurchaseReturn1Id, FK_PurchaseOrderId = PurchaseOrder2Id, Reason = "Damaged in transit", CreatedAt = new DateTime(2026, 8, 16), IsActive = true }
|
|
);
|
|
|
|
modelBuilder.Entity<PurchaseReturnItem>().HasData(
|
|
new PurchaseReturnItem { Id = PurchaseReturnItem1Id, FK_PurchaseReturnId = PurchaseReturn1Id, FK_ItemId = MasterDataSeed.LaysClassicItemId, Quantity = 10, CreatedAt = new DateTime(2026, 8, 16), IsActive = true }
|
|
);
|
|
|
|
modelBuilder.Entity<SupplierClaim>().HasData(
|
|
new SupplierClaim
|
|
{
|
|
Id = SupplierClaim1Id,
|
|
FK_PurchaseOrderId = PurchaseOrder1Id,
|
|
FK_GoodsReceiptId = GoodsReceipt1Id,
|
|
Details = "2 units of Coke 1.5L received damaged",
|
|
EvidenceUrl = null,
|
|
Status = SupplierClaimStatus.Approved,
|
|
ResolutionType = SupplierClaimResolutionType.Credit,
|
|
ResolutionAmount = 160m,
|
|
ResolutionNotes = "Credited against next invoice",
|
|
RaisedByUserId = MasterDataSeed.Supervisor1UserId,
|
|
ResolvedByUserId = MasterDataSeed.RegionalManager1UserId,
|
|
ResolvedAt = new DateTime(2026, 8, 16),
|
|
CreatedAt = new DateTime(2026, 8, 15),
|
|
IsActive = true
|
|
}
|
|
);
|
|
|
|
modelBuilder.Entity<SupplierClaimItem>().HasData(
|
|
new SupplierClaimItem { Id = SupplierClaimItem1Id, FK_SupplierClaimId = SupplierClaim1Id, FK_ItemId = MasterDataSeed.Coke1500ItemId, Quantity = 2m, IssueType = SupplierClaimIssueType.Damaged, CreatedAt = new DateTime(2026, 8, 15), IsActive = true }
|
|
);
|
|
}
|
|
}
|