From 65304f61ceb3ad4655757aa5c291ac4ed77db048 Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Wed, 5 Nov 2025 21:58:28 -0600 Subject: [PATCH] feat(invoice form): added new invoice form --- .../app/forklifts/lease/add lease.bru | 4 +- .../forklifts/routes/invoices/addInvoice.ts | 43 +-- .../forklifts/routes/leases/getLeases.ts | 10 +- .../src/components/navBar/ForkliftSideBar.tsx | 2 +- frontend/src/components/navBar/Nav.tsx | 20 ++ .../formStuff/components/CalenderSelect.tsx | 2 + .../src/lib/querys/forklifts/getInvoices.ts | 17 ++ frontend/src/routeTree.gen.ts | 22 ++ .../_forklifts/-components/NewInvoice.tsx | 264 ++++++++++++++++++ .../_app/_forklifts/-components/NewLease.tsx | 6 +- .../_app/_forklifts/forklifts/invoices.tsx | 115 ++++++++ .../routes/_old/old/-components/ocp/Lots.tsx | 1 - .../ocp/ManualPrinting/ManualPrintForm.tsx | 9 +- 13 files changed, 484 insertions(+), 31 deletions(-) create mode 100644 frontend/src/lib/querys/forklifts/getInvoices.ts create mode 100644 frontend/src/routes/_app/_forklifts/-components/NewInvoice.tsx create mode 100644 frontend/src/routes/_app/_forklifts/forklifts/invoices.tsx diff --git a/LogisticsSupportTool_API_DOCS/app/forklifts/lease/add lease.bru b/LogisticsSupportTool_API_DOCS/app/forklifts/lease/add lease.bru index 604ad8e..fa6ea8e 100644 --- a/LogisticsSupportTool_API_DOCS/app/forklifts/lease/add lease.bru +++ b/LogisticsSupportTool_API_DOCS/app/forklifts/lease/add lease.bru @@ -12,10 +12,10 @@ post { body:json { { - "leaseNumber":"500-50489192", + "leaseNumber":"40829107-1", "startDate": "11/08/2023", "endDate": "11/12/2025", - "companyId": "b34c6684-ec35-4364-acef-0c1570faf123" + "companyId": "59c4eaa3-55db-4348-a033-f2fcd91a91d1" } } diff --git a/app/src/internal/forklifts/routes/invoices/addInvoice.ts b/app/src/internal/forklifts/routes/invoices/addInvoice.ts index 9127f0b..ab2217b 100644 --- a/app/src/internal/forklifts/routes/invoices/addInvoice.ts +++ b/app/src/internal/forklifts/routes/invoices/addInvoice.ts @@ -53,26 +53,28 @@ router.post("/", async (req: Request, res: Response) => { } // this will be the total invoice amount minus each forklift this way we can keep the total amount in here plus forklifts seperated - const totalAmount = ( - validatedForklifts.reduce((sum, f) => sum + Number(f.amount || 0), 0) - - req.body.totalInvoice - ).toString(); + // const totalAmount = ( + // validatedForklifts.reduce((sum, f) => sum + Number(f.amount || 0), 0) - + // req.body.totalInvoice + // ).toString(); const { data, error } = await tryCatch( db .insert(leaseInvoices) .values({ ...invoiceData, + add_date: sql`NOW()`, + totalAmount: req.body.totalAmount, uploadedBy: req.user!.username || "lst_user", }) - .onConflictDoUpdate({ - target: leaseInvoices.invoiceNumber, - set: { - totalAmount, - invoiceDate: invoiceData.invoiceDate, - uploadedBy: req.user!.username || "lst_user", - }, - }) + // .onConflictDoUpdate({ + // target: leaseInvoices.invoiceNumber, + // set: { + // totalAmount, + // invoiceDate: invoiceData.invoiceDate, + // uploadedBy: req.user!.username || "lst_user", + // }, + // }) .returning(), ); @@ -80,18 +82,21 @@ router.post("/", async (req: Request, res: Response) => { const err: DrizzleError = error; return res.status(400).json({ message: `Error adding lease`, - error: err.cause, + // @ts-ignore + error: err.cause.detail, }); } const invoiceId = data[0]?.id; + console.log(validatedForklifts); + const forkliftInvoices = validatedForklifts.map((f) => { + return { + invoiceId, + forkliftId: f.forklift_id, + amount: f.amount, + }; + }); - const forkliftInvoices = validatedForklifts.map((f) => ({ - invoiceId, - forkliftId: f.forklift_Id, - amount: f.amount, - })); - console.log(forkliftInvoices); if (validatedForklifts.length > 0) { await db.insert(leaseInvoiceForklifts).values(forkliftInvoices); // .onConflictDoUpdate({ diff --git a/app/src/internal/forklifts/routes/leases/getLeases.ts b/app/src/internal/forklifts/routes/leases/getLeases.ts index 60fa19d..2c5d8e1 100644 --- a/app/src/internal/forklifts/routes/leases/getLeases.ts +++ b/app/src/internal/forklifts/routes/leases/getLeases.ts @@ -10,12 +10,14 @@ import { tryCatch } from "../../../../pkg/utils/tryCatch.js"; const router = Router(); router.get("/", async (req: Request, res: Response) => { - const lease = req.query.lease; - const conditions = []; - if (lease !== undefined) { - conditions.push(eq(leases.leaseNumber, `${lease}`)); + if (req.query.lease !== undefined) { + conditions.push(eq(leases.leaseNumber, `${req.query.lease}`)); + } + + if (req.query.companyId !== undefined) { + conditions.push(eq(leases.companyId, `${req.query.companyId}`)); } //conditions.push(eq(forkliftCompanies.active, true)); diff --git a/frontend/src/components/navBar/ForkliftSideBar.tsx b/frontend/src/components/navBar/ForkliftSideBar.tsx index d409c09..af5fe19 100644 --- a/frontend/src/components/navBar/ForkliftSideBar.tsx +++ b/frontend/src/components/navBar/ForkliftSideBar.tsx @@ -37,7 +37,7 @@ export default function ForkliftSideBar() { }, { title: "Invoices", - url: "/lst/app/admin/settings", + url: "/lst/app/forklifts/invoices", icon: ReceiptText, role: ["systemAdmin", "admin", "manager"], module: "forklifts", diff --git a/frontend/src/components/navBar/Nav.tsx b/frontend/src/components/navBar/Nav.tsx index eb76695..6b485c1 100644 --- a/frontend/src/components/navBar/Nav.tsx +++ b/frontend/src/components/navBar/Nav.tsx @@ -1,6 +1,7 @@ import { Link, useRouterState } from "@tanstack/react-router"; import { useState } from "react"; import NewCompanyForm from "@/routes/_app/_forklifts/-components/NewCompany"; +import NewInvoice from "@/routes/_app/_forklifts/-components/NewInvoice"; import NewLeaseForm from "@/routes/_app/_forklifts/-components/NewLease"; import { useAuth, useLogout } from "../../lib/authClient"; import { ModeToggle } from "../mode-toggle"; @@ -23,6 +24,7 @@ export default function Nav() { const currentPath = router.location.href; const [openDialog, setOpenDialog] = useState(false); const [openLeaseDialog, setOpenLeaseDialog] = useState(false); + const [openInvoiceDialog, setOpenInvoiceDialog] = useState(false); return (