Some checks failed
Build and Push LST Docker Image / docker (push) Failing after 40s
the test server wouldnt do the backup so waiting on this one
87 lines
2.0 KiB
TypeScript
87 lines
2.0 KiB
TypeScript
import XLSX from "xlsx";
|
|
import { excelDateStuff } from "../utils/excelToDate.utils.js";
|
|
import { postData } from "./logistics.dm.postData.js";
|
|
|
|
export const energizerForecast = async (data: any, user: any) => {
|
|
/**
|
|
* Post a standard forecast based on the standard template.
|
|
*/
|
|
const buffer = Buffer.from(data.buffer);
|
|
|
|
const workbook = XLSX.read(buffer, { type: "buffer" });
|
|
|
|
const sheet: any = workbook.Sheets.Sheet1;
|
|
// const range = XLSX.utils.decode_range(sheet["!ref"]);
|
|
|
|
// const headers = [
|
|
// "CustomerArticleNumber",
|
|
// "Quantity",
|
|
// "RequirementDate",
|
|
// "CustomerID",
|
|
// ];
|
|
|
|
// formatting the data
|
|
const rows = XLSX.utils.sheet_to_json(sheet, { header: 1 }) as any;
|
|
|
|
const posting: any = [];
|
|
const customerId = 44;
|
|
|
|
for (let i = 1; i < rows.length; i++) {
|
|
const row: any = rows[i];
|
|
const material = row[0];
|
|
|
|
if (material === undefined) continue;
|
|
for (let j = 1; j < row.length; j++) {
|
|
const qty = row[j];
|
|
|
|
if (qty && qty > 0) {
|
|
const requirementDate = rows[0][j]; // first row is dates
|
|
const date = Number.isNaN(requirementDate)
|
|
? new Date(requirementDate)
|
|
: excelDateStuff(requirementDate);
|
|
|
|
posting.push({
|
|
customerArticleNo: material,
|
|
quantity: qty,
|
|
requirementDate: date,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
//console.log(posting);
|
|
|
|
// the predefined data that will never change
|
|
const predefinedObject = {
|
|
receivingPlantId: process.env.PROD_PLANT_TOKEN ?? "test1",
|
|
documentName: `ForecastFromLST-${new Date(Date.now()).toLocaleString(
|
|
"en-US",
|
|
)}`,
|
|
sender: user.username || "lst-system",
|
|
customerId: customerId,
|
|
positions: [],
|
|
};
|
|
|
|
// add the new forecast to the predefined data
|
|
const updatedPredefinedObject = {
|
|
...predefinedObject,
|
|
positions: [...predefinedObject.positions, ...posting],
|
|
};
|
|
|
|
//post it
|
|
const forecastData: any = await postData(
|
|
{
|
|
type: "forecast",
|
|
endpoint: "/public/v1.0/DemandManagement/DELFOR",
|
|
data: updatedPredefinedObject as any,
|
|
},
|
|
user,
|
|
);
|
|
|
|
return {
|
|
success: forecastData.success,
|
|
message: forecastData.message,
|
|
data: forecastData.data,
|
|
};
|
|
};
|