linting
parent
beb57e70ab
commit
061c1fa43a
|
|
@ -19,8 +19,8 @@ if (process.send === undefined) {
|
|||
}
|
||||
|
||||
interface ServerError extends Error {
|
||||
syscall: string
|
||||
code: string
|
||||
syscall: string
|
||||
}
|
||||
|
||||
function onError(error: ServerError): void {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import type { PoolConnection } from 'better-sqlite-pool';
|
||||
import type { Fee } from '../types/recordTypes.js';
|
||||
interface GetFeesFilters {
|
||||
contractTypeId?: number | string;
|
||||
burialSiteTypeId?: number | string;
|
||||
contractTypeId?: number | string;
|
||||
}
|
||||
export default function getFees(feeCategoryId: number, additionalFilters: GetFeesFilters, connectedDatabase?: PoolConnection): Promise<Fee[]>;
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import { acquireConnection } from './pool.js'
|
|||
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
|
||||
|
||||
interface GetFeesFilters {
|
||||
contractTypeId?: number | string
|
||||
burialSiteTypeId?: number | string
|
||||
contractTypeId?: number | string
|
||||
}
|
||||
|
||||
export default async function getFees(
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
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 {
|
||||
dateIntegerToString,
|
||||
type DateString,
|
||||
dateIntegerToString,
|
||||
dateStringToInteger,
|
||||
dateToInteger,
|
||||
timeIntegerToString
|
||||
|
|
@ -37,6 +37,7 @@ const simpleReports: Record<`${string}-all` | `${string}-formatted`, string> = {
|
|||
'contractTransactions-all': 'select * from ContractTransactions',
|
||||
'contractTypeFields-all': 'select * from ContractTypeFields',
|
||||
'contractTypes-all': 'select * from ContractTypes',
|
||||
|
||||
'feeCategories-all': 'select * from FeeCategories',
|
||||
'fees-all': 'select * from Fees',
|
||||
|
||||
|
|
@ -50,6 +51,7 @@ const simpleReports: Record<`${string}-all` | `${string}-formatted`, string> = {
|
|||
where recordDelete_timeMillis is null`,
|
||||
|
||||
'intermentContainerTypes-all': 'select * from IntermentContainerTypes',
|
||||
|
||||
'workOrderBurialSites-all': 'select * from WorkOrderBurialSites',
|
||||
'workOrderComments-all': 'select * from WorkOrderComments',
|
||||
'workOrderMilestones-all': 'select * from WorkOrderMilestones',
|
||||
|
|
@ -61,7 +63,7 @@ const simpleReports: Record<`${string}-all` | `${string}-formatted`, string> = {
|
|||
export default async function getReportData(
|
||||
reportName: string,
|
||||
reportParameters: ReportParameters = {}
|
||||
): Promise<undefined | unknown[]> {
|
||||
): Promise<unknown[] | undefined> {
|
||||
let sql = ''
|
||||
const sqlParameters: unknown[] = []
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@ interface WorkOrderOptions {
|
|||
includeComments: boolean;
|
||||
includeMilestones: boolean;
|
||||
}
|
||||
export default function getWorkOrder(workOrderId: number | string, options: WorkOrderOptions, connectedDatabase?: PoolConnection): Promise<undefined | WorkOrder>;
|
||||
export declare function getWorkOrderByWorkOrderNumber(workOrderNumber: string): Promise<undefined | WorkOrder>;
|
||||
export default function getWorkOrder(workOrderId: number | string, options: WorkOrderOptions, connectedDatabase?: PoolConnection): Promise<WorkOrder | undefined>;
|
||||
export declare function getWorkOrderByWorkOrderNumber(workOrderNumber: string): Promise<WorkOrder | undefined>;
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ export default async function getWorkOrder(
|
|||
workOrderId: number | string,
|
||||
options: WorkOrderOptions,
|
||||
connectedDatabase?: PoolConnection
|
||||
): Promise<undefined | WorkOrder> {
|
||||
): Promise<WorkOrder | undefined> {
|
||||
return await _getWorkOrder(
|
||||
`${baseSQL} and w.workOrderId = ?`,
|
||||
workOrderId,
|
||||
|
|
@ -41,7 +41,7 @@ export default async function getWorkOrder(
|
|||
|
||||
export async function getWorkOrderByWorkOrderNumber(
|
||||
workOrderNumber: string
|
||||
): Promise<undefined | WorkOrder> {
|
||||
): Promise<WorkOrder | undefined> {
|
||||
return await _getWorkOrder(
|
||||
`${baseSQL} and w.workOrderNumber = ?`,
|
||||
workOrderNumber,
|
||||
|
|
@ -58,14 +58,14 @@ async function _getWorkOrder(
|
|||
workOrderIdOrWorkOrderNumber: number | string,
|
||||
options: WorkOrderOptions,
|
||||
connectedDatabase?: PoolConnection
|
||||
): Promise<undefined | WorkOrder> {
|
||||
): Promise<WorkOrder | undefined> {
|
||||
const database = connectedDatabase ?? (await acquireConnection())
|
||||
|
||||
database.function('userFn_dateIntegerToString', dateIntegerToString)
|
||||
|
||||
const workOrder = database.prepare(sql).get(workOrderIdOrWorkOrderNumber) as
|
||||
| undefined
|
||||
| WorkOrder
|
||||
| undefined
|
||||
|
||||
if (workOrder !== undefined) {
|
||||
if (options.includeBurialSites) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import type { PoolConnection } from 'better-sqlite-pool'
|
||||
|
||||
import {
|
||||
dateIntegerToString,
|
||||
timeIntegerToPeriodString,
|
||||
timeIntegerToString
|
||||
} from '@cityssm/utils-datetime'
|
||||
import type { PoolConnection } from 'better-sqlite-pool'
|
||||
|
||||
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 DateString } from '@cityssm/utils-datetime';
|
||||
import type { WorkOrderMilestone } from '../types/recordTypes.js';
|
||||
export interface WorkOrderMilestoneFilters {
|
||||
workOrderId?: number | string;
|
||||
workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date' | 'blank' | 'notBlank';
|
||||
workOrderMilestoneDateString?: '' | DateString;
|
||||
workOrderTypeIds?: string;
|
||||
workOrderMilestoneTypeIds?: string;
|
||||
workOrderTypeIds?: string;
|
||||
workOrderMilestoneDateFilter?: 'blank' | 'date' | 'notBlank' | 'recent' | 'upcomingMissed';
|
||||
workOrderMilestoneDateString?: '' | DateString;
|
||||
}
|
||||
interface WorkOrderMilestoneOptions {
|
||||
includeWorkOrders?: boolean;
|
||||
|
|
|
|||
|
|
@ -1,75 +1,17 @@
|
|||
import { dateIntegerToString, dateStringToInteger, dateToInteger, timeIntegerToPeriodString, timeIntegerToString } from '@cityssm/utils-datetime';
|
||||
import { getConfigProperty } from '../helpers/config.helpers.js';
|
||||
import getContracts from './getContracts.js';
|
||||
import getBurialSites from './getBurialSites.js';
|
||||
import getContracts from './getContracts.js';
|
||||
import { acquireConnection } from './pool.js';
|
||||
// eslint-disable-next-line security/detect-unsafe-regex
|
||||
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) {
|
||||
const database = connectedDatabase ?? (await acquireConnection());
|
||||
database.function('userFn_dateIntegerToString', dateIntegerToString);
|
||||
database.function('userFn_timeIntegerToString', timeIntegerToString);
|
||||
database.function('userFn_timeIntegerToPeriodString', timeIntegerToPeriodString);
|
||||
// Filters
|
||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
||||
const { sqlParameters, sqlWhereClause } = buildWhereClause(filters);
|
||||
// Order By
|
||||
let orderByClause = '';
|
||||
switch (options.orderBy) {
|
||||
|
|
@ -135,12 +77,11 @@ export default async function getWorkOrderMilestones(filters, options, connected
|
|||
}, {
|
||||
limit: -1,
|
||||
offset: 0,
|
||||
includeInterments: true,
|
||||
includeFees: false,
|
||||
includeInterments: true,
|
||||
includeTransactions: false
|
||||
}, database);
|
||||
workOrderMilestone.workOrderContracts =
|
||||
contracts.contracts;
|
||||
workOrderMilestone.workOrderContracts = contracts.contracts;
|
||||
}
|
||||
}
|
||||
if (connectedDatabase === undefined) {
|
||||
|
|
@ -148,3 +89,61 @@ export default async function getWorkOrderMilestones(filters, options, connected
|
|||
}
|
||||
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 {
|
||||
type DateString,
|
||||
dateIntegerToString,
|
||||
|
|
@ -6,26 +8,26 @@ import {
|
|||
timeIntegerToPeriodString,
|
||||
timeIntegerToString
|
||||
} from '@cityssm/utils-datetime'
|
||||
import type { PoolConnection } from 'better-sqlite-pool'
|
||||
|
||||
import { getConfigProperty } from '../helpers/config.helpers.js'
|
||||
import type { WorkOrderMilestone } from '../types/recordTypes.js'
|
||||
|
||||
import getContracts from './getContracts.js'
|
||||
import getBurialSites from './getBurialSites.js'
|
||||
import getContracts from './getContracts.js'
|
||||
import { acquireConnection } from './pool.js'
|
||||
|
||||
export interface WorkOrderMilestoneFilters {
|
||||
workOrderId?: number | string
|
||||
workOrderMilestoneDateFilter?:
|
||||
| 'upcomingMissed'
|
||||
| 'recent'
|
||||
| 'date'
|
||||
| 'blank'
|
||||
| 'notBlank'
|
||||
workOrderMilestoneDateString?: '' | DateString
|
||||
workOrderTypeIds?: string
|
||||
workOrderMilestoneTypeIds?: string
|
||||
workOrderTypeIds?: string
|
||||
|
||||
workOrderMilestoneDateFilter?:
|
||||
| 'blank'
|
||||
| 'date'
|
||||
| 'notBlank'
|
||||
| 'recent'
|
||||
| 'upcomingMissed'
|
||||
workOrderMilestoneDateString?: '' | DateString
|
||||
}
|
||||
|
||||
interface WorkOrderMilestoneOptions {
|
||||
|
|
@ -36,101 +38,6 @@ interface WorkOrderMilestoneOptions {
|
|||
// eslint-disable-next-line security/detect-unsafe-regex
|
||||
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(
|
||||
filters: WorkOrderMilestoneFilters,
|
||||
options: WorkOrderMilestoneOptions,
|
||||
|
|
@ -146,7 +53,7 @@ export default async function getWorkOrderMilestones(
|
|||
)
|
||||
|
||||
// Filters
|
||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters)
|
||||
const { sqlParameters, sqlWhereClause } = buildWhereClause(filters)
|
||||
|
||||
// Order By
|
||||
let orderByClause = ''
|
||||
|
|
@ -214,6 +121,7 @@ export default async function getWorkOrderMilestones(
|
|||
{
|
||||
limit: -1,
|
||||
offset: 0,
|
||||
|
||||
includeContractCount: false
|
||||
},
|
||||
database
|
||||
|
|
@ -228,15 +136,15 @@ export default async function getWorkOrderMilestones(
|
|||
{
|
||||
limit: -1,
|
||||
offset: 0,
|
||||
includeInterments: true,
|
||||
|
||||
includeFees: false,
|
||||
includeInterments: true,
|
||||
includeTransactions: false
|
||||
},
|
||||
database
|
||||
)
|
||||
|
||||
workOrderMilestone.workOrderContracts =
|
||||
contracts.contracts
|
||||
workOrderMilestone.workOrderContracts = contracts.contracts
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -246,3 +154,98 @@ export default async function getWorkOrderMilestones(
|
|||
|
||||
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';
|
||||
export interface GetWorkOrdersFilters {
|
||||
workOrderTypeId?: number | string;
|
||||
workOrderOpenStatus?: '' | 'open' | 'closed';
|
||||
workOrderOpenDateString?: string;
|
||||
deceasedName?: string;
|
||||
workOrderOpenStatus?: '' | 'closed' | 'open';
|
||||
burialSiteName?: string;
|
||||
contractId?: number | string;
|
||||
deceasedName?: string;
|
||||
}
|
||||
interface GetWorkOrdersOptions {
|
||||
limit: number;
|
||||
|
|
|
|||
|
|
@ -5,105 +5,10 @@ import getContracts from './getContracts.js';
|
|||
import getWorkOrderComments from './getWorkOrderComments.js';
|
||||
import getWorkOrderMilestones from './getWorkOrderMilestones.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) {
|
||||
const database = connectedDatabase ?? (await acquireConnection());
|
||||
database.function('userFn_dateIntegerToString', dateIntegerToString);
|
||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
||||
const { sqlParameters, sqlWhereClause } = buildWhereClause(filters);
|
||||
const count = database
|
||||
.prepare(`select count(*) as recordCount
|
||||
from WorkOrders w
|
||||
|
|
@ -157,4 +62,97 @@ export async function getWorkOrders(filters, options, connectedDatabase) {
|
|||
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;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import type { PoolConnection } from 'better-sqlite-pool'
|
||||
|
||||
import {
|
||||
type DateString,
|
||||
dateIntegerToString,
|
||||
dateStringToInteger
|
||||
} from '@cityssm/utils-datetime'
|
||||
import type { PoolConnection } from 'better-sqlite-pool'
|
||||
|
||||
import {
|
||||
getBurialSiteNameWhereClause,
|
||||
|
|
@ -19,156 +20,24 @@ import { acquireConnection } from './pool.js'
|
|||
|
||||
export interface GetWorkOrdersFilters {
|
||||
workOrderTypeId?: number | string
|
||||
workOrderOpenStatus?: '' | 'open' | 'closed'
|
||||
|
||||
workOrderOpenDateString?: string
|
||||
deceasedName?: string
|
||||
workOrderOpenStatus?: '' | 'closed' | 'open'
|
||||
|
||||
burialSiteName?: string
|
||||
contractId?: number | string
|
||||
deceasedName?: string
|
||||
}
|
||||
|
||||
interface GetWorkOrdersOptions {
|
||||
limit: number
|
||||
offset: number
|
||||
|
||||
includeBurialSites?: boolean
|
||||
includeComments?: 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(
|
||||
filters: GetWorkOrdersFilters,
|
||||
options: GetWorkOrdersOptions,
|
||||
|
|
@ -178,7 +47,7 @@ export async function getWorkOrders(
|
|||
|
||||
database.function('userFn_dateIntegerToString', dateIntegerToString)
|
||||
|
||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters)
|
||||
const { sqlParameters, sqlWhereClause } = buildWhereClause(filters)
|
||||
|
||||
const count: number = (
|
||||
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
|
||||
|
|
|
|||
|
|
@ -377,9 +377,9 @@ const createStatements = [
|
|||
const initializingUser = {
|
||||
userName: 'databaseInit',
|
||||
userProperties: {
|
||||
apiKey: '',
|
||||
canUpdate: true,
|
||||
isAdmin: true,
|
||||
apiKey: ''
|
||||
isAdmin: true
|
||||
}
|
||||
};
|
||||
export async function initializeDatabase() {
|
||||
|
|
@ -449,9 +449,11 @@ async function initializeData() {
|
|||
intermentContainerTypeKey: 'WS',
|
||||
orderNumber: 5
|
||||
}, initializingUser);
|
||||
await addIntermentContainerType({ intermentContainerType: 'Steel Vault',
|
||||
await addIntermentContainerType({
|
||||
intermentContainerType: 'Steel Vault',
|
||||
intermentContainerTypeKey: 'SV',
|
||||
orderNumber: 6 }, initializingUser);
|
||||
orderNumber: 6
|
||||
}, initializingUser);
|
||||
await addIntermentContainerType({
|
||||
intermentContainerType: 'Urn',
|
||||
intermentContainerTypeKey: 'U',
|
||||
|
|
|
|||
|
|
@ -434,9 +434,9 @@ const createStatements = [
|
|||
const initializingUser: User = {
|
||||
userName: 'databaseInit',
|
||||
userProperties: {
|
||||
apiKey: '',
|
||||
canUpdate: true,
|
||||
isAdmin: true,
|
||||
apiKey: ''
|
||||
isAdmin: true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -555,9 +555,11 @@ async function initializeData(): Promise<void> {
|
|||
)
|
||||
|
||||
await addIntermentContainerType(
|
||||
{ intermentContainerType: 'Steel Vault',
|
||||
{
|
||||
intermentContainerType: 'Steel Vault',
|
||||
intermentContainerTypeKey: 'SV',
|
||||
orderNumber: 6 },
|
||||
orderNumber: 6
|
||||
},
|
||||
initializingUser
|
||||
)
|
||||
|
||||
|
|
@ -573,23 +575,32 @@ async function initializeData(): Promise<void> {
|
|||
|
||||
// Committal Types
|
||||
|
||||
await addCommittalType({
|
||||
await addCommittalType(
|
||||
{
|
||||
committalType: 'Graveside',
|
||||
committalTypeKey: 'GS',
|
||||
orderNumber: 1
|
||||
}, initializingUser)
|
||||
},
|
||||
initializingUser
|
||||
)
|
||||
|
||||
await addCommittalType({
|
||||
await addCommittalType(
|
||||
{
|
||||
committalType: 'Chapel',
|
||||
committalTypeKey: 'CS',
|
||||
orderNumber: 2
|
||||
}, initializingUser)
|
||||
},
|
||||
initializingUser
|
||||
)
|
||||
|
||||
await addCommittalType({
|
||||
await addCommittalType(
|
||||
{
|
||||
committalType: 'Church',
|
||||
committalTypeKey: 'CH',
|
||||
orderNumber: 3
|
||||
}, initializingUser)
|
||||
},
|
||||
initializingUser
|
||||
)
|
||||
|
||||
/*
|
||||
* Fee Categories
|
||||
|
|
|
|||
|
|
@ -1,11 +1,6 @@
|
|||
import { clearCacheByTableName } from '../helpers/functions.cache.js';
|
||||
import { acquireConnection } from './pool.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) {
|
||||
const database = await acquireConnection();
|
||||
const currentField = getCurrentField(burialSiteTypeFieldId, database);
|
||||
|
|
@ -79,3 +74,8 @@ export async function moveBurialSiteTypeFieldUpToTop(burialSiteTypeFieldId) {
|
|||
clearCacheByTableName('BurialSiteTypeFields');
|
||||
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 { 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(
|
||||
burialSiteTypeFieldId: number | string
|
||||
): Promise<boolean> {
|
||||
|
|
@ -161,3 +147,17 @@ export async function moveBurialSiteTypeFieldUpToTop(
|
|||
|
||||
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 { acquireConnection } from './pool.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) {
|
||||
const database = await acquireConnection();
|
||||
const currentField = getCurrentField(contractTypeFieldId, database);
|
||||
|
|
@ -100,3 +93,10 @@ export async function moveContractTypeFieldUpToTop(contractTypeFieldId) {
|
|||
clearCacheByTableName('ContractTypeFields');
|
||||
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 { 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(
|
||||
contractTypeFieldId: number | string
|
||||
): Promise<boolean> {
|
||||
|
|
@ -198,3 +182,19 @@ export async function moveContractTypeFieldUpToTop(
|
|||
|
||||
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 exitHook from 'exit-hook'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
export interface UpdateBurialSiteForm {
|
||||
burialSiteId: string | number;
|
||||
burialSiteId: number | string;
|
||||
burialSiteNameSegment1?: string;
|
||||
burialSiteNameSegment2?: string;
|
||||
burialSiteNameSegment3?: string;
|
||||
burialSiteNameSegment4?: string;
|
||||
burialSiteNameSegment5?: string;
|
||||
burialSiteTypeId: string | number;
|
||||
burialSiteStatusId: string | number;
|
||||
cemeteryId: string | number;
|
||||
burialSiteStatusId: number | string;
|
||||
burialSiteTypeId: number | string;
|
||||
cemeteryId: number | string;
|
||||
cemeterySvgId: string;
|
||||
burialSiteLatitude: string;
|
||||
burialSiteLongitude: string;
|
||||
burialSiteTypeFieldIds?: string;
|
||||
[fieldValue_burialSiteTypeFieldId: string]: unknown;
|
||||
burialSiteTypeFieldIds?: string;
|
||||
}
|
||||
/**
|
||||
* Updates a burial site.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import getCemetery from './getCemetery.js'
|
|||
import { acquireConnection } from './pool.js'
|
||||
|
||||
export interface UpdateBurialSiteForm {
|
||||
burialSiteId: string | number
|
||||
burialSiteId: number | string
|
||||
|
||||
burialSiteNameSegment1?: string
|
||||
burialSiteNameSegment2?: string
|
||||
|
|
@ -14,17 +14,17 @@ export interface UpdateBurialSiteForm {
|
|||
burialSiteNameSegment4?: string
|
||||
burialSiteNameSegment5?: string
|
||||
|
||||
burialSiteTypeId: string | number
|
||||
burialSiteStatusId: string | number
|
||||
burialSiteStatusId: number | string
|
||||
burialSiteTypeId: number | string
|
||||
|
||||
cemeteryId: string | number
|
||||
cemeteryId: number | string
|
||||
cemeterySvgId: string
|
||||
|
||||
burialSiteLatitude: string
|
||||
burialSiteLongitude: string
|
||||
|
||||
burialSiteTypeFieldIds?: string
|
||||
[fieldValue_burialSiteTypeFieldId: string]: unknown
|
||||
burialSiteTypeFieldIds?: string
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { type DateString, type TimeString } from '@cityssm/utils-datetime';
|
||||
export interface UpdateBurialSiteCommentForm {
|
||||
burialSiteCommentId: string | number;
|
||||
burialSiteCommentId: number | string;
|
||||
comment: string;
|
||||
commentDateString: DateString;
|
||||
commentTimeString: TimeString;
|
||||
comment: string;
|
||||
}
|
||||
export default function updateBurialSiteComment(commentForm: UpdateBurialSiteCommentForm, user: User): Promise<boolean>;
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ import {
|
|||
import { acquireConnection } from './pool.js'
|
||||
|
||||
export interface UpdateBurialSiteCommentForm {
|
||||
burialSiteCommentId: string | number
|
||||
burialSiteCommentId: number | string
|
||||
comment: string
|
||||
commentDateString: DateString
|
||||
commentTimeString: TimeString
|
||||
comment: string
|
||||
}
|
||||
|
||||
export default async function updateBurialSiteComment(
|
||||
|
|
|
|||
|
|
@ -16,16 +16,16 @@ export interface Config {
|
|||
};
|
||||
aliases: {
|
||||
externalReceiptNumber?: string;
|
||||
workOrderOpenDate?: string;
|
||||
workOrderCloseDate?: string;
|
||||
workOrderOpenDate?: string;
|
||||
};
|
||||
settings: {
|
||||
cityDefault?: string;
|
||||
provinceDefault?: string;
|
||||
latitudeMin?: number;
|
||||
latitudeMax?: number;
|
||||
longitudeMin?: number;
|
||||
latitudeMin?: number;
|
||||
longitudeMax?: number;
|
||||
longitudeMin?: number;
|
||||
fees: {
|
||||
taxPercentageDefault?: number;
|
||||
};
|
||||
|
|
@ -96,10 +96,10 @@ export interface ConfigBurialSiteNameSegments {
|
|||
isAvailable?: boolean;
|
||||
isRequired?: boolean;
|
||||
label?: string;
|
||||
maxLength?: number;
|
||||
minLength?: number;
|
||||
prefix?: string;
|
||||
suffix?: string;
|
||||
minLength?: number;
|
||||
maxLength?: number;
|
||||
}>>;
|
||||
}
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -2,37 +2,47 @@ import type { config as MSSQLConfig } from 'mssql'
|
|||
|
||||
export interface Config {
|
||||
application: ConfigApplication
|
||||
|
||||
session: ConfigSession
|
||||
|
||||
reverseProxy: {
|
||||
disableCompression?: boolean
|
||||
disableEtag?: boolean
|
||||
urlPrefix?: string
|
||||
}
|
||||
|
||||
activeDirectory?: ConfigActiveDirectory
|
||||
|
||||
users: {
|
||||
testing?: Array<`*${string}`>
|
||||
canLogin?: string[]
|
||||
canUpdate?: string[]
|
||||
isAdmin?: string[]
|
||||
}
|
||||
|
||||
aliases: {
|
||||
externalReceiptNumber?: string
|
||||
workOrderOpenDate?: string
|
||||
workOrderCloseDate?: string
|
||||
workOrderOpenDate?: string
|
||||
}
|
||||
|
||||
settings: {
|
||||
cityDefault?: string
|
||||
provinceDefault?: string
|
||||
latitudeMin?: number
|
||||
|
||||
latitudeMax?: number
|
||||
longitudeMin?: number
|
||||
latitudeMin?: number
|
||||
longitudeMax?: number
|
||||
longitudeMin?: number
|
||||
|
||||
fees: {
|
||||
taxPercentageDefault?: number
|
||||
}
|
||||
|
||||
burialSites: {
|
||||
burialSiteNameSegments?: ConfigBurialSiteNameSegments
|
||||
}
|
||||
|
||||
contracts: {
|
||||
burialSiteIdIsRequired?: boolean
|
||||
contractEndDateIsRequired?: boolean
|
||||
|
|
@ -40,6 +50,7 @@ export interface Config {
|
|||
deathAgePeriods?: string[]
|
||||
prints?: string[]
|
||||
}
|
||||
|
||||
workOrders: {
|
||||
workOrderNumberLength?: number
|
||||
workOrderMilestoneDateRecentBeforeDays?: number
|
||||
|
|
@ -47,12 +58,15 @@ export interface Config {
|
|||
calendarEmailAddress?: string
|
||||
prints?: string[]
|
||||
}
|
||||
|
||||
adminCleanup: {
|
||||
recordDeleteAgeDays?: number
|
||||
}
|
||||
|
||||
printPdf: {
|
||||
contentDisposition?: 'attachment' | 'inline'
|
||||
}
|
||||
|
||||
dynamicsGP?: {
|
||||
integrationIsEnabled: boolean
|
||||
mssqlConfig?: MSSQLConfig
|
||||
|
|
@ -109,10 +123,10 @@ export interface ConfigBurialSiteNameSegments {
|
|||
isAvailable?: boolean
|
||||
isRequired?: boolean
|
||||
label?: string
|
||||
maxLength?: number
|
||||
minLength?: number
|
||||
prefix?: string
|
||||
suffix?: string
|
||||
minLength?: number
|
||||
maxLength?: number
|
||||
}
|
||||
>
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,32 +1,245 @@
|
|||
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;
|
||||
export interface BurialSite extends Record {
|
||||
burialSiteId: number;
|
||||
burialSiteName?: string;
|
||||
burialSiteNameSegment1?: string;
|
||||
burialSiteNameSegment2?: string;
|
||||
burialSiteNameSegment3?: string;
|
||||
burialSiteNameSegment4?: string;
|
||||
burialSiteNameSegment5?: string;
|
||||
burialSiteType?: string;
|
||||
burialSiteTypeId?: number;
|
||||
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 {
|
||||
cemeteryId?: number;
|
||||
cemeteryName?: string;
|
||||
cemeteryKey?: string;
|
||||
cemeteryDescription?: string;
|
||||
cemeteryKey?: string;
|
||||
cemeteryName?: string;
|
||||
cemeteryLatitude?: number;
|
||||
cemeteryLongitude?: number;
|
||||
cemeterySvg?: string;
|
||||
cemeteryAddress1?: string;
|
||||
cemeteryAddress2?: string;
|
||||
cemeteryCity?: string;
|
||||
cemeteryProvince?: string;
|
||||
cemeteryPostalCode?: string;
|
||||
cemeteryProvince?: string;
|
||||
cemeteryPhoneNumber?: string;
|
||||
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 {
|
||||
funeralHomeId?: number;
|
||||
funeralHomeKey?: string;
|
||||
|
|
@ -38,139 +251,6 @@ export interface FuneralHome extends Record {
|
|||
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 {
|
||||
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 {
|
||||
intermentContainerTypeId: number;
|
||||
intermentContainerType: string;
|
||||
|
|
@ -178,107 +258,35 @@ export interface IntermentContainerType extends Record {
|
|||
isCremationType: boolean;
|
||||
orderNumber?: number;
|
||||
}
|
||||
export interface CommittalType extends Record {
|
||||
committalTypeId: number;
|
||||
committalType: string;
|
||||
committalTypeKey: string;
|
||||
orderNumber?: number;
|
||||
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;
|
||||
}
|
||||
export interface ContractInterment extends Record {
|
||||
contractId?: number;
|
||||
intermentNumber?: 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;
|
||||
export interface WorkOrder extends Record {
|
||||
workOrderId: number;
|
||||
workOrderTypeId?: number;
|
||||
workOrderType?: string;
|
||||
orderNumber?: number;
|
||||
}
|
||||
export interface WorkOrderMilestoneType extends Record {
|
||||
workOrderMilestoneTypeId: number;
|
||||
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 {
|
||||
workOrderCommentId?: number;
|
||||
|
|
@ -307,23 +315,15 @@ export interface WorkOrderMilestone extends Record, WorkOrder {
|
|||
workOrderMilestoneCompletionTimePeriodString?: string;
|
||||
workOrderRecordUpdate_timeMillis?: number;
|
||||
}
|
||||
export interface WorkOrder extends Record {
|
||||
workOrderId: number;
|
||||
workOrderTypeId?: number;
|
||||
export interface WorkOrderMilestoneType extends Record {
|
||||
workOrderMilestoneTypeId: number;
|
||||
workOrderMilestoneType: string;
|
||||
orderNumber?: number;
|
||||
}
|
||||
export interface WorkOrderType extends Record {
|
||||
workOrderTypeId: number;
|
||||
workOrderType?: string;
|
||||
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[];
|
||||
orderNumber?: number;
|
||||
}
|
||||
declare global {
|
||||
export interface User {
|
||||
|
|
|
|||
|
|
@ -1,110 +1,29 @@
|
|||
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 {
|
||||
burialSiteId: number
|
||||
|
||||
burialSiteName?: string
|
||||
burialSiteNameSegment1?: string
|
||||
burialSiteNameSegment2?: string
|
||||
burialSiteNameSegment3?: string
|
||||
burialSiteNameSegment4?: string
|
||||
burialSiteNameSegment5?: string
|
||||
burialSiteName?: string
|
||||
|
||||
burialSiteTypeId?: number
|
||||
burialSiteType?: string
|
||||
burialSiteTypeId?: number
|
||||
|
||||
cemetery?: Cemetery
|
||||
cemeteryId?: number
|
||||
cemeteryName?: string
|
||||
cemetery?: Cemetery
|
||||
cemeterySvg?: string
|
||||
cemeterySvgId?: string
|
||||
|
||||
burialSiteLatitude?: number
|
||||
burialSiteLongitude?: number
|
||||
|
||||
burialSiteStatusId?: number
|
||||
burialSiteStatus?: string
|
||||
burialSiteStatusId?: number
|
||||
|
||||
burialSiteFields?: BurialSiteField[]
|
||||
|
||||
|
|
@ -122,63 +41,269 @@ export interface BurialSiteComment extends Record {
|
|||
commentDateString?: string
|
||||
|
||||
commentTime?: number
|
||||
commentTimeString?: string
|
||||
commentTimePeriodString?: string
|
||||
commentTimeString?: string
|
||||
|
||||
comment?: string
|
||||
}
|
||||
|
||||
export interface BurialSiteField extends BurialSiteTypeField, Record {
|
||||
burialSiteId?: number
|
||||
burialSiteFieldValue?: string
|
||||
burialSiteId?: number
|
||||
}
|
||||
|
||||
export interface ContractType extends Record {
|
||||
contractTypeId: number
|
||||
contractType: string
|
||||
isPreneed: boolean
|
||||
export interface BurialSiteStatus extends Record {
|
||||
burialSiteStatusId: number
|
||||
|
||||
burialSiteStatus: string
|
||||
orderNumber?: number
|
||||
contractTypeFields?: ContractTypeField[]
|
||||
contractTypePrints?: string[]
|
||||
}
|
||||
|
||||
export interface ContractTypeField {
|
||||
contractTypeFieldId: number
|
||||
contractTypeId?: number
|
||||
contractTypeField?: string
|
||||
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
|
||||
pattern?: string
|
||||
minLength?: number
|
||||
maxLength?: number
|
||||
minLength?: number
|
||||
pattern?: string
|
||||
|
||||
orderNumber?: number
|
||||
}
|
||||
|
||||
export interface FeeCategory extends Record {
|
||||
feeCategoryId: number
|
||||
feeCategory: string
|
||||
fees: Fee[]
|
||||
isGroupedFee: boolean
|
||||
export interface Cemetery extends Record {
|
||||
cemeteryId?: number
|
||||
|
||||
cemeteryDescription?: string
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
feeCategoryId: number
|
||||
feeCategory?: string
|
||||
feeCategoryId: number
|
||||
|
||||
feeName?: string
|
||||
feeDescription?: string
|
||||
feeAccount?: string
|
||||
feeDescription?: string
|
||||
feeName?: string
|
||||
|
||||
contractTypeId?: number
|
||||
contractType?: string
|
||||
contractTypeId?: number
|
||||
|
||||
burialSiteTypeId?: number
|
||||
burialSiteType?: string
|
||||
burialSiteTypeId?: number
|
||||
|
||||
includeQuantity?: boolean
|
||||
quantityUnit?: string
|
||||
|
|
@ -196,30 +321,25 @@ export interface Fee extends Record {
|
|||
contractFeeCount?: number
|
||||
}
|
||||
|
||||
export interface ContractFee extends Fee, Record {
|
||||
contractId?: number
|
||||
quantity?: number
|
||||
export interface FeeCategory extends Record {
|
||||
feeCategoryId: number
|
||||
|
||||
feeCategory: string
|
||||
fees: Fee[]
|
||||
isGroupedFee: boolean
|
||||
orderNumber?: 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 FuneralHome extends Record {
|
||||
funeralHomeId?: number
|
||||
funeralHomeKey?: string
|
||||
funeralHomeName?: string
|
||||
funeralHomeAddress1?: string
|
||||
funeralHomeAddress2?: string
|
||||
funeralHomeCity?: string
|
||||
funeralHomeProvince?: string
|
||||
funeralHomePostalCode?: string
|
||||
funeralHomePhoneNumber?: string
|
||||
}
|
||||
|
||||
export interface IntermentContainerType extends Record {
|
||||
|
|
@ -230,138 +350,50 @@ export interface IntermentContainerType extends Record {
|
|||
orderNumber?: number
|
||||
}
|
||||
|
||||
export interface CommittalType extends Record {
|
||||
committalTypeId: number
|
||||
committalType: string
|
||||
committalTypeKey: string
|
||||
orderNumber?: number
|
||||
}
|
||||
export interface Record {
|
||||
recordCreate_userName?: string
|
||||
recordCreate_timeMillis?: number
|
||||
recordCreate_dateString?: string
|
||||
|
||||
export interface ContractInterment extends Record {
|
||||
contractId?: number
|
||||
intermentNumber?: number
|
||||
recordUpdate_userName?: string
|
||||
recordUpdate_timeMillis?: number
|
||||
recordUpdate_dateString?: string
|
||||
recordUpdate_timeString?: string
|
||||
|
||||
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[]
|
||||
recordDelete_userName?: string
|
||||
recordDelete_timeMillis?: number
|
||||
recordDelete_dateString?: string
|
||||
}
|
||||
|
||||
/*
|
||||
* WORK ORDERS
|
||||
*/
|
||||
|
||||
export interface WorkOrderType extends Record {
|
||||
workOrderTypeId: number
|
||||
workOrderType?: string
|
||||
orderNumber?: number
|
||||
}
|
||||
export interface WorkOrder extends Record {
|
||||
workOrderId: number
|
||||
|
||||
export interface WorkOrderMilestoneType extends Record {
|
||||
workOrderMilestoneTypeId: number
|
||||
workOrderMilestoneType: string
|
||||
orderNumber?: number
|
||||
workOrderTypeId?: number
|
||||
workOrderType?: string
|
||||
|
||||
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 {
|
||||
|
|
@ -403,31 +435,16 @@ export interface WorkOrderMilestone extends Record, WorkOrder {
|
|||
workOrderRecordUpdate_timeMillis?: number
|
||||
}
|
||||
|
||||
export interface WorkOrder extends Record {
|
||||
workOrderId: number
|
||||
export interface WorkOrderMilestoneType extends Record {
|
||||
workOrderMilestoneTypeId: number
|
||||
workOrderMilestoneType: string
|
||||
orderNumber?: number
|
||||
}
|
||||
|
||||
workOrderTypeId?: number
|
||||
export interface WorkOrderType extends Record {
|
||||
workOrderTypeId: number
|
||||
workOrderType?: string
|
||||
|
||||
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[]
|
||||
orderNumber?: number
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue