From 8b1c65db4e03b070fc7a9b80c4c0370121cf7607 Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Mon, 10 Mar 2025 16:19:33 -0500 Subject: [PATCH] feat(sscc): added in a creation of the sscc for now only ocme but will extend to be label data --- server/globalUtils/createSSCC.ts | 50 ++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 server/globalUtils/createSSCC.ts diff --git a/server/globalUtils/createSSCC.ts b/server/globalUtils/createSSCC.ts new file mode 100644 index 0000000..fd8aaa7 --- /dev/null +++ b/server/globalUtils/createSSCC.ts @@ -0,0 +1,50 @@ +import {eq} from "drizzle-orm"; +import {db} from "../../database/dbclient.js"; +import {settings} from "../../database/schema/settings.js"; +import {query} from "../services/sqlServer/prodSqlServer.js"; +import {plantInfo} from "../services/sqlServer/querys/dataMart/plantInfo.js"; +import {createLog} from "../services/logger/logger.js"; + +export const createSSCC = async (runningNumber: number) => { + // get the token + const plantToken = await db.select().from(settings).where(eq(settings.name, "plantToken")); + let global; // get from plant address in basis enter the entire string here. + + try { + global = await query(plantInfo.replaceAll("[token]", plantToken[0].value), "plantInfo"); + } catch (error) { + createLog("error", "lst", "globalUtils", `There was an error getting the GLN: Error: ${error}`); + } + + // create the sscc without the check diget and make sure we have it all correct + + let step1SSCC = global[0].gln.toString().slice(0, 7).padStart(10, "0") + runningNumber.toString().padStart(9, "0"); + + let sum = 0; + for (let i = 0; i < step1SSCC.length; i++) { + let digit = parseInt(step1SSCC[i], 10); + if (i % 2 === 0) { + // Even index in 0-based index system means odd position in 1-based index system + sum += digit * 3; + } else { + sum += digit; + } + } + let checkDigit = (10 - (sum % 10)) % 10; + + // make sure the check digit is never 10 + + // let checkDigit = 10 - ((oddSum * 3 + evenSum) % 10) === 10 ? 0 : (oddSum * 3 + evenSum) % 10; + + // return the true sscc + let sscc = step1SSCC + checkDigit; + // console.log(step1SSCC); + // console.log(checkDigit); + return sscc.padStart(20, "0"); +}; + +// let rn = 518475; + +// console.log(`Creating sscc`); +// let sscc = await createSSCC(rn); +// console.log(sscc);