feat: add Copayment and Adjustment columns to payments table

- Added copayment and adjustment fields (Decimal, default 0) to Payment
  model in schema and directly to DB via ALTER TABLE
- Added PATCH /api/payments/:id/copayment and /adjustment routes
- Added inline-editable Copayment and Adjustment columns after MH Paid
  with same click-to-edit format; Copayment in blue, Adjustment in orange

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gitead
2026-05-06 21:14:00 -04:00
parent c5af6c1fa6
commit 4bd501250d
250 changed files with 4656 additions and 185 deletions

View File

@@ -11,6 +11,9 @@ export const PaymentInputSchema = z.object({
totalPaid: z.number(),
totalAdjusted: z.number(),
totalDue: z.number(),
mhPaidAmount: z.number().optional().nullable(),
copayment: z.number(),
adjustment: z.number(),
status: PaymentStatusSchema,
notes: z.string().optional().nullable(),
icn: z.string().optional().nullable(),

View File

@@ -0,0 +1,10 @@
import * as z from 'zod';
// prettier-ignore
export const ProcedureTimeslotInputSchema = z.object({
id: z.number().int(),
userId: z.number().int(),
data: z.unknown(),
user: z.unknown()
}).strict();
export type ProcedureTimeslotInputType = z.infer<typeof ProcedureTimeslotInputSchema>;

View File

@@ -22,7 +22,8 @@ export const UserInputSchema = z.object({
twilioSettings: z.unknown().optional().nullable(),
aiSettings: z.unknown().optional().nullable(),
officeHours: z.unknown().optional().nullable(),
officeContact: z.unknown().optional().nullable()
officeContact: z.unknown().optional().nullable(),
procedureTimeslot: z.unknown().optional().nullable()
}).strict();
export type UserInputType = z.infer<typeof UserInputSchema>;

View File

@@ -31,3 +31,4 @@ export { TwilioSettingsInputSchema } from './TwilioSettings.input';
export { AiSettingsInputSchema } from './AiSettings.input';
export { OfficeHoursInputSchema } from './OfficeHours.input';
export { OfficeContactInputSchema } from './OfficeContact.input';
export { ProcedureTimeslotInputSchema } from './ProcedureTimeslot.input';