feat(1099): show payer EIN on church profile page and 1099-NEC PDF
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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)}<br/>{payerAddress}" +
|
||||
"</td>" +
|
||||
"<td width=\"50%\" valign=\"top\">" +
|
||||
"<b>PAYER’s TIN (EIN)</b><br/> " +
|
||||
$"<b>PAYER’s TIN (EIN)</b><br/>{Encode(payerEin)}" +
|
||||
"</td></tr>" +
|
||||
|
||||
"<tr><td valign=\"top\">" +
|
||||
|
||||
@@ -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;
|
||||
|
||||
+4
@@ -55,6 +55,10 @@
|
||||
Routing # / 路由號碼
|
||||
<kendo-textbox [(ngModel)]="model.bankRoutingNumber"></kendo-textbox>
|
||||
</label>
|
||||
<label class="flex flex-col gap-1">
|
||||
Payer EIN / 雇主識別號 (EIN)
|
||||
<kendo-textbox [(ngModel)]="model.payerEin" placeholder="XX-XXXXXXX"></kendo-textbox>
|
||||
</label>
|
||||
<label class="flex flex-col gap-1">
|
||||
Next Check # / 下一張支票號碼
|
||||
<kendo-numerictextbox [(ngModel)]="model.nextCheckNumber" [min]="1" [decimals]="0" format="#"></kendo-numerictextbox>
|
||||
|
||||
Reference in New Issue
Block a user