Add invoice context mapping
This commit is contained in:
@@ -20,6 +20,7 @@ public class AppDBContext(DbContextOptions<AppDBContext> options) : DbContext(op
|
||||
public DbSet<Sale> Sales { get; set; }
|
||||
public DbSet<Order> Orders { get; set; }
|
||||
public DbSet<OrderItem> OrderItems { get; set; }
|
||||
public DbSet<Invoice> Invoices { get; set; }
|
||||
public DbSet<DeliveryRun> DeliveryRuns { get; set; }
|
||||
public DbSet<User> Users { get; set; }
|
||||
public DbSet<Role> Roles { get; set; }
|
||||
@@ -64,8 +65,11 @@ public class AppDBContext(DbContextOptions<AppDBContext> options) : DbContext(op
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
// OrderItem uses its inherited Template.Id as PK (no composite key on
|
||||
// {FK_OrderId, FK_ItemId}) so that editing a PO's items can soft-delete the current
|
||||
// row and insert a fresh one for the same item — versioning per order_invoice_lifecycle.md.
|
||||
modelBuilder.Entity<OrderItem>()
|
||||
.HasKey(oi => new { oi.FK_OrderId, oi.FK_ItemId });
|
||||
.HasIndex(oi => oi.FK_OrderId);
|
||||
|
||||
modelBuilder.Entity<RolePermission>()
|
||||
.HasKey(rp => new { rp.FK_RoleId, rp.FK_PermissionId });
|
||||
@@ -143,8 +147,54 @@ public class AppDBContext(DbContextOptions<AppDBContext> options) : DbContext(op
|
||||
.HasOne(o => o.Sale)
|
||||
.WithMany()
|
||||
.HasForeignKey(o => o.FK_SaleId)
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired(false);
|
||||
|
||||
modelBuilder.Entity<Order>()
|
||||
.HasOne(o => o.CreatedByUser)
|
||||
.WithMany()
|
||||
.HasForeignKey(o => o.CreatedByUserId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
modelBuilder.Entity<Order>()
|
||||
.HasOne(o => o.ConfirmedByUser)
|
||||
.WithMany()
|
||||
.HasForeignKey(o => o.ConfirmedByUserId)
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired(false);
|
||||
|
||||
// Order.InvoiceId is a plain column with no DB-level FK constraint — deliberately
|
||||
// unmapped as a relationship, per order_invoice_lifecycle.md.
|
||||
modelBuilder.Entity<Order>()
|
||||
.Property(o => o.InvoiceId)
|
||||
.HasColumnName("InvoiceId");
|
||||
|
||||
modelBuilder.Entity<Invoice>()
|
||||
.HasOne(i => i.Order)
|
||||
.WithMany()
|
||||
.HasForeignKey(i => i.FK_OrderId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
modelBuilder.Entity<Invoice>()
|
||||
.HasOne(i => i.CreatedByUser)
|
||||
.WithMany()
|
||||
.HasForeignKey(i => i.CreatedByUserId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
modelBuilder.Entity<Invoice>()
|
||||
.HasOne(i => i.PrintedByUser)
|
||||
.WithMany()
|
||||
.HasForeignKey(i => i.PrintedByUserId)
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired(false);
|
||||
|
||||
modelBuilder.Entity<Invoice>()
|
||||
.HasOne(i => i.FinalizedByUser)
|
||||
.WithMany()
|
||||
.HasForeignKey(i => i.FinalizedByUserId)
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired(false);
|
||||
|
||||
modelBuilder.Entity<SchemeRedemption>()
|
||||
.HasOne(r => r.Scheme)
|
||||
.WithMany(s => s.Redemptions)
|
||||
|
||||
Reference in New Issue
Block a user