feat(logistics): added in return material by lane name and gets lane id
This commit is contained in:
101
server/services/logistics/controller/returnMaterial.ts
Normal file
101
server/services/logistics/controller/returnMaterial.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
import { ConsoleLogWriter } from "drizzle-orm";
|
||||
import { prodEndpointCreation } from "../../../globalUtils/createUrl.js";
|
||||
import { createLog } from "../../logger/logger.js";
|
||||
import { query } from "../../sqlServer/prodSqlServer.js";
|
||||
import { labelData } from "../../sqlServer/querys/materialHelpers/labelInfo.js";
|
||||
import axios from "axios";
|
||||
import { laneInfo } from "../../sqlServer/querys/materialHelpers/laneInfo.js";
|
||||
import { tryCatch } from "../../../globalUtils/tryCatch.js";
|
||||
|
||||
type Data = {
|
||||
runningNr: string;
|
||||
laneName: string;
|
||||
};
|
||||
export const returnMaterial = async (data: Data, prod: any) => {
|
||||
const { runningNr, laneName } = data;
|
||||
// replace the rn
|
||||
const rnReplace = labelData.replaceAll("[rn]", runningNr);
|
||||
|
||||
// get the lane id by name
|
||||
const laneQuery = laneInfo.replaceAll("[laneName]", laneName);
|
||||
let barcode;
|
||||
// get the barcode from the running number
|
||||
try {
|
||||
barcode = await query(rnReplace, "labelData");
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
createLog(
|
||||
"error",
|
||||
prod.user.username,
|
||||
"logistics",
|
||||
`Error getting barcode: ${error}`
|
||||
);
|
||||
}
|
||||
|
||||
const { data: laneData, error: laneError } = await tryCatch(
|
||||
query(laneQuery, "laneInfo")
|
||||
);
|
||||
|
||||
if (laneError) {
|
||||
return {
|
||||
success: false,
|
||||
message:
|
||||
"The lane you entered is either deactivated or dose not exist.",
|
||||
laneError,
|
||||
};
|
||||
}
|
||||
|
||||
if (laneData) {
|
||||
return {
|
||||
success: false,
|
||||
message:
|
||||
"The lane you entered is either deactivated or dose not exist.",
|
||||
};
|
||||
}
|
||||
|
||||
if (laneData.length === 0) {
|
||||
return {
|
||||
success: false,
|
||||
message:
|
||||
"The lane you entered is either deactivated or dose not exist.",
|
||||
};
|
||||
}
|
||||
|
||||
if (barcode.length === 0) {
|
||||
return {
|
||||
success: false,
|
||||
message: "The running number you've is not in stock.",
|
||||
};
|
||||
//throw Error("The provided runningNr is not in stock");
|
||||
}
|
||||
// create the url to post
|
||||
const url = await prodEndpointCreation(
|
||||
"/public/v1.0/IssueMaterial/ReturnPartiallyConsumedManualMaterial"
|
||||
);
|
||||
|
||||
const returnSomething = {
|
||||
laneId: laneData[0]?.laneID,
|
||||
barcode: barcode[0]?.barcode,
|
||||
};
|
||||
|
||||
try {
|
||||
const results = await axios.post(url, returnSomething, {
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
Authorization: `Basic ${prod.user.prod}`,
|
||||
},
|
||||
});
|
||||
//console.log(results);
|
||||
return {
|
||||
success: true,
|
||||
message: "Material was returned",
|
||||
status: results.status,
|
||||
};
|
||||
} catch (error: any) {
|
||||
return {
|
||||
success: false,
|
||||
status: 200,
|
||||
message: error.response?.data.errors[0].message,
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user