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

@@ -4,6 +4,7 @@ import Decimal from 'decimal.js';
import { IntWithAggregatesFilterObjectSchema as IntWithAggregatesFilterObjectSchema } from './IntWithAggregatesFilter.schema';
import { IntNullableWithAggregatesFilterObjectSchema as IntNullableWithAggregatesFilterObjectSchema } from './IntNullableWithAggregatesFilter.schema';
import { DecimalWithAggregatesFilterObjectSchema as DecimalWithAggregatesFilterObjectSchema } from './DecimalWithAggregatesFilter.schema';
import { DecimalNullableWithAggregatesFilterObjectSchema as DecimalNullableWithAggregatesFilterObjectSchema } from './DecimalNullableWithAggregatesFilter.schema';
import { EnumPaymentStatusWithAggregatesFilterObjectSchema as EnumPaymentStatusWithAggregatesFilterObjectSchema } from './EnumPaymentStatusWithAggregatesFilter.schema';
import { PaymentStatusSchema } from '../enums/PaymentStatus.schema';
import { StringNullableWithAggregatesFilterObjectSchema as StringNullableWithAggregatesFilterObjectSchema } from './StringNullableWithAggregatesFilter.schema';
@@ -54,6 +55,33 @@ const paymentscalarwherewithaggregatesinputSchema = z.object({
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'totalDue' must be a Decimal",
})]).optional(),
mhPaidAmount: z.union([z.lazy(() => DecimalNullableWithAggregatesFilterObjectSchema), z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'mhPaidAmount' must be a Decimal",
})]).optional().nullable(),
copayment: z.union([z.lazy(() => DecimalWithAggregatesFilterObjectSchema), z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'copayment' must be a Decimal",
})]).optional(),
adjustment: z.union([z.lazy(() => DecimalWithAggregatesFilterObjectSchema), z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'adjustment' must be a Decimal",
})]).optional(),
status: z.union([z.lazy(() => EnumPaymentStatusWithAggregatesFilterObjectSchema), PaymentStatusSchema]).optional(),
notes: z.union([z.lazy(() => StringNullableWithAggregatesFilterObjectSchema), z.string()]).optional().nullable(),