fix(psi): correcrtions to account for the tiem offset in the psi

This commit is contained in:
2026-01-02 11:07:45 -06:00
parent 56934216f7
commit 1b59cdd3a4
7 changed files with 203 additions and 157 deletions

View File

@@ -1,10 +1,11 @@
import { addDays, format } from "date-fns";
import { formatInTimeZone } from "date-fns-tz";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { db } from "../../../../database/dbclient.js"; import { db } from "../../../../database/dbclient.js";
import { settings } from "../../../../database/schema/settings.js"; import { settings } from "../../../../database/schema/settings.js";
import { tryCatch } from "../../../globalUtils/tryCatch.js"; import { tryCatch } from "../../../globalUtils/tryCatch.js";
import { query } from "../../sqlServer/prodSqlServer.js"; import { query } from "../../sqlServer/prodSqlServer.js";
import { deliveryByDateRange } from "../../sqlServer/querys/dataMart/deleveryByDateRange.js"; import { deliveryByDateRange } from "../../sqlServer/querys/dataMart/deleveryByDateRange.js";
import { addDays, format } from "date-fns";
export const getDeliveryByDateRange = async (data: any | null) => { export const getDeliveryByDateRange = async (data: any | null) => {
// const { data: plantToken, error: plantError } = await tryCatch( // const { data: plantToken, error: plantError } = await tryCatch(
@@ -32,18 +33,12 @@ export const getDeliveryByDateRange = async (data: any | null) => {
if (data?.end) { if (data?.end) {
updatedQuery = updatedQuery.replaceAll("[endDate]", data.end[0]); updatedQuery = updatedQuery.replaceAll("[endDate]", data.end[0]);
} else { } else {
const defaultEndDate = format( const defaultEndDate = format(addDays(new Date(Date.now()), 5), "yyyy-M-d");
addDays(new Date(Date.now()), 5),
"yyyy-M-d"
);
updatedQuery = updatedQuery.replaceAll("[endDate]", defaultEndDate); updatedQuery = updatedQuery.replaceAll("[endDate]", defaultEndDate);
} }
try { try {
const res: any = await query( const res: any = await query(updatedQuery, "Get Delivery by date range");
updatedQuery,
"Get Delivery by date range"
);
deliverys = res.data; deliverys = res.data;
//console.log(res.data); //console.log(res.data);
} catch (error) { } catch (error) {
@@ -55,9 +50,9 @@ export const getDeliveryByDateRange = async (data: any | null) => {
}; };
} }
if (!data) { // if (!data) {
deliverys = deliverys.splice(1000, 0); // deliverys = deliverys.splice(1000, 0);
} // }
// add plant token in // add plant token in
// const pOrders = deliverys.map((item: any) => { // const pOrders = deliverys.map((item: any) => {
// // const dateCon = new Date(item.loadingDate).toLocaleString("en-US", { // // const dateCon = new Date(item.loadingDate).toLocaleString("en-US", {
@@ -80,5 +75,21 @@ export const getDeliveryByDateRange = async (data: any | null) => {
// deliveryDate: delDate, // deliveryDate: delDate,
// }; // };
// }); // });
return { success: true, message: "Current open orders", data: deliverys }; return {
success: true,
message: "Current open orders",
data: deliverys.map((i: any) => {
const orderDate = new Date(i.OrderDate);
const delDate = new Date(i.DeliveryDate);
const loadDate = new Date(i.LoadingDate);
return {
...i,
OrderDate: format(orderDate, "yyyy-MM-dd HH:mm"),
DeliveryDate: format(delDate, "yyyy-MM-dd HH:mm"),
LoadingDate: format(loadDate, "yyyy-MM-dd HH:mm"),
dbDate: i.DeliveryDate,
};
}),
};
}; };

View File

@@ -1,11 +1,11 @@
import { addDays, format } from "date-fns";
import { query } from "../../sqlServer/prodSqlServer.js"; import { query } from "../../sqlServer/prodSqlServer.js";
import { deliveryByDateRangeAndAv } from "../../sqlServer/querys/dataMart/deleveryByDateRange.js"; import { deliveryByDateRangeAndAv } from "../../sqlServer/querys/dataMart/deleveryByDateRange.js";
import { addDays, format } from "date-fns";
export const getDeliveryByDateRangeAndAv = async ( export const getDeliveryByDateRangeAndAv = async (
avs: string, avs: string,
startDate: string, startDate: string,
endDate: string endDate: string,
) => { ) => {
// const { data: plantToken, error: plantError } = await tryCatch( // const { data: plantToken, error: plantError } = await tryCatch(
// db.select().from(settings).where(eq(settings.name, "plantToken")) // db.select().from(settings).where(eq(settings.name, "plantToken"))
@@ -32,17 +32,14 @@ export const getDeliveryByDateRangeAndAv = async (
if (endDate) { if (endDate) {
updatedQuery = updatedQuery.replaceAll("[endDate]", endDate); updatedQuery = updatedQuery.replaceAll("[endDate]", endDate);
} else { } else {
const defaultEndDate = format( const defaultEndDate = format(addDays(new Date(Date.now()), 5), "yyyy-M-d");
addDays(new Date(Date.now()), 5),
"yyyy-M-d"
);
updatedQuery = updatedQuery.replaceAll("[endDate]", defaultEndDate); updatedQuery = updatedQuery.replaceAll("[endDate]", defaultEndDate);
} }
try { try {
const res: any = await query( const res: any = await query(
updatedQuery.replace("[articles]", avs), updatedQuery.replace("[articles]", avs),
"Get Delivery by date range" "Get Delivery by date range",
); );
deliverys = res.data; deliverys = res.data;
//console.log(res.data); //console.log(res.data);
@@ -80,5 +77,21 @@ export const getDeliveryByDateRangeAndAv = async (
// deliveryDate: delDate, // deliveryDate: delDate,
// }; // };
// }); // });
return { success: true, message: "Current open orders", data: deliverys }; return {
success: true,
message: "Current open orders",
data: deliverys.map((i: any) => {
const orderDate = new Date(i.OrderDate);
const delDate = new Date(i.DeliveryDate);
const loadDate = new Date(i.LoadingDate);
return {
...i,
OrderDate: format(orderDate, "yyyy-MM-dd HH:mm"),
DeliveryDate: format(delDate, "yyyy-MM-dd HH:mm"),
LoadingDate: format(loadDate, "yyyy-MM-dd HH:mm"),
dbDate: i.DeliveryDate,
};
}),
};
}; };

View File

@@ -1,3 +1,4 @@
import { format } from "date-fns-tz/format";
import { tryCatch } from "../../../globalUtils/tryCatch.js"; import { tryCatch } from "../../../globalUtils/tryCatch.js";
import { createLog } from "../../logger/logger.js"; import { createLog } from "../../logger/logger.js";
import { query } from "../../sqlServer/prodSqlServer.js"; import { query } from "../../sqlServer/prodSqlServer.js";
@@ -37,6 +38,15 @@ export const getGetPSIForecastData = async (customer: string) => {
return { return {
success: true, success: true,
message: "PSI forecast Data", message: "PSI forecast Data",
data: articles, data: articles.map((i: any) => {
const requirementDate = new Date(i.requirementDate);
return {
...i,
requirementDate: format(requirementDate, "yyyy-MM-dd"),
dbDate: i.requirementDate,
};
}),
}; };
}; };

View File

@@ -1,4 +1,4 @@
import { addDays, addHours, isAfter, parse } from "date-fns"; import { addDays, addHours, isAfter, parse, subDays } from "date-fns";
import { format } from "date-fns-tz"; import { format } from "date-fns-tz";
import XLSX from "xlsx"; import XLSX from "xlsx";
import { db } from "../../../../../../../database/dbclient.js"; import { db } from "../../../../../../../database/dbclient.js";
@@ -94,6 +94,10 @@ export const abbottOrders = async (data: any, user: any) => {
}; };
const oOrders: any = openOrders; const oOrders: any = openOrders;
//console.log(orderData); //console.log(orderData);
function trimAll(str: string) {
return str.replace(/\s+/g, "");
}
let correctedOrders: any = orderData let correctedOrders: any = orderData
.filter( .filter(
(o: any) => (o: any) =>
@@ -103,9 +107,9 @@ export const abbottOrders = async (data: any, user: any) => {
.map((o: any) => ({ .map((o: any) => ({
date: excelDateStuff(o.date, o.time), date: excelDateStuff(o.date, o.time),
po: po:
o.newton8oz.replace(/\s+/g, "") !== "" trimAll(o.newton8oz) !== ""
? o.newton8oz.replace(/\s+/g, "") ? trimAll(o.newton8oz)
: o.newton10oz.replace(/\s+/g, ""), : o.newton10oz.replace(/[\s\u00A0]+/g, ""),
customerArticlenumber: customerArticlenumber:
o.newton8oz != "" o.newton8oz != ""
? a.filter((a: any) => a.av === 118)[0].CustomerArticleNumber ? a.filter((a: any) => a.av === 118)[0].CustomerArticleNumber
@@ -116,24 +120,29 @@ export const abbottOrders = async (data: any, user: any) => {
: a.filter((a: any) => a.av === 120)[0].totalTruckLoad, : a.filter((a: any) => a.av === 120)[0].totalTruckLoad,
})); }));
//console.log(correctedOrders);
// now we want to make sure we only correct orders that or after now // now we want to make sure we only correct orders that or after now
correctedOrders = correctedOrders.filter((o: any) => { correctedOrders = correctedOrders.filter((o: any) => {
const parsedDate = parse(o.date, "M/d/yyyy, h:mm:ss a", new Date()); const parsedDate = parse(o.date, "M/d/yyyy, h:mm:ss a", new Date());
return isAfter(o.date, new Date().toISOString()); return isAfter(new Date(o.date), new Date().toISOString());
}); });
//console.log(correctedOrders);
// last map to remove orders that have already been started // last map to remove orders that have already been started
// correctedOrders = correctedOrders.filter((oo: any) => // correctedOrders = correctedOrders.filter((oo: any) =>
// oOrders.some((o: any) => o.CustomerOrderNumber === oo.po) // oOrders.some((o: any) => o.CustomerOrderNumber === oo.po)
// ); // );
let postedOrders: any = []; let postedOrders: any = [];
const filterOrders: any = correctedOrders; const filterOrders: any = correctedOrders;
//console.log(filterOrders);
filterOrders.forEach((oo: any) => { filterOrders.forEach((oo: any) => {
const isMatch = openOrders.some( const isMatch = openOrders.some(
(o: any) => String(o.po).trim() === String(oo.po).trim(), (o: any) => String(o.po).trim() === String(oo.po).trim(),
); );
//console.log(isMatch, oo.po);
if (!isMatch) { if (!isMatch) {
//console.log(`ok to update: ${oo.po}`); console.log(`ok to update: ${oo.po}`);
// oo = { // oo = {
// ...oo, // ...oo,
@@ -141,7 +150,7 @@ export const abbottOrders = async (data: any, user: any) => {
// }; // };
postedOrders.push(oo); postedOrders.push(oo);
} else { } else {
// console.log(`Not valid order to update: ${oo.po}`); //console.log(`Not valid order to update: ${oo.po}`);
//console.log(oo) //console.log(oo)
} }
}); });
@@ -159,7 +168,7 @@ export const abbottOrders = async (data: any, user: any) => {
deliveryAddressId: 8, deliveryAddressId: 8,
customerArticleNo: o.customerArticlenumber, customerArticleNo: o.customerArticlenumber,
quantity: o.qty, quantity: o.qty,
deliveryDate: addHours(format(o.date, "M/d/yyyy HH:mm"), 1), //addHours(addDays(o.date, 1), 1), // adding this in so we can over come the constant 1 day behind thing as a work around deliveryDate: format(o.date, "M/d/yyyy HH:mm"), // addHours(format(o.date, "M/d/yyyy HH:mm"), 1), //addHours(addDays(o.date, 1), 1), // adding this in so we can over come the constant 1 day behind thing as a work around
customerLineItemNo: 1, // this is how it is currently sent over from abbott customerLineItemNo: 1, // this is how it is currently sent over from abbott
customerReleaseNo: 1, // same as above customerReleaseNo: 1, // same as above
}, },

View File

@@ -89,9 +89,12 @@ r.[ArticleHumanReadableId]
,ea.JournalNummer ,ea.JournalNummer
,[ReleaseConfirmationState] ,[ReleaseConfirmationState]
,[PlanningState] ,[PlanningState]
,format(r.[OrderDate], 'yyyy-MM-dd HH:mm') as OrderDate --,format(r.[OrderDate], 'yyyy-MM-dd HH:mm') as OrderDate
,FORMAT(r.[DeliveryDate], 'yyyy-MM-dd HH:mm') as DeliveryDate ,r.[OrderDate]
,FORMAT(r.[LoadingDate], 'yyyy-MM-dd HH:mm') as LoadingDate --,FORMAT(r.[DeliveryDate], 'yyyy-MM-dd HH:mm') as DeliveryDate
,r.[DeliveryDate]
--,FORMAT(r.[LoadingDate], 'yyyy-MM-dd HH:mm') as LoadingDate
,r.[LoadingDate]
,[Quantity] ,[Quantity]
,[DeliveredQuantity] ,[DeliveredQuantity]
,r.[AdditionalInformation1] ,r.[AdditionalInformation1]

View File

@@ -1,5 +1,5 @@
export const orderState = ` export const orderState = `
SELECT top(10000) SELECT
CustomerOrderNumber CustomerOrderNumber
,r.CustomerReleaseNumber ,r.CustomerReleaseNumber
, OrderState , OrderState
@@ -21,6 +21,6 @@ CustomerOrderNumber
where where
--h.CreatedByEdi = 1 --h.CreatedByEdi = 1
r.ReleaseState > 0 r.ReleaseState >= 1
--and CustomerOrderNumber in ( '2358392') --and CustomerOrderNumber in ( '2358392')
`; `;

View File

@@ -1,5 +1,5 @@
export const forecastData = ` export const forecastData = `
SELECT format(cast(RequirementDate as date),'M/d/yyyy') as requirementDate SELECT RequirementDate as requirementDate
,ArticleHumanReadableId ,ArticleHumanReadableId
,CustomerArticleNumber ,CustomerArticleNumber
,ArticleDescription ,ArticleDescription