From a4ded78442300ea89913b4c30a42554c8003208e Mon Sep 17 00:00:00 2001 From: Chris Chen Date: Thu, 25 Jun 2026 18:23:49 -0700 Subject: [PATCH] feat(1099): show payer EIN on church profile page and 1099-NEC PDF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Populate the PAYER's TIN (EIN) box in Form1099FormService.BuildCopyBHtml from ChurchProfile.PayerEin (blank when null, matching prior behaviour). Add payerEin field to ChurchProfileDto TS model (flows into UpdateChurchProfileRequest via the existing Omit type) and a text input on the Church Info tab of the church-profile settings page, mirroring the Routing # field pattern. CSV left unchanged — adding a payer context line would break the existing ExportFilingCsvAsync assertion (3 lines expected). Co-Authored-By: Claude Opus 4.8 --- API/ROLAC.API/Services/Form1099/Form1099FormService.cs | 4 ++-- .../app/features/disbursement/models/disbursement.model.ts | 2 +- .../church-profile-page/church-profile-page.component.html | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/API/ROLAC.API/Services/Form1099/Form1099FormService.cs b/API/ROLAC.API/Services/Form1099/Form1099FormService.cs index 7cc90e0..4c7d199 100644 --- a/API/ROLAC.API/Services/Form1099/Form1099FormService.cs +++ b/API/ROLAC.API/Services/Form1099/Form1099FormService.cs @@ -94,7 +94,7 @@ public class Form1099FormService : I1099FormService var recipientAddress = JoinAddress( JoinLines(payee.AddressLine1, payee.AddressLine2), payee.City, payee.State, payee.Zip); - // ChurchProfile has no payer EIN/TIN field, so the payer-TIN box is labelled but left blank. + var payerEin = string.IsNullOrWhiteSpace(church.PayerEin) ? "" : church.PayerEin; var maskedTin = string.IsNullOrWhiteSpace(payee.TinLast4) ? "" : $"***-**-{payee.TinLast4}"; return @@ -109,7 +109,7 @@ public class Form1099FormService : I1099FormService $"{Encode(church.Name)}
{payerAddress}" + "" + "" + - "PAYER’s TIN (EIN)
 " + + $"PAYER’s TIN (EIN)
{Encode(payerEin)}" + "" + "" + diff --git a/APP/src/app/features/disbursement/models/disbursement.model.ts b/APP/src/app/features/disbursement/models/disbursement.model.ts index 0ba7aa9..8ea6a2f 100644 --- a/APP/src/app/features/disbursement/models/disbursement.model.ts +++ b/APP/src/app/features/disbursement/models/disbursement.model.ts @@ -48,7 +48,7 @@ export interface ChurchProfileDto { id: number; name: string; nameZh: string | null; phone: string | null; email: string | null; website: string | null; address: string | null; city: string | null; state: string | null; zipCode: string | null; bankName: string | null; - bankAccountNumber: string | null; bankRoutingNumber: string | null; nextCheckNumber: number; + bankAccountNumber: string | null; bankRoutingNumber: string | null; payerEin: string | null; nextCheckNumber: number; aiProvider: string; claudeModel: string | null; claudeApiKeyMasked: string | null; geminiModel: string | null; geminiApiKeyMasked: string | null; diff --git a/APP/src/app/features/disbursement/pages/church-profile-page/church-profile-page.component.html b/APP/src/app/features/disbursement/pages/church-profile-page/church-profile-page.component.html index c2af9ff..2d15893 100644 --- a/APP/src/app/features/disbursement/pages/church-profile-page/church-profile-page.component.html +++ b/APP/src/app/features/disbursement/pages/church-profile-page/church-profile-page.component.html @@ -55,6 +55,10 @@ Routing # / 路由號碼 +