UNPKG

@cityssm/worktech-api

Version:

Integrations with the WorkTech (Pearl) work order management system.

71 lines (64 loc) 2.44 kB
import { connect } from '@cityssm/mssql-multi-pool'; export const getTimesheetBatchEntriesLimit = 2000; /** * Retrieves timesheet batch entries based on provided filters. * @param mssqlConfig - SQL Server configuration. * @param filters - Entry filters. * @returns The matching timesheet batch entries. */ export async function getTimesheetBatchEntries(mssqlConfig, filters) { const pool = await connect(mssqlConfig); const request = pool.request(); let sql = /* sql */ ` SELECT TOP (${getTimesheetBatchEntriesLimit}) [BatchSysID] as batchSystemId, [Batch_ID] as batchId, [SeqNo] as batchEntryNumber, [DateTime] as timesheetDate, format([DateTime], 'yyyy-MM-dd') as timesheetDateString, [Item_ID] as employeeNumber, rtrim([POS_ID]) as positionId, rtrim([EPCode]) as payCode, [TC_ID] as timeCode, [ExJob_ID] as jobId, [ExActv_ID] as activityId, [WONOS] as workOrderNumber, [ExObjCode] as objectCode, [Qty] as timesheetHours FROM [WMTSI] WITH (NOLOCK) where transType = 'Time Sheets' and type = 'Employee' `; if (filters.employeeNumber !== undefined) { sql += ' AND [Item_ID] = @employeeNumber'; } if (filters.timesheetDate !== undefined) { sql += ' AND [DateTime] = @timesheetDate'; } if (filters.timesheetMaxAgeDays !== undefined) { sql += ' AND [DateTime] >= DATEADD(day, -1 * @timesheetMaxAgeDays, CAST(GETDATE() AS date))'; } if (filters.jobId !== undefined) { sql += ' AND [ExJob_ID] = @jobId'; } if (filters.activityId !== undefined) { sql += ' AND [ExActv_ID] = @activityId'; } if (filters.workOrderNumber !== undefined) { sql += ' AND [WONOS] = @workOrderNumber'; } if (filters.timesheetHours !== undefined) { sql += ' AND [Qty] = @timesheetHours'; } sql += ' order by [BatchSysID] desc, [SeqNo]'; const result = (await request .input('employeeNumber', filters.employeeNumber) .input('timesheetDate', filters.timesheetDate) .input('timesheetMaxAgeDays', filters.timesheetMaxAgeDays) .input('jobId', filters.jobId) .input('activityId', filters.activityId) .input('workOrderNumber', filters.workOrderNumber) .input('timesheetHours', filters.timesheetHours) .query(sql)); return result.recordset; }