feat(migration): moved helper commands

This commit is contained in:
2025-10-26 11:32:29 -05:00
parent 1da7b145a9
commit 39c31aa1ec
21 changed files with 470 additions and 1304 deletions

View File

@@ -36,6 +36,7 @@ import { Route as AppAdminLayoutAdminUsersRouteRouteImport } from './routes/_app
import { Route as OldOldocmeCyclecountIndexRouteImport } from './routes/_old/old/(ocme)/cyclecount/index'
import { Route as OldOldlogisticsSiloAdjustmentsIndexRouteImport } from './routes/_old/old/(logistics)/siloAdjustments/index'
import { Route as OldOldlogisticsMaterialHelperIndexRouteImport } from './routes/_old/old/(logistics)/materialHelper/index'
import { Route as OldOldlogisticsHelperCommandsIndexRouteImport } from './routes/_old/old/(logistics)/helperCommands/index'
import { Route as OldOldlogisticsSiloAdjustmentsHistRouteImport } from './routes/_old/old/(logistics)/siloAdjustments/$hist'
import { Route as AppAdminLayoutAdminUsersUsersRouteImport } from './routes/_app/_adminLayout/admin/_users/users'
import { Route as AppAdminLayoutAdminUsersProdUsersRouteImport } from './routes/_app/_adminLayout/admin/_users/prodUsers'
@@ -184,6 +185,12 @@ const OldOldlogisticsMaterialHelperIndexRoute =
path: '/materialHelper/',
getParentRoute: () => OldOldRouteRoute,
} as any)
const OldOldlogisticsHelperCommandsIndexRoute =
OldOldlogisticsHelperCommandsIndexRouteImport.update({
id: '/(logistics)/helperCommands/',
path: '/helperCommands/',
getParentRoute: () => OldOldRouteRoute,
} as any)
const OldOldlogisticsSiloAdjustmentsHistRoute =
OldOldlogisticsSiloAdjustmentsHistRouteImport.update({
id: '/(logistics)/siloAdjustments/$hist',
@@ -238,6 +245,7 @@ export interface FileRoutesByFullPath {
'/admin/prodUsers': typeof AppAdminLayoutAdminUsersProdUsersRoute
'/admin/users': typeof AppAdminLayoutAdminUsersUsersRoute
'/old/siloAdjustments/$hist': typeof OldOldlogisticsSiloAdjustmentsHistRoute
'/old/helperCommands': typeof OldOldlogisticsHelperCommandsIndexRoute
'/old/materialHelper': typeof OldOldlogisticsMaterialHelperIndexRoute
'/old/siloAdjustments': typeof OldOldlogisticsSiloAdjustmentsIndexRoute
'/old/cyclecount': typeof OldOldocmeCyclecountIndexRoute
@@ -266,6 +274,7 @@ export interface FileRoutesByTo {
'/admin/prodUsers': typeof AppAdminLayoutAdminUsersProdUsersRoute
'/admin/users': typeof AppAdminLayoutAdminUsersUsersRoute
'/old/siloAdjustments/$hist': typeof OldOldlogisticsSiloAdjustmentsHistRoute
'/old/helperCommands': typeof OldOldlogisticsHelperCommandsIndexRoute
'/old/materialHelper': typeof OldOldlogisticsMaterialHelperIndexRoute
'/old/siloAdjustments': typeof OldOldlogisticsSiloAdjustmentsIndexRoute
'/old/cyclecount': typeof OldOldocmeCyclecountIndexRoute
@@ -300,6 +309,7 @@ export interface FileRoutesById {
'/_app/_adminLayout/admin/_users/prodUsers': typeof AppAdminLayoutAdminUsersProdUsersRoute
'/_app/_adminLayout/admin/_users/users': typeof AppAdminLayoutAdminUsersUsersRoute
'/_old/old/(logistics)/siloAdjustments/$hist': typeof OldOldlogisticsSiloAdjustmentsHistRoute
'/_old/old/(logistics)/helperCommands/': typeof OldOldlogisticsHelperCommandsIndexRoute
'/_old/old/(logistics)/materialHelper/': typeof OldOldlogisticsMaterialHelperIndexRoute
'/_old/old/(logistics)/siloAdjustments/': typeof OldOldlogisticsSiloAdjustmentsIndexRoute
'/_old/old/(ocme)/cyclecount/': typeof OldOldocmeCyclecountIndexRoute
@@ -331,6 +341,7 @@ export interface FileRouteTypes {
| '/admin/prodUsers'
| '/admin/users'
| '/old/siloAdjustments/$hist'
| '/old/helperCommands'
| '/old/materialHelper'
| '/old/siloAdjustments'
| '/old/cyclecount'
@@ -359,6 +370,7 @@ export interface FileRouteTypes {
| '/admin/prodUsers'
| '/admin/users'
| '/old/siloAdjustments/$hist'
| '/old/helperCommands'
| '/old/materialHelper'
| '/old/siloAdjustments'
| '/old/cyclecount'
@@ -392,6 +404,7 @@ export interface FileRouteTypes {
| '/_app/_adminLayout/admin/_users/prodUsers'
| '/_app/_adminLayout/admin/_users/users'
| '/_old/old/(logistics)/siloAdjustments/$hist'
| '/_old/old/(logistics)/helperCommands/'
| '/_old/old/(logistics)/materialHelper/'
| '/_old/old/(logistics)/siloAdjustments/'
| '/_old/old/(ocme)/cyclecount/'
@@ -589,6 +602,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof OldOldlogisticsMaterialHelperIndexRouteImport
parentRoute: typeof OldOldRouteRoute
}
'/_old/old/(logistics)/helperCommands/': {
id: '/_old/old/(logistics)/helperCommands/'
path: '/helperCommands'
fullPath: '/old/helperCommands'
preLoaderRoute: typeof OldOldlogisticsHelperCommandsIndexRouteImport
parentRoute: typeof OldOldRouteRoute
}
'/_old/old/(logistics)/siloAdjustments/$hist': {
id: '/_old/old/(logistics)/siloAdjustments/$hist'
path: '/siloAdjustments/$hist'
@@ -725,6 +745,7 @@ interface OldOldRouteRouteChildren {
OldOldOcpIndexRoute: typeof OldOldOcpIndexRoute
OldOldRfidIndexRoute: typeof OldOldRfidIndexRoute
OldOldlogisticsSiloAdjustmentsHistRoute: typeof OldOldlogisticsSiloAdjustmentsHistRoute
OldOldlogisticsHelperCommandsIndexRoute: typeof OldOldlogisticsHelperCommandsIndexRoute
OldOldlogisticsMaterialHelperIndexRoute: typeof OldOldlogisticsMaterialHelperIndexRoute
OldOldlogisticsSiloAdjustmentsIndexRoute: typeof OldOldlogisticsSiloAdjustmentsIndexRoute
OldOldocmeCyclecountIndexRoute: typeof OldOldocmeCyclecountIndexRoute
@@ -738,6 +759,8 @@ const OldOldRouteRouteChildren: OldOldRouteRouteChildren = {
OldOldRfidIndexRoute: OldOldRfidIndexRoute,
OldOldlogisticsSiloAdjustmentsHistRoute:
OldOldlogisticsSiloAdjustmentsHistRoute,
OldOldlogisticsHelperCommandsIndexRoute:
OldOldlogisticsHelperCommandsIndexRoute,
OldOldlogisticsMaterialHelperIndexRoute:
OldOldlogisticsMaterialHelperIndexRoute,
OldOldlogisticsSiloAdjustmentsIndexRoute:

View File

@@ -17,6 +17,7 @@ const modules: string[] = [
"siloAdjustments",
"demandManagement",
"logistics",
"helperCommands",
"production",
"quality",
"eom",

View File

@@ -0,0 +1,28 @@
import { createFileRoute } from "@tanstack/react-router";
import HelperPage from "../../-components/logistics/helperCommands/helperPage";
export const Route = createFileRoute("/_old/old/(logistics)/helperCommands/")({
component: RouteComponent,
// beforeLoad: async () => {
// const auth = localStorage.getItem("auth_token");
// if (!auth) {
// throw redirect({
// to: "/login",
// search: {
// // Use the current location to power a redirect after login
// // (Do not use `router.state.resolvedLocation` as it can
// // potentially lag behind the actual current location)
// redirect: location.pathname + location.search,
// },
// });
// }
// },
});
function RouteComponent() {
return (
<div>
<HelperPage />
</div>
);
}

View File

@@ -0,0 +1,94 @@
import { useForm } from "@tanstack/react-form";
import axios from "axios";
import { useState } from "react";
import { toast } from "sonner";
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 { LstCard } from "../../../extendedUi/LstCard";
export default function Bookin() {
const [bookingIn, setBookingIn] = useState(false);
const form = useForm({
defaultValues: { runningNr: " " },
onSubmit: async ({ value }) => {
// Do something with form data
setBookingIn(true);
try {
const res = await axios.post("/lst/old/api/ocp/bookin", {
runningNr: parseInt(value.runningNr),
});
if (res.data.success) {
toast.success(res.data.message);
form.reset();
setBookingIn(false);
} else {
console.log(res.data.data.errors);
toast.error(res.data.data.errors[0]?.message);
form.reset();
setBookingIn(false);
}
} catch (error) {
console.log(error);
toast.error(
"There was an error booking in pallet please validate you entered the correct info and try again.",
);
setBookingIn(false);
}
},
});
return (
<LstCard>
<CardHeader>
<p>Book in a pallet by running number</p>
</CardHeader>
<form
onSubmit={(e) => {
e.preventDefault();
e.stopPropagation();
}}
>
<CardContent>
<form.Field
name="runningNr"
validators={{
// We can choose between form-wide and field-specific validators
onChange: ({ value }) =>
value.length > 2
? undefined
: "Please enter a valid running number",
}}
children={(field) => {
return (
<div className="">
<Label htmlFor="runningNr" className="mb-2">
Runnning Number
</Label>
<Input
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
type="number"
onChange={(e) => field.handleChange(e.target.value)}
/>
{field.state.meta.errors.length ? (
<em>{field.state.meta.errors.join(",")}</em>
) : null}
</div>
);
}}
/>
<div className="flex mt-2 justify-end">
<Button onClick={form.handleSubmit} disabled={bookingIn}>
Book in
</Button>
</div>
</CardContent>
</form>
</LstCard>
);
}

View File

@@ -0,0 +1,123 @@
import { useForm } from "@tanstack/react-form";
import axios from "axios";
import { useState } from "react";
import { toast } from "sonner";
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 { LstCard } from "../../../extendedUi/LstCard";
export default function Relocate() {
const [bookingIn, setBookingIn] = useState(false);
const form = useForm({
defaultValues: { runningNr: " ", lane: "" },
onSubmit: async ({ value }) => {
// Do something with form data
setBookingIn(true);
try {
const res = await axios.post("/lst/old/api/ocp/bookin", {
runningNr: parseInt(value.runningNr),
});
if (res.data.success) {
toast.success(res.data.message);
form.reset();
setBookingIn(false);
} else {
console.log(res.data.data.errors);
toast.error(res.data.data.errors[0]?.message);
form.reset();
setBookingIn(false);
}
} catch (error) {
console.log(error);
toast.error(
"There was an error booking in pallet please validate you entered the correct info and try again.",
);
setBookingIn(false);
}
},
});
return (
<LstCard>
<CardHeader>
<p>Relocate a pallet to another lane</p>
</CardHeader>
<form
onSubmit={(e) => {
e.preventDefault();
e.stopPropagation();
}}
>
<CardContent>
<form.Field
name="runningNr"
validators={{
// We can choose between form-wide and field-specific validators
onChange: ({ value }) =>
value.length > 2
? undefined
: "Please enter a valid running number",
}}
children={(field) => {
return (
<div className="">
<Label htmlFor="runningNr" className="mb-2">
Runnning Number
</Label>
<Input
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
type="number"
onChange={(e) => field.handleChange(e.target.value)}
/>
{field.state.meta.errors.length ? (
<em>{field.state.meta.errors.join(",")}</em>
) : null}
</div>
);
}}
/>
<form.Field
name="lane"
validators={{
// We can choose between form-wide and field-specific validators
onChange: ({ value }) =>
value.length > 2
? undefined
: "Please enter a valid running number",
}}
children={(field) => {
return (
<div className="">
<Label htmlFor="runningNr" className="mb-2">
Enter lane
</Label>
<Input
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
//type="number"
onChange={(e) => field.handleChange(e.target.value)}
/>
{field.state.meta.errors.length ? (
<em>{field.state.meta.errors.join(",")}</em>
) : null}
</div>
);
}}
/>
<div className="flex mt-2 justify-end">
<Button onClick={form.handleSubmit} disabled={bookingIn}>
Relocate
</Button>
</div>
</CardContent>
</form>
</LstCard>
);
}

View File

@@ -0,0 +1,128 @@
import { useForm } from "@tanstack/react-form";
import axios from "axios";
import { useState } from "react";
import { toast } from "sonner";
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 { LstCard } from "../../../extendedUi/LstCard";
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(
"/lst/old/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 (
<LstCard>
<CardHeader>
<p>Remove a pallet as non reusable</p>
</CardHeader>
<form
onSubmit={(e) => {
e.preventDefault();
e.stopPropagation();
}}
>
<CardContent>
<form.Field
name="runningNr"
validators={{
// We can choose between form-wide and field-specific validators
onChange: ({ value }) =>
value.length > 2
? undefined
: "Please enter a valid running number",
}}
children={(field) => {
return (
<div className="w-96">
<Label htmlFor="runningNr" className="mb-2">
Runnning Number
</Label>
<Input
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
required
type="number"
onChange={(e) => field.handleChange(e.target.value)}
/>
{field.state.meta.errors.length ? (
<em>{field.state.meta.errors.join(",")}</em>
) : null}
</div>
);
}}
/>
<form.Field
name="reason"
validators={{
// We can choose between form-wide and field-specific validators
onChange: ({ value }) =>
value.length > 10
? undefined
: "Please enter a valid reason on why you needed to remove this pallet",
}}
children={(field) => {
return (
<div className="">
<Label htmlFor="reason" className="mb-2">
Reason for removing
</Label>
<Textarea
name={field.name}
value={field.state.value}
onBlur={field.handleBlur}
//type="number"
onChange={(e) => field.handleChange(e.target.value)}
/>
{field.state.meta.errors.length ? (
<div className="text-pretty max-w-96">
<em>{field.state.meta.errors.join(",")}</em>
</div>
) : null}
</div>
);
}}
/>
<div className="flex mt-2 justify-end">
<Button onClick={form.handleSubmit} disabled={stockOut}>
Remove
</Button>
</div>
</CardContent>
</form>
</LstCard>
);
}

View File

@@ -0,0 +1,19 @@
import Bookin from "./commands/Bookin";
import Relocate from "./commands/Relocate";
import RemoveAsNonReusable from "./commands/RemoveAsNonReusable";
export default function HelperPage() {
const url: string = window.location.host.split(":")[0];
return (
<div className="flex flex-wrap m-2 justify-center">
<div className="m-1">
<Bookin />
</div>
<div className="m-1">
<RemoveAsNonReusable />
</div>
<div className="m-1">{url === "localhost" && <Relocate />}</div>
</div>
);
}