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 currentInv from "./route/getInventory.js";
|
||||||
import getCustomerInv from "./route/getCustomerInv.js";
|
import getCustomerInv from "./route/getCustomerInv.js";
|
||||||
import getOpenOrders from "./route/getOpenOrders.js";
|
import getOpenOrders from "./route/getOpenOrders.js";
|
||||||
|
import getDeliveryByDate from "./route/getDeliveryDateByRange.js";
|
||||||
|
|
||||||
const app = new OpenAPIHono();
|
const app = new OpenAPIHono();
|
||||||
|
|
||||||
@@ -13,6 +14,7 @@ const routes = [
|
|||||||
currentInv,
|
currentInv,
|
||||||
getCustomerInv,
|
getCustomerInv,
|
||||||
getOpenOrders,
|
getOpenOrders,
|
||||||
|
getDeliveryByDate,
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
const appRoutes = routes.forEach((route) => {
|
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",
|
"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
|
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(
|
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