From 7a9ea16f484021510d46f341d8a3f2cf2f9c0a2a Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Thu, 11 Dec 2025 14:42:22 -0600 Subject: [PATCH] fix(dm): energizer forecast to correct the date and qty push over --- .../dm/forecast/mappings/energizer.ts | 147 +++++++++--------- 1 file changed, 77 insertions(+), 70 deletions(-) diff --git a/lstV2/server/services/logistics/controller/dm/forecast/mappings/energizer.ts b/lstV2/server/services/logistics/controller/dm/forecast/mappings/energizer.ts index 282516f..804e7e6 100644 --- a/lstV2/server/services/logistics/controller/dm/forecast/mappings/energizer.ts +++ b/lstV2/server/services/logistics/controller/dm/forecast/mappings/energizer.ts @@ -1,95 +1,102 @@ +import { addDays } from "date-fns"; +import XLSX from "xlsx"; import { db } from "../../../../../../../database/dbclient.js"; import { settings } from "../../../../../../../database/schema/settings.js"; import { tryCatch } from "../../../../../../globalUtils/tryCatch.js"; -import XLSX from "xlsx"; -import { postForecast } from "../postForecast.js"; +import { createLog } from "../../../../../logger/logger.js"; +import { sendEmail } from "../../../../../notifications/controller/sendMail.js"; import { query } from "../../../../../sqlServer/prodSqlServer.js"; import { activeArticle } from "../../../../../sqlServer/querys/dataMart/article.js"; -import { addDays } from "date-fns"; -import { sendEmail } from "../../../../../notifications/controller/sendMail.js"; -import { createLog } from "../../../../../logger/logger.js"; +import { excelDateStuff } from "../../../../utils/excelDateStuff.js"; +import { postForecast } from "../postForecast.js"; export const energizerForecast = async (data: any, user: any) => { - /** - * Post a standard forecast based on the standard template. - */ + /** + * Post a standard forecast based on the standard template. + */ - const { data: s, error: e } = await tryCatch(db.select().from(settings)); + const { data: s, error: e } = await tryCatch(db.select().from(settings)); - if (e) { - return { - success: false, - message: `Error getting settings`, - data: e, - }; - } + if (e) { + return { + success: false, + message: `Error getting settings`, + data: e, + }; + } - const plantToken = s.filter((s) => s.name === "plantToken"); + const plantToken = s.filter((s) => s.name === "plantToken"); - const arrayBuffer = await data.arrayBuffer(); - const buffer = Buffer.from(arrayBuffer); + const arrayBuffer = await data.arrayBuffer(); + const buffer = Buffer.from(arrayBuffer); - const workbook = XLSX.read(buffer, { type: "buffer" }); + const workbook = XLSX.read(buffer, { type: "buffer" }); - const sheet: any = workbook.Sheets["Sheet1"]; - const range = XLSX.utils.decode_range(sheet["!ref"]); + const sheet: any = workbook.Sheets["Sheet1"]; + const range = XLSX.utils.decode_range(sheet["!ref"]); - const headers = [ - "CustomerArticleNumber", - "Quantity", - "RequirementDate", - "CustomerID", - ]; + const headers = [ + "CustomerArticleNumber", + "Quantity", + "RequirementDate", + "CustomerID", + ]; - // formatting the data - const rows = XLSX.utils.sheet_to_json(sheet, { header: 1 }) as any; + // formatting the data + const rows = XLSX.utils.sheet_to_json(sheet, { header: 1 }) as any; - const posting: any = []; - const customerId = 44; + const posting: any = []; + const customerId = 44; - for (let i = 1; i < rows.length; i++) { - const row: any = rows[i]; - const material = row[0]; + 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 (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 + if (qty && qty > 0) { + const requirementDate = rows[0][j]; // first row is dates + const date = isNaN(requirementDate) + ? new Date(requirementDate) + : excelDateStuff(requirementDate); - posting.push({ - customerArticleNo: material, - quantity: qty, - requirementDate: new Date(requirementDate), - }); - } - } - } + console.log(isNaN(requirementDate), requirementDate, date); + posting.push({ + customerArticleNo: material, + quantity: qty, + requirementDate: date, + }); + } + } + } - // the predefined data that will never change - const predefinedObject = { - receivingPlantId: plantToken[0].value, - documentName: `ForecastFromLST-${new Date(Date.now()).toLocaleString( - "en-US" - )}`, - sender: user.username || "lst-system", - customerId: customerId, - positions: [], - }; + //console.log(posting); - // add the new forecast to the predefined data - let updatedPredefinedObject = { - ...predefinedObject, - positions: [...predefinedObject.positions, ...posting], - }; + // the predefined data that will never change + const predefinedObject = { + receivingPlantId: plantToken[0].value, + documentName: `ForecastFromLST-${new Date(Date.now()).toLocaleString( + "en-US", + )}`, + sender: user.username || "lst-system", + customerId: customerId, + positions: [], + }; - //post it - const forecastData: any = await postForecast(updatedPredefinedObject, user); + // add the new forecast to the predefined data + let updatedPredefinedObject = { + ...predefinedObject, + positions: [...predefinedObject.positions, ...posting], + }; - return { - success: forecastData.success, - message: forecastData.message, - data: forecastData.data, - }; + //post it + const forecastData: any = await postForecast(updatedPredefinedObject, user); + + return { + success: forecastData.success, + message: forecastData.message, + data: forecastData.data, + }; };