Files
lstV2/server/services/logistics/controller/consumeMaterial.ts

55 lines
1.8 KiB
TypeScript

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";
type Data = {
runningNr: string;
lotNum: number;
};
export const consumeMaterial = async (data: Data, prod: any) => {
const {runningNr, lotNum} = data;
// replace the rn
const rnReplace = labelData.replaceAll("[rn]", runningNr);
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}`);
}
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/ConsumeNonPreparedManualMaterial");
const consumeSomething = {
productionLot: lotNum,
barcode: barcode[0]?.barcode,
};
try {
const results = await axios.post(url, consumeSomething, {
headers: {
"Content-Type": "application/json",
Authorization: `Basic ${prod.user.prod}`,
},
});
//console.log(results);
return {success: true, message: "Material was consumed", status: results.status};
} catch (error: any) {
return {success: false, status: 200, message: error.response?.data.errors[0].message};
}
};