@seniorsistemas/hcm-clocking-event-rule-nodejs 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +11 -0
- package/.github/workflows/release.yaml +10 -0
- package/.gitlab-ci.yml +68 -0
- package/CHANGELOG.md +274 -0
- package/README.doc.md +658 -0
- package/README.md +117 -0
- package/assets/favicon.ico +0 -0
- package/catalog-info.yaml +19 -0
- package/jest.config.js +17 -0
- package/package.json +48 -0
- package/prompt.md +15 -0
- package/run_build_win.bat +1 -0
- package/run_link.bat +3 -0
- package/run_test.bat +1 -0
- package/sonar-project.properties +21 -0
- package/src/data/changes/changes.ts +92 -0
- package/src/data/context/context.ts +251 -0
- package/src/data/context/contextReference.ts +376 -0
- package/src/data/contract/contract.ts +272 -0
- package/src/data/dataset/database.ts +130 -0
- package/src/data/dataset/dataset.ts +275 -0
- package/src/data/definition/timeEvaluationSituationDefinitionHistory.ts +1425 -0
- package/src/data/employee/employee.ts +434 -0
- package/src/data/foundation/companyBranch.ts +66 -0
- package/src/data/foundation/costCenter.ts +47 -0
- package/src/data/foundation/employer.ts +35 -0
- package/src/data/foundation/employmentRelationship.ts +63 -0
- package/src/data/foundation/holiday.ts +84 -0
- package/src/data/foundation/holidayGroup.ts +47 -0
- package/src/data/foundation/jobPosition.ts +73 -0
- package/src/data/foundation/person.ts +35 -0
- package/src/data/foundation/situation.ts +301 -0
- package/src/data/foundation/syndicate.ts +244 -0
- package/src/data/foundation/workschedule.ts +688 -0
- package/src/data/foundation/workshift.ts +647 -0
- package/src/data/foundation/workshiftBase.ts +113 -0
- package/src/data/histories/companyBranchHistory.ts +128 -0
- package/src/data/histories/costCenterHistory.ts +114 -0
- package/src/data/histories/employmentRelationshipHistory.ts +116 -0
- package/src/data/histories/histories.ts +419 -0
- package/src/data/histories/jobPositionHistory.ts +117 -0
- package/src/data/histories/leaveHistory.ts +227 -0
- package/src/data/histories/timeEvaluationHistory.ts +191 -0
- package/src/data/histories/workshiftHistory.ts +66 -0
- package/src/data/hourBank/hourBank.ts +43 -0
- package/src/data/hourBank/hourBankAccount.ts +77 -0
- package/src/data/log/log.ts +38 -0
- package/src/data/schedules/bridge.ts +84 -0
- package/src/data/schedules/compensation.ts +332 -0
- package/src/data/schedules/overtimeAuthorization.ts +174 -0
- package/src/data/schedules/readiness.ts +150 -0
- package/src/data/schedules/schedules.ts +398 -0
- package/src/data/schedules/workscheduleChange.ts +91 -0
- package/src/data/schedules/workshiftChange.ts +76 -0
- package/src/data/timeEvaluation/adjustmentReason.ts +46 -0
- package/src/data/timeEvaluation/clockingEvent.ts +198 -0
- package/src/data/timeEvaluation/estimatedHours.ts +245 -0
- package/src/data/timeEvaluation/interval.ts +568 -0
- package/src/data/timeEvaluation/separatedHours.ts +134 -0
- package/src/data/timeEvaluation/timeEvaluation.ts +1540 -0
- package/src/data/timeEvaluation/timeEvaluationSituation.ts +154 -0
- package/src/data/user/user.ts +44 -0
- package/src/index.ts +60 -0
- package/src/test/builder/bridgeBuilder.builder.ts +28 -0
- package/src/test/builder/clockingEvent.builder.ts +49 -0
- package/src/test/builder/companyBranchHistoryBuilder.ts +29 -0
- package/src/test/builder/compensation.builder.ts +84 -0
- package/src/test/builder/contextReference.builder.ts +69 -0
- package/src/test/builder/costCenterHistoryBuilder.ts +29 -0
- package/src/test/builder/database.builder.ts +21 -0
- package/src/test/builder/datasetBuilder.ts +111 -0
- package/src/test/builder/dateIntervalBuilder.ts +25 -0
- package/src/test/builder/employee.builder.ts +91 -0
- package/src/test/builder/employmentRelationshipBuilder.ts +35 -0
- package/src/test/builder/employmentRelationshipHistoryBuilder.ts +29 -0
- package/src/test/builder/historiesBuilder.ts +56 -0
- package/src/test/builder/holiday.builder.ts +44 -0
- package/src/test/builder/hourBankAccountBuilder.ts +77 -0
- package/src/test/builder/hourBankBuilder.ts +32 -0
- package/src/test/builder/interval.builder.ts +113 -0
- package/src/test/builder/jobPositionHistoryBuilder.ts +29 -0
- package/src/test/builder/overtimeAuthorization.builder.ts +42 -0
- package/src/test/builder/readinessBuilder.builder.ts +57 -0
- package/src/test/builder/schedules.builder.ts +126 -0
- package/src/test/builder/situation.builder.ts +59 -0
- package/src/test/builder/syndicate.builder.ts +96 -0
- package/src/test/builder/syndicateHistoryBuilder.ts +33 -0
- package/src/test/builder/timeEvaluation.builder.ts +138 -0
- package/src/test/builder/timeEvaluationHistory.builder.ts +49 -0
- package/src/test/builder/timeEvaluationSituation.builder.ts +34 -0
- package/src/test/builder/workschedule.builder.ts +96 -0
- package/src/test/builder/workshift.builder.ts +179 -0
- package/src/test/builder/workshiftBuilder.ts +55 -0
- package/src/test/data/clockingEvent.spec.ts +56 -0
- package/src/test/data/context.spec.ts +176 -0
- package/src/test/data/currentUser.spec.ts +11 -0
- package/src/test/data/dataset.spec.ts +144 -0
- package/src/test/data/employee/employee.spec.ts +20 -0
- package/src/test/data/employmentRelationship/employmentRelationship.spec.ts +48 -0
- package/src/test/data/estimatedHours/estimatedHours.spec.ts +96 -0
- package/src/test/data/histories/costCenterHistory.spec.ts +32 -0
- package/src/test/data/histories/histories.spec.ts +306 -0
- package/src/test/data/holyday.spec.ts +89 -0
- package/src/test/data/hourBank/hourBank.spec.ts +48 -0
- package/src/test/data/hourBank/hourBankAccount.spec.ts +32 -0
- package/src/test/data/schedules/bridge.spec.ts +13 -0
- package/src/test/data/schedules/compesation.spect.ts +89 -0
- package/src/test/data/schedules/overtimeAuthorization.spec.ts +52 -0
- package/src/test/data/schedules/readiness.spec.ts +64 -0
- package/src/test/data/schedules/schedules.spec.ts +134 -0
- package/src/test/data/schedules/workscheduleChange.spec.ts +21 -0
- package/src/test/data/syndicate/syndicate.spec.ts +51 -0
- package/src/test/data/timeEvaluation.spec.ts +1057 -0
- package/src/test/data/timeEvaluationDefinition.spec.ts +144 -0
- package/src/test/data/workschedule/workschedule.spec.ts +194 -0
- package/src/test/data/workshift/workshift.spec.ts +79 -0
- package/src/test/utils/date.utils.spec.ts +198 -0
- package/src/test/utils/dateIntervalUtils.spec.ts +210 -0
- package/src/test/utils/object.utils.spec.ts +83 -0
- package/src/utils/dateIntervalUtils.ts +284 -0
- package/src/utils/dateUtils.ts +456 -0
- package/src/utils/decompressGzipLambda.ts +15 -0
- package/src/utils/object.utils.ts +156 -0
- package/trivy/vulnerabilities_scan.json +1160 -0
- package/tsconfig.json +32 -0
- package/tsconfig.spec.json +21 -0
- package/tslint.json +92 -0
- package/typedoc.json +22 -0
|
@@ -0,0 +1,647 @@
|
|
|
1
|
+
import { ObjectUtils } from "../../utils/object.utils";
|
|
2
|
+
import { HolidayGroup } from "./holidayGroup";
|
|
3
|
+
import { ContextReference } from "../context/contextReference";
|
|
4
|
+
/**
|
|
5
|
+
* @hidden
|
|
6
|
+
* Interface para os parâmetros do construtor da Workshift.
|
|
7
|
+
*/
|
|
8
|
+
export interface WorkshiftParams {
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Código da tabela da escala.
|
|
12
|
+
*/
|
|
13
|
+
id: string;
|
|
14
|
+
/**
|
|
15
|
+
* Código da escala.
|
|
16
|
+
*/
|
|
17
|
+
code: number;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Tipo da escala.
|
|
21
|
+
*/
|
|
22
|
+
type: WorkshiftType;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Minutos de descanso semanal remunerado (DSR).
|
|
26
|
+
*/
|
|
27
|
+
dsrMinutes: number;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Minutos semanais da escala.
|
|
31
|
+
*/
|
|
32
|
+
weekMinutes: number;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Minutos mensais da escala.
|
|
36
|
+
*/
|
|
37
|
+
monthMinutes: number;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Indica se a escala é rotativa.
|
|
41
|
+
*/
|
|
42
|
+
rotationWorkShift: boolean;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Indica se a escala tem prorrogação noturna.
|
|
46
|
+
*/
|
|
47
|
+
extensionNightHours: boolean;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Tipo de busca automática.
|
|
51
|
+
*/
|
|
52
|
+
autoSearchType: AutoSearchType;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Tipo de turno da escala.
|
|
56
|
+
*/
|
|
57
|
+
timeShiftType: TimeShiftType;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Grupos de escalas associados.
|
|
61
|
+
*/
|
|
62
|
+
workshiftGroupsKeys: string[];
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Detalhes da escala.
|
|
66
|
+
*/
|
|
67
|
+
workshiftDetailsKeys: string[];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @hidden
|
|
72
|
+
* Interface para os parâmetros do construtor da turma da escala.
|
|
73
|
+
*/
|
|
74
|
+
export interface WorkshiftGroupParams {
|
|
75
|
+
/**
|
|
76
|
+
* ID da turma da escala.
|
|
77
|
+
*/
|
|
78
|
+
id: string;
|
|
79
|
+
/**
|
|
80
|
+
* Código da turma da escala.
|
|
81
|
+
*/
|
|
82
|
+
code: number;
|
|
83
|
+
/**
|
|
84
|
+
* Data base da turma da escala.
|
|
85
|
+
*/
|
|
86
|
+
baseDate?: Date;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @hidden
|
|
91
|
+
* Interface para os parâmetros do construtor das configurações da escala.
|
|
92
|
+
*/
|
|
93
|
+
export interface WorkshiftDetailParams {
|
|
94
|
+
/**
|
|
95
|
+
* Código da tabela de feriados.
|
|
96
|
+
*/
|
|
97
|
+
holidayGroup: HolidayGroup;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Tipo de feriado.
|
|
101
|
+
*/
|
|
102
|
+
holidayType: HolidayType;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Data inicial.
|
|
106
|
+
*/
|
|
107
|
+
startDate: Date;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Chave do detalhe da escala.
|
|
111
|
+
*/
|
|
112
|
+
workshiftDetailsKey: string;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @hidden
|
|
117
|
+
*/
|
|
118
|
+
export interface HolidayGroupParams {
|
|
119
|
+
/**
|
|
120
|
+
* Código da tabela de feriados.
|
|
121
|
+
*/
|
|
122
|
+
code: number;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Representa uma escala de trabalho.
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* workshift.code; // Retorna o código da escala.
|
|
131
|
+
* workshift.type; // Retorna o tipo da escala.
|
|
132
|
+
* workshift.dsrMinutes; // Retorna os minutos de descanso semanal remunerado (DSR).
|
|
133
|
+
* workshift.workshiftGroups; // Retorna as turmas da escala.
|
|
134
|
+
* workshift.workshiftDetails; // Retorna os detalhes da escala.
|
|
135
|
+
* ```
|
|
136
|
+
* @see {@link WorkshiftGroup}
|
|
137
|
+
* @see {@link WorkshiftDetail}
|
|
138
|
+
* @see {@link HolidayGroup}
|
|
139
|
+
* @see {@link WorkshiftType}
|
|
140
|
+
* @see {@link AutoSearchType}
|
|
141
|
+
* @see {@link TimeShiftType}
|
|
142
|
+
*
|
|
143
|
+
*
|
|
144
|
+
*/
|
|
145
|
+
export class Workshift {
|
|
146
|
+
private readonly _id: string;
|
|
147
|
+
private readonly _code: number;
|
|
148
|
+
private readonly _type: WorkshiftType;
|
|
149
|
+
private readonly _dsrMinutes: number;
|
|
150
|
+
private readonly _weekMinutes: number;
|
|
151
|
+
private readonly _monthMinutes: number;
|
|
152
|
+
private readonly _rotationWorkShift: boolean;
|
|
153
|
+
private readonly _extensionNightHours: boolean;
|
|
154
|
+
private readonly _autoSearchType: AutoSearchType;
|
|
155
|
+
private readonly _timeShiftType: TimeShiftType;
|
|
156
|
+
private readonly _workshiftGroupsKeys: string[];
|
|
157
|
+
private readonly _workshiftDetailsKeys: string[];
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* @hidden
|
|
161
|
+
* Construtor da classe Workshift.
|
|
162
|
+
* @param params Parâmetros para inicializar a Workshift.
|
|
163
|
+
*/
|
|
164
|
+
constructor(params: WorkshiftParams) {
|
|
165
|
+
this._id = params.id;
|
|
166
|
+
this._code = params.code;
|
|
167
|
+
this._type = params.type;
|
|
168
|
+
this._dsrMinutes = params.dsrMinutes;
|
|
169
|
+
this._weekMinutes = params.weekMinutes;
|
|
170
|
+
this._monthMinutes = params.monthMinutes;
|
|
171
|
+
this._rotationWorkShift = params.rotationWorkShift;
|
|
172
|
+
this._extensionNightHours = params.extensionNightHours;
|
|
173
|
+
this._autoSearchType = params.autoSearchType;
|
|
174
|
+
this._timeShiftType = params.timeShiftType;
|
|
175
|
+
|
|
176
|
+
if (params.workshiftGroupsKeys && params.workshiftGroupsKeys.length !== 0) {
|
|
177
|
+
this._workshiftGroupsKeys = params.workshiftGroupsKeys.map(key => key);
|
|
178
|
+
} else {
|
|
179
|
+
this._workshiftGroupsKeys = [];
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (params.workshiftDetailsKeys && params.workshiftDetailsKeys.length !== 0) {
|
|
183
|
+
this._workshiftDetailsKeys = params.workshiftDetailsKeys.map(key => key);
|
|
184
|
+
} else {
|
|
185
|
+
this._workshiftDetailsKeys = [];
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @hidden
|
|
192
|
+
* Retorna o ID da escala.
|
|
193
|
+
*/
|
|
194
|
+
private get id(): string {
|
|
195
|
+
return this._id;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Retorna o código da escala.
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* ```typescript
|
|
203
|
+
* const workshiftCode = workshift.code; // Retorna o código da escala.
|
|
204
|
+
* ```
|
|
205
|
+
* @returns Código da escala.
|
|
206
|
+
*/
|
|
207
|
+
get code(): number {
|
|
208
|
+
return this._code;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Retorna o tipo da escala.
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* const workshiftType = workshift.type; // Retorna o tipo da escala.
|
|
216
|
+
* ```
|
|
217
|
+
* @returns Tipo de escala.
|
|
218
|
+
* @see {@link WorkshiftType}
|
|
219
|
+
*/
|
|
220
|
+
get type(): WorkshiftType {
|
|
221
|
+
return this._type;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Retorna o descanso semanal remunerado (DSR).
|
|
226
|
+
* @example
|
|
227
|
+
* ```typescript
|
|
228
|
+
* const dsrMinutes = workshift.dsrMinutes; // Retorna o descanso semanal remunerado (DSR) em minutos.
|
|
229
|
+
* ```
|
|
230
|
+
* @return Descanso semanal remunerado (DSR) em minutos.
|
|
231
|
+
*/
|
|
232
|
+
get dsrMinutes(): number {
|
|
233
|
+
return this._dsrMinutes;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Retorna a quantidade de minutos semanais da escala.
|
|
238
|
+
* @example
|
|
239
|
+
* ```typescript
|
|
240
|
+
* const weekMinutes = workshift.weekMinutes; // Retorna a quantidade de minutos semanais da escala.
|
|
241
|
+
* ```
|
|
242
|
+
* @returns Quantidade de minutos semanais da escala.
|
|
243
|
+
*/
|
|
244
|
+
get weekMinutes(): number {
|
|
245
|
+
return this._weekMinutes;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Retorna os minutos mensais da escala.
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* const monthMinutes = workshift.monthMinutes; // Retorna os minutos mensais da escala.
|
|
253
|
+
* ```
|
|
254
|
+
* @returns Minutos mensais da escala.
|
|
255
|
+
*/
|
|
256
|
+
get monthMinutes(): number {
|
|
257
|
+
return this._monthMinutes;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Retorna se a escala é rotativa.
|
|
262
|
+
* @example
|
|
263
|
+
* ```typescript
|
|
264
|
+
* const isRotationWorkShift = workshift.rotationWorkShift; // Retorna true se a escala for rotativa, caso contrário false.
|
|
265
|
+
* ```
|
|
266
|
+
* @returns True se a escala for rotativa, caso contrário false.
|
|
267
|
+
*/
|
|
268
|
+
get rotationWorkShift(): boolean {
|
|
269
|
+
return this._rotationWorkShift;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Retorna se a escala tem prorrogação noturna.
|
|
274
|
+
* @example
|
|
275
|
+
* ```typescript
|
|
276
|
+
* const hasExtensionNightHours = workshift.extensionNightHours; // Retorna true se a escala tiver prorrogação noturna, caso contrário false.
|
|
277
|
+
* ```
|
|
278
|
+
* @returns True se a escala tiver prorrogação noturna, caso contrário false.
|
|
279
|
+
*/
|
|
280
|
+
get extensionNightHours(): boolean {
|
|
281
|
+
return this._extensionNightHours;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Retorna o tipo de busca automática.
|
|
286
|
+
* @example
|
|
287
|
+
* ```typescript
|
|
288
|
+
* const autoSearchType = workshift.autoSearchType; // Retorna o tipo de busca automática.
|
|
289
|
+
* ```
|
|
290
|
+
* @returns Tipo de busca automática.
|
|
291
|
+
* @see {@link AutoSearchType}
|
|
292
|
+
*/
|
|
293
|
+
get autoSearchType(): AutoSearchType {
|
|
294
|
+
return this._autoSearchType;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Retorna o tipo de turno da escala.
|
|
299
|
+
* @example
|
|
300
|
+
* ```typescript
|
|
301
|
+
* const timeShiftType = workshift.timeShiftType; // Retorna o tipo de turno da escala.
|
|
302
|
+
* ```
|
|
303
|
+
* @returns Tipo de turno da escala.
|
|
304
|
+
* @see {@link TimeShiftType}
|
|
305
|
+
*/
|
|
306
|
+
get timeShiftType(): TimeShiftType {
|
|
307
|
+
return this._timeShiftType;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* @hidden
|
|
312
|
+
* Retorna as chaves das turmas da escala associada.
|
|
313
|
+
*/
|
|
314
|
+
private get workshiftGroupsKeys(): string[] {
|
|
315
|
+
return this._workshiftGroupsKeys;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* @hidden
|
|
320
|
+
* Retorna as chaves dos detalhes da escala.
|
|
321
|
+
*/
|
|
322
|
+
private get workshiftDetailsKeys(): string[] {
|
|
323
|
+
return this._workshiftDetailsKeys;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Retorna as turmas da escala associada.
|
|
328
|
+
* @example
|
|
329
|
+
* ```typescript
|
|
330
|
+
* const workshiftGroups = workshift.workshiftGroups;
|
|
331
|
+
* workshiftGroups.forEach(group => {
|
|
332
|
+
* console.log(group.code); // Exibe o código de cada turma da escala.
|
|
333
|
+
* });
|
|
334
|
+
* ```
|
|
335
|
+
* @return Lista de turmas da escala.
|
|
336
|
+
* @see {@link WorkshiftGroup}
|
|
337
|
+
*/
|
|
338
|
+
get workshiftGroups(): WorkshiftGroup[] {
|
|
339
|
+
return this._workshiftGroupsKeys.map(key => {
|
|
340
|
+
const workshiftGroup = ContextReference.getGlobalInstance().getWorkshiftGroup(key);
|
|
341
|
+
if (!workshiftGroup) {
|
|
342
|
+
throw new Error(`WorkshiftGroup with key ${key} not found.`);
|
|
343
|
+
}
|
|
344
|
+
return workshiftGroup;
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Retorna as configurações da escala.
|
|
350
|
+
* @example
|
|
351
|
+
* ```typescript
|
|
352
|
+
* const workshiftDetails = workshift.workshiftDetails;
|
|
353
|
+
* workshiftDetails.forEach(detail => {
|
|
354
|
+
* console.log(detail.startDate); // Exibe a data inicial da configuração da escala.
|
|
355
|
+
* });
|
|
356
|
+
* ```
|
|
357
|
+
* @return Lista de configurações da escala.
|
|
358
|
+
* @see {@link WorkshiftDetail}
|
|
359
|
+
*/
|
|
360
|
+
get workshiftDetails(): WorkshiftDetail[] {
|
|
361
|
+
return this._workshiftDetailsKeys.map(key => {
|
|
362
|
+
const workshiftDetail = ContextReference.getGlobalInstance().getWorkshiftDetail(key);
|
|
363
|
+
if (!workshiftDetail) {
|
|
364
|
+
throw new Error(`WorkshiftDetail with key ${key} not found.`);
|
|
365
|
+
}
|
|
366
|
+
return workshiftDetail;
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
static getKey(workshift: Workshift): string {
|
|
371
|
+
return workshift.id;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Clona a instância de Workshift.
|
|
376
|
+
* @returns Uma nova instância de Workshift com os mesmos parâmetros.
|
|
377
|
+
*/
|
|
378
|
+
public static clone(workshift: Workshift): Workshift {
|
|
379
|
+
return new Workshift({
|
|
380
|
+
id: workshift.id,
|
|
381
|
+
code: workshift.code,
|
|
382
|
+
type: workshift.type,
|
|
383
|
+
dsrMinutes: workshift.dsrMinutes,
|
|
384
|
+
weekMinutes: workshift.weekMinutes,
|
|
385
|
+
monthMinutes: workshift.monthMinutes,
|
|
386
|
+
rotationWorkShift: workshift.rotationWorkShift,
|
|
387
|
+
extensionNightHours: workshift.extensionNightHours,
|
|
388
|
+
autoSearchType: workshift.autoSearchType,
|
|
389
|
+
timeShiftType: workshift.timeShiftType,
|
|
390
|
+
workshiftGroupsKeys: workshift.workshiftGroupsKeys,
|
|
391
|
+
workshiftDetailsKeys: workshift.workshiftDetailsKeys
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Representa uma turma de escala.
|
|
398
|
+
*/
|
|
399
|
+
export class WorkshiftGroup {
|
|
400
|
+
private readonly _id: string;
|
|
401
|
+
private readonly _code: number;
|
|
402
|
+
private readonly _baseDate?: Date;
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* @hidden
|
|
406
|
+
* Construtor da classe WorkshiftGroup.
|
|
407
|
+
* @param params Parâmetros para inicializar o WorkshiftGroup.
|
|
408
|
+
*/
|
|
409
|
+
constructor(params: WorkshiftGroupParams) {
|
|
410
|
+
this._id = params.id;
|
|
411
|
+
this._code = params.code;
|
|
412
|
+
this._baseDate = ObjectUtils.toDateOrThrow(params.baseDate, "workshiftGroup.baseDate");
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* @hidden
|
|
417
|
+
* Retorna o ID da turma da escala.
|
|
418
|
+
*/
|
|
419
|
+
private get id(): string {
|
|
420
|
+
return this._id;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Retorna o código da turma da escala.
|
|
425
|
+
* @example
|
|
426
|
+
* ```typescript
|
|
427
|
+
* const groupCode = workshiftGroup.code; // Retorna o código da turma da escala.
|
|
428
|
+
* ```
|
|
429
|
+
* @returns Código da turma da escala.
|
|
430
|
+
*/
|
|
431
|
+
get code(): number {
|
|
432
|
+
return this._code;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Retorna a data base da turma da escala.
|
|
437
|
+
* @example
|
|
438
|
+
* ```typescript
|
|
439
|
+
* const baseDate = workshiftGroup.baseDate; // Retorna a data base da turma da escala.
|
|
440
|
+
* ```
|
|
441
|
+
* @returns Data base da turma da escala.
|
|
442
|
+
*/
|
|
443
|
+
get baseDate(): Date | undefined {
|
|
444
|
+
return this._baseDate;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
static getKey(workshiftGroup: WorkshiftGroup): string {
|
|
448
|
+
return workshiftGroup.id;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
public static clone(workshiftGroup: WorkshiftGroup): WorkshiftGroup {
|
|
452
|
+
return new WorkshiftGroup({
|
|
453
|
+
id: workshiftGroup.id,
|
|
454
|
+
code: workshiftGroup.code,
|
|
455
|
+
baseDate: workshiftGroup.baseDate
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Representa um detalhe da escala.
|
|
462
|
+
* Este detalhe se chama configuração da escala e determina o grupo de feriados que será usado na escala.
|
|
463
|
+
*/
|
|
464
|
+
export class WorkshiftDetail {
|
|
465
|
+
private readonly _holidayGroup: HolidayGroup;
|
|
466
|
+
private readonly _holidayType: HolidayType;
|
|
467
|
+
private readonly _startDate: Date;
|
|
468
|
+
private readonly _workshiftDetailsKey: string;
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* @hidden
|
|
472
|
+
* Construtor da classe WorkshiftDetail.
|
|
473
|
+
* @param params Parâmetros para inicializar o WorkshiftDetail.
|
|
474
|
+
*/
|
|
475
|
+
constructor(params: WorkshiftDetailParams) {
|
|
476
|
+
this._holidayGroup = params.holidayGroup;
|
|
477
|
+
this._holidayType = params.holidayType;
|
|
478
|
+
this._startDate = ObjectUtils.toDateOrThrow(params.startDate, "WorkshiftDetail.startDate");
|
|
479
|
+
this._workshiftDetailsKey = params.workshiftDetailsKey;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* @hidden
|
|
484
|
+
* Retorna a chave do detalhe da escala.
|
|
485
|
+
*/
|
|
486
|
+
private get workshiftDetailsKey(): string {
|
|
487
|
+
return this._workshiftDetailsKey;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Retorna o código da tabela de feriados.
|
|
492
|
+
* @example
|
|
493
|
+
* ```typescript
|
|
494
|
+
* const holidayGroupCode = workshiftDetail.holidayGroup.code; // Retorna o código da tabela de feriados.
|
|
495
|
+
* ```
|
|
496
|
+
* @returns Código da tabela de feriados.
|
|
497
|
+
* @see {@link HolidayGroup}
|
|
498
|
+
*/
|
|
499
|
+
get holidayGroup(): HolidayGroup {
|
|
500
|
+
return this._holidayGroup;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Retorna o tipo de feriado.
|
|
505
|
+
*
|
|
506
|
+
* @example
|
|
507
|
+
* ```typescript
|
|
508
|
+
* const holidayType = workshiftDetail.holidayType; // Retorna o tipo de feriado.
|
|
509
|
+
* ```
|
|
510
|
+
* @returns Tipo de feriado.
|
|
511
|
+
* @see {@link HolidayType}
|
|
512
|
+
*/
|
|
513
|
+
get holidayType(): HolidayType {
|
|
514
|
+
return this._holidayType;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* Retorna a data inicial da configuração da escala, detalhe da escala.
|
|
519
|
+
*
|
|
520
|
+
* @example
|
|
521
|
+
* ```typescript
|
|
522
|
+
* const startDate = workshiftDetail.startDate; // Retorna a data inicial da configuração da escala.
|
|
523
|
+
* ```
|
|
524
|
+
* @return Data inicial da configuração da escala.
|
|
525
|
+
*/
|
|
526
|
+
get startDate(): Date {
|
|
527
|
+
return this._startDate;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* @hidden
|
|
532
|
+
* Retorna a chave única da configuração da escala.
|
|
533
|
+
* @returns chave única da configuração da escala.
|
|
534
|
+
*/
|
|
535
|
+
static getKey(workshiftDetail: WorkshiftDetail): string {
|
|
536
|
+
return workshiftDetail.workshiftDetailsKey;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
public static clone(workshiftDetail: WorkshiftDetail): WorkshiftDetail {
|
|
540
|
+
return new WorkshiftDetail({
|
|
541
|
+
holidayGroup: workshiftDetail.holidayGroup,
|
|
542
|
+
holidayType: workshiftDetail.holidayType,
|
|
543
|
+
startDate: workshiftDetail.startDate,
|
|
544
|
+
workshiftDetailsKey: workshiftDetail.workshiftDetailsKey
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Enumeração para os tipos de escala.
|
|
551
|
+
* @enum
|
|
552
|
+
*/
|
|
553
|
+
export enum WorkshiftType {
|
|
554
|
+
/**
|
|
555
|
+
* Escala permanente.
|
|
556
|
+
*/
|
|
557
|
+
PERMANENT = "PERMANENT",
|
|
558
|
+
/**
|
|
559
|
+
* Busca automática.
|
|
560
|
+
*/
|
|
561
|
+
AUTOMATIC_SEARCH = "AUTOMATIC_SEARCH",
|
|
562
|
+
/**
|
|
563
|
+
* Escala definida.
|
|
564
|
+
*/
|
|
565
|
+
DEFINED = "DEFINED",
|
|
566
|
+
/**
|
|
567
|
+
* Geração automática.
|
|
568
|
+
*/
|
|
569
|
+
AUTOMATIC_GENERATION = "AUTOMATIC_GENERATION",
|
|
570
|
+
/**
|
|
571
|
+
* Escala intermitente.
|
|
572
|
+
*/
|
|
573
|
+
INTERMITTENT = "INTERMITTENT",
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* Enumeração para os tipos de busca automática.
|
|
578
|
+
* @enum
|
|
579
|
+
*/
|
|
580
|
+
export enum AutoSearchType {
|
|
581
|
+
/**
|
|
582
|
+
* Maior número de horas realizadas.
|
|
583
|
+
*/
|
|
584
|
+
LARGEST_NUMBER_OF_HOURS_WORKED = "LARGEST_NUMBER_OF_HOURS_WORKED",
|
|
585
|
+
/**
|
|
586
|
+
* Maior percentual de horas realizadas.
|
|
587
|
+
*/
|
|
588
|
+
HIGHEST_PERCENTAGE_OF_HOURS_WORKED = "HIGHEST_PERCENTAGE_OF_HOURS_WORKED",
|
|
589
|
+
/**
|
|
590
|
+
* Primeira marcação realizada no dia.
|
|
591
|
+
*/
|
|
592
|
+
FIRST_CLOCKING_EVENT_ON_DAY = "FIRST_CLOCKING_EVENT_ON_DAY",
|
|
593
|
+
/**
|
|
594
|
+
* Primeira marcação realizada no dia considerando tolerâncias.
|
|
595
|
+
*/
|
|
596
|
+
FIRST_CLOCKING_EVENT_ON_DAY_CONSIDERING_TOLERANCE = "FIRST_CLOCKING_EVENT_ON_DAY_CONSIDERING_TOLERANCE",
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Enumeração para os tipos de turno da escala.
|
|
601
|
+
* @enum
|
|
602
|
+
*/
|
|
603
|
+
export enum TimeShiftType {
|
|
604
|
+
/**
|
|
605
|
+
* 1º Turno.
|
|
606
|
+
*/
|
|
607
|
+
FIRSTSHIFT = "FIRSTSHIFT",
|
|
608
|
+
/**
|
|
609
|
+
* 2º Turno.
|
|
610
|
+
*/
|
|
611
|
+
SECONDSHIFT = "SECONDSHIFT",
|
|
612
|
+
/**
|
|
613
|
+
* 3º Turno.
|
|
614
|
+
*/
|
|
615
|
+
THIRDSHIFT = "THIRDSHIFT",
|
|
616
|
+
/**
|
|
617
|
+
* 4º Turno.
|
|
618
|
+
*/
|
|
619
|
+
FOURTHSHIFT = "FOURTHSHIFT",
|
|
620
|
+
/**
|
|
621
|
+
* Misto.
|
|
622
|
+
*/
|
|
623
|
+
MIXED = "MIXED",
|
|
624
|
+
/**
|
|
625
|
+
* Geral.
|
|
626
|
+
*/
|
|
627
|
+
GENERAL = "GENERAL",
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/**
|
|
631
|
+
* Enumeração para os tipos de feriado.
|
|
632
|
+
* @enum
|
|
633
|
+
*/
|
|
634
|
+
export enum HolidayType {
|
|
635
|
+
/**
|
|
636
|
+
* Feriado próprio.
|
|
637
|
+
*/
|
|
638
|
+
OWN = "OWN",
|
|
639
|
+
/**
|
|
640
|
+
* Feriado da filial.
|
|
641
|
+
*/
|
|
642
|
+
BRANCH = "BRANCH",
|
|
643
|
+
/**
|
|
644
|
+
* Não tem feriado.
|
|
645
|
+
*/
|
|
646
|
+
NONE = "NONE"
|
|
647
|
+
}
|