sunrise-cms/helpers/lotOccupancyDB/getNextWorkOrderNumber.js

33 lines
1.4 KiB
JavaScript

import sqlite from 'better-sqlite3';
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
import * as configFunctions from '../functions.config.js';
export function getNextWorkOrderNumber(connectedDatabase) {
const database = connectedDatabase ??
sqlite(databasePath, {
readonly: true
});
const paddingLength = configFunctions.getProperty('settings.workOrders.workOrderNumberLength');
const currentYearString = new Date().getFullYear().toString();
const regex = new RegExp('^' + currentYearString + '-\\d+$');
database.function('userFn_matchesWorkOrderNumberSyntax', (workOrderNumber) => {
return regex.test(workOrderNumber) ? 1 : 0;
});
const workOrderNumberRecord = database
.prepare('select workOrderNumber from WorkOrders' +
' where userFn_matchesWorkOrderNumberSyntax(workOrderNumber) = 1' +
" order by cast(substr(workOrderNumber, instr(workOrderNumber, '-') + 1) as integer) desc")
.get();
if (connectedDatabase === undefined) {
database.close();
}
let workOrderNumberIndex = 0;
if (workOrderNumberRecord) {
workOrderNumberIndex = Number.parseInt(workOrderNumberRecord.workOrderNumber.split('-')[1], 10);
}
workOrderNumberIndex += 1;
return (currentYearString +
'-' +
workOrderNumberIndex.toString().padStart(paddingLength, '0'));
}
export default getNextWorkOrderNumber;