linting
parent
beb57e70ab
commit
061c1fa43a
|
|
@ -19,8 +19,8 @@ if (process.send === undefined) {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ServerError extends Error {
|
interface ServerError extends Error {
|
||||||
syscall: string
|
|
||||||
code: string
|
code: string
|
||||||
|
syscall: string
|
||||||
}
|
}
|
||||||
|
|
||||||
function onError(error: ServerError): void {
|
function onError(error: ServerError): void {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import type { PoolConnection } from 'better-sqlite-pool';
|
import type { PoolConnection } from 'better-sqlite-pool';
|
||||||
import type { Fee } from '../types/recordTypes.js';
|
import type { Fee } from '../types/recordTypes.js';
|
||||||
interface GetFeesFilters {
|
interface GetFeesFilters {
|
||||||
contractTypeId?: number | string;
|
|
||||||
burialSiteTypeId?: number | string;
|
burialSiteTypeId?: number | string;
|
||||||
|
contractTypeId?: number | string;
|
||||||
}
|
}
|
||||||
export default function getFees(feeCategoryId: number, additionalFilters: GetFeesFilters, connectedDatabase?: PoolConnection): Promise<Fee[]>;
|
export default function getFees(feeCategoryId: number, additionalFilters: GetFeesFilters, connectedDatabase?: PoolConnection): Promise<Fee[]>;
|
||||||
export {};
|
export {};
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ import { acquireConnection } from './pool.js'
|
||||||
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
|
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
|
||||||
|
|
||||||
interface GetFeesFilters {
|
interface GetFeesFilters {
|
||||||
contractTypeId?: number | string
|
|
||||||
burialSiteTypeId?: number | string
|
burialSiteTypeId?: number | string
|
||||||
|
contractTypeId?: number | string
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function getFees(
|
export default async function getFees(
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
export type ReportParameters = Record<string, number | string>;
|
export type ReportParameters = Record<string, number | string>;
|
||||||
export default function getReportData(reportName: string, reportParameters?: ReportParameters): Promise<undefined | unknown[]>;
|
export default function getReportData(reportName: string, reportParameters?: ReportParameters): Promise<unknown[] | undefined>;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import {
|
import {
|
||||||
dateIntegerToString,
|
|
||||||
type DateString,
|
type DateString,
|
||||||
|
dateIntegerToString,
|
||||||
dateStringToInteger,
|
dateStringToInteger,
|
||||||
dateToInteger,
|
dateToInteger,
|
||||||
timeIntegerToString
|
timeIntegerToString
|
||||||
|
|
@ -37,6 +37,7 @@ const simpleReports: Record<`${string}-all` | `${string}-formatted`, string> = {
|
||||||
'contractTransactions-all': 'select * from ContractTransactions',
|
'contractTransactions-all': 'select * from ContractTransactions',
|
||||||
'contractTypeFields-all': 'select * from ContractTypeFields',
|
'contractTypeFields-all': 'select * from ContractTypeFields',
|
||||||
'contractTypes-all': 'select * from ContractTypes',
|
'contractTypes-all': 'select * from ContractTypes',
|
||||||
|
|
||||||
'feeCategories-all': 'select * from FeeCategories',
|
'feeCategories-all': 'select * from FeeCategories',
|
||||||
'fees-all': 'select * from Fees',
|
'fees-all': 'select * from Fees',
|
||||||
|
|
||||||
|
|
@ -50,6 +51,7 @@ const simpleReports: Record<`${string}-all` | `${string}-formatted`, string> = {
|
||||||
where recordDelete_timeMillis is null`,
|
where recordDelete_timeMillis is null`,
|
||||||
|
|
||||||
'intermentContainerTypes-all': 'select * from IntermentContainerTypes',
|
'intermentContainerTypes-all': 'select * from IntermentContainerTypes',
|
||||||
|
|
||||||
'workOrderBurialSites-all': 'select * from WorkOrderBurialSites',
|
'workOrderBurialSites-all': 'select * from WorkOrderBurialSites',
|
||||||
'workOrderComments-all': 'select * from WorkOrderComments',
|
'workOrderComments-all': 'select * from WorkOrderComments',
|
||||||
'workOrderMilestones-all': 'select * from WorkOrderMilestones',
|
'workOrderMilestones-all': 'select * from WorkOrderMilestones',
|
||||||
|
|
@ -61,7 +63,7 @@ const simpleReports: Record<`${string}-all` | `${string}-formatted`, string> = {
|
||||||
export default async function getReportData(
|
export default async function getReportData(
|
||||||
reportName: string,
|
reportName: string,
|
||||||
reportParameters: ReportParameters = {}
|
reportParameters: ReportParameters = {}
|
||||||
): Promise<undefined | unknown[]> {
|
): Promise<unknown[] | undefined> {
|
||||||
let sql = ''
|
let sql = ''
|
||||||
const sqlParameters: unknown[] = []
|
const sqlParameters: unknown[] = []
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,6 @@ interface WorkOrderOptions {
|
||||||
includeComments: boolean;
|
includeComments: boolean;
|
||||||
includeMilestones: boolean;
|
includeMilestones: boolean;
|
||||||
}
|
}
|
||||||
export default function getWorkOrder(workOrderId: number | string, options: WorkOrderOptions, connectedDatabase?: PoolConnection): Promise<undefined | WorkOrder>;
|
export default function getWorkOrder(workOrderId: number | string, options: WorkOrderOptions, connectedDatabase?: PoolConnection): Promise<WorkOrder | undefined>;
|
||||||
export declare function getWorkOrderByWorkOrderNumber(workOrderNumber: string): Promise<undefined | WorkOrder>;
|
export declare function getWorkOrderByWorkOrderNumber(workOrderNumber: string): Promise<WorkOrder | undefined>;
|
||||||
export {};
|
export {};
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ export default async function getWorkOrder(
|
||||||
workOrderId: number | string,
|
workOrderId: number | string,
|
||||||
options: WorkOrderOptions,
|
options: WorkOrderOptions,
|
||||||
connectedDatabase?: PoolConnection
|
connectedDatabase?: PoolConnection
|
||||||
): Promise<undefined | WorkOrder> {
|
): Promise<WorkOrder | undefined> {
|
||||||
return await _getWorkOrder(
|
return await _getWorkOrder(
|
||||||
`${baseSQL} and w.workOrderId = ?`,
|
`${baseSQL} and w.workOrderId = ?`,
|
||||||
workOrderId,
|
workOrderId,
|
||||||
|
|
@ -41,7 +41,7 @@ export default async function getWorkOrder(
|
||||||
|
|
||||||
export async function getWorkOrderByWorkOrderNumber(
|
export async function getWorkOrderByWorkOrderNumber(
|
||||||
workOrderNumber: string
|
workOrderNumber: string
|
||||||
): Promise<undefined | WorkOrder> {
|
): Promise<WorkOrder | undefined> {
|
||||||
return await _getWorkOrder(
|
return await _getWorkOrder(
|
||||||
`${baseSQL} and w.workOrderNumber = ?`,
|
`${baseSQL} and w.workOrderNumber = ?`,
|
||||||
workOrderNumber,
|
workOrderNumber,
|
||||||
|
|
@ -58,14 +58,14 @@ async function _getWorkOrder(
|
||||||
workOrderIdOrWorkOrderNumber: number | string,
|
workOrderIdOrWorkOrderNumber: number | string,
|
||||||
options: WorkOrderOptions,
|
options: WorkOrderOptions,
|
||||||
connectedDatabase?: PoolConnection
|
connectedDatabase?: PoolConnection
|
||||||
): Promise<undefined | WorkOrder> {
|
): Promise<WorkOrder | undefined> {
|
||||||
const database = connectedDatabase ?? (await acquireConnection())
|
const database = connectedDatabase ?? (await acquireConnection())
|
||||||
|
|
||||||
database.function('userFn_dateIntegerToString', dateIntegerToString)
|
database.function('userFn_dateIntegerToString', dateIntegerToString)
|
||||||
|
|
||||||
const workOrder = database.prepare(sql).get(workOrderIdOrWorkOrderNumber) as
|
const workOrder = database.prepare(sql).get(workOrderIdOrWorkOrderNumber) as
|
||||||
| undefined
|
|
||||||
| WorkOrder
|
| WorkOrder
|
||||||
|
| undefined
|
||||||
|
|
||||||
if (workOrder !== undefined) {
|
if (workOrder !== undefined) {
|
||||||
if (options.includeBurialSites) {
|
if (options.includeBurialSites) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
|
import type { PoolConnection } from 'better-sqlite-pool'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
dateIntegerToString,
|
dateIntegerToString,
|
||||||
timeIntegerToPeriodString,
|
timeIntegerToPeriodString,
|
||||||
timeIntegerToString
|
timeIntegerToString
|
||||||
} from '@cityssm/utils-datetime'
|
} from '@cityssm/utils-datetime'
|
||||||
import type { PoolConnection } from 'better-sqlite-pool'
|
|
||||||
|
|
||||||
import type { WorkOrderComment } from '../types/recordTypes.js'
|
import type { WorkOrderComment } from '../types/recordTypes.js'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import { type DateString } from '@cityssm/utils-datetime';
|
|
||||||
import type { PoolConnection } from 'better-sqlite-pool';
|
import type { PoolConnection } from 'better-sqlite-pool';
|
||||||
|
import { type DateString } from '@cityssm/utils-datetime';
|
||||||
import type { WorkOrderMilestone } from '../types/recordTypes.js';
|
import type { WorkOrderMilestone } from '../types/recordTypes.js';
|
||||||
export interface WorkOrderMilestoneFilters {
|
export interface WorkOrderMilestoneFilters {
|
||||||
workOrderId?: number | string;
|
workOrderId?: number | string;
|
||||||
workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date' | 'blank' | 'notBlank';
|
|
||||||
workOrderMilestoneDateString?: '' | DateString;
|
|
||||||
workOrderTypeIds?: string;
|
|
||||||
workOrderMilestoneTypeIds?: string;
|
workOrderMilestoneTypeIds?: string;
|
||||||
|
workOrderTypeIds?: string;
|
||||||
|
workOrderMilestoneDateFilter?: 'blank' | 'date' | 'notBlank' | 'recent' | 'upcomingMissed';
|
||||||
|
workOrderMilestoneDateString?: '' | DateString;
|
||||||
}
|
}
|
||||||
interface WorkOrderMilestoneOptions {
|
interface WorkOrderMilestoneOptions {
|
||||||
includeWorkOrders?: boolean;
|
includeWorkOrders?: boolean;
|
||||||
|
|
|
||||||
|
|
@ -1,75 +1,17 @@
|
||||||
import { dateIntegerToString, dateStringToInteger, dateToInteger, timeIntegerToPeriodString, timeIntegerToString } from '@cityssm/utils-datetime';
|
import { dateIntegerToString, dateStringToInteger, dateToInteger, timeIntegerToPeriodString, timeIntegerToString } from '@cityssm/utils-datetime';
|
||||||
import { getConfigProperty } from '../helpers/config.helpers.js';
|
import { getConfigProperty } from '../helpers/config.helpers.js';
|
||||||
import getContracts from './getContracts.js';
|
|
||||||
import getBurialSites from './getBurialSites.js';
|
import getBurialSites from './getBurialSites.js';
|
||||||
|
import getContracts from './getContracts.js';
|
||||||
import { acquireConnection } from './pool.js';
|
import { acquireConnection } from './pool.js';
|
||||||
// eslint-disable-next-line security/detect-unsafe-regex
|
// eslint-disable-next-line security/detect-unsafe-regex
|
||||||
const commaSeparatedNumbersRegex = /^\d+(?:,\d+)*$/;
|
const commaSeparatedNumbersRegex = /^\d+(?:,\d+)*$/;
|
||||||
function buildWhereClause(filters) {
|
|
||||||
let sqlWhereClause = ' where m.recordDelete_timeMillis is null and w.recordDelete_timeMillis is null';
|
|
||||||
const sqlParameters = [];
|
|
||||||
if ((filters.workOrderId ?? '') !== '') {
|
|
||||||
sqlWhereClause += ' and m.workOrderId = ?';
|
|
||||||
sqlParameters.push(filters.workOrderId);
|
|
||||||
}
|
|
||||||
const date = new Date();
|
|
||||||
const currentDateNumber = dateToInteger(date);
|
|
||||||
date.setDate(date.getDate() -
|
|
||||||
getConfigProperty('settings.workOrders.workOrderMilestoneDateRecentBeforeDays'));
|
|
||||||
const recentBeforeDateNumber = dateToInteger(date);
|
|
||||||
date.setDate(date.getDate() +
|
|
||||||
getConfigProperty('settings.workOrders.workOrderMilestoneDateRecentBeforeDays') +
|
|
||||||
getConfigProperty('settings.workOrders.workOrderMilestoneDateRecentAfterDays'));
|
|
||||||
const recentAfterDateNumber = dateToInteger(date);
|
|
||||||
switch (filters.workOrderMilestoneDateFilter) {
|
|
||||||
case 'upcomingMissed': {
|
|
||||||
sqlWhereClause +=
|
|
||||||
' and (m.workOrderMilestoneCompletionDate is null or m.workOrderMilestoneDate >= ?)';
|
|
||||||
sqlParameters.push(currentDateNumber);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'recent': {
|
|
||||||
sqlWhereClause +=
|
|
||||||
' and m.workOrderMilestoneDate >= ? and m.workOrderMilestoneDate <= ?';
|
|
||||||
sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'blank': {
|
|
||||||
sqlWhereClause += ' and m.workOrderMilestoneDate = 0';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'notBlank': {
|
|
||||||
sqlWhereClause += ' and m.workOrderMilestoneDate > 0';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (filters.workOrderMilestoneDateString !== undefined &&
|
|
||||||
filters.workOrderMilestoneDateString !== '') {
|
|
||||||
sqlWhereClause += ' and m.workOrderMilestoneDate = ?';
|
|
||||||
sqlParameters.push(dateStringToInteger(filters.workOrderMilestoneDateString));
|
|
||||||
}
|
|
||||||
if (filters.workOrderTypeIds !== undefined &&
|
|
||||||
filters.workOrderTypeIds !== '' &&
|
|
||||||
commaSeparatedNumbersRegex.test(filters.workOrderTypeIds)) {
|
|
||||||
sqlWhereClause += ` and w.workOrderTypeId in (${filters.workOrderTypeIds})`;
|
|
||||||
}
|
|
||||||
if (filters.workOrderMilestoneTypeIds !== undefined &&
|
|
||||||
filters.workOrderMilestoneTypeIds !== '' &&
|
|
||||||
commaSeparatedNumbersRegex.test(filters.workOrderMilestoneTypeIds)) {
|
|
||||||
sqlWhereClause += ` and m.workOrderMilestoneTypeId in (${filters.workOrderMilestoneTypeIds})`;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
sqlWhereClause,
|
|
||||||
sqlParameters
|
|
||||||
};
|
|
||||||
}
|
|
||||||
export default async function getWorkOrderMilestones(filters, options, connectedDatabase) {
|
export default async function getWorkOrderMilestones(filters, options, connectedDatabase) {
|
||||||
const database = connectedDatabase ?? (await acquireConnection());
|
const database = connectedDatabase ?? (await acquireConnection());
|
||||||
database.function('userFn_dateIntegerToString', dateIntegerToString);
|
database.function('userFn_dateIntegerToString', dateIntegerToString);
|
||||||
database.function('userFn_timeIntegerToString', timeIntegerToString);
|
database.function('userFn_timeIntegerToString', timeIntegerToString);
|
||||||
database.function('userFn_timeIntegerToPeriodString', timeIntegerToPeriodString);
|
database.function('userFn_timeIntegerToPeriodString', timeIntegerToPeriodString);
|
||||||
// Filters
|
// Filters
|
||||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
const { sqlParameters, sqlWhereClause } = buildWhereClause(filters);
|
||||||
// Order By
|
// Order By
|
||||||
let orderByClause = '';
|
let orderByClause = '';
|
||||||
switch (options.orderBy) {
|
switch (options.orderBy) {
|
||||||
|
|
@ -135,12 +77,11 @@ export default async function getWorkOrderMilestones(filters, options, connected
|
||||||
}, {
|
}, {
|
||||||
limit: -1,
|
limit: -1,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
includeInterments: true,
|
|
||||||
includeFees: false,
|
includeFees: false,
|
||||||
|
includeInterments: true,
|
||||||
includeTransactions: false
|
includeTransactions: false
|
||||||
}, database);
|
}, database);
|
||||||
workOrderMilestone.workOrderContracts =
|
workOrderMilestone.workOrderContracts = contracts.contracts;
|
||||||
contracts.contracts;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (connectedDatabase === undefined) {
|
if (connectedDatabase === undefined) {
|
||||||
|
|
@ -148,3 +89,61 @@ export default async function getWorkOrderMilestones(filters, options, connected
|
||||||
}
|
}
|
||||||
return workOrderMilestones;
|
return workOrderMilestones;
|
||||||
}
|
}
|
||||||
|
function buildWhereClause(filters) {
|
||||||
|
let sqlWhereClause = ' where m.recordDelete_timeMillis is null and w.recordDelete_timeMillis is null';
|
||||||
|
const sqlParameters = [];
|
||||||
|
if ((filters.workOrderId ?? '') !== '') {
|
||||||
|
sqlWhereClause += ' and m.workOrderId = ?';
|
||||||
|
sqlParameters.push(filters.workOrderId);
|
||||||
|
}
|
||||||
|
const date = new Date();
|
||||||
|
const currentDateNumber = dateToInteger(date);
|
||||||
|
date.setDate(date.getDate() -
|
||||||
|
getConfigProperty('settings.workOrders.workOrderMilestoneDateRecentBeforeDays'));
|
||||||
|
const recentBeforeDateNumber = dateToInteger(date);
|
||||||
|
date.setDate(date.getDate() +
|
||||||
|
getConfigProperty('settings.workOrders.workOrderMilestoneDateRecentBeforeDays') +
|
||||||
|
getConfigProperty('settings.workOrders.workOrderMilestoneDateRecentAfterDays'));
|
||||||
|
const recentAfterDateNumber = dateToInteger(date);
|
||||||
|
switch (filters.workOrderMilestoneDateFilter) {
|
||||||
|
case 'blank': {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate = 0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'notBlank': {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate > 0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'recent': {
|
||||||
|
sqlWhereClause +=
|
||||||
|
' and m.workOrderMilestoneDate >= ? and m.workOrderMilestoneDate <= ?';
|
||||||
|
sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'upcomingMissed': {
|
||||||
|
sqlWhereClause +=
|
||||||
|
' and (m.workOrderMilestoneCompletionDate is null or m.workOrderMilestoneDate >= ?)';
|
||||||
|
sqlParameters.push(currentDateNumber);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (filters.workOrderMilestoneDateString !== undefined &&
|
||||||
|
filters.workOrderMilestoneDateString !== '') {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate = ?';
|
||||||
|
sqlParameters.push(dateStringToInteger(filters.workOrderMilestoneDateString));
|
||||||
|
}
|
||||||
|
if (filters.workOrderTypeIds !== undefined &&
|
||||||
|
filters.workOrderTypeIds !== '' &&
|
||||||
|
commaSeparatedNumbersRegex.test(filters.workOrderTypeIds)) {
|
||||||
|
sqlWhereClause += ` and w.workOrderTypeId in (${filters.workOrderTypeIds})`;
|
||||||
|
}
|
||||||
|
if (filters.workOrderMilestoneTypeIds !== undefined &&
|
||||||
|
filters.workOrderMilestoneTypeIds !== '' &&
|
||||||
|
commaSeparatedNumbersRegex.test(filters.workOrderMilestoneTypeIds)) {
|
||||||
|
sqlWhereClause += ` and m.workOrderMilestoneTypeId in (${filters.workOrderMilestoneTypeIds})`;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
sqlParameters,
|
||||||
|
sqlWhereClause
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import type { PoolConnection } from 'better-sqlite-pool'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
type DateString,
|
type DateString,
|
||||||
dateIntegerToString,
|
dateIntegerToString,
|
||||||
|
|
@ -6,26 +8,26 @@ import {
|
||||||
timeIntegerToPeriodString,
|
timeIntegerToPeriodString,
|
||||||
timeIntegerToString
|
timeIntegerToString
|
||||||
} from '@cityssm/utils-datetime'
|
} from '@cityssm/utils-datetime'
|
||||||
import type { PoolConnection } from 'better-sqlite-pool'
|
|
||||||
|
|
||||||
import { getConfigProperty } from '../helpers/config.helpers.js'
|
import { getConfigProperty } from '../helpers/config.helpers.js'
|
||||||
import type { WorkOrderMilestone } from '../types/recordTypes.js'
|
import type { WorkOrderMilestone } from '../types/recordTypes.js'
|
||||||
|
|
||||||
import getContracts from './getContracts.js'
|
|
||||||
import getBurialSites from './getBurialSites.js'
|
import getBurialSites from './getBurialSites.js'
|
||||||
|
import getContracts from './getContracts.js'
|
||||||
import { acquireConnection } from './pool.js'
|
import { acquireConnection } from './pool.js'
|
||||||
|
|
||||||
export interface WorkOrderMilestoneFilters {
|
export interface WorkOrderMilestoneFilters {
|
||||||
workOrderId?: number | string
|
workOrderId?: number | string
|
||||||
workOrderMilestoneDateFilter?:
|
|
||||||
| 'upcomingMissed'
|
|
||||||
| 'recent'
|
|
||||||
| 'date'
|
|
||||||
| 'blank'
|
|
||||||
| 'notBlank'
|
|
||||||
workOrderMilestoneDateString?: '' | DateString
|
|
||||||
workOrderTypeIds?: string
|
|
||||||
workOrderMilestoneTypeIds?: string
|
workOrderMilestoneTypeIds?: string
|
||||||
|
workOrderTypeIds?: string
|
||||||
|
|
||||||
|
workOrderMilestoneDateFilter?:
|
||||||
|
| 'blank'
|
||||||
|
| 'date'
|
||||||
|
| 'notBlank'
|
||||||
|
| 'recent'
|
||||||
|
| 'upcomingMissed'
|
||||||
|
workOrderMilestoneDateString?: '' | DateString
|
||||||
}
|
}
|
||||||
|
|
||||||
interface WorkOrderMilestoneOptions {
|
interface WorkOrderMilestoneOptions {
|
||||||
|
|
@ -36,101 +38,6 @@ interface WorkOrderMilestoneOptions {
|
||||||
// eslint-disable-next-line security/detect-unsafe-regex
|
// eslint-disable-next-line security/detect-unsafe-regex
|
||||||
const commaSeparatedNumbersRegex = /^\d+(?:,\d+)*$/
|
const commaSeparatedNumbersRegex = /^\d+(?:,\d+)*$/
|
||||||
|
|
||||||
function buildWhereClause(filters: WorkOrderMilestoneFilters): {
|
|
||||||
sqlWhereClause: string
|
|
||||||
sqlParameters: unknown[]
|
|
||||||
} {
|
|
||||||
let sqlWhereClause =
|
|
||||||
' where m.recordDelete_timeMillis is null and w.recordDelete_timeMillis is null'
|
|
||||||
const sqlParameters: unknown[] = []
|
|
||||||
|
|
||||||
if ((filters.workOrderId ?? '') !== '') {
|
|
||||||
sqlWhereClause += ' and m.workOrderId = ?'
|
|
||||||
sqlParameters.push(filters.workOrderId)
|
|
||||||
}
|
|
||||||
|
|
||||||
const date = new Date()
|
|
||||||
const currentDateNumber = dateToInteger(date)
|
|
||||||
|
|
||||||
date.setDate(
|
|
||||||
date.getDate() -
|
|
||||||
getConfigProperty(
|
|
||||||
'settings.workOrders.workOrderMilestoneDateRecentBeforeDays'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
const recentBeforeDateNumber = dateToInteger(date)
|
|
||||||
|
|
||||||
date.setDate(
|
|
||||||
date.getDate() +
|
|
||||||
getConfigProperty(
|
|
||||||
'settings.workOrders.workOrderMilestoneDateRecentBeforeDays'
|
|
||||||
) +
|
|
||||||
getConfigProperty(
|
|
||||||
'settings.workOrders.workOrderMilestoneDateRecentAfterDays'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
const recentAfterDateNumber = dateToInteger(date)
|
|
||||||
|
|
||||||
switch (filters.workOrderMilestoneDateFilter) {
|
|
||||||
case 'upcomingMissed': {
|
|
||||||
sqlWhereClause +=
|
|
||||||
' and (m.workOrderMilestoneCompletionDate is null or m.workOrderMilestoneDate >= ?)'
|
|
||||||
sqlParameters.push(currentDateNumber)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'recent': {
|
|
||||||
sqlWhereClause +=
|
|
||||||
' and m.workOrderMilestoneDate >= ? and m.workOrderMilestoneDate <= ?'
|
|
||||||
sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'blank': {
|
|
||||||
sqlWhereClause += ' and m.workOrderMilestoneDate = 0'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'notBlank': {
|
|
||||||
sqlWhereClause += ' and m.workOrderMilestoneDate > 0'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
filters.workOrderMilestoneDateString !== undefined &&
|
|
||||||
filters.workOrderMilestoneDateString !== ''
|
|
||||||
) {
|
|
||||||
sqlWhereClause += ' and m.workOrderMilestoneDate = ?'
|
|
||||||
sqlParameters.push(
|
|
||||||
dateStringToInteger(filters.workOrderMilestoneDateString)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
filters.workOrderTypeIds !== undefined &&
|
|
||||||
filters.workOrderTypeIds !== '' &&
|
|
||||||
commaSeparatedNumbersRegex.test(filters.workOrderTypeIds)
|
|
||||||
) {
|
|
||||||
sqlWhereClause += ` and w.workOrderTypeId in (${filters.workOrderTypeIds})`
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
filters.workOrderMilestoneTypeIds !== undefined &&
|
|
||||||
filters.workOrderMilestoneTypeIds !== '' &&
|
|
||||||
commaSeparatedNumbersRegex.test(filters.workOrderMilestoneTypeIds)
|
|
||||||
) {
|
|
||||||
sqlWhereClause += ` and m.workOrderMilestoneTypeId in (${filters.workOrderMilestoneTypeIds})`
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
sqlWhereClause,
|
|
||||||
sqlParameters
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function getWorkOrderMilestones(
|
export default async function getWorkOrderMilestones(
|
||||||
filters: WorkOrderMilestoneFilters,
|
filters: WorkOrderMilestoneFilters,
|
||||||
options: WorkOrderMilestoneOptions,
|
options: WorkOrderMilestoneOptions,
|
||||||
|
|
@ -146,7 +53,7 @@ export default async function getWorkOrderMilestones(
|
||||||
)
|
)
|
||||||
|
|
||||||
// Filters
|
// Filters
|
||||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters)
|
const { sqlParameters, sqlWhereClause } = buildWhereClause(filters)
|
||||||
|
|
||||||
// Order By
|
// Order By
|
||||||
let orderByClause = ''
|
let orderByClause = ''
|
||||||
|
|
@ -214,6 +121,7 @@ export default async function getWorkOrderMilestones(
|
||||||
{
|
{
|
||||||
limit: -1,
|
limit: -1,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
|
|
||||||
includeContractCount: false
|
includeContractCount: false
|
||||||
},
|
},
|
||||||
database
|
database
|
||||||
|
|
@ -228,15 +136,15 @@ export default async function getWorkOrderMilestones(
|
||||||
{
|
{
|
||||||
limit: -1,
|
limit: -1,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
includeInterments: true,
|
|
||||||
includeFees: false,
|
includeFees: false,
|
||||||
|
includeInterments: true,
|
||||||
includeTransactions: false
|
includeTransactions: false
|
||||||
},
|
},
|
||||||
database
|
database
|
||||||
)
|
)
|
||||||
|
|
||||||
workOrderMilestone.workOrderContracts =
|
workOrderMilestone.workOrderContracts = contracts.contracts
|
||||||
contracts.contracts
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -246,3 +154,98 @@ export default async function getWorkOrderMilestones(
|
||||||
|
|
||||||
return workOrderMilestones
|
return workOrderMilestones
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buildWhereClause(filters: WorkOrderMilestoneFilters): {
|
||||||
|
sqlParameters: unknown[]
|
||||||
|
sqlWhereClause: string
|
||||||
|
} {
|
||||||
|
let sqlWhereClause =
|
||||||
|
' where m.recordDelete_timeMillis is null and w.recordDelete_timeMillis is null'
|
||||||
|
const sqlParameters: unknown[] = []
|
||||||
|
|
||||||
|
if ((filters.workOrderId ?? '') !== '') {
|
||||||
|
sqlWhereClause += ' and m.workOrderId = ?'
|
||||||
|
sqlParameters.push(filters.workOrderId)
|
||||||
|
}
|
||||||
|
|
||||||
|
const date = new Date()
|
||||||
|
const currentDateNumber = dateToInteger(date)
|
||||||
|
|
||||||
|
date.setDate(
|
||||||
|
date.getDate() -
|
||||||
|
getConfigProperty(
|
||||||
|
'settings.workOrders.workOrderMilestoneDateRecentBeforeDays'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
const recentBeforeDateNumber = dateToInteger(date)
|
||||||
|
|
||||||
|
date.setDate(
|
||||||
|
date.getDate() +
|
||||||
|
getConfigProperty(
|
||||||
|
'settings.workOrders.workOrderMilestoneDateRecentBeforeDays'
|
||||||
|
) +
|
||||||
|
getConfigProperty(
|
||||||
|
'settings.workOrders.workOrderMilestoneDateRecentAfterDays'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
const recentAfterDateNumber = dateToInteger(date)
|
||||||
|
|
||||||
|
switch (filters.workOrderMilestoneDateFilter) {
|
||||||
|
case 'blank': {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate = 0'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'notBlank': {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate > 0'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'recent': {
|
||||||
|
sqlWhereClause +=
|
||||||
|
' and m.workOrderMilestoneDate >= ? and m.workOrderMilestoneDate <= ?'
|
||||||
|
sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'upcomingMissed': {
|
||||||
|
sqlWhereClause +=
|
||||||
|
' and (m.workOrderMilestoneCompletionDate is null or m.workOrderMilestoneDate >= ?)'
|
||||||
|
sqlParameters.push(currentDateNumber)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
filters.workOrderMilestoneDateString !== undefined &&
|
||||||
|
filters.workOrderMilestoneDateString !== ''
|
||||||
|
) {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate = ?'
|
||||||
|
sqlParameters.push(
|
||||||
|
dateStringToInteger(filters.workOrderMilestoneDateString)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
filters.workOrderTypeIds !== undefined &&
|
||||||
|
filters.workOrderTypeIds !== '' &&
|
||||||
|
commaSeparatedNumbersRegex.test(filters.workOrderTypeIds)
|
||||||
|
) {
|
||||||
|
sqlWhereClause += ` and w.workOrderTypeId in (${filters.workOrderTypeIds})`
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
filters.workOrderMilestoneTypeIds !== undefined &&
|
||||||
|
filters.workOrderMilestoneTypeIds !== '' &&
|
||||||
|
commaSeparatedNumbersRegex.test(filters.workOrderMilestoneTypeIds)
|
||||||
|
) {
|
||||||
|
sqlWhereClause += ` and m.workOrderMilestoneTypeId in (${filters.workOrderMilestoneTypeIds})`
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
sqlParameters,
|
||||||
|
sqlWhereClause
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@ import type { PoolConnection } from 'better-sqlite-pool';
|
||||||
import type { WorkOrder } from '../types/recordTypes.js';
|
import type { WorkOrder } from '../types/recordTypes.js';
|
||||||
export interface GetWorkOrdersFilters {
|
export interface GetWorkOrdersFilters {
|
||||||
workOrderTypeId?: number | string;
|
workOrderTypeId?: number | string;
|
||||||
workOrderOpenStatus?: '' | 'open' | 'closed';
|
|
||||||
workOrderOpenDateString?: string;
|
workOrderOpenDateString?: string;
|
||||||
deceasedName?: string;
|
workOrderOpenStatus?: '' | 'closed' | 'open';
|
||||||
burialSiteName?: string;
|
burialSiteName?: string;
|
||||||
contractId?: number | string;
|
contractId?: number | string;
|
||||||
|
deceasedName?: string;
|
||||||
}
|
}
|
||||||
interface GetWorkOrdersOptions {
|
interface GetWorkOrdersOptions {
|
||||||
limit: number;
|
limit: number;
|
||||||
|
|
|
||||||
|
|
@ -5,105 +5,10 @@ import getContracts from './getContracts.js';
|
||||||
import getWorkOrderComments from './getWorkOrderComments.js';
|
import getWorkOrderComments from './getWorkOrderComments.js';
|
||||||
import getWorkOrderMilestones from './getWorkOrderMilestones.js';
|
import getWorkOrderMilestones from './getWorkOrderMilestones.js';
|
||||||
import { acquireConnection } from './pool.js';
|
import { acquireConnection } from './pool.js';
|
||||||
function buildWhereClause(filters) {
|
|
||||||
let sqlWhereClause = ' where w.recordDelete_timeMillis is null';
|
|
||||||
const sqlParameters = [];
|
|
||||||
if ((filters.workOrderTypeId ?? '') !== '') {
|
|
||||||
sqlWhereClause += ' and w.workOrderTypeId = ?';
|
|
||||||
sqlParameters.push(filters.workOrderTypeId);
|
|
||||||
}
|
|
||||||
if ((filters.workOrderOpenStatus ?? '') !== '') {
|
|
||||||
if (filters.workOrderOpenStatus === 'open') {
|
|
||||||
sqlWhereClause += ' and w.workOrderCloseDate is null';
|
|
||||||
}
|
|
||||||
else if (filters.workOrderOpenStatus === 'closed') {
|
|
||||||
sqlWhereClause += ' and w.workOrderCloseDate is not null';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((filters.workOrderOpenDateString ?? '') !== '') {
|
|
||||||
sqlWhereClause += ' and w.workOrderOpenDate = ?';
|
|
||||||
sqlParameters.push(dateStringToInteger(filters.workOrderOpenDateString));
|
|
||||||
}
|
|
||||||
const deceasedNameFilters = getDeceasedNameWhereClause(filters.deceasedName, 'o');
|
|
||||||
if (deceasedNameFilters.sqlParameters.length > 0) {
|
|
||||||
sqlWhereClause +=
|
|
||||||
` and w.workOrderId in (
|
|
||||||
select workOrderId from WorkOrderContracts o
|
|
||||||
where recordDelete_timeMillis is null
|
|
||||||
and o.contractId in (
|
|
||||||
select contractId from ContractInterments o where recordDelete_timeMillis is null
|
|
||||||
${deceasedNameFilters.sqlWhereClause}
|
|
||||||
))`;
|
|
||||||
sqlParameters.push(...deceasedNameFilters.sqlParameters);
|
|
||||||
}
|
|
||||||
const burialSiteNameFilters = getBurialSiteNameWhereClause(filters.burialSiteName, '', 'l');
|
|
||||||
if (burialSiteNameFilters.sqlParameters.length > 0) {
|
|
||||||
sqlWhereClause +=
|
|
||||||
` and w.workOrderId in (
|
|
||||||
select workOrderId from WorkOrderBurialSites
|
|
||||||
where recordDelete_timeMillis is null
|
|
||||||
and burialSiteId in (
|
|
||||||
select burialSiteId from BurialSites l
|
|
||||||
where recordDelete_timeMillis is null
|
|
||||||
${burialSiteNameFilters.sqlWhereClause}
|
|
||||||
))`;
|
|
||||||
sqlParameters.push(...burialSiteNameFilters.sqlParameters);
|
|
||||||
}
|
|
||||||
if ((filters.contractId ?? '') !== '') {
|
|
||||||
sqlWhereClause +=
|
|
||||||
' and w.workOrderId in (select workOrderId from WorkOrderContracts where recordDelete_timeMillis is null and contractId = ?)';
|
|
||||||
sqlParameters.push(filters.contractId);
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
sqlWhereClause,
|
|
||||||
sqlParameters
|
|
||||||
};
|
|
||||||
}
|
|
||||||
async function addInclusions(workOrder, options, database) {
|
|
||||||
if (options.includeComments ?? false) {
|
|
||||||
workOrder.workOrderComments = await getWorkOrderComments(workOrder.workOrderId, database);
|
|
||||||
}
|
|
||||||
if (options.includeBurialSites ?? false) {
|
|
||||||
if (workOrder.workOrderBurialSiteCount === 0) {
|
|
||||||
workOrder.workOrderBurialSites = [];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const workOrderBurialSitesResults = await getBurialSites({
|
|
||||||
workOrderId: workOrder.workOrderId
|
|
||||||
}, {
|
|
||||||
limit: -1,
|
|
||||||
offset: 0,
|
|
||||||
includeContractCount: false
|
|
||||||
}, database);
|
|
||||||
workOrder.workOrderBurialSites = workOrderBurialSitesResults.burialSites;
|
|
||||||
}
|
|
||||||
const contracts = await getContracts({
|
|
||||||
workOrderId: workOrder.workOrderId
|
|
||||||
}, {
|
|
||||||
limit: -1,
|
|
||||||
offset: 0,
|
|
||||||
includeInterments: true,
|
|
||||||
includeFees: false,
|
|
||||||
includeTransactions: false
|
|
||||||
}, database);
|
|
||||||
workOrder.workOrderContracts = contracts.contracts;
|
|
||||||
}
|
|
||||||
if (options.includeMilestones ?? false) {
|
|
||||||
workOrder.workOrderMilestones =
|
|
||||||
workOrder.workOrderMilestoneCount === 0
|
|
||||||
? []
|
|
||||||
: await getWorkOrderMilestones({
|
|
||||||
workOrderId: workOrder.workOrderId
|
|
||||||
}, {
|
|
||||||
orderBy: 'date'
|
|
||||||
}, database);
|
|
||||||
}
|
|
||||||
return workOrder;
|
|
||||||
}
|
|
||||||
export async function getWorkOrders(filters, options, connectedDatabase) {
|
export async function getWorkOrders(filters, options, connectedDatabase) {
|
||||||
const database = connectedDatabase ?? (await acquireConnection());
|
const database = connectedDatabase ?? (await acquireConnection());
|
||||||
database.function('userFn_dateIntegerToString', dateIntegerToString);
|
database.function('userFn_dateIntegerToString', dateIntegerToString);
|
||||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
const { sqlParameters, sqlWhereClause } = buildWhereClause(filters);
|
||||||
const count = database
|
const count = database
|
||||||
.prepare(`select count(*) as recordCount
|
.prepare(`select count(*) as recordCount
|
||||||
from WorkOrders w
|
from WorkOrders w
|
||||||
|
|
@ -157,4 +62,97 @@ export async function getWorkOrders(filters, options, connectedDatabase) {
|
||||||
workOrders
|
workOrders
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
async function addInclusions(workOrder, options, database) {
|
||||||
|
if (options.includeComments ?? false) {
|
||||||
|
workOrder.workOrderComments = await getWorkOrderComments(workOrder.workOrderId, database);
|
||||||
|
}
|
||||||
|
if (options.includeBurialSites ?? false) {
|
||||||
|
if (workOrder.workOrderBurialSiteCount === 0) {
|
||||||
|
workOrder.workOrderBurialSites = [];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const workOrderBurialSitesResults = await getBurialSites({
|
||||||
|
workOrderId: workOrder.workOrderId
|
||||||
|
}, {
|
||||||
|
limit: -1,
|
||||||
|
offset: 0,
|
||||||
|
includeContractCount: false
|
||||||
|
}, database);
|
||||||
|
workOrder.workOrderBurialSites = workOrderBurialSitesResults.burialSites;
|
||||||
|
}
|
||||||
|
const contracts = await getContracts({
|
||||||
|
workOrderId: workOrder.workOrderId
|
||||||
|
}, {
|
||||||
|
limit: -1,
|
||||||
|
offset: 0,
|
||||||
|
includeFees: false,
|
||||||
|
includeInterments: true,
|
||||||
|
includeTransactions: false
|
||||||
|
}, database);
|
||||||
|
workOrder.workOrderContracts = contracts.contracts;
|
||||||
|
}
|
||||||
|
if (options.includeMilestones ?? false) {
|
||||||
|
workOrder.workOrderMilestones =
|
||||||
|
workOrder.workOrderMilestoneCount === 0
|
||||||
|
? []
|
||||||
|
: await getWorkOrderMilestones({
|
||||||
|
workOrderId: workOrder.workOrderId
|
||||||
|
}, {
|
||||||
|
orderBy: 'date'
|
||||||
|
}, database);
|
||||||
|
}
|
||||||
|
return workOrder;
|
||||||
|
}
|
||||||
|
function buildWhereClause(filters) {
|
||||||
|
let sqlWhereClause = ' where w.recordDelete_timeMillis is null';
|
||||||
|
const sqlParameters = [];
|
||||||
|
if ((filters.workOrderTypeId ?? '') !== '') {
|
||||||
|
sqlWhereClause += ' and w.workOrderTypeId = ?';
|
||||||
|
sqlParameters.push(filters.workOrderTypeId);
|
||||||
|
}
|
||||||
|
if ((filters.workOrderOpenStatus ?? '') !== '') {
|
||||||
|
if (filters.workOrderOpenStatus === 'open') {
|
||||||
|
sqlWhereClause += ' and w.workOrderCloseDate is null';
|
||||||
|
}
|
||||||
|
else if (filters.workOrderOpenStatus === 'closed') {
|
||||||
|
sqlWhereClause += ' and w.workOrderCloseDate is not null';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((filters.workOrderOpenDateString ?? '') !== '') {
|
||||||
|
sqlWhereClause += ' and w.workOrderOpenDate = ?';
|
||||||
|
sqlParameters.push(dateStringToInteger(filters.workOrderOpenDateString));
|
||||||
|
}
|
||||||
|
const deceasedNameFilters = getDeceasedNameWhereClause(filters.deceasedName, 'o');
|
||||||
|
if (deceasedNameFilters.sqlParameters.length > 0) {
|
||||||
|
sqlWhereClause += ` and w.workOrderId in (
|
||||||
|
select workOrderId from WorkOrderContracts o
|
||||||
|
where recordDelete_timeMillis is null
|
||||||
|
and o.contractId in (
|
||||||
|
select contractId from ContractInterments o where recordDelete_timeMillis is null
|
||||||
|
${deceasedNameFilters.sqlWhereClause}
|
||||||
|
))`;
|
||||||
|
sqlParameters.push(...deceasedNameFilters.sqlParameters);
|
||||||
|
}
|
||||||
|
const burialSiteNameFilters = getBurialSiteNameWhereClause(filters.burialSiteName, '', 'l');
|
||||||
|
if (burialSiteNameFilters.sqlParameters.length > 0) {
|
||||||
|
sqlWhereClause += ` and w.workOrderId in (
|
||||||
|
select workOrderId from WorkOrderBurialSites
|
||||||
|
where recordDelete_timeMillis is null
|
||||||
|
and burialSiteId in (
|
||||||
|
select burialSiteId from BurialSites l
|
||||||
|
where recordDelete_timeMillis is null
|
||||||
|
${burialSiteNameFilters.sqlWhereClause}
|
||||||
|
))`;
|
||||||
|
sqlParameters.push(...burialSiteNameFilters.sqlParameters);
|
||||||
|
}
|
||||||
|
if ((filters.contractId ?? '') !== '') {
|
||||||
|
sqlWhereClause +=
|
||||||
|
' and w.workOrderId in (select workOrderId from WorkOrderContracts where recordDelete_timeMillis is null and contractId = ?)';
|
||||||
|
sqlParameters.push(filters.contractId);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
sqlParameters,
|
||||||
|
sqlWhereClause
|
||||||
|
};
|
||||||
|
}
|
||||||
export default getWorkOrders;
|
export default getWorkOrders;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
|
import type { PoolConnection } from 'better-sqlite-pool'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
type DateString,
|
type DateString,
|
||||||
dateIntegerToString,
|
dateIntegerToString,
|
||||||
dateStringToInteger
|
dateStringToInteger
|
||||||
} from '@cityssm/utils-datetime'
|
} from '@cityssm/utils-datetime'
|
||||||
import type { PoolConnection } from 'better-sqlite-pool'
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
getBurialSiteNameWhereClause,
|
getBurialSiteNameWhereClause,
|
||||||
|
|
@ -19,156 +20,24 @@ import { acquireConnection } from './pool.js'
|
||||||
|
|
||||||
export interface GetWorkOrdersFilters {
|
export interface GetWorkOrdersFilters {
|
||||||
workOrderTypeId?: number | string
|
workOrderTypeId?: number | string
|
||||||
workOrderOpenStatus?: '' | 'open' | 'closed'
|
|
||||||
workOrderOpenDateString?: string
|
workOrderOpenDateString?: string
|
||||||
deceasedName?: string
|
workOrderOpenStatus?: '' | 'closed' | 'open'
|
||||||
|
|
||||||
burialSiteName?: string
|
burialSiteName?: string
|
||||||
contractId?: number | string
|
contractId?: number | string
|
||||||
|
deceasedName?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface GetWorkOrdersOptions {
|
interface GetWorkOrdersOptions {
|
||||||
limit: number
|
limit: number
|
||||||
offset: number
|
offset: number
|
||||||
|
|
||||||
includeBurialSites?: boolean
|
includeBurialSites?: boolean
|
||||||
includeComments?: boolean
|
includeComments?: boolean
|
||||||
includeMilestones?: boolean
|
includeMilestones?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildWhereClause(filters: GetWorkOrdersFilters): {
|
|
||||||
sqlWhereClause: string
|
|
||||||
sqlParameters: unknown[]
|
|
||||||
} {
|
|
||||||
let sqlWhereClause = ' where w.recordDelete_timeMillis is null'
|
|
||||||
const sqlParameters: unknown[] = []
|
|
||||||
|
|
||||||
if ((filters.workOrderTypeId ?? '') !== '') {
|
|
||||||
sqlWhereClause += ' and w.workOrderTypeId = ?'
|
|
||||||
sqlParameters.push(filters.workOrderTypeId)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((filters.workOrderOpenStatus ?? '') !== '') {
|
|
||||||
if (filters.workOrderOpenStatus === 'open') {
|
|
||||||
sqlWhereClause += ' and w.workOrderCloseDate is null'
|
|
||||||
} else if (filters.workOrderOpenStatus === 'closed') {
|
|
||||||
sqlWhereClause += ' and w.workOrderCloseDate is not null'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((filters.workOrderOpenDateString ?? '') !== '') {
|
|
||||||
sqlWhereClause += ' and w.workOrderOpenDate = ?'
|
|
||||||
sqlParameters.push(
|
|
||||||
dateStringToInteger(filters.workOrderOpenDateString as DateString)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const deceasedNameFilters = getDeceasedNameWhereClause(
|
|
||||||
filters.deceasedName,
|
|
||||||
'o'
|
|
||||||
)
|
|
||||||
if (deceasedNameFilters.sqlParameters.length > 0) {
|
|
||||||
sqlWhereClause +=
|
|
||||||
` and w.workOrderId in (
|
|
||||||
select workOrderId from WorkOrderContracts o
|
|
||||||
where recordDelete_timeMillis is null
|
|
||||||
and o.contractId in (
|
|
||||||
select contractId from ContractInterments o where recordDelete_timeMillis is null
|
|
||||||
${deceasedNameFilters.sqlWhereClause}
|
|
||||||
))`
|
|
||||||
sqlParameters.push(...deceasedNameFilters.sqlParameters)
|
|
||||||
}
|
|
||||||
|
|
||||||
const burialSiteNameFilters = getBurialSiteNameWhereClause(filters.burialSiteName, '', 'l')
|
|
||||||
if (burialSiteNameFilters.sqlParameters.length > 0) {
|
|
||||||
sqlWhereClause +=
|
|
||||||
` and w.workOrderId in (
|
|
||||||
select workOrderId from WorkOrderBurialSites
|
|
||||||
where recordDelete_timeMillis is null
|
|
||||||
and burialSiteId in (
|
|
||||||
select burialSiteId from BurialSites l
|
|
||||||
where recordDelete_timeMillis is null
|
|
||||||
${burialSiteNameFilters.sqlWhereClause}
|
|
||||||
))`
|
|
||||||
sqlParameters.push(...burialSiteNameFilters.sqlParameters)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((filters.contractId ?? '') !== '') {
|
|
||||||
sqlWhereClause +=
|
|
||||||
' and w.workOrderId in (select workOrderId from WorkOrderContracts where recordDelete_timeMillis is null and contractId = ?)'
|
|
||||||
sqlParameters.push(filters.contractId)
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
sqlWhereClause,
|
|
||||||
sqlParameters
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function addInclusions(
|
|
||||||
workOrder: WorkOrder,
|
|
||||||
options: GetWorkOrdersOptions,
|
|
||||||
database: PoolConnection
|
|
||||||
): Promise<WorkOrder> {
|
|
||||||
if (options.includeComments ?? false) {
|
|
||||||
workOrder.workOrderComments = await getWorkOrderComments(
|
|
||||||
workOrder.workOrderId,
|
|
||||||
database
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.includeBurialSites ?? false) {
|
|
||||||
if (workOrder.workOrderBurialSiteCount === 0) {
|
|
||||||
workOrder.workOrderBurialSites = []
|
|
||||||
} else {
|
|
||||||
const workOrderBurialSitesResults = await getBurialSites(
|
|
||||||
{
|
|
||||||
workOrderId: workOrder.workOrderId
|
|
||||||
},
|
|
||||||
{
|
|
||||||
limit: -1,
|
|
||||||
offset: 0,
|
|
||||||
includeContractCount: false
|
|
||||||
},
|
|
||||||
database
|
|
||||||
)
|
|
||||||
|
|
||||||
workOrder.workOrderBurialSites = workOrderBurialSitesResults.burialSites
|
|
||||||
}
|
|
||||||
|
|
||||||
const contracts = await getContracts(
|
|
||||||
{
|
|
||||||
workOrderId: workOrder.workOrderId
|
|
||||||
},
|
|
||||||
{
|
|
||||||
limit: -1,
|
|
||||||
offset: 0,
|
|
||||||
includeInterments: true,
|
|
||||||
includeFees: false,
|
|
||||||
includeTransactions: false
|
|
||||||
},
|
|
||||||
database
|
|
||||||
)
|
|
||||||
|
|
||||||
workOrder.workOrderContracts = contracts.contracts
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.includeMilestones ?? false) {
|
|
||||||
workOrder.workOrderMilestones =
|
|
||||||
workOrder.workOrderMilestoneCount === 0
|
|
||||||
? []
|
|
||||||
: await getWorkOrderMilestones(
|
|
||||||
{
|
|
||||||
workOrderId: workOrder.workOrderId
|
|
||||||
},
|
|
||||||
{
|
|
||||||
orderBy: 'date'
|
|
||||||
},
|
|
||||||
database
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return workOrder
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getWorkOrders(
|
export async function getWorkOrders(
|
||||||
filters: GetWorkOrdersFilters,
|
filters: GetWorkOrdersFilters,
|
||||||
options: GetWorkOrdersOptions,
|
options: GetWorkOrdersOptions,
|
||||||
|
|
@ -178,7 +47,7 @@ export async function getWorkOrders(
|
||||||
|
|
||||||
database.function('userFn_dateIntegerToString', dateIntegerToString)
|
database.function('userFn_dateIntegerToString', dateIntegerToString)
|
||||||
|
|
||||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters)
|
const { sqlParameters, sqlWhereClause } = buildWhereClause(filters)
|
||||||
|
|
||||||
const count: number = (
|
const count: number = (
|
||||||
database
|
database
|
||||||
|
|
@ -249,4 +118,143 @@ export async function getWorkOrders(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function addInclusions(
|
||||||
|
workOrder: WorkOrder,
|
||||||
|
options: GetWorkOrdersOptions,
|
||||||
|
database: PoolConnection
|
||||||
|
): Promise<WorkOrder> {
|
||||||
|
if (options.includeComments ?? false) {
|
||||||
|
workOrder.workOrderComments = await getWorkOrderComments(
|
||||||
|
workOrder.workOrderId,
|
||||||
|
database
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.includeBurialSites ?? false) {
|
||||||
|
if (workOrder.workOrderBurialSiteCount === 0) {
|
||||||
|
workOrder.workOrderBurialSites = []
|
||||||
|
} else {
|
||||||
|
const workOrderBurialSitesResults = await getBurialSites(
|
||||||
|
{
|
||||||
|
workOrderId: workOrder.workOrderId
|
||||||
|
},
|
||||||
|
{
|
||||||
|
limit: -1,
|
||||||
|
offset: 0,
|
||||||
|
|
||||||
|
includeContractCount: false
|
||||||
|
},
|
||||||
|
database
|
||||||
|
)
|
||||||
|
|
||||||
|
workOrder.workOrderBurialSites = workOrderBurialSitesResults.burialSites
|
||||||
|
}
|
||||||
|
|
||||||
|
const contracts = await getContracts(
|
||||||
|
{
|
||||||
|
workOrderId: workOrder.workOrderId
|
||||||
|
},
|
||||||
|
{
|
||||||
|
limit: -1,
|
||||||
|
offset: 0,
|
||||||
|
|
||||||
|
includeFees: false,
|
||||||
|
includeInterments: true,
|
||||||
|
includeTransactions: false
|
||||||
|
},
|
||||||
|
database
|
||||||
|
)
|
||||||
|
|
||||||
|
workOrder.workOrderContracts = contracts.contracts
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.includeMilestones ?? false) {
|
||||||
|
workOrder.workOrderMilestones =
|
||||||
|
workOrder.workOrderMilestoneCount === 0
|
||||||
|
? []
|
||||||
|
: await getWorkOrderMilestones(
|
||||||
|
{
|
||||||
|
workOrderId: workOrder.workOrderId
|
||||||
|
},
|
||||||
|
{
|
||||||
|
orderBy: 'date'
|
||||||
|
},
|
||||||
|
database
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return workOrder
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildWhereClause(filters: GetWorkOrdersFilters): {
|
||||||
|
sqlParameters: unknown[]
|
||||||
|
sqlWhereClause: string
|
||||||
|
} {
|
||||||
|
let sqlWhereClause = ' where w.recordDelete_timeMillis is null'
|
||||||
|
const sqlParameters: unknown[] = []
|
||||||
|
|
||||||
|
if ((filters.workOrderTypeId ?? '') !== '') {
|
||||||
|
sqlWhereClause += ' and w.workOrderTypeId = ?'
|
||||||
|
sqlParameters.push(filters.workOrderTypeId)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((filters.workOrderOpenStatus ?? '') !== '') {
|
||||||
|
if (filters.workOrderOpenStatus === 'open') {
|
||||||
|
sqlWhereClause += ' and w.workOrderCloseDate is null'
|
||||||
|
} else if (filters.workOrderOpenStatus === 'closed') {
|
||||||
|
sqlWhereClause += ' and w.workOrderCloseDate is not null'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((filters.workOrderOpenDateString ?? '') !== '') {
|
||||||
|
sqlWhereClause += ' and w.workOrderOpenDate = ?'
|
||||||
|
sqlParameters.push(
|
||||||
|
dateStringToInteger(filters.workOrderOpenDateString as DateString)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const deceasedNameFilters = getDeceasedNameWhereClause(
|
||||||
|
filters.deceasedName,
|
||||||
|
'o'
|
||||||
|
)
|
||||||
|
if (deceasedNameFilters.sqlParameters.length > 0) {
|
||||||
|
sqlWhereClause += ` and w.workOrderId in (
|
||||||
|
select workOrderId from WorkOrderContracts o
|
||||||
|
where recordDelete_timeMillis is null
|
||||||
|
and o.contractId in (
|
||||||
|
select contractId from ContractInterments o where recordDelete_timeMillis is null
|
||||||
|
${deceasedNameFilters.sqlWhereClause}
|
||||||
|
))`
|
||||||
|
sqlParameters.push(...deceasedNameFilters.sqlParameters)
|
||||||
|
}
|
||||||
|
|
||||||
|
const burialSiteNameFilters = getBurialSiteNameWhereClause(
|
||||||
|
filters.burialSiteName,
|
||||||
|
'',
|
||||||
|
'l'
|
||||||
|
)
|
||||||
|
if (burialSiteNameFilters.sqlParameters.length > 0) {
|
||||||
|
sqlWhereClause += ` and w.workOrderId in (
|
||||||
|
select workOrderId from WorkOrderBurialSites
|
||||||
|
where recordDelete_timeMillis is null
|
||||||
|
and burialSiteId in (
|
||||||
|
select burialSiteId from BurialSites l
|
||||||
|
where recordDelete_timeMillis is null
|
||||||
|
${burialSiteNameFilters.sqlWhereClause}
|
||||||
|
))`
|
||||||
|
sqlParameters.push(...burialSiteNameFilters.sqlParameters)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((filters.contractId ?? '') !== '') {
|
||||||
|
sqlWhereClause +=
|
||||||
|
' and w.workOrderId in (select workOrderId from WorkOrderContracts where recordDelete_timeMillis is null and contractId = ?)'
|
||||||
|
sqlParameters.push(filters.contractId)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
sqlParameters,
|
||||||
|
sqlWhereClause
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default getWorkOrders
|
export default getWorkOrders
|
||||||
|
|
|
||||||
|
|
@ -377,9 +377,9 @@ const createStatements = [
|
||||||
const initializingUser = {
|
const initializingUser = {
|
||||||
userName: 'databaseInit',
|
userName: 'databaseInit',
|
||||||
userProperties: {
|
userProperties: {
|
||||||
|
apiKey: '',
|
||||||
canUpdate: true,
|
canUpdate: true,
|
||||||
isAdmin: true,
|
isAdmin: true
|
||||||
apiKey: ''
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
export async function initializeDatabase() {
|
export async function initializeDatabase() {
|
||||||
|
|
@ -449,9 +449,11 @@ async function initializeData() {
|
||||||
intermentContainerTypeKey: 'WS',
|
intermentContainerTypeKey: 'WS',
|
||||||
orderNumber: 5
|
orderNumber: 5
|
||||||
}, initializingUser);
|
}, initializingUser);
|
||||||
await addIntermentContainerType({ intermentContainerType: 'Steel Vault',
|
await addIntermentContainerType({
|
||||||
|
intermentContainerType: 'Steel Vault',
|
||||||
intermentContainerTypeKey: 'SV',
|
intermentContainerTypeKey: 'SV',
|
||||||
orderNumber: 6 }, initializingUser);
|
orderNumber: 6
|
||||||
|
}, initializingUser);
|
||||||
await addIntermentContainerType({
|
await addIntermentContainerType({
|
||||||
intermentContainerType: 'Urn',
|
intermentContainerType: 'Urn',
|
||||||
intermentContainerTypeKey: 'U',
|
intermentContainerTypeKey: 'U',
|
||||||
|
|
|
||||||
|
|
@ -434,9 +434,9 @@ const createStatements = [
|
||||||
const initializingUser: User = {
|
const initializingUser: User = {
|
||||||
userName: 'databaseInit',
|
userName: 'databaseInit',
|
||||||
userProperties: {
|
userProperties: {
|
||||||
|
apiKey: '',
|
||||||
canUpdate: true,
|
canUpdate: true,
|
||||||
isAdmin: true,
|
isAdmin: true
|
||||||
apiKey: ''
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -555,9 +555,11 @@ async function initializeData(): Promise<void> {
|
||||||
)
|
)
|
||||||
|
|
||||||
await addIntermentContainerType(
|
await addIntermentContainerType(
|
||||||
{ intermentContainerType: 'Steel Vault',
|
{
|
||||||
|
intermentContainerType: 'Steel Vault',
|
||||||
intermentContainerTypeKey: 'SV',
|
intermentContainerTypeKey: 'SV',
|
||||||
orderNumber: 6 },
|
orderNumber: 6
|
||||||
|
},
|
||||||
initializingUser
|
initializingUser
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -573,23 +575,32 @@ async function initializeData(): Promise<void> {
|
||||||
|
|
||||||
// Committal Types
|
// Committal Types
|
||||||
|
|
||||||
await addCommittalType({
|
await addCommittalType(
|
||||||
|
{
|
||||||
committalType: 'Graveside',
|
committalType: 'Graveside',
|
||||||
committalTypeKey: 'GS',
|
committalTypeKey: 'GS',
|
||||||
orderNumber: 1
|
orderNumber: 1
|
||||||
}, initializingUser)
|
},
|
||||||
|
initializingUser
|
||||||
|
)
|
||||||
|
|
||||||
await addCommittalType({
|
await addCommittalType(
|
||||||
|
{
|
||||||
committalType: 'Chapel',
|
committalType: 'Chapel',
|
||||||
committalTypeKey: 'CS',
|
committalTypeKey: 'CS',
|
||||||
orderNumber: 2
|
orderNumber: 2
|
||||||
}, initializingUser)
|
},
|
||||||
|
initializingUser
|
||||||
|
)
|
||||||
|
|
||||||
await addCommittalType({
|
await addCommittalType(
|
||||||
|
{
|
||||||
committalType: 'Church',
|
committalType: 'Church',
|
||||||
committalTypeKey: 'CH',
|
committalTypeKey: 'CH',
|
||||||
orderNumber: 3
|
orderNumber: 3
|
||||||
}, initializingUser)
|
},
|
||||||
|
initializingUser
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fee Categories
|
* Fee Categories
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
import { clearCacheByTableName } from '../helpers/functions.cache.js';
|
import { clearCacheByTableName } from '../helpers/functions.cache.js';
|
||||||
import { acquireConnection } from './pool.js';
|
import { acquireConnection } from './pool.js';
|
||||||
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
|
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
|
||||||
function getCurrentField(burialSiteTypeFieldId, connectedDatabase) {
|
|
||||||
return connectedDatabase
|
|
||||||
.prepare('select burialSiteTypeId, orderNumber from BurialSiteTypeFields where burialSiteTypeFieldId = ?')
|
|
||||||
.get(burialSiteTypeFieldId);
|
|
||||||
}
|
|
||||||
export async function moveBurialSiteTypeFieldDown(burialSiteTypeFieldId) {
|
export async function moveBurialSiteTypeFieldDown(burialSiteTypeFieldId) {
|
||||||
const database = await acquireConnection();
|
const database = await acquireConnection();
|
||||||
const currentField = getCurrentField(burialSiteTypeFieldId, database);
|
const currentField = getCurrentField(burialSiteTypeFieldId, database);
|
||||||
|
|
@ -79,3 +74,8 @@ export async function moveBurialSiteTypeFieldUpToTop(burialSiteTypeFieldId) {
|
||||||
clearCacheByTableName('BurialSiteTypeFields');
|
clearCacheByTableName('BurialSiteTypeFields');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
function getCurrentField(burialSiteTypeFieldId, connectedDatabase) {
|
||||||
|
return connectedDatabase
|
||||||
|
.prepare('select burialSiteTypeId, orderNumber from BurialSiteTypeFields where burialSiteTypeFieldId = ?')
|
||||||
|
.get(burialSiteTypeFieldId);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,20 +5,6 @@ import { clearCacheByTableName } from '../helpers/functions.cache.js'
|
||||||
import { acquireConnection } from './pool.js'
|
import { acquireConnection } from './pool.js'
|
||||||
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
|
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
|
||||||
|
|
||||||
function getCurrentField(
|
|
||||||
burialSiteTypeFieldId: number | string,
|
|
||||||
connectedDatabase: PoolConnection
|
|
||||||
): { burialSiteTypeId?: number; orderNumber: number } {
|
|
||||||
return connectedDatabase
|
|
||||||
.prepare(
|
|
||||||
'select burialSiteTypeId, orderNumber from BurialSiteTypeFields where burialSiteTypeFieldId = ?'
|
|
||||||
)
|
|
||||||
.get(burialSiteTypeFieldId) as {
|
|
||||||
burialSiteTypeId?: number
|
|
||||||
orderNumber: number
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function moveBurialSiteTypeFieldDown(
|
export async function moveBurialSiteTypeFieldDown(
|
||||||
burialSiteTypeFieldId: number | string
|
burialSiteTypeFieldId: number | string
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
|
|
@ -161,3 +147,17 @@ export async function moveBurialSiteTypeFieldUpToTop(
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getCurrentField(
|
||||||
|
burialSiteTypeFieldId: number | string,
|
||||||
|
connectedDatabase: PoolConnection
|
||||||
|
): { burialSiteTypeId?: number; orderNumber: number } {
|
||||||
|
return connectedDatabase
|
||||||
|
.prepare(
|
||||||
|
'select burialSiteTypeId, orderNumber from BurialSiteTypeFields where burialSiteTypeFieldId = ?'
|
||||||
|
)
|
||||||
|
.get(burialSiteTypeFieldId) as {
|
||||||
|
burialSiteTypeId?: number
|
||||||
|
orderNumber: number
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,6 @@
|
||||||
import { clearCacheByTableName } from '../helpers/functions.cache.js';
|
import { clearCacheByTableName } from '../helpers/functions.cache.js';
|
||||||
import { acquireConnection } from './pool.js';
|
import { acquireConnection } from './pool.js';
|
||||||
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
|
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
|
||||||
function getCurrentField(contractTypeFieldId, connectedDatabase) {
|
|
||||||
return connectedDatabase
|
|
||||||
.prepare(`select contractTypeId, orderNumber
|
|
||||||
from ContractTypeFields
|
|
||||||
where contractTypeFieldId = ?`)
|
|
||||||
.get(contractTypeFieldId);
|
|
||||||
}
|
|
||||||
export async function moveContractTypeFieldDown(contractTypeFieldId) {
|
export async function moveContractTypeFieldDown(contractTypeFieldId) {
|
||||||
const database = await acquireConnection();
|
const database = await acquireConnection();
|
||||||
const currentField = getCurrentField(contractTypeFieldId, database);
|
const currentField = getCurrentField(contractTypeFieldId, database);
|
||||||
|
|
@ -100,3 +93,10 @@ export async function moveContractTypeFieldUpToTop(contractTypeFieldId) {
|
||||||
clearCacheByTableName('ContractTypeFields');
|
clearCacheByTableName('ContractTypeFields');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
function getCurrentField(contractTypeFieldId, connectedDatabase) {
|
||||||
|
return connectedDatabase
|
||||||
|
.prepare(`select contractTypeId, orderNumber
|
||||||
|
from ContractTypeFields
|
||||||
|
where contractTypeFieldId = ?`)
|
||||||
|
.get(contractTypeFieldId);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,22 +5,6 @@ import { clearCacheByTableName } from '../helpers/functions.cache.js'
|
||||||
import { acquireConnection } from './pool.js'
|
import { acquireConnection } from './pool.js'
|
||||||
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
|
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
|
||||||
|
|
||||||
function getCurrentField(
|
|
||||||
contractTypeFieldId: number | string,
|
|
||||||
connectedDatabase: PoolConnection
|
|
||||||
): { contractTypeId?: number; orderNumber: number } {
|
|
||||||
return connectedDatabase
|
|
||||||
.prepare(
|
|
||||||
`select contractTypeId, orderNumber
|
|
||||||
from ContractTypeFields
|
|
||||||
where contractTypeFieldId = ?`
|
|
||||||
)
|
|
||||||
.get(contractTypeFieldId) as {
|
|
||||||
contractTypeId?: number
|
|
||||||
orderNumber: number
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function moveContractTypeFieldDown(
|
export async function moveContractTypeFieldDown(
|
||||||
contractTypeFieldId: number | string
|
contractTypeFieldId: number | string
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
|
|
@ -198,3 +182,19 @@ export async function moveContractTypeFieldUpToTop(
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getCurrentField(
|
||||||
|
contractTypeFieldId: number | string,
|
||||||
|
connectedDatabase: PoolConnection
|
||||||
|
): { contractTypeId?: number; orderNumber: number } {
|
||||||
|
return connectedDatabase
|
||||||
|
.prepare(
|
||||||
|
`select contractTypeId, orderNumber
|
||||||
|
from ContractTypeFields
|
||||||
|
where contractTypeFieldId = ?`
|
||||||
|
)
|
||||||
|
.get(contractTypeFieldId) as {
|
||||||
|
contractTypeId?: number
|
||||||
|
orderNumber: number
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { Pool, type PoolConnection } from 'better-sqlite-pool'
|
import { type PoolConnection, Pool } from 'better-sqlite-pool'
|
||||||
import Debug from 'debug'
|
import Debug from 'debug'
|
||||||
import exitHook from 'exit-hook'
|
import exitHook from 'exit-hook'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,18 @@
|
||||||
export interface UpdateBurialSiteForm {
|
export interface UpdateBurialSiteForm {
|
||||||
burialSiteId: string | number;
|
burialSiteId: number | string;
|
||||||
burialSiteNameSegment1?: string;
|
burialSiteNameSegment1?: string;
|
||||||
burialSiteNameSegment2?: string;
|
burialSiteNameSegment2?: string;
|
||||||
burialSiteNameSegment3?: string;
|
burialSiteNameSegment3?: string;
|
||||||
burialSiteNameSegment4?: string;
|
burialSiteNameSegment4?: string;
|
||||||
burialSiteNameSegment5?: string;
|
burialSiteNameSegment5?: string;
|
||||||
burialSiteTypeId: string | number;
|
burialSiteStatusId: number | string;
|
||||||
burialSiteStatusId: string | number;
|
burialSiteTypeId: number | string;
|
||||||
cemeteryId: string | number;
|
cemeteryId: number | string;
|
||||||
cemeterySvgId: string;
|
cemeterySvgId: string;
|
||||||
burialSiteLatitude: string;
|
burialSiteLatitude: string;
|
||||||
burialSiteLongitude: string;
|
burialSiteLongitude: string;
|
||||||
burialSiteTypeFieldIds?: string;
|
|
||||||
[fieldValue_burialSiteTypeFieldId: string]: unknown;
|
[fieldValue_burialSiteTypeFieldId: string]: unknown;
|
||||||
|
burialSiteTypeFieldIds?: string;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Updates a burial site.
|
* Updates a burial site.
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import getCemetery from './getCemetery.js'
|
||||||
import { acquireConnection } from './pool.js'
|
import { acquireConnection } from './pool.js'
|
||||||
|
|
||||||
export interface UpdateBurialSiteForm {
|
export interface UpdateBurialSiteForm {
|
||||||
burialSiteId: string | number
|
burialSiteId: number | string
|
||||||
|
|
||||||
burialSiteNameSegment1?: string
|
burialSiteNameSegment1?: string
|
||||||
burialSiteNameSegment2?: string
|
burialSiteNameSegment2?: string
|
||||||
|
|
@ -14,17 +14,17 @@ export interface UpdateBurialSiteForm {
|
||||||
burialSiteNameSegment4?: string
|
burialSiteNameSegment4?: string
|
||||||
burialSiteNameSegment5?: string
|
burialSiteNameSegment5?: string
|
||||||
|
|
||||||
burialSiteTypeId: string | number
|
burialSiteStatusId: number | string
|
||||||
burialSiteStatusId: string | number
|
burialSiteTypeId: number | string
|
||||||
|
|
||||||
cemeteryId: string | number
|
cemeteryId: number | string
|
||||||
cemeterySvgId: string
|
cemeterySvgId: string
|
||||||
|
|
||||||
burialSiteLatitude: string
|
burialSiteLatitude: string
|
||||||
burialSiteLongitude: string
|
burialSiteLongitude: string
|
||||||
|
|
||||||
burialSiteTypeFieldIds?: string
|
|
||||||
[fieldValue_burialSiteTypeFieldId: string]: unknown
|
[fieldValue_burialSiteTypeFieldId: string]: unknown
|
||||||
|
burialSiteTypeFieldIds?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { type DateString, type TimeString } from '@cityssm/utils-datetime';
|
import { type DateString, type TimeString } from '@cityssm/utils-datetime';
|
||||||
export interface UpdateBurialSiteCommentForm {
|
export interface UpdateBurialSiteCommentForm {
|
||||||
burialSiteCommentId: string | number;
|
burialSiteCommentId: number | string;
|
||||||
|
comment: string;
|
||||||
commentDateString: DateString;
|
commentDateString: DateString;
|
||||||
commentTimeString: TimeString;
|
commentTimeString: TimeString;
|
||||||
comment: string;
|
|
||||||
}
|
}
|
||||||
export default function updateBurialSiteComment(commentForm: UpdateBurialSiteCommentForm, user: User): Promise<boolean>;
|
export default function updateBurialSiteComment(commentForm: UpdateBurialSiteCommentForm, user: User): Promise<boolean>;
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,10 @@ import {
|
||||||
import { acquireConnection } from './pool.js'
|
import { acquireConnection } from './pool.js'
|
||||||
|
|
||||||
export interface UpdateBurialSiteCommentForm {
|
export interface UpdateBurialSiteCommentForm {
|
||||||
burialSiteCommentId: string | number
|
burialSiteCommentId: number | string
|
||||||
|
comment: string
|
||||||
commentDateString: DateString
|
commentDateString: DateString
|
||||||
commentTimeString: TimeString
|
commentTimeString: TimeString
|
||||||
comment: string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function updateBurialSiteComment(
|
export default async function updateBurialSiteComment(
|
||||||
|
|
|
||||||
|
|
@ -16,16 +16,16 @@ export interface Config {
|
||||||
};
|
};
|
||||||
aliases: {
|
aliases: {
|
||||||
externalReceiptNumber?: string;
|
externalReceiptNumber?: string;
|
||||||
workOrderOpenDate?: string;
|
|
||||||
workOrderCloseDate?: string;
|
workOrderCloseDate?: string;
|
||||||
|
workOrderOpenDate?: string;
|
||||||
};
|
};
|
||||||
settings: {
|
settings: {
|
||||||
cityDefault?: string;
|
cityDefault?: string;
|
||||||
provinceDefault?: string;
|
provinceDefault?: string;
|
||||||
latitudeMin?: number;
|
|
||||||
latitudeMax?: number;
|
latitudeMax?: number;
|
||||||
longitudeMin?: number;
|
latitudeMin?: number;
|
||||||
longitudeMax?: number;
|
longitudeMax?: number;
|
||||||
|
longitudeMin?: number;
|
||||||
fees: {
|
fees: {
|
||||||
taxPercentageDefault?: number;
|
taxPercentageDefault?: number;
|
||||||
};
|
};
|
||||||
|
|
@ -96,10 +96,10 @@ export interface ConfigBurialSiteNameSegments {
|
||||||
isAvailable?: boolean;
|
isAvailable?: boolean;
|
||||||
isRequired?: boolean;
|
isRequired?: boolean;
|
||||||
label?: string;
|
label?: string;
|
||||||
|
maxLength?: number;
|
||||||
|
minLength?: number;
|
||||||
prefix?: string;
|
prefix?: string;
|
||||||
suffix?: string;
|
suffix?: string;
|
||||||
minLength?: number;
|
|
||||||
maxLength?: number;
|
|
||||||
}>>;
|
}>>;
|
||||||
}
|
}
|
||||||
export {};
|
export {};
|
||||||
|
|
|
||||||
|
|
@ -2,37 +2,47 @@ import type { config as MSSQLConfig } from 'mssql'
|
||||||
|
|
||||||
export interface Config {
|
export interface Config {
|
||||||
application: ConfigApplication
|
application: ConfigApplication
|
||||||
|
|
||||||
session: ConfigSession
|
session: ConfigSession
|
||||||
|
|
||||||
reverseProxy: {
|
reverseProxy: {
|
||||||
disableCompression?: boolean
|
disableCompression?: boolean
|
||||||
disableEtag?: boolean
|
disableEtag?: boolean
|
||||||
urlPrefix?: string
|
urlPrefix?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
activeDirectory?: ConfigActiveDirectory
|
activeDirectory?: ConfigActiveDirectory
|
||||||
|
|
||||||
users: {
|
users: {
|
||||||
testing?: Array<`*${string}`>
|
testing?: Array<`*${string}`>
|
||||||
canLogin?: string[]
|
canLogin?: string[]
|
||||||
canUpdate?: string[]
|
canUpdate?: string[]
|
||||||
isAdmin?: string[]
|
isAdmin?: string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
aliases: {
|
aliases: {
|
||||||
externalReceiptNumber?: string
|
externalReceiptNumber?: string
|
||||||
workOrderOpenDate?: string
|
|
||||||
workOrderCloseDate?: string
|
workOrderCloseDate?: string
|
||||||
|
workOrderOpenDate?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
settings: {
|
settings: {
|
||||||
cityDefault?: string
|
cityDefault?: string
|
||||||
provinceDefault?: string
|
provinceDefault?: string
|
||||||
latitudeMin?: number
|
|
||||||
latitudeMax?: number
|
latitudeMax?: number
|
||||||
longitudeMin?: number
|
latitudeMin?: number
|
||||||
longitudeMax?: number
|
longitudeMax?: number
|
||||||
|
longitudeMin?: number
|
||||||
|
|
||||||
fees: {
|
fees: {
|
||||||
taxPercentageDefault?: number
|
taxPercentageDefault?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
burialSites: {
|
burialSites: {
|
||||||
burialSiteNameSegments?: ConfigBurialSiteNameSegments
|
burialSiteNameSegments?: ConfigBurialSiteNameSegments
|
||||||
}
|
}
|
||||||
|
|
||||||
contracts: {
|
contracts: {
|
||||||
burialSiteIdIsRequired?: boolean
|
burialSiteIdIsRequired?: boolean
|
||||||
contractEndDateIsRequired?: boolean
|
contractEndDateIsRequired?: boolean
|
||||||
|
|
@ -40,6 +50,7 @@ export interface Config {
|
||||||
deathAgePeriods?: string[]
|
deathAgePeriods?: string[]
|
||||||
prints?: string[]
|
prints?: string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
workOrders: {
|
workOrders: {
|
||||||
workOrderNumberLength?: number
|
workOrderNumberLength?: number
|
||||||
workOrderMilestoneDateRecentBeforeDays?: number
|
workOrderMilestoneDateRecentBeforeDays?: number
|
||||||
|
|
@ -47,12 +58,15 @@ export interface Config {
|
||||||
calendarEmailAddress?: string
|
calendarEmailAddress?: string
|
||||||
prints?: string[]
|
prints?: string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
adminCleanup: {
|
adminCleanup: {
|
||||||
recordDeleteAgeDays?: number
|
recordDeleteAgeDays?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
printPdf: {
|
printPdf: {
|
||||||
contentDisposition?: 'attachment' | 'inline'
|
contentDisposition?: 'attachment' | 'inline'
|
||||||
}
|
}
|
||||||
|
|
||||||
dynamicsGP?: {
|
dynamicsGP?: {
|
||||||
integrationIsEnabled: boolean
|
integrationIsEnabled: boolean
|
||||||
mssqlConfig?: MSSQLConfig
|
mssqlConfig?: MSSQLConfig
|
||||||
|
|
@ -109,10 +123,10 @@ export interface ConfigBurialSiteNameSegments {
|
||||||
isAvailable?: boolean
|
isAvailable?: boolean
|
||||||
isRequired?: boolean
|
isRequired?: boolean
|
||||||
label?: string
|
label?: string
|
||||||
|
maxLength?: number
|
||||||
|
minLength?: number
|
||||||
prefix?: string
|
prefix?: string
|
||||||
suffix?: string
|
suffix?: string
|
||||||
minLength?: number
|
|
||||||
maxLength?: number
|
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,245 @@
|
||||||
import type { DateString, TimeString } from '@cityssm/utils-datetime';
|
import type { DateString, TimeString } from '@cityssm/utils-datetime';
|
||||||
export interface Record {
|
export interface BurialSite extends Record {
|
||||||
recordCreate_userName?: string;
|
burialSiteId: number;
|
||||||
recordCreate_timeMillis?: number;
|
burialSiteName?: string;
|
||||||
recordCreate_dateString?: string;
|
burialSiteNameSegment1?: string;
|
||||||
recordUpdate_userName?: string;
|
burialSiteNameSegment2?: string;
|
||||||
recordUpdate_timeMillis?: number;
|
burialSiteNameSegment3?: string;
|
||||||
recordUpdate_dateString?: string;
|
burialSiteNameSegment4?: string;
|
||||||
recordUpdate_timeString?: string;
|
burialSiteNameSegment5?: string;
|
||||||
recordDelete_userName?: string;
|
burialSiteType?: string;
|
||||||
recordDelete_timeMillis?: number;
|
burialSiteTypeId?: number;
|
||||||
recordDelete_dateString?: string;
|
cemetery?: Cemetery;
|
||||||
|
cemeteryId?: number;
|
||||||
|
cemeteryName?: string;
|
||||||
|
cemeterySvg?: string;
|
||||||
|
cemeterySvgId?: string;
|
||||||
|
burialSiteLatitude?: number;
|
||||||
|
burialSiteLongitude?: number;
|
||||||
|
burialSiteStatus?: string;
|
||||||
|
burialSiteStatusId?: number;
|
||||||
|
burialSiteFields?: BurialSiteField[];
|
||||||
|
contractCount?: number;
|
||||||
|
contracts?: Contract[];
|
||||||
|
burialSiteComments?: BurialSiteComment[];
|
||||||
|
}
|
||||||
|
export interface BurialSiteComment extends Record {
|
||||||
|
burialSiteCommentId?: number;
|
||||||
|
burialSiteId?: number;
|
||||||
|
commentDate?: number;
|
||||||
|
commentDateString?: string;
|
||||||
|
commentTime?: number;
|
||||||
|
commentTimePeriodString?: string;
|
||||||
|
commentTimeString?: string;
|
||||||
|
comment?: string;
|
||||||
|
}
|
||||||
|
export interface BurialSiteField extends BurialSiteTypeField, Record {
|
||||||
|
burialSiteFieldValue?: string;
|
||||||
|
burialSiteId?: number;
|
||||||
|
}
|
||||||
|
export interface BurialSiteStatus extends Record {
|
||||||
|
burialSiteStatusId: number;
|
||||||
|
burialSiteStatus: string;
|
||||||
|
orderNumber?: number;
|
||||||
|
}
|
||||||
|
export interface BurialSiteType extends Record {
|
||||||
|
burialSiteTypeId: number;
|
||||||
|
burialSiteType: string;
|
||||||
|
burialSiteTypeFields?: BurialSiteTypeField[];
|
||||||
|
orderNumber?: number;
|
||||||
|
}
|
||||||
|
export interface BurialSiteTypeField extends Record {
|
||||||
|
burialSiteTypeFieldId: number;
|
||||||
|
burialSiteTypeField?: string;
|
||||||
|
burialSiteType: BurialSiteType;
|
||||||
|
burialSiteTypeId?: number;
|
||||||
|
fieldType: string;
|
||||||
|
fieldValues?: string;
|
||||||
|
isRequired?: boolean;
|
||||||
|
maxLength?: number;
|
||||||
|
minLength?: number;
|
||||||
|
pattern?: string;
|
||||||
|
orderNumber?: number;
|
||||||
}
|
}
|
||||||
export interface Cemetery extends Record {
|
export interface Cemetery extends Record {
|
||||||
cemeteryId?: number;
|
cemeteryId?: number;
|
||||||
cemeteryName?: string;
|
|
||||||
cemeteryKey?: string;
|
|
||||||
cemeteryDescription?: string;
|
cemeteryDescription?: string;
|
||||||
|
cemeteryKey?: string;
|
||||||
|
cemeteryName?: string;
|
||||||
cemeteryLatitude?: number;
|
cemeteryLatitude?: number;
|
||||||
cemeteryLongitude?: number;
|
cemeteryLongitude?: number;
|
||||||
cemeterySvg?: string;
|
cemeterySvg?: string;
|
||||||
cemeteryAddress1?: string;
|
cemeteryAddress1?: string;
|
||||||
cemeteryAddress2?: string;
|
cemeteryAddress2?: string;
|
||||||
cemeteryCity?: string;
|
cemeteryCity?: string;
|
||||||
cemeteryProvince?: string;
|
|
||||||
cemeteryPostalCode?: string;
|
cemeteryPostalCode?: string;
|
||||||
|
cemeteryProvince?: string;
|
||||||
cemeteryPhoneNumber?: string;
|
cemeteryPhoneNumber?: string;
|
||||||
burialSiteCount?: number;
|
burialSiteCount?: number;
|
||||||
}
|
}
|
||||||
|
export interface CommittalType extends Record {
|
||||||
|
committalTypeId: number;
|
||||||
|
committalType: string;
|
||||||
|
committalTypeKey: string;
|
||||||
|
orderNumber?: number;
|
||||||
|
}
|
||||||
|
export interface Contract extends Record {
|
||||||
|
contractId: number;
|
||||||
|
contractType: string;
|
||||||
|
contractTypeId: number;
|
||||||
|
isPreneed: boolean;
|
||||||
|
printEJS?: string;
|
||||||
|
burialSiteId?: number;
|
||||||
|
burialSiteName?: string;
|
||||||
|
burialSiteType?: string;
|
||||||
|
burialSiteTypeId?: number;
|
||||||
|
cemeteryId?: number;
|
||||||
|
cemeteryName?: string;
|
||||||
|
contractStartDate: number;
|
||||||
|
contractStartDateString: string;
|
||||||
|
contractEndDate?: number;
|
||||||
|
contractEndDateString?: string;
|
||||||
|
purchaserName: string;
|
||||||
|
purchaserAddress1: string;
|
||||||
|
purchaserAddress2: string;
|
||||||
|
purchaserCity: string;
|
||||||
|
purchaserPostalCode: string;
|
||||||
|
purchaserProvince: string;
|
||||||
|
purchaserEmail: string;
|
||||||
|
purchaserPhoneNumber: string;
|
||||||
|
purchaserRelationship: string;
|
||||||
|
funeralDirectorName: string;
|
||||||
|
funeralHomeId: number | null;
|
||||||
|
funeralHomeName: string | null;
|
||||||
|
funeralHomeKey?: string;
|
||||||
|
funeralHomeAddress1?: string;
|
||||||
|
funeralHomeAddress2?: string;
|
||||||
|
funeralHomeCity?: string;
|
||||||
|
funeralHomePostalCode?: string;
|
||||||
|
funeralHomeProvince?: string;
|
||||||
|
funeralDate?: number;
|
||||||
|
funeralDateString?: DateString;
|
||||||
|
funeralTime?: number;
|
||||||
|
funeralTimePeriodString?: string;
|
||||||
|
funeralTimeString?: TimeString;
|
||||||
|
committalType?: string;
|
||||||
|
committalTypeId?: number;
|
||||||
|
contractComments?: ContractComment[];
|
||||||
|
contractFees?: ContractFee[];
|
||||||
|
contractFields?: ContractField[];
|
||||||
|
contractInterments?: ContractInterment[];
|
||||||
|
contractTransactions?: ContractTransaction[];
|
||||||
|
workOrders?: WorkOrder[];
|
||||||
|
}
|
||||||
|
export interface ContractComment extends Record {
|
||||||
|
contractCommentId: number;
|
||||||
|
contractId?: number;
|
||||||
|
commentDate: number;
|
||||||
|
commentDateString: string;
|
||||||
|
commentTime: number;
|
||||||
|
commentTimePeriodString: string;
|
||||||
|
commentTimeString: string;
|
||||||
|
comment: string;
|
||||||
|
}
|
||||||
|
export interface ContractFee extends Fee, Record {
|
||||||
|
contractId?: number;
|
||||||
|
quantity?: number;
|
||||||
|
}
|
||||||
|
export interface ContractField extends ContractTypeField, Record {
|
||||||
|
contractId: number;
|
||||||
|
contractTypeFieldId: number;
|
||||||
|
fieldValue?: string;
|
||||||
|
}
|
||||||
|
export interface ContractInterment extends Record {
|
||||||
|
contractId?: number;
|
||||||
|
intermentNumber?: number;
|
||||||
|
deceasedName?: string;
|
||||||
|
deceasedAddress1?: string;
|
||||||
|
deceasedAddress2?: string;
|
||||||
|
deceasedCity?: string;
|
||||||
|
deceasedPostalCode?: string;
|
||||||
|
deceasedProvince?: string;
|
||||||
|
birthDate?: number;
|
||||||
|
birthDateString?: DateString;
|
||||||
|
birthPlace?: string;
|
||||||
|
deathAge?: number | null;
|
||||||
|
deathAgePeriod?: string;
|
||||||
|
deathDate?: number;
|
||||||
|
deathDateString?: DateString;
|
||||||
|
deathPlace?: string;
|
||||||
|
intermentContainerType?: string;
|
||||||
|
intermentContainerTypeId?: number;
|
||||||
|
isCremationType?: boolean;
|
||||||
|
contractIdCount?: number;
|
||||||
|
recordUpdate_timeMillisMax?: number;
|
||||||
|
}
|
||||||
|
export interface ContractTransaction extends Record {
|
||||||
|
contractId?: number;
|
||||||
|
transactionIndex?: number;
|
||||||
|
transactionDate?: number;
|
||||||
|
transactionDateString?: string;
|
||||||
|
transactionTime?: number;
|
||||||
|
transactionTimeString?: string;
|
||||||
|
dynamicsGPDocument?: DynamicsGPDocument;
|
||||||
|
externalReceiptNumber?: string;
|
||||||
|
transactionAmount: number;
|
||||||
|
transactionNote?: string;
|
||||||
|
}
|
||||||
|
export interface ContractType extends Record {
|
||||||
|
contractTypeId: number;
|
||||||
|
contractType: string;
|
||||||
|
isPreneed: boolean;
|
||||||
|
contractTypeFields?: ContractTypeField[];
|
||||||
|
contractTypePrints?: string[];
|
||||||
|
orderNumber?: number;
|
||||||
|
}
|
||||||
|
export interface ContractTypeField {
|
||||||
|
contractTypeFieldId: number;
|
||||||
|
contractTypeField?: string;
|
||||||
|
contractTypeId?: number;
|
||||||
|
fieldType: string;
|
||||||
|
fieldValues?: string;
|
||||||
|
isRequired?: boolean;
|
||||||
|
maxLength?: number;
|
||||||
|
minLength?: number;
|
||||||
|
pattern?: string;
|
||||||
|
orderNumber?: number;
|
||||||
|
}
|
||||||
|
export interface DynamicsGPDocument {
|
||||||
|
documentType: 'Cash Receipt' | 'Invoice';
|
||||||
|
documentDate: Date;
|
||||||
|
documentDescription: string[];
|
||||||
|
documentNumber: string;
|
||||||
|
documentTotal: number;
|
||||||
|
}
|
||||||
|
export interface Fee extends Record {
|
||||||
|
feeId: number;
|
||||||
|
feeCategory?: string;
|
||||||
|
feeCategoryId: number;
|
||||||
|
feeAccount?: string;
|
||||||
|
feeDescription?: string;
|
||||||
|
feeName?: string;
|
||||||
|
contractType?: string;
|
||||||
|
contractTypeId?: number;
|
||||||
|
burialSiteType?: string;
|
||||||
|
burialSiteTypeId?: number;
|
||||||
|
includeQuantity?: boolean;
|
||||||
|
quantityUnit?: string;
|
||||||
|
feeAmount?: number;
|
||||||
|
feeFunction?: string;
|
||||||
|
taxAmount?: number;
|
||||||
|
taxPercentage?: number;
|
||||||
|
isRequired?: boolean;
|
||||||
|
orderNumber: number;
|
||||||
|
contractFeeCount?: number;
|
||||||
|
}
|
||||||
|
export interface FeeCategory extends Record {
|
||||||
|
feeCategoryId: number;
|
||||||
|
feeCategory: string;
|
||||||
|
fees: Fee[];
|
||||||
|
isGroupedFee: boolean;
|
||||||
|
orderNumber?: number;
|
||||||
|
}
|
||||||
export interface FuneralHome extends Record {
|
export interface FuneralHome extends Record {
|
||||||
funeralHomeId?: number;
|
funeralHomeId?: number;
|
||||||
funeralHomeKey?: string;
|
funeralHomeKey?: string;
|
||||||
|
|
@ -38,139 +251,6 @@ export interface FuneralHome extends Record {
|
||||||
funeralHomePostalCode?: string;
|
funeralHomePostalCode?: string;
|
||||||
funeralHomePhoneNumber?: string;
|
funeralHomePhoneNumber?: string;
|
||||||
}
|
}
|
||||||
export interface BurialSiteType extends Record {
|
|
||||||
burialSiteTypeId: number;
|
|
||||||
burialSiteType: string;
|
|
||||||
orderNumber?: number;
|
|
||||||
burialSiteTypeFields?: BurialSiteTypeField[];
|
|
||||||
}
|
|
||||||
export interface BurialSiteTypeField extends Record {
|
|
||||||
burialSiteTypeFieldId: number;
|
|
||||||
burialSiteTypeField?: string;
|
|
||||||
burialSiteTypeId?: number;
|
|
||||||
burialSiteType: BurialSiteType;
|
|
||||||
fieldType: string;
|
|
||||||
fieldValues?: string;
|
|
||||||
isRequired?: boolean;
|
|
||||||
pattern?: string;
|
|
||||||
minLength?: number;
|
|
||||||
maxLength?: number;
|
|
||||||
orderNumber?: number;
|
|
||||||
}
|
|
||||||
export interface BurialSiteStatus extends Record {
|
|
||||||
burialSiteStatusId: number;
|
|
||||||
burialSiteStatus: string;
|
|
||||||
orderNumber?: number;
|
|
||||||
}
|
|
||||||
export interface BurialSite extends Record {
|
|
||||||
burialSiteId: number;
|
|
||||||
burialSiteNameSegment1?: string;
|
|
||||||
burialSiteNameSegment2?: string;
|
|
||||||
burialSiteNameSegment3?: string;
|
|
||||||
burialSiteNameSegment4?: string;
|
|
||||||
burialSiteNameSegment5?: string;
|
|
||||||
burialSiteName?: string;
|
|
||||||
burialSiteTypeId?: number;
|
|
||||||
burialSiteType?: string;
|
|
||||||
cemeteryId?: number;
|
|
||||||
cemeteryName?: string;
|
|
||||||
cemetery?: Cemetery;
|
|
||||||
cemeterySvg?: string;
|
|
||||||
cemeterySvgId?: string;
|
|
||||||
burialSiteLatitude?: number;
|
|
||||||
burialSiteLongitude?: number;
|
|
||||||
burialSiteStatusId?: number;
|
|
||||||
burialSiteStatus?: string;
|
|
||||||
burialSiteFields?: BurialSiteField[];
|
|
||||||
contractCount?: number;
|
|
||||||
contracts?: Contract[];
|
|
||||||
burialSiteComments?: BurialSiteComment[];
|
|
||||||
}
|
|
||||||
export interface BurialSiteComment extends Record {
|
|
||||||
burialSiteCommentId?: number;
|
|
||||||
burialSiteId?: number;
|
|
||||||
commentDate?: number;
|
|
||||||
commentDateString?: string;
|
|
||||||
commentTime?: number;
|
|
||||||
commentTimeString?: string;
|
|
||||||
commentTimePeriodString?: string;
|
|
||||||
comment?: string;
|
|
||||||
}
|
|
||||||
export interface BurialSiteField extends BurialSiteTypeField, Record {
|
|
||||||
burialSiteId?: number;
|
|
||||||
burialSiteFieldValue?: string;
|
|
||||||
}
|
|
||||||
export interface ContractType extends Record {
|
|
||||||
contractTypeId: number;
|
|
||||||
contractType: string;
|
|
||||||
isPreneed: boolean;
|
|
||||||
orderNumber?: number;
|
|
||||||
contractTypeFields?: ContractTypeField[];
|
|
||||||
contractTypePrints?: string[];
|
|
||||||
}
|
|
||||||
export interface ContractTypeField {
|
|
||||||
contractTypeFieldId: number;
|
|
||||||
contractTypeId?: number;
|
|
||||||
contractTypeField?: string;
|
|
||||||
fieldType: string;
|
|
||||||
fieldValues?: string;
|
|
||||||
isRequired?: boolean;
|
|
||||||
pattern?: string;
|
|
||||||
minLength?: number;
|
|
||||||
maxLength?: number;
|
|
||||||
orderNumber?: number;
|
|
||||||
}
|
|
||||||
export interface FeeCategory extends Record {
|
|
||||||
feeCategoryId: number;
|
|
||||||
feeCategory: string;
|
|
||||||
fees: Fee[];
|
|
||||||
isGroupedFee: boolean;
|
|
||||||
orderNumber?: number;
|
|
||||||
}
|
|
||||||
export interface Fee extends Record {
|
|
||||||
feeId: number;
|
|
||||||
feeCategoryId: number;
|
|
||||||
feeCategory?: string;
|
|
||||||
feeName?: string;
|
|
||||||
feeDescription?: string;
|
|
||||||
feeAccount?: string;
|
|
||||||
contractTypeId?: number;
|
|
||||||
contractType?: string;
|
|
||||||
burialSiteTypeId?: number;
|
|
||||||
burialSiteType?: string;
|
|
||||||
includeQuantity?: boolean;
|
|
||||||
quantityUnit?: string;
|
|
||||||
feeAmount?: number;
|
|
||||||
feeFunction?: string;
|
|
||||||
taxAmount?: number;
|
|
||||||
taxPercentage?: number;
|
|
||||||
isRequired?: boolean;
|
|
||||||
orderNumber: number;
|
|
||||||
contractFeeCount?: number;
|
|
||||||
}
|
|
||||||
export interface ContractFee extends Fee, Record {
|
|
||||||
contractId?: number;
|
|
||||||
quantity?: number;
|
|
||||||
}
|
|
||||||
export interface ContractTransaction extends Record {
|
|
||||||
contractId?: number;
|
|
||||||
transactionIndex?: number;
|
|
||||||
transactionDate?: number;
|
|
||||||
transactionDateString?: string;
|
|
||||||
transactionTime?: number;
|
|
||||||
transactionTimeString?: string;
|
|
||||||
transactionAmount: number;
|
|
||||||
externalReceiptNumber?: string;
|
|
||||||
transactionNote?: string;
|
|
||||||
dynamicsGPDocument?: DynamicsGPDocument;
|
|
||||||
}
|
|
||||||
export interface DynamicsGPDocument {
|
|
||||||
documentType: 'Invoice' | 'Cash Receipt';
|
|
||||||
documentNumber: string;
|
|
||||||
documentDate: Date;
|
|
||||||
documentDescription: string[];
|
|
||||||
documentTotal: number;
|
|
||||||
}
|
|
||||||
export interface IntermentContainerType extends Record {
|
export interface IntermentContainerType extends Record {
|
||||||
intermentContainerTypeId: number;
|
intermentContainerTypeId: number;
|
||||||
intermentContainerType: string;
|
intermentContainerType: string;
|
||||||
|
|
@ -178,107 +258,35 @@ export interface IntermentContainerType extends Record {
|
||||||
isCremationType: boolean;
|
isCremationType: boolean;
|
||||||
orderNumber?: number;
|
orderNumber?: number;
|
||||||
}
|
}
|
||||||
export interface CommittalType extends Record {
|
export interface Record {
|
||||||
committalTypeId: number;
|
recordCreate_userName?: string;
|
||||||
committalType: string;
|
recordCreate_timeMillis?: number;
|
||||||
committalTypeKey: string;
|
recordCreate_dateString?: string;
|
||||||
orderNumber?: number;
|
recordUpdate_userName?: string;
|
||||||
|
recordUpdate_timeMillis?: number;
|
||||||
|
recordUpdate_dateString?: string;
|
||||||
|
recordUpdate_timeString?: string;
|
||||||
|
recordDelete_userName?: string;
|
||||||
|
recordDelete_timeMillis?: number;
|
||||||
|
recordDelete_dateString?: string;
|
||||||
}
|
}
|
||||||
export interface ContractInterment extends Record {
|
export interface WorkOrder extends Record {
|
||||||
contractId?: number;
|
workOrderId: number;
|
||||||
intermentNumber?: number;
|
workOrderTypeId?: number;
|
||||||
deceasedName?: string;
|
|
||||||
deceasedAddress1?: string;
|
|
||||||
deceasedAddress2?: string;
|
|
||||||
deceasedCity?: string;
|
|
||||||
deceasedProvince?: string;
|
|
||||||
deceasedPostalCode?: string;
|
|
||||||
birthDate?: number;
|
|
||||||
birthDateString?: DateString;
|
|
||||||
birthPlace?: string;
|
|
||||||
deathDate?: number;
|
|
||||||
deathDateString?: DateString;
|
|
||||||
deathPlace?: string;
|
|
||||||
deathAge?: number | null;
|
|
||||||
deathAgePeriod?: string;
|
|
||||||
intermentContainerTypeId?: number;
|
|
||||||
intermentContainerType?: string;
|
|
||||||
isCremationType?: boolean;
|
|
||||||
contractIdCount?: number;
|
|
||||||
recordUpdate_timeMillisMax?: number;
|
|
||||||
}
|
|
||||||
export interface ContractComment extends Record {
|
|
||||||
contractCommentId: number;
|
|
||||||
contractId?: number;
|
|
||||||
commentDate: number;
|
|
||||||
commentDateString: string;
|
|
||||||
commentTime: number;
|
|
||||||
commentTimeString: string;
|
|
||||||
commentTimePeriodString: string;
|
|
||||||
comment: string;
|
|
||||||
}
|
|
||||||
export interface ContractField extends ContractTypeField, Record {
|
|
||||||
contractId: number;
|
|
||||||
contractTypeFieldId: number;
|
|
||||||
fieldValue?: string;
|
|
||||||
}
|
|
||||||
export interface Contract extends Record {
|
|
||||||
contractId: number;
|
|
||||||
contractTypeId: number;
|
|
||||||
contractType: string;
|
|
||||||
isPreneed: boolean;
|
|
||||||
printEJS?: string;
|
|
||||||
burialSiteId?: number;
|
|
||||||
burialSiteTypeId?: number;
|
|
||||||
burialSiteType?: string;
|
|
||||||
burialSiteName?: string;
|
|
||||||
cemeteryId?: number;
|
|
||||||
cemeteryName?: string;
|
|
||||||
contractStartDate: number;
|
|
||||||
contractStartDateString: string;
|
|
||||||
contractEndDate?: number;
|
|
||||||
contractEndDateString?: string;
|
|
||||||
purchaserName: string;
|
|
||||||
purchaserAddress1: string;
|
|
||||||
purchaserAddress2: string;
|
|
||||||
purchaserCity: string;
|
|
||||||
purchaserProvince: string;
|
|
||||||
purchaserPostalCode: string;
|
|
||||||
purchaserPhoneNumber: string;
|
|
||||||
purchaserEmail: string;
|
|
||||||
purchaserRelationship: string;
|
|
||||||
funeralHomeId: number | null;
|
|
||||||
funeralDirectorName: string;
|
|
||||||
funeralHomeName: string | null;
|
|
||||||
funeralHomeKey?: string;
|
|
||||||
funeralHomeAddress1?: string;
|
|
||||||
funeralHomeAddress2?: string;
|
|
||||||
funeralHomeCity?: string;
|
|
||||||
funeralHomeProvince?: string;
|
|
||||||
funeralHomePostalCode?: string;
|
|
||||||
funeralDate?: number;
|
|
||||||
funeralDateString?: DateString;
|
|
||||||
funeralTime?: number;
|
|
||||||
funeralTimeString?: TimeString;
|
|
||||||
funeralTimePeriodString?: string;
|
|
||||||
committalTypeId?: number;
|
|
||||||
committalType?: string;
|
|
||||||
contractFields?: ContractField[];
|
|
||||||
contractComments?: ContractComment[];
|
|
||||||
contractInterments?: ContractInterment[];
|
|
||||||
contractFees?: ContractFee[];
|
|
||||||
contractTransactions?: ContractTransaction[];
|
|
||||||
workOrders?: WorkOrder[];
|
|
||||||
}
|
|
||||||
export interface WorkOrderType extends Record {
|
|
||||||
workOrderTypeId: number;
|
|
||||||
workOrderType?: string;
|
workOrderType?: string;
|
||||||
orderNumber?: number;
|
workOrderNumber?: string;
|
||||||
}
|
workOrderDescription?: string;
|
||||||
export interface WorkOrderMilestoneType extends Record {
|
workOrderOpenDate?: number;
|
||||||
workOrderMilestoneTypeId: number;
|
workOrderOpenDateString?: string;
|
||||||
workOrderMilestoneType: string;
|
workOrderCloseDate?: number;
|
||||||
orderNumber?: number;
|
workOrderCloseDateString?: string;
|
||||||
|
workOrderMilestones?: WorkOrderMilestone[];
|
||||||
|
workOrderMilestoneCount?: number;
|
||||||
|
workOrderMilestoneCompletionCount?: number;
|
||||||
|
workOrderComments?: WorkOrderComment[];
|
||||||
|
workOrderBurialSites?: BurialSite[];
|
||||||
|
workOrderBurialSiteCount?: number;
|
||||||
|
workOrderContracts?: Contract[];
|
||||||
}
|
}
|
||||||
export interface WorkOrderComment extends Record {
|
export interface WorkOrderComment extends Record {
|
||||||
workOrderCommentId?: number;
|
workOrderCommentId?: number;
|
||||||
|
|
@ -307,23 +315,15 @@ export interface WorkOrderMilestone extends Record, WorkOrder {
|
||||||
workOrderMilestoneCompletionTimePeriodString?: string;
|
workOrderMilestoneCompletionTimePeriodString?: string;
|
||||||
workOrderRecordUpdate_timeMillis?: number;
|
workOrderRecordUpdate_timeMillis?: number;
|
||||||
}
|
}
|
||||||
export interface WorkOrder extends Record {
|
export interface WorkOrderMilestoneType extends Record {
|
||||||
workOrderId: number;
|
workOrderMilestoneTypeId: number;
|
||||||
workOrderTypeId?: number;
|
workOrderMilestoneType: string;
|
||||||
|
orderNumber?: number;
|
||||||
|
}
|
||||||
|
export interface WorkOrderType extends Record {
|
||||||
|
workOrderTypeId: number;
|
||||||
workOrderType?: string;
|
workOrderType?: string;
|
||||||
workOrderNumber?: string;
|
orderNumber?: number;
|
||||||
workOrderDescription?: string;
|
|
||||||
workOrderOpenDate?: number;
|
|
||||||
workOrderOpenDateString?: string;
|
|
||||||
workOrderCloseDate?: number;
|
|
||||||
workOrderCloseDateString?: string;
|
|
||||||
workOrderMilestones?: WorkOrderMilestone[];
|
|
||||||
workOrderMilestoneCount?: number;
|
|
||||||
workOrderMilestoneCompletionCount?: number;
|
|
||||||
workOrderComments?: WorkOrderComment[];
|
|
||||||
workOrderBurialSites?: BurialSite[];
|
|
||||||
workOrderBurialSiteCount?: number;
|
|
||||||
workOrderContracts?: Contract[];
|
|
||||||
}
|
}
|
||||||
declare global {
|
declare global {
|
||||||
export interface User {
|
export interface User {
|
||||||
|
|
|
||||||
|
|
@ -1,110 +1,29 @@
|
||||||
import type { DateString, TimeString } from '@cityssm/utils-datetime'
|
import type { DateString, TimeString } from '@cityssm/utils-datetime'
|
||||||
|
|
||||||
export interface Record {
|
|
||||||
recordCreate_userName?: string
|
|
||||||
recordCreate_timeMillis?: number
|
|
||||||
recordCreate_dateString?: string
|
|
||||||
|
|
||||||
recordUpdate_userName?: string
|
|
||||||
recordUpdate_timeMillis?: number
|
|
||||||
recordUpdate_dateString?: string
|
|
||||||
recordUpdate_timeString?: string
|
|
||||||
|
|
||||||
recordDelete_userName?: string
|
|
||||||
recordDelete_timeMillis?: number
|
|
||||||
recordDelete_dateString?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SUNRISE DB TYPES
|
|
||||||
*/
|
|
||||||
|
|
||||||
export interface Cemetery extends Record {
|
|
||||||
cemeteryId?: number
|
|
||||||
cemeteryName?: string
|
|
||||||
cemeteryKey?: string
|
|
||||||
cemeteryDescription?: string
|
|
||||||
|
|
||||||
cemeteryLatitude?: number
|
|
||||||
cemeteryLongitude?: number
|
|
||||||
cemeterySvg?: string
|
|
||||||
|
|
||||||
cemeteryAddress1?: string
|
|
||||||
cemeteryAddress2?: string
|
|
||||||
cemeteryCity?: string
|
|
||||||
cemeteryProvince?: string
|
|
||||||
cemeteryPostalCode?: string
|
|
||||||
cemeteryPhoneNumber?: string
|
|
||||||
|
|
||||||
burialSiteCount?: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface FuneralHome extends Record {
|
|
||||||
funeralHomeId?: number
|
|
||||||
funeralHomeKey?: string
|
|
||||||
funeralHomeName?: string
|
|
||||||
funeralHomeAddress1?: string
|
|
||||||
funeralHomeAddress2?: string
|
|
||||||
funeralHomeCity?: string
|
|
||||||
funeralHomeProvince?: string
|
|
||||||
funeralHomePostalCode?: string
|
|
||||||
funeralHomePhoneNumber?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface BurialSiteType extends Record {
|
|
||||||
burialSiteTypeId: number
|
|
||||||
burialSiteType: string
|
|
||||||
orderNumber?: number
|
|
||||||
burialSiteTypeFields?: BurialSiteTypeField[]
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface BurialSiteTypeField extends Record {
|
|
||||||
burialSiteTypeFieldId: number
|
|
||||||
burialSiteTypeField?: string
|
|
||||||
|
|
||||||
burialSiteTypeId?: number
|
|
||||||
burialSiteType: BurialSiteType
|
|
||||||
|
|
||||||
fieldType: string
|
|
||||||
fieldValues?: string
|
|
||||||
isRequired?: boolean
|
|
||||||
pattern?: string
|
|
||||||
minLength?: number
|
|
||||||
maxLength?: number
|
|
||||||
|
|
||||||
orderNumber?: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface BurialSiteStatus extends Record {
|
|
||||||
burialSiteStatusId: number
|
|
||||||
burialSiteStatus: string
|
|
||||||
orderNumber?: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface BurialSite extends Record {
|
export interface BurialSite extends Record {
|
||||||
burialSiteId: number
|
burialSiteId: number
|
||||||
|
|
||||||
|
burialSiteName?: string
|
||||||
burialSiteNameSegment1?: string
|
burialSiteNameSegment1?: string
|
||||||
burialSiteNameSegment2?: string
|
burialSiteNameSegment2?: string
|
||||||
burialSiteNameSegment3?: string
|
burialSiteNameSegment3?: string
|
||||||
burialSiteNameSegment4?: string
|
burialSiteNameSegment4?: string
|
||||||
burialSiteNameSegment5?: string
|
burialSiteNameSegment5?: string
|
||||||
burialSiteName?: string
|
|
||||||
|
|
||||||
burialSiteTypeId?: number
|
|
||||||
burialSiteType?: string
|
burialSiteType?: string
|
||||||
|
burialSiteTypeId?: number
|
||||||
|
|
||||||
|
cemetery?: Cemetery
|
||||||
cemeteryId?: number
|
cemeteryId?: number
|
||||||
cemeteryName?: string
|
cemeteryName?: string
|
||||||
cemetery?: Cemetery
|
|
||||||
cemeterySvg?: string
|
cemeterySvg?: string
|
||||||
cemeterySvgId?: string
|
cemeterySvgId?: string
|
||||||
|
|
||||||
burialSiteLatitude?: number
|
burialSiteLatitude?: number
|
||||||
burialSiteLongitude?: number
|
burialSiteLongitude?: number
|
||||||
|
|
||||||
burialSiteStatusId?: number
|
|
||||||
burialSiteStatus?: string
|
burialSiteStatus?: string
|
||||||
|
burialSiteStatusId?: number
|
||||||
|
|
||||||
burialSiteFields?: BurialSiteField[]
|
burialSiteFields?: BurialSiteField[]
|
||||||
|
|
||||||
|
|
@ -122,63 +41,269 @@ export interface BurialSiteComment extends Record {
|
||||||
commentDateString?: string
|
commentDateString?: string
|
||||||
|
|
||||||
commentTime?: number
|
commentTime?: number
|
||||||
commentTimeString?: string
|
|
||||||
commentTimePeriodString?: string
|
commentTimePeriodString?: string
|
||||||
|
commentTimeString?: string
|
||||||
|
|
||||||
comment?: string
|
comment?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface BurialSiteField extends BurialSiteTypeField, Record {
|
export interface BurialSiteField extends BurialSiteTypeField, Record {
|
||||||
burialSiteId?: number
|
|
||||||
burialSiteFieldValue?: string
|
burialSiteFieldValue?: string
|
||||||
|
burialSiteId?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ContractType extends Record {
|
export interface BurialSiteStatus extends Record {
|
||||||
contractTypeId: number
|
burialSiteStatusId: number
|
||||||
contractType: string
|
|
||||||
isPreneed: boolean
|
burialSiteStatus: string
|
||||||
orderNumber?: number
|
orderNumber?: number
|
||||||
contractTypeFields?: ContractTypeField[]
|
|
||||||
contractTypePrints?: string[]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ContractTypeField {
|
export interface BurialSiteType extends Record {
|
||||||
contractTypeFieldId: number
|
burialSiteTypeId: number
|
||||||
contractTypeId?: number
|
|
||||||
contractTypeField?: string
|
burialSiteType: string
|
||||||
|
burialSiteTypeFields?: BurialSiteTypeField[]
|
||||||
|
orderNumber?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BurialSiteTypeField extends Record {
|
||||||
|
burialSiteTypeFieldId: number
|
||||||
|
|
||||||
|
burialSiteTypeField?: string
|
||||||
|
|
||||||
|
burialSiteType: BurialSiteType
|
||||||
|
burialSiteTypeId?: number
|
||||||
|
|
||||||
fieldType: string
|
fieldType: string
|
||||||
fieldValues?: string
|
fieldValues?: string
|
||||||
isRequired?: boolean
|
isRequired?: boolean
|
||||||
pattern?: string
|
|
||||||
minLength?: number
|
|
||||||
maxLength?: number
|
maxLength?: number
|
||||||
|
minLength?: number
|
||||||
|
pattern?: string
|
||||||
|
|
||||||
orderNumber?: number
|
orderNumber?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FeeCategory extends Record {
|
export interface Cemetery extends Record {
|
||||||
feeCategoryId: number
|
cemeteryId?: number
|
||||||
feeCategory: string
|
|
||||||
fees: Fee[]
|
cemeteryDescription?: string
|
||||||
isGroupedFee: boolean
|
cemeteryKey?: string
|
||||||
|
cemeteryName?: string
|
||||||
|
|
||||||
|
cemeteryLatitude?: number
|
||||||
|
cemeteryLongitude?: number
|
||||||
|
cemeterySvg?: string
|
||||||
|
|
||||||
|
cemeteryAddress1?: string
|
||||||
|
cemeteryAddress2?: string
|
||||||
|
cemeteryCity?: string
|
||||||
|
cemeteryPostalCode?: string
|
||||||
|
cemeteryProvince?: string
|
||||||
|
|
||||||
|
cemeteryPhoneNumber?: string
|
||||||
|
|
||||||
|
burialSiteCount?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CommittalType extends Record {
|
||||||
|
committalTypeId: number
|
||||||
|
|
||||||
|
committalType: string
|
||||||
|
committalTypeKey: string
|
||||||
|
|
||||||
orderNumber?: number
|
orderNumber?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Contract extends Record {
|
||||||
|
contractId: number
|
||||||
|
|
||||||
|
contractType: string
|
||||||
|
contractTypeId: number
|
||||||
|
isPreneed: boolean
|
||||||
|
|
||||||
|
printEJS?: string
|
||||||
|
|
||||||
|
burialSiteId?: number
|
||||||
|
burialSiteName?: string
|
||||||
|
burialSiteType?: string
|
||||||
|
burialSiteTypeId?: number
|
||||||
|
|
||||||
|
cemeteryId?: number
|
||||||
|
cemeteryName?: string
|
||||||
|
|
||||||
|
contractStartDate: number
|
||||||
|
contractStartDateString: string
|
||||||
|
|
||||||
|
contractEndDate?: number
|
||||||
|
contractEndDateString?: string
|
||||||
|
|
||||||
|
purchaserName: string
|
||||||
|
|
||||||
|
purchaserAddress1: string
|
||||||
|
purchaserAddress2: string
|
||||||
|
purchaserCity: string
|
||||||
|
purchaserPostalCode: string
|
||||||
|
purchaserProvince: string
|
||||||
|
|
||||||
|
purchaserEmail: string
|
||||||
|
purchaserPhoneNumber: string
|
||||||
|
purchaserRelationship: string
|
||||||
|
|
||||||
|
funeralDirectorName: string
|
||||||
|
funeralHomeId: number | null
|
||||||
|
funeralHomeName: string | null
|
||||||
|
|
||||||
|
funeralHomeKey?: string
|
||||||
|
|
||||||
|
funeralHomeAddress1?: string
|
||||||
|
funeralHomeAddress2?: string
|
||||||
|
funeralHomeCity?: string
|
||||||
|
funeralHomePostalCode?: string
|
||||||
|
funeralHomeProvince?: string
|
||||||
|
|
||||||
|
funeralDate?: number
|
||||||
|
funeralDateString?: DateString
|
||||||
|
|
||||||
|
funeralTime?: number
|
||||||
|
funeralTimePeriodString?: string
|
||||||
|
funeralTimeString?: TimeString
|
||||||
|
|
||||||
|
committalType?: string
|
||||||
|
committalTypeId?: number
|
||||||
|
|
||||||
|
contractComments?: ContractComment[]
|
||||||
|
contractFees?: ContractFee[]
|
||||||
|
contractFields?: ContractField[]
|
||||||
|
contractInterments?: ContractInterment[]
|
||||||
|
contractTransactions?: ContractTransaction[]
|
||||||
|
workOrders?: WorkOrder[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContractComment extends Record {
|
||||||
|
contractCommentId: number
|
||||||
|
contractId?: number
|
||||||
|
|
||||||
|
commentDate: number
|
||||||
|
commentDateString: string
|
||||||
|
|
||||||
|
commentTime: number
|
||||||
|
commentTimePeriodString: string
|
||||||
|
commentTimeString: string
|
||||||
|
|
||||||
|
comment: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContractFee extends Fee, Record {
|
||||||
|
contractId?: number
|
||||||
|
quantity?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContractField extends ContractTypeField, Record {
|
||||||
|
contractId: number
|
||||||
|
contractTypeFieldId: number
|
||||||
|
fieldValue?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContractInterment extends Record {
|
||||||
|
contractId?: number
|
||||||
|
intermentNumber?: number
|
||||||
|
|
||||||
|
deceasedName?: string
|
||||||
|
|
||||||
|
deceasedAddress1?: string
|
||||||
|
deceasedAddress2?: string
|
||||||
|
deceasedCity?: string
|
||||||
|
deceasedPostalCode?: string
|
||||||
|
deceasedProvince?: string
|
||||||
|
|
||||||
|
birthDate?: number
|
||||||
|
birthDateString?: DateString
|
||||||
|
birthPlace?: string
|
||||||
|
|
||||||
|
deathAge?: number | null
|
||||||
|
deathAgePeriod?: string
|
||||||
|
deathDate?: number
|
||||||
|
deathDateString?: DateString
|
||||||
|
deathPlace?: string
|
||||||
|
|
||||||
|
intermentContainerType?: string
|
||||||
|
intermentContainerTypeId?: number
|
||||||
|
isCremationType?: boolean
|
||||||
|
|
||||||
|
contractIdCount?: number
|
||||||
|
recordUpdate_timeMillisMax?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContractTransaction extends Record {
|
||||||
|
contractId?: number
|
||||||
|
transactionIndex?: number
|
||||||
|
|
||||||
|
transactionDate?: number
|
||||||
|
transactionDateString?: string
|
||||||
|
|
||||||
|
transactionTime?: number
|
||||||
|
transactionTimeString?: string
|
||||||
|
|
||||||
|
dynamicsGPDocument?: DynamicsGPDocument
|
||||||
|
externalReceiptNumber?: string
|
||||||
|
transactionAmount: number
|
||||||
|
transactionNote?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContractType extends Record {
|
||||||
|
contractTypeId: number
|
||||||
|
|
||||||
|
contractType: string
|
||||||
|
isPreneed: boolean
|
||||||
|
|
||||||
|
contractTypeFields?: ContractTypeField[]
|
||||||
|
contractTypePrints?: string[]
|
||||||
|
|
||||||
|
orderNumber?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContractTypeField {
|
||||||
|
contractTypeFieldId: number
|
||||||
|
|
||||||
|
contractTypeField?: string
|
||||||
|
contractTypeId?: number
|
||||||
|
|
||||||
|
fieldType: string
|
||||||
|
fieldValues?: string
|
||||||
|
isRequired?: boolean
|
||||||
|
maxLength?: number
|
||||||
|
minLength?: number
|
||||||
|
pattern?: string
|
||||||
|
|
||||||
|
orderNumber?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DynamicsGPDocument {
|
||||||
|
documentType: 'Cash Receipt' | 'Invoice'
|
||||||
|
|
||||||
|
documentDate: Date
|
||||||
|
documentDescription: string[]
|
||||||
|
documentNumber: string
|
||||||
|
documentTotal: number
|
||||||
|
}
|
||||||
|
|
||||||
export interface Fee extends Record {
|
export interface Fee extends Record {
|
||||||
feeId: number
|
feeId: number
|
||||||
|
|
||||||
feeCategoryId: number
|
|
||||||
feeCategory?: string
|
feeCategory?: string
|
||||||
|
feeCategoryId: number
|
||||||
|
|
||||||
feeName?: string
|
|
||||||
feeDescription?: string
|
|
||||||
feeAccount?: string
|
feeAccount?: string
|
||||||
|
feeDescription?: string
|
||||||
|
feeName?: string
|
||||||
|
|
||||||
contractTypeId?: number
|
|
||||||
contractType?: string
|
contractType?: string
|
||||||
|
contractTypeId?: number
|
||||||
|
|
||||||
burialSiteTypeId?: number
|
|
||||||
burialSiteType?: string
|
burialSiteType?: string
|
||||||
|
burialSiteTypeId?: number
|
||||||
|
|
||||||
includeQuantity?: boolean
|
includeQuantity?: boolean
|
||||||
quantityUnit?: string
|
quantityUnit?: string
|
||||||
|
|
@ -196,30 +321,25 @@ export interface Fee extends Record {
|
||||||
contractFeeCount?: number
|
contractFeeCount?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ContractFee extends Fee, Record {
|
export interface FeeCategory extends Record {
|
||||||
contractId?: number
|
feeCategoryId: number
|
||||||
quantity?: number
|
|
||||||
|
feeCategory: string
|
||||||
|
fees: Fee[]
|
||||||
|
isGroupedFee: boolean
|
||||||
|
orderNumber?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ContractTransaction extends Record {
|
export interface FuneralHome extends Record {
|
||||||
contractId?: number
|
funeralHomeId?: number
|
||||||
transactionIndex?: number
|
funeralHomeKey?: string
|
||||||
transactionDate?: number
|
funeralHomeName?: string
|
||||||
transactionDateString?: string
|
funeralHomeAddress1?: string
|
||||||
transactionTime?: number
|
funeralHomeAddress2?: string
|
||||||
transactionTimeString?: string
|
funeralHomeCity?: string
|
||||||
transactionAmount: number
|
funeralHomeProvince?: string
|
||||||
externalReceiptNumber?: string
|
funeralHomePostalCode?: string
|
||||||
transactionNote?: string
|
funeralHomePhoneNumber?: string
|
||||||
dynamicsGPDocument?: DynamicsGPDocument
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DynamicsGPDocument {
|
|
||||||
documentType: 'Invoice' | 'Cash Receipt'
|
|
||||||
documentNumber: string
|
|
||||||
documentDate: Date
|
|
||||||
documentDescription: string[]
|
|
||||||
documentTotal: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IntermentContainerType extends Record {
|
export interface IntermentContainerType extends Record {
|
||||||
|
|
@ -230,138 +350,50 @@ export interface IntermentContainerType extends Record {
|
||||||
orderNumber?: number
|
orderNumber?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CommittalType extends Record {
|
export interface Record {
|
||||||
committalTypeId: number
|
recordCreate_userName?: string
|
||||||
committalType: string
|
recordCreate_timeMillis?: number
|
||||||
committalTypeKey: string
|
recordCreate_dateString?: string
|
||||||
orderNumber?: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ContractInterment extends Record {
|
recordUpdate_userName?: string
|
||||||
contractId?: number
|
recordUpdate_timeMillis?: number
|
||||||
intermentNumber?: number
|
recordUpdate_dateString?: string
|
||||||
|
recordUpdate_timeString?: string
|
||||||
|
|
||||||
deceasedName?: string
|
recordDelete_userName?: string
|
||||||
deceasedAddress1?: string
|
recordDelete_timeMillis?: number
|
||||||
deceasedAddress2?: string
|
recordDelete_dateString?: string
|
||||||
deceasedCity?: string
|
|
||||||
deceasedProvince?: string
|
|
||||||
deceasedPostalCode?: string
|
|
||||||
|
|
||||||
birthDate?: number
|
|
||||||
birthDateString?: DateString
|
|
||||||
birthPlace?: string
|
|
||||||
|
|
||||||
deathDate?: number
|
|
||||||
deathDateString?: DateString
|
|
||||||
deathPlace?: string
|
|
||||||
deathAge?: number | null
|
|
||||||
deathAgePeriod?: string
|
|
||||||
|
|
||||||
intermentContainerTypeId?: number
|
|
||||||
intermentContainerType?: string
|
|
||||||
isCremationType?: boolean
|
|
||||||
|
|
||||||
contractIdCount?: number
|
|
||||||
recordUpdate_timeMillisMax?: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ContractComment extends Record {
|
|
||||||
contractCommentId: number
|
|
||||||
contractId?: number
|
|
||||||
|
|
||||||
commentDate: number
|
|
||||||
commentDateString: string
|
|
||||||
|
|
||||||
commentTime: number
|
|
||||||
commentTimeString: string
|
|
||||||
commentTimePeriodString: string
|
|
||||||
|
|
||||||
comment: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ContractField extends ContractTypeField, Record {
|
|
||||||
contractId: number
|
|
||||||
contractTypeFieldId: number
|
|
||||||
fieldValue?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Contract extends Record {
|
|
||||||
contractId: number
|
|
||||||
|
|
||||||
contractTypeId: number
|
|
||||||
contractType: string
|
|
||||||
isPreneed: boolean
|
|
||||||
|
|
||||||
printEJS?: string
|
|
||||||
|
|
||||||
burialSiteId?: number
|
|
||||||
burialSiteTypeId?: number
|
|
||||||
burialSiteType?: string
|
|
||||||
burialSiteName?: string
|
|
||||||
|
|
||||||
cemeteryId?: number
|
|
||||||
cemeteryName?: string
|
|
||||||
|
|
||||||
contractStartDate: number
|
|
||||||
contractStartDateString: string
|
|
||||||
|
|
||||||
contractEndDate?: number
|
|
||||||
contractEndDateString?: string
|
|
||||||
|
|
||||||
purchaserName: string
|
|
||||||
purchaserAddress1: string
|
|
||||||
purchaserAddress2: string
|
|
||||||
purchaserCity: string
|
|
||||||
purchaserProvince: string
|
|
||||||
purchaserPostalCode: string
|
|
||||||
purchaserPhoneNumber: string
|
|
||||||
purchaserEmail: string
|
|
||||||
purchaserRelationship: string
|
|
||||||
|
|
||||||
funeralHomeId: number | null
|
|
||||||
funeralDirectorName: string
|
|
||||||
funeralHomeName: string | null
|
|
||||||
|
|
||||||
funeralHomeKey?: string
|
|
||||||
funeralHomeAddress1?: string
|
|
||||||
funeralHomeAddress2?: string
|
|
||||||
funeralHomeCity?: string
|
|
||||||
funeralHomeProvince?: string
|
|
||||||
funeralHomePostalCode?: string
|
|
||||||
|
|
||||||
funeralDate?: number
|
|
||||||
funeralDateString?: DateString
|
|
||||||
|
|
||||||
funeralTime?: number
|
|
||||||
funeralTimeString?: TimeString
|
|
||||||
funeralTimePeriodString?: string
|
|
||||||
|
|
||||||
committalTypeId?: number
|
|
||||||
committalType?: string
|
|
||||||
|
|
||||||
contractFields?: ContractField[]
|
|
||||||
contractComments?: ContractComment[]
|
|
||||||
contractInterments?: ContractInterment[]
|
|
||||||
contractFees?: ContractFee[]
|
|
||||||
contractTransactions?: ContractTransaction[]
|
|
||||||
workOrders?: WorkOrder[]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* WORK ORDERS
|
* WORK ORDERS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export interface WorkOrderType extends Record {
|
export interface WorkOrder extends Record {
|
||||||
workOrderTypeId: number
|
workOrderId: number
|
||||||
workOrderType?: string
|
|
||||||
orderNumber?: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface WorkOrderMilestoneType extends Record {
|
workOrderTypeId?: number
|
||||||
workOrderMilestoneTypeId: number
|
workOrderType?: string
|
||||||
workOrderMilestoneType: string
|
|
||||||
orderNumber?: number
|
workOrderNumber?: string
|
||||||
|
workOrderDescription?: string
|
||||||
|
|
||||||
|
workOrderOpenDate?: number
|
||||||
|
workOrderOpenDateString?: string
|
||||||
|
|
||||||
|
workOrderCloseDate?: number
|
||||||
|
workOrderCloseDateString?: string
|
||||||
|
|
||||||
|
workOrderMilestones?: WorkOrderMilestone[]
|
||||||
|
workOrderMilestoneCount?: number
|
||||||
|
workOrderMilestoneCompletionCount?: number
|
||||||
|
|
||||||
|
workOrderComments?: WorkOrderComment[]
|
||||||
|
|
||||||
|
workOrderBurialSites?: BurialSite[]
|
||||||
|
workOrderBurialSiteCount?: number
|
||||||
|
|
||||||
|
workOrderContracts?: Contract[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WorkOrderComment extends Record {
|
export interface WorkOrderComment extends Record {
|
||||||
|
|
@ -403,31 +435,16 @@ export interface WorkOrderMilestone extends Record, WorkOrder {
|
||||||
workOrderRecordUpdate_timeMillis?: number
|
workOrderRecordUpdate_timeMillis?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WorkOrder extends Record {
|
export interface WorkOrderMilestoneType extends Record {
|
||||||
workOrderId: number
|
workOrderMilestoneTypeId: number
|
||||||
|
workOrderMilestoneType: string
|
||||||
|
orderNumber?: number
|
||||||
|
}
|
||||||
|
|
||||||
workOrderTypeId?: number
|
export interface WorkOrderType extends Record {
|
||||||
|
workOrderTypeId: number
|
||||||
workOrderType?: string
|
workOrderType?: string
|
||||||
|
orderNumber?: number
|
||||||
workOrderNumber?: string
|
|
||||||
workOrderDescription?: string
|
|
||||||
|
|
||||||
workOrderOpenDate?: number
|
|
||||||
workOrderOpenDateString?: string
|
|
||||||
|
|
||||||
workOrderCloseDate?: number
|
|
||||||
workOrderCloseDateString?: string
|
|
||||||
|
|
||||||
workOrderMilestones?: WorkOrderMilestone[]
|
|
||||||
workOrderMilestoneCount?: number
|
|
||||||
workOrderMilestoneCompletionCount?: number
|
|
||||||
|
|
||||||
workOrderComments?: WorkOrderComment[]
|
|
||||||
|
|
||||||
workOrderBurialSites?: BurialSite[]
|
|
||||||
workOrderBurialSiteCount?: number
|
|
||||||
|
|
||||||
workOrderContracts?: Contract[]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue