feat(datamart): delivery by date ranged added in, includes inhouse
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import { eq } from "drizzle-orm";
|
||||
import { db } from "../../../../database/dbclient.js";
|
||||
import { settings } from "../../../../database/schema/settings.js";
|
||||
import { tryCatch } from "../../../globalUtils/tryCatch.js";
|
||||
import { query } from "../../sqlServer/prodSqlServer.js";
|
||||
import { deliveryByDateRange } from "../../sqlServer/querys/dataMart/deleveryByDateRange.js";
|
||||
import { addDays, format } from "date-fns";
|
||||
|
||||
export const getDeliveryByDateRange = async (data: any | null) => {
|
||||
const { data: plantToken, error: plantError } = await tryCatch(
|
||||
db.select().from(settings).where(eq(settings.name, "plantToken"))
|
||||
);
|
||||
if (plantError) {
|
||||
return {
|
||||
success: false,
|
||||
message: "Error getting Settings",
|
||||
data: plantError,
|
||||
};
|
||||
}
|
||||
let deliverys = [];
|
||||
|
||||
let updatedQuery = deliveryByDateRange;
|
||||
|
||||
// start days can be sent over
|
||||
if (data?.start) {
|
||||
updatedQuery = updatedQuery.replaceAll("[startDate]", data.start[0]);
|
||||
} else {
|
||||
updatedQuery = updatedQuery.replaceAll("[startDate]", "1990-1-1");
|
||||
}
|
||||
|
||||
// end days can be sent over
|
||||
if (data?.end) {
|
||||
updatedQuery = updatedQuery.replaceAll("[endDate]", data.end[0]);
|
||||
} else {
|
||||
const defaultEndDate = format(
|
||||
addDays(new Date(Date.now()), 5),
|
||||
"yyyy-M-d"
|
||||
);
|
||||
updatedQuery = updatedQuery.replaceAll("[endDate]", defaultEndDate);
|
||||
}
|
||||
|
||||
try {
|
||||
deliverys = await query(updatedQuery, "Get Delivery by date range");
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
return {
|
||||
success: false,
|
||||
message: "All Deliveries within the range.",
|
||||
data: error,
|
||||
};
|
||||
}
|
||||
|
||||
if (!data) {
|
||||
deliverys = deliverys.splice(1000, 0);
|
||||
}
|
||||
// add plant token in
|
||||
// const pOrders = deliverys.map((item: any) => {
|
||||
// // const dateCon = new Date(item.loadingDate).toLocaleString("en-US", {
|
||||
// // month: "numeric",
|
||||
// // day: "numeric",
|
||||
// // year: "numeric",
|
||||
// // hour: "2-digit",
|
||||
// // minute: "2-digit",
|
||||
// // hour12: false,
|
||||
// // });
|
||||
|
||||
// //const dateCon = new Date(item.loadingDate).toISOString().replace("T", " ").split(".")[0];
|
||||
// const dateCon = new Date(item.loadingDate).toISOString().split("T")[0];
|
||||
// //const delDate = new Date(item.deliveryDate).toISOString().replace("T", " ").split(".")[0];
|
||||
// const delDate = new Date(item.deliveryDate).toISOString().split("T")[0];
|
||||
// return {
|
||||
// plantToken: plantToken[0].value,
|
||||
// ...item,
|
||||
// loadingDate: dateCon,
|
||||
// deliveryDate: delDate,
|
||||
// };
|
||||
// });
|
||||
return { success: true, message: "Current open orders", data: deliverys };
|
||||
};
|
||||
@@ -4,6 +4,7 @@ import getArticles from "./route/getActiveArticles.js";
|
||||
import currentInv from "./route/getInventory.js";
|
||||
import getCustomerInv from "./route/getCustomerInv.js";
|
||||
import getOpenOrders from "./route/getOpenOrders.js";
|
||||
import getDeliveryByDate from "./route/getDeliveryDateByRange.js";
|
||||
|
||||
const app = new OpenAPIHono();
|
||||
|
||||
@@ -13,6 +14,7 @@ const routes = [
|
||||
currentInv,
|
||||
getCustomerInv,
|
||||
getOpenOrders,
|
||||
getDeliveryByDate,
|
||||
] as const;
|
||||
|
||||
const appRoutes = routes.forEach((route) => {
|
||||
|
||||
@@ -78,6 +78,14 @@ const current: any = [
|
||||
"Returns all siloadjustments in selected date range IE: 1/1/2025 to 1/31/2025",
|
||||
criteria: "startDate,endDate", // uncomment this out once the improt process can be faster
|
||||
},
|
||||
{
|
||||
name: "Delivery by date trange",
|
||||
endpoint: "/api/datamart/deliverybydaterange",
|
||||
// description: "Returns all inventory, by default excludes running numebrs, also excludes inv locations.",
|
||||
description:
|
||||
"Returns all Deliverys in selected date range IE: 1/1/2025 to 1/31/2025",
|
||||
criteria: "start,end", // uncomment this out once the improt process can be faster
|
||||
},
|
||||
];
|
||||
|
||||
app.openapi(
|
||||
|
||||
53
server/services/dataMart/route/getDeliveryDateByRange.ts
Normal file
53
server/services/dataMart/route/getDeliveryDateByRange.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi";
|
||||
import { responses } from "../../../globalUtils/routeDefs/responses.js";
|
||||
import { tryCatch } from "../../../globalUtils/tryCatch.js";
|
||||
import { getDeliveryByDateRange } from "../controller/getDeliveryByDateRange.js";
|
||||
|
||||
const app = new OpenAPIHono({ strict: false });
|
||||
const Body = z.object({
|
||||
includeRunnningNumbers: z.string().openapi({ example: "x" }),
|
||||
});
|
||||
app.openapi(
|
||||
createRoute({
|
||||
tags: ["dataMart"],
|
||||
summary: "Returns deliverys by daterange.",
|
||||
method: "get",
|
||||
path: "/deliverybydaterange",
|
||||
request: {
|
||||
body: {
|
||||
content: {
|
||||
"application/json": { schema: Body },
|
||||
},
|
||||
},
|
||||
},
|
||||
responses: responses(),
|
||||
}),
|
||||
async (c) => {
|
||||
const delivery: any = c.req.queries();
|
||||
|
||||
// make sure we have a vaid user being accessed thats really logged in
|
||||
//apiHit(c, { endpoint: `api/logger/logs/id` });
|
||||
const { data, error } = await tryCatch(
|
||||
getDeliveryByDateRange(delivery ? delivery : null)
|
||||
);
|
||||
|
||||
if (error) {
|
||||
console.log(error);
|
||||
return c.json(
|
||||
{
|
||||
success: false,
|
||||
message: "There was an error getting the deliveries.",
|
||||
data: error,
|
||||
},
|
||||
400
|
||||
);
|
||||
}
|
||||
|
||||
return c.json({
|
||||
success: data.success,
|
||||
message: data.message,
|
||||
data: data.data,
|
||||
});
|
||||
}
|
||||
);
|
||||
export default app;
|
||||
@@ -0,0 +1,73 @@
|
||||
export const deliveryByDateRange = `
|
||||
|
||||
use AlplaPROD_test1
|
||||
DECLARE @StartDate DATE = ' [startDate] ' -- 2025-1-1
|
||||
DECLARE @EndDate DATE = '[endDate]' -- 2025-1-31
|
||||
select * from
|
||||
(select (select wert from dbo.T_SystemParameter where Bezeichnung = 'Werkskuerzel') as Plant,
|
||||
AuftragsNummer as OrderNumber,
|
||||
PositionsNummer as CustomerLineNumber,
|
||||
AbrufNummer as CustomerReleaseNumber,
|
||||
CONVERT(date, AbrufLiefertermin) as DeliveryDate,
|
||||
CONVERT(DATE,JournalDatum) Bol_PrintDate,
|
||||
AbrufMenge AS OrderQuantity,
|
||||
AbrufMengeVPK as OrderPallets,
|
||||
GelieferteMenge AS DeliveredQTY,
|
||||
GelieferteMengeVPK as DeliverdPallets,
|
||||
JournalNummer as BOLNum,
|
||||
ProdArtikelBez AS ProductFamily,
|
||||
dbo.V_LadePlanungenLadeAuftragAbruf.AbrufIdKundenAdresse AS IdCustomer,
|
||||
dbo.V_LadePlanungenLadeAuftragAbruf.AdressBez AS CustName,
|
||||
dbo.T_EAIJournal.IdJournalStatus as bolStatus,
|
||||
V_TrackerAuftragsAbrufe.IdAuftragsAbruf as releaseNum,
|
||||
V_LadePlanungenLadeAuftragAbruf.IdLadeAuftrag as truckPostion
|
||||
,'Base Plant' as plantType
|
||||
from dbo.V_TrackerAuftragsAbrufe (nolock)
|
||||
|
||||
left join
|
||||
dbo.V_LadePlanungenLadeAuftragAbruf on V_TrackerAuftragsAbrufe.IdAuftragsAbruf =
|
||||
dbo.V_LadePlanungenLadeAuftragAbruf.AbrufIdAuftragsAbruf
|
||||
|
||||
left join
|
||||
dbo.T_EAIJournal on dbo.V_LadePlanungenLadeAuftragAbruf.IdLadeAuftrag =
|
||||
dbo.T_EAIJournal.IdLadeAuftrag
|
||||
|
||||
left join
|
||||
dbo.V_ArtikelKomplett on V_TrackerAuftragsAbrufe.IdArtikelVarianten =
|
||||
dbo.V_ArtikelKomplett.IdArtikelvarianten
|
||||
where GelieferteMengeVPK > 0 AND (
|
||||
AbrufLiefertermin IS NULL
|
||||
OR CONVERT(date, AbrufLiefertermin) BETWEEN @StartDate AND @EndDate
|
||||
)
|
||||
|
||||
/*in house*/
|
||||
union all
|
||||
|
||||
select top (50) (select wert from dbo.T_SystemParameter where Bezeichnung = 'Werkskuerzel') as Plant
|
||||
,[KundenAuftragsNummer] as OrderNumber
|
||||
,[KundenPositionsNummer] as CustomerLineNumber
|
||||
, null as CustomerReleaseNumber
|
||||
,CONVERT(date, i.Add_Date) as DeliveryDate
|
||||
,CONVERT(DATE,i.Upd_Date) Bol_PrintDate
|
||||
,null AS OrderQuantity
|
||||
,null as OrderPallets
|
||||
,LieferMengeVereinbart AS DeliveredQTY
|
||||
,null as DeliverdPallets
|
||||
,JournalNummer as BOLNum
|
||||
,null AS ProductFamily
|
||||
,IdAdresse AS IdCustomer
|
||||
,null AS CustName
|
||||
,null as bolStatus
|
||||
,null as releaseNum
|
||||
,null as truckPostion
|
||||
,'In-House' as plantType
|
||||
--,*
|
||||
|
||||
from [dbo].[T_InhouseLieferungen] as i (nolock)
|
||||
|
||||
where CONVERT(date, Upd_Date) BETWEEN @StartDate AND @EndDate
|
||||
) x
|
||||
|
||||
|
||||
order by DeliveryDate desc
|
||||
`;
|
||||
Reference in New Issue
Block a user