feat(1099): configure Payee1099, Form1099Box, and mapping FKs in DbContext
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,8 @@ public class AppDbContext : IdentityDbContext<AppUser, AppRole, string>
|
||||
public DbSet<ExpenseCategoryGroup> ExpenseCategoryGroups => Set<ExpenseCategoryGroup>();
|
||||
public DbSet<ExpenseSubCategory> ExpenseSubCategories => Set<ExpenseSubCategory>();
|
||||
public DbSet<Form990ExpenseLine> Form990ExpenseLines => Set<Form990ExpenseLine>();
|
||||
public DbSet<Payee1099> Payee1099s => Set<Payee1099>();
|
||||
public DbSet<Form1099Box> Form1099Boxes => Set<Form1099Box>();
|
||||
public DbSet<Expense> Expenses => Set<Expense>();
|
||||
public DbSet<ExpenseLine> ExpenseLines => Set<ExpenseLine>();
|
||||
public DbSet<ExpenseSnapshot> ExpenseSnapshots => Set<ExpenseSnapshot>();
|
||||
@@ -218,6 +220,32 @@ public class AppDbContext : IdentityDbContext<AppUser, AppRole, string>
|
||||
entity.HasIndex(e => e.LineCode).IsUnique();
|
||||
});
|
||||
|
||||
// ── Form1099Box (1099 reporting box catalog) ──────────────────────────
|
||||
builder.Entity<Form1099Box>(entity =>
|
||||
{
|
||||
entity.Property(e => e.BoxCode).HasMaxLength(10).IsRequired();
|
||||
entity.Property(e => e.Name_en).HasMaxLength(200).IsRequired();
|
||||
entity.Property(e => e.Name_zh).HasMaxLength(200);
|
||||
entity.Property(e => e.FormType).HasMaxLength(20).IsRequired();
|
||||
entity.HasIndex(e => e.BoxCode).IsUnique();
|
||||
});
|
||||
|
||||
// ── Payee1099 (1099 recipient master) ────────────────────────────────
|
||||
builder.Entity<Payee1099>(entity =>
|
||||
{
|
||||
entity.HasQueryFilter(p => !p.IsDeleted);
|
||||
entity.Property(e => e.LegalName).HasMaxLength(200).IsRequired();
|
||||
entity.Property(e => e.DisplayName).HasMaxLength(200);
|
||||
entity.Property(e => e.TaxClassification).HasMaxLength(40).IsRequired();
|
||||
entity.Property(e => e.TinType).HasMaxLength(10);
|
||||
entity.Property(e => e.TinLast4).HasMaxLength(4);
|
||||
entity.Property(e => e.State).HasMaxLength(2);
|
||||
entity.Property(e => e.Zip).HasMaxLength(10);
|
||||
entity.Property(e => e.W9Status).HasMaxLength(20).HasDefaultValue(Form1099.W9Status.Missing);
|
||||
entity.HasOne(e => e.Member).WithMany()
|
||||
.HasForeignKey(e => e.MemberId).OnDelete(DeleteBehavior.SetNull);
|
||||
});
|
||||
|
||||
// ── ExpenseCategoryGroup ─────────────────────────────────────────────
|
||||
builder.Entity<ExpenseCategoryGroup>(entity =>
|
||||
{
|
||||
@@ -227,6 +255,8 @@ public class AppDbContext : IdentityDbContext<AppUser, AppRole, string>
|
||||
entity.Property(e => e.UpdatedBy).HasMaxLength(450);
|
||||
entity.HasOne(e => e.Form990Line).WithMany()
|
||||
.HasForeignKey(e => e.Form990LineId).OnDelete(DeleteBehavior.SetNull);
|
||||
entity.HasOne(e => e.Form1099Box).WithMany()
|
||||
.HasForeignKey(e => e.Form1099BoxId).OnDelete(DeleteBehavior.SetNull);
|
||||
});
|
||||
|
||||
// ── ExpenseSubCategory ───────────────────────────────────────────────
|
||||
@@ -240,6 +270,8 @@ public class AppDbContext : IdentityDbContext<AppUser, AppRole, string>
|
||||
.HasForeignKey(e => e.GroupId).OnDelete(DeleteBehavior.Restrict);
|
||||
entity.HasOne(e => e.Form990Line).WithMany()
|
||||
.HasForeignKey(e => e.Form990LineId).OnDelete(DeleteBehavior.SetNull);
|
||||
entity.HasOne(e => e.Form1099Box).WithMany()
|
||||
.HasForeignKey(e => e.Form1099BoxId).OnDelete(DeleteBehavior.SetNull);
|
||||
});
|
||||
|
||||
// ── Expense ──────────────────────────────────────────────────────────
|
||||
@@ -270,6 +302,8 @@ public class AppDbContext : IdentityDbContext<AppUser, AppRole, string>
|
||||
.HasForeignKey(e => e.MinistryId).OnDelete(DeleteBehavior.Restrict);
|
||||
entity.HasOne(e => e.Member).WithMany()
|
||||
.HasForeignKey(e => e.MemberId).OnDelete(DeleteBehavior.SetNull);
|
||||
entity.HasOne(e => e.Payee).WithMany()
|
||||
.HasForeignKey(e => e.PayeeId).OnDelete(DeleteBehavior.SetNull);
|
||||
});
|
||||
|
||||
// ── ExpenseLine (category breakdown of one Expense) ──────────────────
|
||||
|
||||
Reference in New Issue
Block a user