151 lines
5.0 KiB
TypeScript
151 lines
5.0 KiB
TypeScript
import { eq, gte, lt, sql } from "drizzle-orm";
|
|
import { db } from "../../../../../database/dbclient.js";
|
|
import { printerData } from "../../../../../database/schema/printers.js";
|
|
import { tryCatch } from "../../../../globalUtils/tryCatch.js";
|
|
import { createLog } from "../../../logger/logger.js";
|
|
import { prodEndpointCreation } from "../../../../globalUtils/createUrl.js";
|
|
import { settings } from "../../../../../database/schema/settings.js";
|
|
import { lstAuth } from "../../../../index.js";
|
|
import axios from "axios";
|
|
import { prodlabels } from "../../../../../database/schema/prodLabels.js";
|
|
import { addDays } from "date-fns";
|
|
|
|
export const createLabel = async (data: any, userPrinted: any) => {
|
|
createLog("info", "labeling", "ocp", `Label being created`);
|
|
|
|
const { data: printer, error: printerError } = await tryCatch(
|
|
db
|
|
.select()
|
|
.from(printerData)
|
|
.where(eq(printerData.humanReadableId, data.printerID))
|
|
);
|
|
const { data: settingsData, error: settingsError } = await tryCatch(
|
|
db.select().from(settings)
|
|
);
|
|
if (printerError) {
|
|
return {
|
|
success: false,
|
|
message: "There was an error getting the printer.",
|
|
printerError,
|
|
};
|
|
}
|
|
|
|
if (settingsError) {
|
|
return {
|
|
success: false,
|
|
message: "There was an error getting the settings.",
|
|
settingsError,
|
|
};
|
|
}
|
|
|
|
const url = await prodEndpointCreation(
|
|
"/public/v1.0/Warehousing/GenerateAndPrintLabelExtended"
|
|
);
|
|
const plantToken = settingsData.filter((n) => n.name === "plantToken");
|
|
const newLabel = {
|
|
scannerId: 99,
|
|
lotNr: data.lot,
|
|
machineId: data.machineID,
|
|
printerId: data.printerID,
|
|
//layoutId: cartonCustomers.includes(data.CustomerId.toString()) ? data.cartonLabel : data.palletLabel,
|
|
layoutId:
|
|
plantToken[0].value === "usksc1"
|
|
? data.cartonLabel
|
|
: data.palletLabel,
|
|
//numberOfCopies: cartonCustomers.includes(data.CustomerId.toString()) ? data.cartonCopies : data.pallerCopies,
|
|
numberOfCopies:
|
|
plantToken[0].value === "usksc1"
|
|
? data.cartonCopies
|
|
: data.pallerCopies,
|
|
};
|
|
|
|
// create the label
|
|
// create the label with the data we have
|
|
try {
|
|
const res = await axios.post(url, newLabel, {
|
|
headers: {
|
|
Authorization: `Basic ${lstAuth}`,
|
|
"Content-Type": "application/json",
|
|
},
|
|
});
|
|
|
|
// error handling
|
|
if (res.data.Result != 0) {
|
|
createLog(
|
|
"error",
|
|
"labeling",
|
|
"ocp",
|
|
`${data.MachineDescription}, has an error while printing: Error: ${res.data.Message}.`
|
|
);
|
|
return {
|
|
success: false,
|
|
mesasge: `${data.MachineDescription}, has an error while printing`,
|
|
data: res.data,
|
|
};
|
|
}
|
|
|
|
// save the data to lst db (only saved for x time see the db clean up functions)
|
|
let newlabel = res.data;
|
|
|
|
try {
|
|
const insertLabel = await db
|
|
.insert(prodlabels)
|
|
.values({
|
|
printerID: parseInt(printer[0]?.humanReadableId!, 10),
|
|
runningNr: parseInt(newlabel.SSCC.slice(10, -1)),
|
|
printerName: printer[0].name.toLowerCase(),
|
|
line: data.MachineLocation,
|
|
status: "printed",
|
|
add_user: userPrinted || "LST_System",
|
|
})
|
|
.returning({ runningNr: prodlabels.runningNr });
|
|
|
|
createLog(
|
|
"info",
|
|
"labeling",
|
|
"ocp",
|
|
`${insertLabel[0]?.runningNr} was just inserted into the db.`
|
|
);
|
|
} catch (error) {
|
|
createLog(
|
|
"error",
|
|
"labeling",
|
|
"ocp",
|
|
`Error creating new runningNumber in the DB.`
|
|
);
|
|
}
|
|
|
|
createLog(
|
|
"info",
|
|
"labeling",
|
|
"ocp",
|
|
`New label was created for: ${
|
|
data.MachineDescription
|
|
}, Running number: ${parseInt(newlabel.SSCC.slice(10, -1))}`
|
|
);
|
|
|
|
const returnData = {
|
|
...newlabel,
|
|
printer,
|
|
};
|
|
|
|
// check if we can remove labels or not
|
|
//deleteLabels();
|
|
return { success: true, message: "Label created", data: returnData }; // returning label data to be able to book in if active
|
|
} catch (error) {
|
|
createLog(
|
|
"info",
|
|
"labeling",
|
|
"ocp",
|
|
`There was an error creating the label for, ${printer[0].name}, "Error: ${error}`
|
|
);
|
|
return {
|
|
success: false,
|
|
message: "There was an error creating the label",
|
|
data: error,
|
|
};
|
|
}
|
|
};
|
|
|
|
// run the label delete process we want to delate them older than 90 days right now
|