From 353960bd267e55b24c59a4a654cc37411c9986c7 Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Wed, 11 Jun 2025 20:50:43 -0500 Subject: [PATCH] feat(new command): helper command to remove as non reusable pallets --- .../commands/RemoveAsNonReusable.tsx | 138 ++++++++++++++++++ .../logistics/helperCommands/helperPage.tsx | 11 +- .../commands/removeAsNonReusable.ts | 120 +++++++++++++++ server/services/logistics/logisticsService.ts | 4 + server/services/ocp/routes/labeling/bookIn.ts | 9 ++ server/services/server/utils/settingsCheck.ts | 14 ++ .../sqlServer/querys/warehouse/labelInfo.ts | 20 +++ 7 files changed, 314 insertions(+), 2 deletions(-) create mode 100644 frontend/src/components/logistics/helperCommands/commands/RemoveAsNonReusable.tsx create mode 100644 server/services/logistics/controller/commands/removeAsNonReusable.ts create mode 100644 server/services/sqlServer/querys/warehouse/labelInfo.ts diff --git a/frontend/src/components/logistics/helperCommands/commands/RemoveAsNonReusable.tsx b/frontend/src/components/logistics/helperCommands/commands/RemoveAsNonReusable.tsx new file mode 100644 index 0000000..67a825f --- /dev/null +++ b/frontend/src/components/logistics/helperCommands/commands/RemoveAsNonReusable.tsx @@ -0,0 +1,138 @@ +import { LstCard } from "@/components/extendedUI/LstCard"; +import { Button } from "@/components/ui/button"; +import { CardContent, CardHeader } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Textarea } from "@/components/ui/textarea"; +import { useForm } from "@tanstack/react-form"; +import axios from "axios"; +import { useState } from "react"; +import { toast } from "sonner"; + +export default function RemoveAsNonReusable() { + const [stockOut, setStockOut] = useState(false); + const form = useForm({ + defaultValues: { runningNr: " ", reason: " " }, + onSubmit: async ({ value }) => { + // Do something with form data + setStockOut(true); + + //console.log(value); + + try { + const res = await axios.post( + "/api/logistics/removeasreusable", + + value // this is basically the data field + ); + + if (res.data.success) { + toast.success(res.data.message); + form.reset(); + setStockOut(false); + } else { + console.log(res.data); + toast.error(res.data?.message); + form.reset(); + setStockOut(false); + } + } catch (error: any) { + console.log(error); + toast.error(error.message); + setStockOut(false); + } + }, + }); + return ( + + +

Remove a pallet as non reusable

+
+
{ + e.preventDefault(); + e.stopPropagation(); + }} + > + + + value.length > 2 + ? undefined + : "Please enter a valid running number", + }} + children={(field) => { + return ( +
+ + + field.handleChange(e.target.value) + } + /> + {field.state.meta.errors.length ? ( + + {field.state.meta.errors.join(",")} + + ) : null} +
+ ); + }} + /> + + value.length > 10 + ? undefined + : "Please enter a valid reason on why you needed to remove this pallet", + }} + children={(field) => { + return ( +
+ +