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<Sale> Sales { get; set; }
|
||||||
public DbSet<Order> Orders { get; set; }
|
public DbSet<Order> Orders { get; set; }
|
||||||
public DbSet<OrderItem> OrderItems { get; set; }
|
public DbSet<OrderItem> OrderItems { get; set; }
|
||||||
|
public DbSet<Invoice> Invoices { get; set; }
|
||||||
public DbSet<DeliveryRun> DeliveryRuns { get; set; }
|
public DbSet<DeliveryRun> DeliveryRuns { get; set; }
|
||||||
public DbSet<User> Users { get; set; }
|
public DbSet<User> Users { get; set; }
|
||||||
public DbSet<Role> Roles { 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)
|
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>()
|
modelBuilder.Entity<OrderItem>()
|
||||||
.HasKey(oi => new { oi.FK_OrderId, oi.FK_ItemId });
|
.HasIndex(oi => oi.FK_OrderId);
|
||||||
|
|
||||||
modelBuilder.Entity<RolePermission>()
|
modelBuilder.Entity<RolePermission>()
|
||||||
.HasKey(rp => new { rp.FK_RoleId, rp.FK_PermissionId });
|
.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)
|
.HasOne(o => o.Sale)
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey(o => o.FK_SaleId)
|
.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);
|
.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>()
|
modelBuilder.Entity<SchemeRedemption>()
|
||||||
.HasOne(r => r.Scheme)
|
.HasOne(r => r.Scheme)
|
||||||
.WithMany(s => s.Redemptions)
|
.WithMany(s => s.Redemptions)
|
||||||
|
|||||||
Reference in New Issue
Block a user