ui and minor changes for payment page

This commit is contained in:
2025-08-14 23:12:00 +05:30
parent 7969234445
commit 8d4aff12a1
8 changed files with 639 additions and 1025 deletions

View File

@@ -7,7 +7,7 @@ import { forwardToSeleniumClaimAgent } from "../services/seleniumClaimClient";
import path from "path";
import axios from "axios";
import { Prisma } from "@repo/db/generated/prisma";
import { Decimal } from "@prisma/client/runtime/library";
import { Decimal } from "decimal.js";
import {
ExtendedClaimSchema,
InputServiceLine,
@@ -255,8 +255,9 @@ router.post("/", async (req: Request, res: Response): Promise<any> => {
(line: InputServiceLine) => ({
...line,
totalBilled: Number(line.totalBilled),
totalAdjusted: Number(line.totalAdjusted),
totalPaid: Number(line.totalPaid),
totalAdjusted: 0,
totalPaid: 0,
totalDue: Number(line.totalBilled),
})
);
req.body.serviceLines = { create: req.body.serviceLines };

View File

@@ -11,6 +11,7 @@ import {
} from "@repo/db/types";
import Decimal from "decimal.js";
import { prisma } from "@repo/db/client";
import { PaymentStatusSchema } from "@repo/db/types";
const paymentFilterSchema = z.object({
from: z.string().datetime(),
@@ -74,8 +75,8 @@ router.get(
const parsedClaimId = parseIntOrError(req.params.claimId, "Claim ID");
const payments = await storage.getPaymentsByClaimId(
userId,
parsedClaimId
parsedClaimId,
userId
);
if (!payments)
return res.status(404).json({ message: "No payments found for claim" });
@@ -102,8 +103,8 @@ router.get(
);
const payments = await storage.getPaymentsByPatientId(
userId,
parsedPatientId
parsedPatientId,
userId
);
if (!payments)
@@ -152,7 +153,7 @@ router.get("/:id", async (req: Request, res: Response): Promise<any> => {
const id = parseIntOrError(req.params.id, "Payment ID");
const payment = await storage.getPaymentById(userId, id);
const payment = await storage.getPaymentById(id, userId);
if (!payment) return res.status(404).json({ message: "Payment not found" });
res.status(200).json(payment);
@@ -309,6 +310,34 @@ router.put("/:id", async (req: Request, res: Response): Promise<any> => {
}
});
// PATCH /api/payments/:id/status
router.patch(
"/:id/status",
async (req: Request, res: Response): Promise<any> => {
try {
const userId = req.user?.id;
if (!userId) {
return res.status(401).json({ message: "Unauthorized" });
}
const paymentId = parseIntOrError(req.params.id, "Payment ID");
const status = PaymentStatusSchema.parse(req.body.data.status);
const updatedPayment = await prisma.payment.update({
where: { id: paymentId },
data: { status, updatedById: userId },
});
res.json(updatedPayment);
} catch (err: unknown) {
const message =
err instanceof Error ? err.message : "Failed to update payment status";
res.status(500).json({ message });
}
}
);
// DELETE /api/payments/:id
router.delete("/:id", async (req: Request, res: Response): Promise<any> => {
try {