Files
lstV2/server/globalUtils/createSSCC.ts

65 lines
2.0 KiB
TypeScript

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: any = []; // get from plant address in basis enter the entire string here.
try {
const res: any = await query(
plantInfo.replaceAll("[token]", plantToken[0].value),
"plantInfo"
);
global = res.data;
} 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);