feat(eom): all endpoints created for the eom template to run in all plants

This commit is contained in:
2025-09-30 19:55:35 -05:00
parent a7f45abfeb
commit 9a14f250b6
25 changed files with 872 additions and 33 deletions

View File

@@ -0,0 +1,104 @@
import sql from "mssql";
import { tryCatch } from "../../globalUtils/tryCatch.js";
import { db } from "../../../database/dbclient.js";
import { settings } from "../../../database/schema/settings.js";
import { eq } from "drizzle-orm";
import { format } from "date-fns-tz";
const username = "gpviewer";
const password = "gp$$ViewOnly!";
const sqlGPConfig = {
server: "USMCD1VMS011",
database: `ALPLA`,
user: username,
password: password,
options: {
encrypt: true,
trustServerCertificate: true,
},
requestTimeout: 90000,
};
type GPCheck = {
startDate: string;
endDate: string;
gpCode: string;
};
export const runGPQuery = async (gpCheck: GPCheck) => {
let pool2: sql.ConnectionPool | null = null;
try {
// Create a brand-new pool, not touching the "global" one
pool2 = new sql.ConnectionPool(sqlGPConfig);
await pool2.connect();
const query = `
select * from (
select
case when x.POPRCTNM is null then p.POPRCTNM else p.POPRCTNM end as RCT_Num,
PONUMBER PO,
p.VENDORID Supplier,
ITEMNMBR Item,
QTYSHPPD shipped,
UOFM Type,
TRXLOCTN Location,
case when CONVERT(DATE, x.receiptdate) is null then convert(date, p.DATERECD) else CONVERT(DATE, x.receiptdate) end as Date_Recived
from ALPLA.dbo.pop10500 (nolock) as p
left join
ALPLA.dbo.POP10300 as x on p.POPRCTNM = x.POPRCTNM
WHERE TRXLOCTN LIKE '[gpCode]%' and p.POPTYPE = 1) a
where Date_Recived BETWEEN '[startDate]' AND '[endDate]'
`;
const { data: s, error: se } = (await tryCatch(
db.select().from(settings).where(eq(settings.name, "plantToken"))
)) as any;
if (se) {
console.log("Error getting articles");
return se;
}
const result = await pool2
.request()
.query(
query
.replace("[startDate]", gpCheck.startDate)
.replace("[endDate]", gpCheck.endDate)
.replace("[gpCode]", gpCheck.gpCode)
);
return {
success: true,
message: "GP data",
data: result.recordset.map((n: any) => {
return {
plantToken: s[0].value,
...n,
RCT_Num: n.RCT_Num.trim(),
PO: n.PO.trim(),
Supplier: n.Supplier.trim(),
Item: n.Item.trim(),
article:
n.Item.split("-").length > 1
? n.Item.split("-")[1].trim()
: "No article",
Type: n.Type.trim(),
Location: n.Location.trim(),
Date_Recived: format(n.Date_Recived, "M/d/yyyy"),
};
}),
};
} catch (error) {
console.log(error);
return {
success: false,
message: "Error Getting GP data",
data: error,
};
} finally {
if (pool2) await pool2.close(); // Always close the pool
}
};

View File

@@ -0,0 +1,7 @@
export const consumptionCheck = `
SELECT IdArtikelvarianten AS AV,
Menge AS Quantity,
CONVERT(DATE, BuchDatum) AS Prod_Date
FROM alplaprod_test1.dbo.T_LBW (nolock)
WHERE BuchDatum BETWEEN '[startDate]' AND '[endDate]' ORDER BY BuchDatum DESC
`;

View File

@@ -0,0 +1,42 @@
export const purchased = `
use AlplaPROD_test1
declare @start_date nvarchar(30) = '[startDate] '
declare @end_date nvarchar(30) = '[endDate] '
select T_Wareneingaenge.IdBestellung AS Purchase_order,
T_Adressen.IdAdressen,
T_Adressen.Bezeichnung,
T_Wareneingaenge.IdArtikelVarianten AS AV,
V_Artikel.Alias,
x.Bemerkung AS Remark,
T_Wareneingaenge.Bemerkung AS Purchase_Remark,
x.Add_User,
CONVERT(DATE, x.Add_Date) AS Received_Date,
x.IdWareneingangPlanung,
T_Wareneingaenge.SollMenge As Ordered_QTY,
x.EntladeMenge As Received_QTY,
case when T_Adressen.Bezeichnung LIKE '%Alpla%' Then 'AlplaPlant' Else 'Supplier' End AS
Supplier,
x.Typ as incoming_goods_type
from dbo.T_WareneingangPlanungen (nolock) as x
join
dbo.T_Wareneingaenge (nolock) on
x.IdWareneingang=
dbo.T_Wareneingaenge.IdWareneingang
join
dbo.V_Artikel (nolock) on
dbo.T_Wareneingaenge.IdArtikelVarianten=
dbo.V_Artikel.IdArtikelvarianten
join
dbo.T_Adressen (nolock) on dbo.T_Wareneingaenge.IdLieferantAdresse =
dbo.T_Adressen.IdAdressen
where x.add_date between @start_date + (select top(1) CONVERT(char(8), StartDate, 108) as startTime from [test1_AlplaPROD2.0_Read].masterData.ShiftDefinition (nolock) where TeamNumber = 1)
AND @end_date + (select top(1) CONVERT(char(8), StartDate, 108) as startTime from [test1_AlplaPROD2.0_Read].masterData.ShiftDefinition (nolock) where TeamNumber = 1)
order by x.add_date desc
`;

View File

@@ -0,0 +1,15 @@
export const regrindCheck = `
select IdArtikelVarianten,
ArtikelVariantenAlias,
IdRezeptur,
Menge,
IdBuchungsGrund,
Buchungsdatum,
ProduktionsLos,
IdReinheit,
ReinheitBez, HerkunftBez
from alplaprod_test1.[dbo].[V_AbfallLagerBuchungen] (nolock)
where Buchungsdatum between '[startDate] ' + (select top(1) CONVERT(char(8), StartDate, 108) as startTime from [test1_AlplaPROD2.0_Read].masterData.ShiftDefinition (nolock) where TeamNumber = 1)
and '[endDate] ' + (select top(1) CONVERT(char(8), StartDate, 108) as startTime from [test1_AlplaPROD2.0_Read].masterData.ShiftDefinition (nolock) where TeamNumber = 1)
and IdBuchungsGrund in (140, 240) and BuchungsTyp = 1
`;

View File

@@ -0,0 +1,17 @@
export const soldOutItems = `
select IdArtikelVarianten AS AV,
ArtikelVariantenAlias AS AVDescription,
convert(date,AbrufLadeDatum,23) As DeliveryDate,
idlieferadresse AS DeliveryAddress,
LieferAdressBez,
AuftragsNummer AS PO_Number,
IdAuftragsPosition AS LineITEM,
IdAuftragsAbruf AS ReleaseNumber,
AbrufMengeVPK AS PalletsRequested,
AbrufMenge AS PiecesRequested,
GelieferteMengeVPK AS DeliveredPallets,
GelieferteMenge AS DeliveredQTY,
case when LieferAdressBez Like '%alpla%' Then 'AlplaPlant' ELSE 'Customer' End as CustomerType
from alplaprod_test1.dbo.V_TrackerAuftragsAbrufe (nolock)
where AbrufLadeDatum between '[startDate]' and '[endDate]'`;