@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,89 @@
|
|
|
1
|
+
import { Context } from "../../data/context/context";
|
|
2
|
+
import { DateUtils } from "../../utils/dateUtils";
|
|
3
|
+
|
|
4
|
+
describe('holiday', () => {
|
|
5
|
+
|
|
6
|
+
it('holiday', () => {
|
|
7
|
+
|
|
8
|
+
let inputRule = '{"version":"1.0.0","input":{"batchId":"421ab372-ed76-4371-85fb-9b07df8724a0","processType":"EVALUATE","startDate":"2025-07-04","endDate":"2025-07-04","contracts":[{"id":"43b1373a-c3fa-4af7-a464-3131ee6e5eb2","holidaysKeys":["1_2025-07-04"],"timeEvaluation":[{"date":"2025-07-04","workscheduleId":"807f68fa-7684-4d29-b8a7-76e80911ea08","workscheduleWorkshiftId":"9049c515-2921-4c02-b4bf-44b17b60a1c9","workshiftId":"1a31c2bb-0bcb-423e-a7d2-a2616d14454c","timeEvaluationSituations":[],"clockingEvents":[],"intervals":[],"situationDefinitionKey":"1_2024-01-01_null","estimatedHours":{"meal":[{"dailyHours":90,"nightlyHours":0}],"snack":[],"work":[{"dailyHours":240,"nightlyHours":0},{"dailyHours":270,"nightlyHours":0}]},"syndicateKey":"3031","missingClockingEvent":false}],"employee":{"id":"43b1373a-c3fa-4af7-a464-3131ee6e5eb2","code":1000,"person":{"name":"Jessé Antônio Effting Serpa II"},"hireDate":"2024-02-29","employmentRelationshipId":"31c382fd-0518-42f5-a93f-a6984bb3faac","employer":{"code":1},"jobPositionCode":"5","companyBranchCode":1,"workshiftCode":1,"workshiftGroupCode":1},"histories":{"jobPositionHistories":[{"startDate":"2024-02-29","jobPositionKey":"1_5"}],"companyBranchHistories":[{"startDate":"2024-02-29","companyBranchKey":"1_1"}],"employmentRelationshipHistories":[{"startDate":"2024-02-29","employmentRelationshipId":"31c382fd-0518-42f5-a93f-a6984bb3faac"}],"timeEvaluationHistories":[{"startDate":"2024-02-29","type":"NORMAL"}],"workshiftHistories":[{"startDate":"2024-02-29","workshiftId":"1a31c2bb-0bcb-423e-a7d2-a2616d14454c","workshiftGroupsCode":1}],"leaveHistories":[],"costCenterHistories":[]},"schedules":{"bridges":[],"workscheduleChanges":[],"workshiftChanges":[{"startDate":"2024-07-17","endDate":"2024-07-18","workshiftId":"1a31c2bb-0bcb-423e-a7d2-a2616d14454c","workshiftGroupsCode":1}]},"hourBankAccounts":[{"hourBank":{"code":1},"creationDate":"2024-02-29"}]}],"database":{"situations":[{"id":"2c89e6e3-3d2b-4893-a15e-e080164c339d","code":1,"type":"WORKING","exception":false,"complementarySituationId":"9dc57744-cdf9-44f5-b014-b2b9eda2650c","daytime":true},{"id":"9dc57744-cdf9-44f5-b014-b2b9eda2650c","code":2,"type":"WORKING","exception":false,"complementarySituationId":"2c89e6e3-3d2b-4893-a15e-e080164c339d","daytime":false},{"id":"65789c29-4642-4cad-aed8-5a0e11cb7325","code":3,"type":"ABSENCES","exception":false,"complementarySituationId":"65789c29-4642-4cad-aed8-5a0e11cb7325","daytime":false},{"id":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","code":5,"type":"OVERTIME","exception":true,"complementarySituationId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","daytime":true},{"id":"d8847fe4-31e6-4a9f-bc01-f1e3e6eb445f","code":7,"type":"WORKING","exception":true,"complementarySituationId":"d8847fe4-31e6-4a9f-bc01-f1e3e6eb445f","daytime":false},{"id":"347983c8-b042-4f28-bc3a-c8527edbeaaf","code":8,"type":"ABSENCES","exception":true,"complementarySituationId":"347983c8-b042-4f28-bc3a-c8527edbeaaf","daytime":true},{"id":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","code":10,"type":"OVERTIME","exception":true,"complementarySituationId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","daytime":true},{"id":"48afea5e-4ff6-4928-9228-a732c8dd5c7c","code":11,"type":"OVERTIME","exception":true,"complementarySituationId":"48afea5e-4ff6-4928-9228-a732c8dd5c7c","daytime":true},{"id":"55a60f35-d83d-4768-9349-9b9563d01d63","code":12,"type":"WORKING","exception":false,"complementarySituationId":"55a60f35-d83d-4768-9349-9b9563d01d63","daytime":true},{"id":"3ec96bd5-6fe9-46ee-9720-1405952b155c","code":13,"type":"TIMEEVALUATIONSITUATION","exception":true,"complementarySituationId":"3ec96bd5-6fe9-46ee-9720-1405952b155c","daytime":true},{"id":"75cfbfd0-4b9f-4a00-96b8-64f52ba5fd71","code":14,"type":"TIMEEVALUATIONSITUATION","exception":true,"complementarySituationId":"75cfbfd0-4b9f-4a00-96b8-64f52ba5fd71","daytime":true},{"id":"8d8c404a-4d43-4e5d-9497-4a1b47a3910d","code":15,"type":"VACATION","exception":false,"complementarySituationId":"8d8c404a-4d43-4e5d-9497-4a1b47a3910d","daytime":true},{"id":"3a5e54c2-44d1-4751-879b-194bf26beff2","code":16,"type":"ABSENCES","exception":true,"complementarySituationId":"3a5e54c2-44d1-4751-879b-194bf26beff2","daytime":true},{"id":"ba45ed30-4e2f-49ed-8487-76a9d15fcdaf","code":19,"type":"ABSENCES","exception":true,"complementarySituationId":"ba45ed30-4e2f-49ed-8487-76a9d15fcdaf","daytime":true},{"id":"fcc81ec8-3cef-4876-9c33-71efe5be606d","code":26,"type":"TIMEEVALUATIONSITUATION","exception":true,"complementarySituationId":"fcc81ec8-3cef-4876-9c33-71efe5be606d","daytime":true}],"holidays":[{"key":"1_2025-07-04","date":"2025-07-04","holidayGroup":{"code":1}}],"timeEvaluationSituationDefinitions":[{"code":1,"startDate":"2024-01-01","workSituationId":"2c89e6e3-3d2b-4893-a15e-e080164c339d","nightShiftWorkPremiumId":"d8847fe4-31e6-4a9f-bc01-f1e3e6eb445f","invalidEventsSituationId":"fcc81ec8-3cef-4876-9c33-71efe5be606d","vacationPaidLeaveSituationId":"8d8c404a-4d43-4e5d-9497-4a1b47a3910d","dailyRestViolationSituationId":"3ec96bd5-6fe9-46ee-9720-1405952b155c","workBreakViolationSituationId":"75cfbfd0-4b9f-4a00-96b8-64f52ba5fd71","absenceSituationId":"65789c29-4642-4cad-aed8-5a0e11cb7325","tardinessSituationId":"347983c8-b042-4f28-bc3a-c8527edbeaaf","intermediateLeaveSituationId":"3a5e54c2-44d1-4751-879b-194bf26beff2","earlyLeaveSituationId":"ba45ed30-4e2f-49ed-8487-76a9d15fcdaf","percentageNextDay":false,"normalOvertimeSeparationLimit":120,"separateOvertimeAfterConvertingNightShiftHours":false,"unauthorizedOvertimeId":"48afea5e-4ff6-4928-9228-a732c8dd5c7c","overtimeBeforeId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeEntryId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeDuringMealId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","leaveOvertimeId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeAfterId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeSeparationLimitDuringRest":120,"overtimeDuringRestId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","overtimeSeparationLimitDuringCompensatedDays":120,"overtimeOnCompensatedDaysId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","overtimeSeparationLimitDuringHoliday":120,"overtimeDuringHolidayId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","overtimeSeparationLimitDuringDayOff":120,"overtimeDuringDayOffId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","nightShiftOvertimePremiumSituationId":"55a60f35-d83d-4768-9349-9b9563d01d63","overtimeSeparationBeforeId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeSeparationEntryId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeSeparationDuringMealId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeSeparationLeaveId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeSeparationAfterId":"4f2ef242-e6af-4a82-abf8-9d33d0f973a7","overtimeSeparationDuringRestId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","overtimeSeparationDuringCompensatedDaysId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","overtimeSeparationDuringHolidayId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68","overtimeSeparationDuringDayOffId":"ae24b545-f86d-47c6-9d8a-0ec50e7f9e68"}],"jobPositions":[{"key":"1_5","code":5,"structureCode":1}],"workschedules":[{"id":"9049c515-2921-4c02-b4bf-44b17b60a1c9","code":1,"workload":510,"type":"FLEXIBLE","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":0,"toleranceAfter":0,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":0,"toleranceAfter":0,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"FLEXIBLE","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":3,"clockingEvent":810,"toleranceBefore":0,"toleranceAfter":0,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"FLEXIBLE","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":0,"toleranceAfter":0,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"807f68fa-7684-4d29-b8a7-76e80911ea08","code":997,"workload":0,"definitionType":"HOLIDAY","clockingRegisters":[],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}}],"workshifts":[{"id":"1a31c2bb-0bcb-423e-a7d2-a2616d14454c","code":1,"type":"PERMANENT","rotationWorkShift":false,"extensionNightHours":false,"dsrMinutes":440,"weekMinutes":2640,"monthMinutes":13200,"timeShiftType":"FIRSTSHIFT","workshiftGroups":[{"code":1,"baseDate":"2024-01-01"}],"workshiftDetails":[{"holidayGroup":{"code":0},"holidayType":"BRANCH","startDate":"2024-01-01"}]}],"companyBranches":[{"key":"1_1","code":1}],"syndicates":[{"key":"3031","code":3031,"nightStartHour":1320,"nightEndHour":300,"minimumInterval4to6Hours":0,"minimumInterval6Hours":60,"minimumWorkDuration6Hours":361}],"employmentRelationships":[{"id":"31c382fd-0518-42f5-a93f-a6984bb3faac","code":"1.1.1","contractType":"EMPLOYEE"}],"costCenters":[]},"currentUser":{"userName":"admin@hcmcem.com.br"}}}';
|
|
9
|
+
|
|
10
|
+
const context = new Context({ body: inputRule });
|
|
11
|
+
const contract = context.contracts[0];
|
|
12
|
+
const timeEvaluation = contract.timeEvaluation[0];
|
|
13
|
+
|
|
14
|
+
expect(timeEvaluation.holiday?.date).toEqual(new Date("2025-07-04"));
|
|
15
|
+
|
|
16
|
+
expect(contract.getHolidayByDate(new Date("2025-07-04"))?.date).toEqual(new Date("2025-07-04"));
|
|
17
|
+
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
it('holiday', () => {
|
|
22
|
+
|
|
23
|
+
let inputRule = '{"version":"1.0.0","input":{"batchId":"9518d5d6-83a2-410d-9c81-50e3233519a9","processType":"EVALUATE","startDate":"2025-05-03","endDate":"2025-05-03","contracts":[{"id":"943a66fb-3636-456f-b7ba-e3e1526e8892","holidaysKeys":["2_2025-05-02","4_2025-05-01"],"timeEvaluation":[{"date":"2025-05-03","workscheduleId":"d80913c8-db4f-4304-a278-c81c9d867433","workscheduleWorkshiftId":"d80913c8-db4f-4304-a278-c81c9d867433","workshiftId":"0672b0da-0406-4fbf-a4ac-9c2631c2b5cd","timeEvaluationSituations":[{"situationId":"61963c0b-213c-4fbc-9329-6afadc971b34","situationCode":65,"numberOfHours":360}],"clockingEvents":[],"intervals":[{"clockingEventStart":"2025-05-02T22:00:00","clockingEventEnd":"2025-05-03T01:00:00","type":"ABSENCE","subType":"FULL_PART","situationCode":0,"situationReasonCode":0,"justifiedSituationCode":0,"justifiedDays":0,"positionWorkingPart":{"workingHours":1,"part":1},"isNightly":true,"isOvertimeAuthorized":false,"isTolerancePeriod":false,"inClockingEventTolerance":true},{"clockingEventStart":"2025-05-03T02:00:00","clockingEventEnd":"2025-05-03T05:00:00","type":"ABSENCE","subType":"FULL_PART","situationCode":0,"situationReasonCode":0,"justifiedSituationCode":0,"justifiedDays":0,"positionWorkingPart":{"workingHours":1,"part":2},"isNightly":true,"isOvertimeAuthorized":false,"isTolerancePeriod":false,"inClockingEventTolerance":true}],"situationDefinitionKey":"3_2025-01-01_null","estimatedHours":{"meal":[{"dailyHours":0,"nightlyHours":60}],"snack":[],"work":[{"dailyHours":0,"nightlyHours":180},{"dailyHours":0,"nightlyHours":180}]},"syndicateKey":"1"}],"employee":{"id":"943a66fb-3636-456f-b7ba-e3e1526e8892","code":1,"person":{"name":"Eric Blauerstein"},"hireDate":"2020-01-01","employmentRelationship":{"code":"10","contractType":"EMPLOYEE"},"employer":{"code":1},"jobPositionCode":"2","companyBranchCode":1,"workshiftCode":1,"workshiftGroupCode":1},"histories":{"jobPositionHistories":[{"startDate":"2025-04-10","jobPositionKey":"1_2"}],"companyBranchHistories":[{"startDate":"2020-01-01","companyBranchKey":"1_1"}]},"schedules":{"bridges":[]},"hourBankAccounts":[{"hourBank":{"code":1},"creationDate":"2025-04-01","extinctionDate":"2025-04-11"},{"hourBank":{"code":1},"creationDate":"2025-05-01"}]}],"database":{"situations":[{"id":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","code":1,"type":"WORKING","exception":false,"complementarySituationId":"1ff19942-ace7-45ea-b886-861e75471795","daytime":true},{"id":"d609b9e3-25f3-419e-be4a-63d7cffdb5c1","code":2,"type":"VACATION","exception":false,"complementarySituationId":"4313de66-ec62-4bbf-b469-fe87546fc5c3","daytime":true},{"id":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","code":15,"type":"ABSENCES","exception":true,"complementarySituationId":"61963c0b-213c-4fbc-9329-6afadc971b34","daytime":true},{"id":"77c72619-b2a8-4777-bdfb-ff63a0283400","code":16,"type":"OVERTIME","exception":true,"complementarySituationId":"ae0b0bc6-2178-4876-91a7-c468360070ec","daytime":true},{"id":"61963c0b-213c-4fbc-9329-6afadc971b34","code":65,"type":"ABSENCES","exception":true,"complementarySituationId":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","daytime":false},{"id":"ae0b0bc6-2178-4876-91a7-c468360070ec","code":66,"type":"OVERTIME","exception":true,"complementarySituationId":"77c72619-b2a8-4777-bdfb-ff63a0283400","daytime":false},{"id":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","code":101,"type":"ABSENCES","exception":true,"complementarySituationId":"71d9ba6f-8a49-4e46-8251-67b8626fbeeb","daytime":true},{"id":"71d9ba6f-8a49-4e46-8251-67b8626fbeeb","code":102,"type":"ABSENCES","exception":true,"complementarySituationId":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","daytime":false},{"id":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","code":103,"type":"ABSENCES","exception":true,"complementarySituationId":"f8e7a234-6d85-499b-836e-9f5b78884be7","daytime":true},{"id":"f8e7a234-6d85-499b-836e-9f5b78884be7","code":104,"type":"ABSENCES","exception":true,"complementarySituationId":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","daytime":false},{"id":"e6077a7c-645b-4bc6-8698-402c68467ce9","code":105,"type":"ABSENCES","exception":true,"complementarySituationId":"37d56ac4-8cd6-4a3d-b660-1c53890dca1f","daytime":true},{"id":"37d56ac4-8cd6-4a3d-b660-1c53890dca1f","code":106,"type":"ABSENCES","exception":true,"complementarySituationId":"e6077a7c-645b-4bc6-8698-402c68467ce9","daytime":false},{"id":"1ff19942-ace7-45ea-b886-861e75471795","code":501,"type":"WORKING","exception":false,"complementarySituationId":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","daytime":false},{"id":"ef6bd93e-53da-4b41-b532-d85006b9e607","code":502,"type":"OTHERS","exception":true,"complementarySituationId":"ef6bd93e-53da-4b41-b532-d85006b9e607","daytime":false},{"id":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","code":503,"type":"WORKING","exception":true,"complementarySituationId":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","daytime":true},{"id":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","code":504,"type":"ABSENCES","exception":true,"complementarySituationId":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","daytime":true},{"id":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","code":505,"type":"OVERTIME","exception":false,"complementarySituationId":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","daytime":true},{"id":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","code":506,"type":"OVERTIME","exception":false,"complementarySituationId":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","daytime":true},{"id":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","code":507,"type":"OVERTIME","exception":false,"complementarySituationId":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","daytime":true},{"id":"803645a7-5f43-49b1-bafa-70fa910733d6","code":508,"type":"OVERTIME","exception":false,"complementarySituationId":"803645a7-5f43-49b1-bafa-70fa910733d6","daytime":true},{"id":"60030488-fe09-423a-9b1f-248d366430b4","code":509,"type":"OVERTIME","exception":false,"complementarySituationId":"60030488-fe09-423a-9b1f-248d366430b4","daytime":true},{"id":"3f61cff5-18d7-4042-b44f-791a4c308f2c","code":510,"type":"OVERTIME","exception":false,"complementarySituationId":"3f61cff5-18d7-4042-b44f-791a4c308f2c","daytime":true},{"id":"b3d37da3-21bd-4902-9358-0bbc4721b327","code":511,"type":"OVERTIME","exception":false,"complementarySituationId":"b3d37da3-21bd-4902-9358-0bbc4721b327","daytime":true},{"id":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","code":512,"type":"OVERTIME","exception":false,"complementarySituationId":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","daytime":true},{"id":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","code":513,"type":"OVERTIME","exception":false,"complementarySituationId":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","daytime":true},{"id":"c705ea33-88b4-44dc-b755-fe2ae6fff151","code":514,"type":"OVERTIME","exception":false,"complementarySituationId":"c705ea33-88b4-44dc-b755-fe2ae6fff151","daytime":true},{"id":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","code":515,"type":"OVERTIME","exception":false,"complementarySituationId":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","daytime":true},{"id":"e5b79a9d-5093-4b68-aa0d-34cac5536053","code":516,"type":"OVERTIME","exception":false,"complementarySituationId":"e5b79a9d-5093-4b68-aa0d-34cac5536053","daytime":true},{"id":"5f728686-409a-44c8-8b7e-e848e598de60","code":517,"type":"OVERTIME","exception":false,"complementarySituationId":"5f728686-409a-44c8-8b7e-e848e598de60","daytime":true},{"id":"a5da8e1f-612c-4903-865a-de1b861ad98c","code":518,"type":"OVERTIME","exception":false,"complementarySituationId":"a5da8e1f-612c-4903-865a-de1b861ad98c","daytime":true},{"id":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","code":519,"type":"OVERTIME","exception":false,"complementarySituationId":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","daytime":true},{"id":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","code":520,"type":"OVERTIME","exception":false,"complementarySituationId":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","daytime":true},{"id":"94dec6d5-e769-4668-9b52-8896452b5e39","code":521,"type":"OVERTIME","exception":false,"complementarySituationId":"94dec6d5-e769-4668-9b52-8896452b5e39","daytime":true},{"id":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c","code":522,"type":"OVERTIME","exception":false,"complementarySituationId":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c","daytime":true},{"id":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","code":523,"type":"OVERTIME","exception":true,"complementarySituationId":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","daytime":false},{"id":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","code":524,"type":"OVERTIME","exception":false,"complementarySituationId":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","daytime":false},{"id":"4313de66-ec62-4bbf-b469-fe87546fc5c3","code":750,"type":"VACATION","exception":false,"complementarySituationId":"21ddf37a-7388-488c-afe3-53ce9868dbb9","daytime":false},{"id":"c5e72905-07fb-4baf-929f-847d96fe0a05","code":999,"type":"TIMEEVALUATIONSITUATION","exception":true,"complementarySituationId":"c5e72905-07fb-4baf-929f-847d96fe0a05","daytime":true}],"holidays":[{"key":"4_2025-05-01","date":"2025-05-01","holidayGroup":{"code":4}},{"key":"2_2025-05-02","date":"2025-05-02","holidayGroup":{"code":2}}],"timeEvaluationSituationDefinitions":[{"code":3,"startDate":"2025-01-01","workSituationId":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","nightShiftWorkPremiumId":"1ff19942-ace7-45ea-b886-861e75471795","invalidEventsSituationId":"c5e72905-07fb-4baf-929f-847d96fe0a05","vacationPaidLeaveSituationId":"d609b9e3-25f3-419e-be4a-63d7cffdb5c1","dailyRestViolationSituationId":"ef6bd93e-53da-4b41-b532-d85006b9e607","workBreakViolationSituationId":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","absenceSituationId":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","tardinessSituationId":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","intermediateLeaveSituationId":"e6077a7c-645b-4bc6-8698-402c68467ce9","earlyLeaveSituationId":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","absenceSituationOnRelayScheduleHolidaysId":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","percentageNextDay":false,"normalOvertimeSeparationLimit":90,"separateOvertimeAfterConvertingNightShiftHours":false,"unauthorizedOvertimeId":"77c72619-b2a8-4777-bdfb-ff63a0283400","overtimeBeforeId":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","overtimeEntryId":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","overtimeDuringMealId":"60030488-fe09-423a-9b1f-248d366430b4","leaveOvertimeId":"b3d37da3-21bd-4902-9358-0bbc4721b327","overtimeAfterId":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","overtimeSeparationLimitDuringRest":240,"overtimeDuringRestId":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","overtimeSeparationLimitDuringCompensatedDays":240,"overtimeOnCompensatedDaysId":"5f728686-409a-44c8-8b7e-e848e598de60","overtimeSeparationLimitDuringHoliday":240,"overtimeDuringHolidayId":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","overtimeSeparationLimitDuringDayOff":240,"overtimeDuringDayOffId":"94dec6d5-e769-4668-9b52-8896452b5e39","overtimeSituationOnRelayScheduleHolidaysId":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","nightShiftOvertimePremiumSituationId":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","overtimeSeparationBeforeId":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","overtimeSeparationEntryId":"803645a7-5f43-49b1-bafa-70fa910733d6","overtimeSeparationDuringMealId":"3f61cff5-18d7-4042-b44f-791a4c308f2c","overtimeSeparationLeaveId":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","overtimeSeparationAfterId":"c705ea33-88b4-44dc-b755-fe2ae6fff151","overtimeSeparationDuringRestId":"e5b79a9d-5093-4b68-aa0d-34cac5536053","overtimeSeparationDuringCompensatedDaysId":"a5da8e1f-612c-4903-865a-de1b861ad98c","overtimeSeparationDuringHolidayId":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","overtimeSeparationDuringDayOffId":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c"}],"jobPositions":[{"key":"1_2","code":2,"structureCode":1}],"workschedules":[{"id":"d80913c8-db4f-4304-a278-c81c9d867433","code":9,"workload":360,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":1320,"toleranceBefore":1310,"toleranceAfter":1325,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":60,"toleranceBefore":50,"toleranceAfter":65,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":3,"clockingEvent":120,"toleranceBefore":110,"toleranceAfter":125,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":4,"clockingEvent":300,"toleranceBefore":295,"toleranceAfter":310,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}}],"workshifts":[{"id":"0672b0da-0406-4fbf-a4ac-9c2631c2b5cd","code":9,"type":"PERMANENT","rotationWorkShift":false,"extensionNightHours":true,"dsrMinutes":440,"weekMinutes":2640,"monthMinutes":13200,"timeShiftType":"THIRDSHIFT","workshiftGroups":[{"code":1,"baseDate":"2001-01-01"},{"code":2,"baseDate":"2001-01-02"},{"code":3,"baseDate":"2001-01-03"},{"code":4,"baseDate":"2001-01-04"},{"code":5,"baseDate":"2001-01-05"},{"code":6,"baseDate":"2001-01-06"},{"code":7,"baseDate":"2001-01-07"},{"code":8,"baseDate":"2001-01-08"}],"workshiftDetails":[{"holidayGroup":{"code":2},"holidayType":"OWN","startDate":"2022-10-01"}]}],"companyBranches":[{"key":"1_1","code":1}],"syndicates":[{"key":"1","code":1,"nightStartHour":1320,"nightEndHour":300,"minimumInterval4to6Hours":0,"minimumInterval6Hours":0,"minimumWorkDuration6Hours":361}]},"currentUser":{"userName":"admin@allanalves.com.br"}}}';
|
|
24
|
+
|
|
25
|
+
const context = new Context({ body: inputRule });
|
|
26
|
+
const contract = context.contracts[0];
|
|
27
|
+
const timeEvaluation = contract.timeEvaluation[0];
|
|
28
|
+
|
|
29
|
+
// Testando getSeparateHours
|
|
30
|
+
const holiday_1_5 = contract.getHolidayByDate(DateUtils.of(2025, 5, 1));
|
|
31
|
+
expect(holiday_1_5).toBeDefined();
|
|
32
|
+
if (holiday_1_5) {
|
|
33
|
+
expect(holiday_1_5.key).toBe('4_2025-05-01');
|
|
34
|
+
expect(holiday_1_5.date).toEqual(DateUtils.of(2025, 5, 1));
|
|
35
|
+
expect(holiday_1_5.holidayGroup.code).toEqual(4);
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
const holiday_2_5 = contract.getHolidayByDate(DateUtils.of(2025, 5, 2));
|
|
39
|
+
expect(holiday_2_5).toBeDefined();
|
|
40
|
+
if (holiday_2_5) {
|
|
41
|
+
expect(holiday_2_5.key).toBe('2_2025-05-02');
|
|
42
|
+
expect(holiday_2_5.date).toEqual(DateUtils.of(2025, 5, 2));
|
|
43
|
+
expect(holiday_2_5.holidayGroup.code).toEqual(2);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
const holiday = timeEvaluation.holiday;
|
|
48
|
+
expect(holiday).toBeUndefined();
|
|
49
|
+
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
it('holiday - Defined ', () => {
|
|
54
|
+
|
|
55
|
+
let inputRule = '{"version":"1.0.0","input":{"batchId":"f7407447-8a00-4564-a77c-45af602b5cd8","processType":"EVALUATE","startDate":"2025-05-01","endDate":"2025-05-01","contracts":[{"id":"943a66fb-3636-456f-b7ba-e3e1526e8892","holidaysKeys":["2_2025-05-02","4_2025-05-01"],"timeEvaluation":[{"date":"2025-05-01","workscheduleId":"d5a74872-c1f8-482e-b1c3-7969d3e146a5","workscheduleWorkshiftId":"dc3dd08e-f0b6-4569-8a5b-83e55b5b9ce3","workshiftId":"87db8a76-156c-4265-9989-39be06859135","timeEvaluationSituations":[],"clockingEvents":[],"intervals":[],"situationDefinitionKey":"3_2025-01-01_null","estimatedHours":{"meal":[{"dailyHours":90,"nightlyHours":0}],"snack":[],"work":[{"dailyHours":240,"nightlyHours":0},{"dailyHours":270,"nightlyHours":0}]},"syndicateKey":"1"}],"employee":{"id":"943a66fb-3636-456f-b7ba-e3e1526e8892","code":1,"person":{"name":"Eric Blauerstein"},"hireDate":"2020-01-01","employmentRelationship":{"code":"10","contractType":"EMPLOYEE"},"employer":{"code":1},"jobPositionCode":"2","companyBranchCode":1,"workshiftCode":1,"workshiftGroupCode":1},"histories":{"jobPositionHistories":[{"startDate":"2025-04-10","jobPositionKey":"1_2"}],"companyBranchHistories":[{"startDate":"2020-01-01","companyBranchKey":"1_1"}]},"schedules":{"bridges":[]},"hourBankAccounts":[{"hourBank":{"code":1},"creationDate":"2025-04-01","extinctionDate":"2025-04-11"},{"hourBank":{"code":1},"creationDate":"2025-05-01"}]}],"database":{"situations":[{"id":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","code":1,"type":"WORKING","exception":false,"complementarySituationId":"1ff19942-ace7-45ea-b886-861e75471795","daytime":true},{"id":"d609b9e3-25f3-419e-be4a-63d7cffdb5c1","code":2,"type":"VACATION","exception":false,"complementarySituationId":"4313de66-ec62-4bbf-b469-fe87546fc5c3","daytime":true},{"id":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","code":15,"type":"ABSENCES","exception":true,"complementarySituationId":"61963c0b-213c-4fbc-9329-6afadc971b34","daytime":true},{"id":"77c72619-b2a8-4777-bdfb-ff63a0283400","code":16,"type":"OVERTIME","exception":true,"complementarySituationId":"ae0b0bc6-2178-4876-91a7-c468360070ec","daytime":true},{"id":"61963c0b-213c-4fbc-9329-6afadc971b34","code":65,"type":"ABSENCES","exception":true,"complementarySituationId":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","daytime":false},{"id":"ae0b0bc6-2178-4876-91a7-c468360070ec","code":66,"type":"OVERTIME","exception":true,"complementarySituationId":"77c72619-b2a8-4777-bdfb-ff63a0283400","daytime":false},{"id":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","code":101,"type":"ABSENCES","exception":true,"complementarySituationId":"71d9ba6f-8a49-4e46-8251-67b8626fbeeb","daytime":true},{"id":"71d9ba6f-8a49-4e46-8251-67b8626fbeeb","code":102,"type":"ABSENCES","exception":true,"complementarySituationId":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","daytime":false},{"id":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","code":103,"type":"ABSENCES","exception":true,"complementarySituationId":"f8e7a234-6d85-499b-836e-9f5b78884be7","daytime":true},{"id":"f8e7a234-6d85-499b-836e-9f5b78884be7","code":104,"type":"ABSENCES","exception":true,"complementarySituationId":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","daytime":false},{"id":"e6077a7c-645b-4bc6-8698-402c68467ce9","code":105,"type":"ABSENCES","exception":true,"complementarySituationId":"37d56ac4-8cd6-4a3d-b660-1c53890dca1f","daytime":true},{"id":"37d56ac4-8cd6-4a3d-b660-1c53890dca1f","code":106,"type":"ABSENCES","exception":true,"complementarySituationId":"e6077a7c-645b-4bc6-8698-402c68467ce9","daytime":false},{"id":"1ff19942-ace7-45ea-b886-861e75471795","code":501,"type":"WORKING","exception":false,"complementarySituationId":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","daytime":false},{"id":"ef6bd93e-53da-4b41-b532-d85006b9e607","code":502,"type":"OTHERS","exception":true,"complementarySituationId":"ef6bd93e-53da-4b41-b532-d85006b9e607","daytime":false},{"id":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","code":503,"type":"WORKING","exception":true,"complementarySituationId":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","daytime":true},{"id":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","code":504,"type":"ABSENCES","exception":true,"complementarySituationId":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","daytime":true},{"id":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","code":505,"type":"OVERTIME","exception":false,"complementarySituationId":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","daytime":true},{"id":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","code":506,"type":"OVERTIME","exception":false,"complementarySituationId":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","daytime":true},{"id":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","code":507,"type":"OVERTIME","exception":false,"complementarySituationId":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","daytime":true},{"id":"803645a7-5f43-49b1-bafa-70fa910733d6","code":508,"type":"OVERTIME","exception":false,"complementarySituationId":"803645a7-5f43-49b1-bafa-70fa910733d6","daytime":true},{"id":"60030488-fe09-423a-9b1f-248d366430b4","code":509,"type":"OVERTIME","exception":false,"complementarySituationId":"60030488-fe09-423a-9b1f-248d366430b4","daytime":true},{"id":"3f61cff5-18d7-4042-b44f-791a4c308f2c","code":510,"type":"OVERTIME","exception":false,"complementarySituationId":"3f61cff5-18d7-4042-b44f-791a4c308f2c","daytime":true},{"id":"b3d37da3-21bd-4902-9358-0bbc4721b327","code":511,"type":"OVERTIME","exception":false,"complementarySituationId":"b3d37da3-21bd-4902-9358-0bbc4721b327","daytime":true},{"id":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","code":512,"type":"OVERTIME","exception":false,"complementarySituationId":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","daytime":true},{"id":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","code":513,"type":"OVERTIME","exception":false,"complementarySituationId":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","daytime":true},{"id":"c705ea33-88b4-44dc-b755-fe2ae6fff151","code":514,"type":"OVERTIME","exception":false,"complementarySituationId":"c705ea33-88b4-44dc-b755-fe2ae6fff151","daytime":true},{"id":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","code":515,"type":"OVERTIME","exception":false,"complementarySituationId":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","daytime":true},{"id":"e5b79a9d-5093-4b68-aa0d-34cac5536053","code":516,"type":"OVERTIME","exception":false,"complementarySituationId":"e5b79a9d-5093-4b68-aa0d-34cac5536053","daytime":true},{"id":"5f728686-409a-44c8-8b7e-e848e598de60","code":517,"type":"OVERTIME","exception":false,"complementarySituationId":"5f728686-409a-44c8-8b7e-e848e598de60","daytime":true},{"id":"a5da8e1f-612c-4903-865a-de1b861ad98c","code":518,"type":"OVERTIME","exception":false,"complementarySituationId":"a5da8e1f-612c-4903-865a-de1b861ad98c","daytime":true},{"id":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","code":519,"type":"OVERTIME","exception":false,"complementarySituationId":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","daytime":true},{"id":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","code":520,"type":"OVERTIME","exception":false,"complementarySituationId":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","daytime":true},{"id":"94dec6d5-e769-4668-9b52-8896452b5e39","code":521,"type":"OVERTIME","exception":false,"complementarySituationId":"94dec6d5-e769-4668-9b52-8896452b5e39","daytime":true},{"id":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c","code":522,"type":"OVERTIME","exception":false,"complementarySituationId":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c","daytime":true},{"id":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","code":523,"type":"OVERTIME","exception":true,"complementarySituationId":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","daytime":false},{"id":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","code":524,"type":"OVERTIME","exception":false,"complementarySituationId":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","daytime":false},{"id":"4313de66-ec62-4bbf-b469-fe87546fc5c3","code":750,"type":"VACATION","exception":false,"complementarySituationId":"21ddf37a-7388-488c-afe3-53ce9868dbb9","daytime":false},{"id":"c5e72905-07fb-4baf-929f-847d96fe0a05","code":999,"type":"TIMEEVALUATIONSITUATION","exception":true,"complementarySituationId":"c5e72905-07fb-4baf-929f-847d96fe0a05","daytime":true}],"holidays":[{"key":"4_2025-05-01","date":"2025-05-01","holidayGroup":{"code":4}},{"key":"2_2025-05-02","date":"2025-05-02","holidayGroup":{"code":2}}],"timeEvaluationSituationDefinitions":[{"code":3,"startDate":"2025-01-01","workSituationId":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","nightShiftWorkPremiumId":"1ff19942-ace7-45ea-b886-861e75471795","invalidEventsSituationId":"c5e72905-07fb-4baf-929f-847d96fe0a05","vacationPaidLeaveSituationId":"d609b9e3-25f3-419e-be4a-63d7cffdb5c1","dailyRestViolationSituationId":"ef6bd93e-53da-4b41-b532-d85006b9e607","workBreakViolationSituationId":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","absenceSituationId":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","tardinessSituationId":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","intermediateLeaveSituationId":"e6077a7c-645b-4bc6-8698-402c68467ce9","earlyLeaveSituationId":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","absenceSituationOnRelayScheduleHolidaysId":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","percentageNextDay":false,"normalOvertimeSeparationLimit":90,"separateOvertimeAfterConvertingNightShiftHours":false,"unauthorizedOvertimeId":"77c72619-b2a8-4777-bdfb-ff63a0283400","overtimeBeforeId":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","overtimeEntryId":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","overtimeDuringMealId":"60030488-fe09-423a-9b1f-248d366430b4","leaveOvertimeId":"b3d37da3-21bd-4902-9358-0bbc4721b327","overtimeAfterId":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","overtimeSeparationLimitDuringRest":240,"overtimeDuringRestId":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","overtimeSeparationLimitDuringCompensatedDays":240,"overtimeOnCompensatedDaysId":"5f728686-409a-44c8-8b7e-e848e598de60","overtimeSeparationLimitDuringHoliday":240,"overtimeDuringHolidayId":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","overtimeSeparationLimitDuringDayOff":240,"overtimeDuringDayOffId":"94dec6d5-e769-4668-9b52-8896452b5e39","overtimeSituationOnRelayScheduleHolidaysId":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","nightShiftOvertimePremiumSituationId":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","overtimeSeparationBeforeId":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","overtimeSeparationEntryId":"803645a7-5f43-49b1-bafa-70fa910733d6","overtimeSeparationDuringMealId":"3f61cff5-18d7-4042-b44f-791a4c308f2c","overtimeSeparationLeaveId":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","overtimeSeparationAfterId":"c705ea33-88b4-44dc-b755-fe2ae6fff151","overtimeSeparationDuringRestId":"e5b79a9d-5093-4b68-aa0d-34cac5536053","overtimeSeparationDuringCompensatedDaysId":"a5da8e1f-612c-4903-865a-de1b861ad98c","overtimeSeparationDuringHolidayId":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","overtimeSeparationDuringDayOffId":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c"}],"jobPositions":[{"key":"1_2","code":2,"structureCode":1}],"workschedules":[{"id":"dc3dd08e-f0b6-4569-8a5b-83e55b5b9ce3","code":1,"workload":510,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":470,"toleranceAfter":485,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":715,"toleranceAfter":730,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":3,"clockingEvent":810,"toleranceBefore":800,"toleranceAfter":815,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":1075,"toleranceAfter":1090,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"d5a74872-c1f8-482e-b1c3-7969d3e146a5","code":9997,"workload":0,"type":"RIGID","definitionType":"HOLIDAY","clockingRegisters":[],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}}],"workshifts":[{"id":"87db8a76-156c-4265-9989-39be06859135","code":1,"type":"PERMANENT","rotationWorkShift":true,"extensionNightHours":true,"dsrMinutes":440,"weekMinutes":2640,"monthMinutes":13200,"timeShiftType":"GENERAL","workshiftGroups":[{"code":1,"baseDate":"1998-12-28"},{"code":2,"baseDate":"2001-01-20"},{"code":8,"baseDate":"1901-01-07"}],"workshiftDetails":[{"holidayGroup":{"code":0},"holidayType":"BRANCH","startDate":"2022-10-01"}]}],"companyBranches":[{"key":"1_1","code":1}],"syndicates":[{"key":"1","code":1,"nightStartHour":1320,"nightEndHour":300,"minimumInterval4to6Hours":0,"minimumInterval6Hours":0,"minimumWorkDuration6Hours":361}]},"currentUser":{"userName":"admin@allanalves.com.br"}}}';
|
|
56
|
+
|
|
57
|
+
const context = new Context({ body: inputRule });
|
|
58
|
+
const contract = context.contracts[0];
|
|
59
|
+
|
|
60
|
+
const timeEvaluation = contract.timeEvaluation[0];
|
|
61
|
+
|
|
62
|
+
// Testando getSeparateHours
|
|
63
|
+
const holiday_1_5 = contract.getHolidayByDate(DateUtils.of(2025, 5, 1));
|
|
64
|
+
expect(holiday_1_5).toBeDefined();
|
|
65
|
+
if (holiday_1_5) {
|
|
66
|
+
expect(holiday_1_5.key).toBe('4_2025-05-01');
|
|
67
|
+
expect(holiday_1_5.date).toEqual(DateUtils.of(2025, 5, 1));
|
|
68
|
+
expect(holiday_1_5.holidayGroup.code).toEqual(4);
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
const holiday_2_5 = contract.getHolidayByDate(DateUtils.of(2025, 5, 2));
|
|
72
|
+
expect(holiday_2_5).toBeDefined();
|
|
73
|
+
if (holiday_2_5) {
|
|
74
|
+
expect(holiday_2_5.key).toBe('2_2025-05-02');
|
|
75
|
+
expect(holiday_2_5.date).toEqual(DateUtils.of(2025, 5, 2));
|
|
76
|
+
expect(holiday_2_5.holidayGroup.code).toEqual(2);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
const holiday = timeEvaluation.holiday;
|
|
81
|
+
expect(holiday).toBeDefined();
|
|
82
|
+
if (holiday) {
|
|
83
|
+
expect(holiday.key).toBe('4_2025-05-01');
|
|
84
|
+
expect(holiday.date).toEqual(DateUtils.of(2025, 5, 1));
|
|
85
|
+
expect(holiday.holidayGroup.code).toEqual(4);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Context } from "../../../data/context/context";
|
|
2
|
+
import { HourBank } from "../../../data/hourBank/hourBank";
|
|
3
|
+
import { HourBankBuilder } from "../../builder/hourBankBuilder";
|
|
4
|
+
|
|
5
|
+
describe("HourBank", () => {
|
|
6
|
+
it("deve criar uma instância padrão de HourBank", () => {
|
|
7
|
+
const hourBank = HourBankBuilder.default();
|
|
8
|
+
|
|
9
|
+
expect(hourBank).toBeInstanceOf(HourBank);
|
|
10
|
+
expect(hourBank.code).toBe(1); // Verifica o valor padrão
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it("deve criar uma instância de HourBank com parâmetros personalizados", () => {
|
|
14
|
+
const customCode = 42;
|
|
15
|
+
const hourBank = HourBankBuilder.withParams({ code: customCode });
|
|
16
|
+
|
|
17
|
+
expect(hourBank).toBeInstanceOf(HourBank);
|
|
18
|
+
expect(hourBank.code).toBe(customCode); // Verifica o valor personalizado
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("Deve criar uma instância de HourBank com parâmetros personalizados", () => {
|
|
22
|
+
const customCode = 42;
|
|
23
|
+
const hourBank = HourBankBuilder.withCode(customCode);
|
|
24
|
+
|
|
25
|
+
expect(hourBank).toBeInstanceOf(HourBank);
|
|
26
|
+
expect(hourBank.code).toBe(customCode); // Verifica o valor personalizado
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
it('hourBankAccount', () => {
|
|
31
|
+
|
|
32
|
+
let inputRule = '{"version":"1.0.0","input":{"batchId":"76aaab6c-f981-4034-b9a0-8b2b141e78e4","processType":"EVALUATE","startDate":"2025-06-19","endDate":"2025-06-19","contracts":[{"id":"943a66fb-3636-456f-b7ba-e3e1526e8892","holidaysKeys":[],"timeEvaluation":[{"date":"2025-06-19","workscheduleId":"dc3dd08e-f0b6-4569-8a5b-83e55b5b9ce3","workscheduleWorkshiftId":"dc3dd08e-f0b6-4569-8a5b-83e55b5b9ce3","workshiftId":"87db8a76-156c-4265-9989-39be06859135","timeEvaluationSituations":[{"situationId":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","situationCode":15,"numberOfHours":510}],"clockingEvents":[],"intervals":[{"clockingEventStart":"2025-06-19T08:00:00","clockingEventEnd":"2025-06-19T12:00:00","type":"ABSENCE","subType":"FULL_PART","situationCode":0,"situationReasonCode":0,"justifiedSituationCode":0,"justifiedDays":0,"positionWorkingPart":{"workingHours":1,"part":1},"isNightly":false,"isOvertimeAuthorized":false,"isTolerancePeriod":false,"inClockingEventTolerance":true},{"clockingEventStart":"2025-06-19T13:30:00","clockingEventEnd":"2025-06-19T18:00:00","type":"ABSENCE","subType":"FULL_PART","situationCode":0,"situationReasonCode":0,"justifiedSituationCode":0,"justifiedDays":0,"positionWorkingPart":{"workingHours":1,"part":2},"isNightly":false,"isOvertimeAuthorized":false,"isTolerancePeriod":false,"inClockingEventTolerance":true}],"situationDefinitionKey":"3_2025-01-01_null","estimatedHours":{"meal":[{"dailyHours":90,"nightlyHours":0}],"snack":[],"work":[{"dailyHours":240,"nightlyHours":0},{"dailyHours":270,"nightlyHours":0}]},"syndicateKey":"1","missingClockingEvent":true}],"employee":{"id":"943a66fb-3636-456f-b7ba-e3e1526e8892","code":1,"person":{"name":"Eric Blauerstein"},"hireDate":"2020-01-01","employmentRelationshipId":"bda638aa-a392-4900-a388-58dd80b2d751","employer":{"code":1},"jobPositionCode":"2","companyBranchCode":1,"workshiftCode":1,"workshiftGroupCode":1},"histories":{"jobPositionHistories":[{"startDate":"2025-04-10","jobPositionKey":"1_2"}],"companyBranchHistories":[{"startDate":"2020-01-01","companyBranchKey":"1_1"}],"employmentRelationshipHistories":[{"startDate":"2020-01-01","endDate":"2025-05-31","employmentRelationshipId":"9f051554-763f-4d7a-a688-2ce8922f83a8"},{"startDate":"2025-06-01","employmentRelationshipId":"bda638aa-a392-4900-a388-58dd80b2d751"}],"timeEvaluationHistories":[{"startDate":"2025-04-10","type":"NORMAL","situationDefinitionKey":["3_2025-01-01_null"]}],"workshiftHistories":[{"startDate":"2020-01-01","workshiftId":"87db8a76-156c-4265-9989-39be06859135","workshiftGroupsCode":1}],"leaveHistories":[{"startDate":"2025-06-04","endDate":"2025-06-08","startTime":0,"endTime":0,"situationId":"07a513ab-a523-492b-af98-c04884241014"},{"startDate":"2025-06-13","endDate":"2025-06-13","startTime":0,"endTime":0,"situationId":"21ddf37a-7388-488c-afe3-53ce9868dbb9"},{"startDate":"2025-06-15","endDate":"2025-06-16","startTime":0,"endTime":0,"situationId":"bee787b7-94ec-477f-b2fd-3403007e28fb"},{"startDate":"2025-06-18","endDate":"2025-06-18","startTime":480,"endTime":600,"situationId":"bee787b7-94ec-477f-b2fd-3403007e28fb"},{"startDate":"2025-06-18","endDate":"2025-06-18","startTime":900,"endTime":1080,"situationId":"bee787b7-94ec-477f-b2fd-3403007e28fb"},{"startDate":"2025-06-20","endDate":"2025-06-23","startTime":0,"endTime":0,"situationId":"bee787b7-94ec-477f-b2fd-3403007e28fb"}]},"schedules":{"bridges":[{"originDate":"2025-06-08","destinationDate":"2025-06-09"},{"originDate":"2025-06-09","destinationDate":"2025-06-10"}],"workscheduleChanges":[{"date":"2025-06-25","workscheduleId":"2ea56497-6df6-489d-94b5-3baa3ac166d5"},{"date":"2025-05-19","workscheduleId":"5e6678d0-e63a-4fca-852c-7f481293487a"}],"workshiftChanges":[{"startDate":"2025-05-02","endDate":"2025-05-03","workshiftId":"0672b0da-0406-4fbf-a4ac-9c2631c2b5cd","workshiftGroupsCode":1},{"startDate":"2025-05-20","endDate":"2025-05-21","workshiftId":"0672b0da-0406-4fbf-a4ac-9c2631c2b5cd","workshiftGroupsCode":7}]},"hourBankAccounts":[{"hourBank":{"code":1},"creationDate":"2025-04-01","extinctionDate":"2025-04-11"},{"hourBank":{"code":1},"creationDate":"2025-05-01"}]}],"database":{"situations":[{"id":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","code":1,"type":"WORKING","exception":false,"complementarySituationId":"1ff19942-ace7-45ea-b886-861e75471795","daytime":true},{"id":"d609b9e3-25f3-419e-be4a-63d7cffdb5c1","code":2,"type":"VACATION","exception":false,"complementarySituationId":"4313de66-ec62-4bbf-b469-fe87546fc5c3","daytime":true},{"id":"bee787b7-94ec-477f-b2fd-3403007e28fb","code":4,"type":"LABORACCIDENT","exception":false,"complementarySituationId":"4313de66-ec62-4bbf-b469-fe87546fc5c3","daytime":true},{"id":"21ddf37a-7388-488c-afe3-53ce9868dbb9","code":5,"type":"MILITARYSERVICE","exception":false,"complementarySituationId":"4313de66-ec62-4bbf-b469-fe87546fc5c3","daytime":true},{"id":"07a513ab-a523-492b-af98-c04884241014","code":10,"type":"PAIDLEAVE","exception":false,"complementarySituationId":"bb5e3c0e-642d-481d-9726-7985a2e559aa","daytime":true},{"id":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","code":15,"type":"ABSENCES","exception":true,"complementarySituationId":"61963c0b-213c-4fbc-9329-6afadc971b34","daytime":true},{"id":"77c72619-b2a8-4777-bdfb-ff63a0283400","code":16,"type":"OVERTIME","exception":true,"complementarySituationId":"ae0b0bc6-2178-4876-91a7-c468360070ec","daytime":true},{"id":"bb5e3c0e-642d-481d-9726-7985a2e559aa","code":60,"type":"PAIDLEAVE","exception":false,"complementarySituationId":"07a513ab-a523-492b-af98-c04884241014","daytime":false},{"id":"61963c0b-213c-4fbc-9329-6afadc971b34","code":65,"type":"ABSENCES","exception":true,"complementarySituationId":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","daytime":false},{"id":"ae0b0bc6-2178-4876-91a7-c468360070ec","code":66,"type":"OVERTIME","exception":true,"complementarySituationId":"77c72619-b2a8-4777-bdfb-ff63a0283400","daytime":false},{"id":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","code":101,"type":"ABSENCES","exception":true,"complementarySituationId":"71d9ba6f-8a49-4e46-8251-67b8626fbeeb","daytime":true},{"id":"71d9ba6f-8a49-4e46-8251-67b8626fbeeb","code":102,"type":"ABSENCES","exception":true,"complementarySituationId":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","daytime":false},{"id":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","code":103,"type":"ABSENCES","exception":true,"complementarySituationId":"f8e7a234-6d85-499b-836e-9f5b78884be7","daytime":true},{"id":"f8e7a234-6d85-499b-836e-9f5b78884be7","code":104,"type":"ABSENCES","exception":true,"complementarySituationId":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","daytime":false},{"id":"e6077a7c-645b-4bc6-8698-402c68467ce9","code":105,"type":"ABSENCES","exception":true,"complementarySituationId":"37d56ac4-8cd6-4a3d-b660-1c53890dca1f","daytime":true},{"id":"37d56ac4-8cd6-4a3d-b660-1c53890dca1f","code":106,"type":"ABSENCES","exception":true,"complementarySituationId":"e6077a7c-645b-4bc6-8698-402c68467ce9","daytime":false},{"id":"1ff19942-ace7-45ea-b886-861e75471795","code":501,"type":"WORKING","exception":false,"complementarySituationId":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","daytime":false},{"id":"ef6bd93e-53da-4b41-b532-d85006b9e607","code":502,"type":"OTHERS","exception":true,"complementarySituationId":"ef6bd93e-53da-4b41-b532-d85006b9e607","daytime":false},{"id":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","code":503,"type":"WORKING","exception":true,"complementarySituationId":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","daytime":true},{"id":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","code":504,"type":"ABSENCES","exception":true,"complementarySituationId":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","daytime":true},{"id":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","code":505,"type":"OVERTIME","exception":false,"complementarySituationId":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","daytime":true},{"id":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","code":506,"type":"OVERTIME","exception":false,"complementarySituationId":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","daytime":true},{"id":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","code":507,"type":"OVERTIME","exception":false,"complementarySituationId":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","daytime":true},{"id":"803645a7-5f43-49b1-bafa-70fa910733d6","code":508,"type":"OVERTIME","exception":false,"complementarySituationId":"803645a7-5f43-49b1-bafa-70fa910733d6","daytime":true},{"id":"60030488-fe09-423a-9b1f-248d366430b4","code":509,"type":"OVERTIME","exception":false,"complementarySituationId":"60030488-fe09-423a-9b1f-248d366430b4","daytime":true},{"id":"3f61cff5-18d7-4042-b44f-791a4c308f2c","code":510,"type":"OVERTIME","exception":false,"complementarySituationId":"3f61cff5-18d7-4042-b44f-791a4c308f2c","daytime":true},{"id":"b3d37da3-21bd-4902-9358-0bbc4721b327","code":511,"type":"OVERTIME","exception":false,"complementarySituationId":"b3d37da3-21bd-4902-9358-0bbc4721b327","daytime":true},{"id":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","code":512,"type":"OVERTIME","exception":false,"complementarySituationId":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","daytime":true},{"id":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","code":513,"type":"OVERTIME","exception":false,"complementarySituationId":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","daytime":true},{"id":"c705ea33-88b4-44dc-b755-fe2ae6fff151","code":514,"type":"OVERTIME","exception":false,"complementarySituationId":"c705ea33-88b4-44dc-b755-fe2ae6fff151","daytime":true},{"id":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","code":515,"type":"OVERTIME","exception":false,"complementarySituationId":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","daytime":true},{"id":"e5b79a9d-5093-4b68-aa0d-34cac5536053","code":516,"type":"OVERTIME","exception":false,"complementarySituationId":"e5b79a9d-5093-4b68-aa0d-34cac5536053","daytime":true},{"id":"5f728686-409a-44c8-8b7e-e848e598de60","code":517,"type":"OVERTIME","exception":false,"complementarySituationId":"5f728686-409a-44c8-8b7e-e848e598de60","daytime":true},{"id":"a5da8e1f-612c-4903-865a-de1b861ad98c","code":518,"type":"OVERTIME","exception":false,"complementarySituationId":"a5da8e1f-612c-4903-865a-de1b861ad98c","daytime":true},{"id":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","code":519,"type":"OVERTIME","exception":false,"complementarySituationId":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","daytime":true},{"id":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","code":520,"type":"OVERTIME","exception":false,"complementarySituationId":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","daytime":true},{"id":"94dec6d5-e769-4668-9b52-8896452b5e39","code":521,"type":"OVERTIME","exception":false,"complementarySituationId":"94dec6d5-e769-4668-9b52-8896452b5e39","daytime":true},{"id":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c","code":522,"type":"OVERTIME","exception":false,"complementarySituationId":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c","daytime":true},{"id":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","code":523,"type":"OVERTIME","exception":true,"complementarySituationId":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","daytime":false},{"id":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","code":524,"type":"OVERTIME","exception":false,"complementarySituationId":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","daytime":false},{"id":"4313de66-ec62-4bbf-b469-fe87546fc5c3","code":750,"type":"VACATION","exception":false,"complementarySituationId":"21ddf37a-7388-488c-afe3-53ce9868dbb9","daytime":false},{"id":"c5e72905-07fb-4baf-929f-847d96fe0a05","code":999,"type":"TIMEEVALUATIONSITUATION","exception":true,"complementarySituationId":"c5e72905-07fb-4baf-929f-847d96fe0a05","daytime":true}],"holidays":[],"timeEvaluationSituationDefinitions":[{"code":3,"startDate":"2025-01-01","workSituationId":"ceeacf87-0df3-4263-a8fa-d66d4bd3f4b0","nightShiftWorkPremiumId":"1ff19942-ace7-45ea-b886-861e75471795","invalidEventsSituationId":"c5e72905-07fb-4baf-929f-847d96fe0a05","vacationPaidLeaveSituationId":"d609b9e3-25f3-419e-be4a-63d7cffdb5c1","dailyRestViolationSituationId":"ef6bd93e-53da-4b41-b532-d85006b9e607","workBreakViolationSituationId":"ebaf5a44-bed7-4646-96fa-7582b496ab0a","absenceSituationId":"814b36c4-aabf-4639-b0d7-884ba7cf17bb","tardinessSituationId":"ccb72e89-c9d6-4ea6-960d-ed99e573d77f","intermediateLeaveSituationId":"e6077a7c-645b-4bc6-8698-402c68467ce9","earlyLeaveSituationId":"eab898c7-87f8-4b6a-b67e-f62bba5c1c14","absenceSituationOnRelayScheduleHolidaysId":"65d5b620-5889-4819-b7d3-c17ebffd1ac0","percentageNextDay":false,"normalOvertimeSeparationLimit":90,"separateOvertimeAfterConvertingNightShiftHours":false,"unauthorizedOvertimeId":"77c72619-b2a8-4777-bdfb-ff63a0283400","overtimeBeforeId":"b809cc96-bcdb-4ca8-b2be-f71a2d014c30","overtimeEntryId":"3d6f1c23-bd6d-4d97-a6f6-0bce25703a1b","overtimeDuringMealId":"60030488-fe09-423a-9b1f-248d366430b4","leaveOvertimeId":"b3d37da3-21bd-4902-9358-0bbc4721b327","overtimeAfterId":"48f5bc52-4fdf-4479-9a4c-7c2d70d89a2b","overtimeSeparationLimitDuringRest":240,"overtimeDuringRestId":"c3df3a50-6ac4-4fea-b166-66ffd90a89c5","overtimeSeparationLimitDuringCompensatedDays":240,"overtimeOnCompensatedDaysId":"5f728686-409a-44c8-8b7e-e848e598de60","overtimeSeparationLimitDuringHoliday":240,"overtimeDuringHolidayId":"90b4e18c-80fe-4ccb-86eb-e59f9168115c","overtimeSeparationLimitDuringDayOff":240,"overtimeDuringDayOffId":"94dec6d5-e769-4668-9b52-8896452b5e39","overtimeSituationOnRelayScheduleHolidaysId":"3a01f30a-c58f-4a7d-af4e-5f6c08951e9d","nightShiftOvertimePremiumSituationId":"ae7950c4-2b50-4c95-93ea-e6e8e924e776","overtimeSeparationBeforeId":"804a6ecc-df01-42b9-ad37-ed68de3a8a0d","overtimeSeparationEntryId":"803645a7-5f43-49b1-bafa-70fa910733d6","overtimeSeparationDuringMealId":"3f61cff5-18d7-4042-b44f-791a4c308f2c","overtimeSeparationLeaveId":"1d62f6c8-b128-4c8d-a63b-e9e056a7b07e","overtimeSeparationAfterId":"c705ea33-88b4-44dc-b755-fe2ae6fff151","overtimeSeparationDuringRestId":"e5b79a9d-5093-4b68-aa0d-34cac5536053","overtimeSeparationDuringCompensatedDaysId":"a5da8e1f-612c-4903-865a-de1b861ad98c","overtimeSeparationDuringHolidayId":"97fa2f0e-bac1-4cbe-b1a3-83c43a74072b","overtimeSeparationDuringDayOffId":"18d6ae61-9b3e-43ce-8fb3-82cf9d05a45c"}],"jobPositions":[{"key":"1_2","code":2,"structureCode":1}],"workschedules":[{"id":"2ea56497-6df6-489d-94b5-3baa3ac166d5","code":6,"workload":510,"type":"FLEXIBLE_AT_INTERVALS","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":470,"toleranceAfter":485,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"FLEXIBLE","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":3,"clockingEvent":810,"toleranceBefore":810,"toleranceAfter":810,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"FLEXIBLE","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":1075,"toleranceAfter":1090,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"dc3dd08e-f0b6-4569-8a5b-83e55b5b9ce3","code":1,"workload":510,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":470,"toleranceAfter":485,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":715,"toleranceAfter":730,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":3,"clockingEvent":810,"toleranceBefore":800,"toleranceAfter":815,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":1075,"toleranceAfter":1090,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"5e6678d0-e63a-4fca-852c-7f481293487a","code":344,"workload":540,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":480,"toleranceAfter":480,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":3,"clockingEvent":780,"toleranceBefore":780,"toleranceAfter":780,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":1080,"toleranceAfter":1080,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}}],"workshifts":[{"id":"87db8a76-156c-4265-9989-39be06859135","code":1,"type":"PERMANENT","rotationWorkShift":true,"extensionNightHours":true,"dsrMinutes":440,"weekMinutes":2640,"monthMinutes":13200,"timeShiftType":"GENERAL","workshiftGroups":[{"code":1,"baseDate":"1998-12-28"},{"code":2,"baseDate":"2001-01-20"},{"code":8,"baseDate":"1901-01-07"}],"workshiftDetails":[{"holidayGroup":{"code":0},"holidayType":"BRANCH","startDate":"2022-10-01"}]},{"id":"0672b0da-0406-4fbf-a4ac-9c2631c2b5cd","code":9,"type":"PERMANENT","rotationWorkShift":false,"extensionNightHours":true,"dsrMinutes":440,"weekMinutes":2640,"monthMinutes":13200,"timeShiftType":"THIRDSHIFT","workshiftGroups":[{"code":1,"baseDate":"2001-01-01"},{"code":2,"baseDate":"2001-01-02"},{"code":3,"baseDate":"2001-01-03"},{"code":4,"baseDate":"2001-01-04"},{"code":5,"baseDate":"2001-01-05"},{"code":6,"baseDate":"2001-01-06"},{"code":7,"baseDate":"2001-01-07"},{"code":8,"baseDate":"2001-01-08"}],"workshiftDetails":[{"holidayGroup":{"code":2},"holidayType":"OWN","startDate":"2022-10-01"}]}],"companyBranches":[{"key":"1_1","code":1}],"syndicates":[{"key":"1","code":1,"nightStartHour":1320,"nightEndHour":300,"minimumInterval4to6Hours":0,"minimumInterval6Hours":0,"minimumWorkDuration6Hours":361}],"employmentRelationships":[{"id":"bda638aa-a392-4900-a388-58dd80b2d751","code":"10.10.10","contractType":"EMPLOYEE"},{"id":"9f051554-763f-4d7a-a688-2ce8922f83a8","code":"2.2.2","contractType":"APRENTICE"}]},"currentUser":{"userName":"admin@matiello.com.br"}}}';
|
|
33
|
+
|
|
34
|
+
let context = new Context({ body: inputRule });
|
|
35
|
+
|
|
36
|
+
expect(context.contracts[0].hourBankAccounts[0].hourBank.code).toBe(1);
|
|
37
|
+
expect(context.contracts[0].hourBankAccounts[0].creationDate).toEqual(new Date("2025-04-01"));
|
|
38
|
+
expect(context.contracts[0].hourBankAccounts[0].extinctionDate).toEqual(new Date("2025-04-11"));
|
|
39
|
+
|
|
40
|
+
expect(context.contracts[0].hourBankAccounts[1].hourBank.code).toBe(1);
|
|
41
|
+
expect(context.contracts[0].hourBankAccounts[1].creationDate).toEqual(new Date("2025-05-01"));
|
|
42
|
+
expect(context.contracts[0].hourBankAccounts[1].extinctionDate).toBeNull()
|
|
43
|
+
|
|
44
|
+
expect(context.contracts[0].timeEvaluation[0].hourBankAccounts[0].creationDate).toEqual(new Date("2025-05-01"));
|
|
45
|
+
expect(context.contracts[0].timeEvaluation[0].hourBankAccounts[0].extinctionDate).toBeNull();
|
|
46
|
+
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { HourBankAccount } from "../../../data/hourBank/hourBankAccount";
|
|
2
|
+
import { HourBank } from "../../../data/hourBank/hourBank";
|
|
3
|
+
import { HourBankAccountBuilder } from "../../builder/hourBankAccountBuilder";
|
|
4
|
+
|
|
5
|
+
describe("HourBankAccount", () => {
|
|
6
|
+
it("deve criar uma instância padrão de HourBankAccount", () => {
|
|
7
|
+
const hourBankAccount = HourBankAccountBuilder.builder().build();
|
|
8
|
+
|
|
9
|
+
expect(hourBankAccount).toBeInstanceOf(HourBankAccount);
|
|
10
|
+
expect(hourBankAccount.hourBank.code).toBe(1); // Verifica o código padrão do HourBank
|
|
11
|
+
expect(hourBankAccount.creationDate).toEqual(new Date("2025-01-01")); // Verifica a data padrão
|
|
12
|
+
expect(hourBankAccount.extinctionDate).toBeNull(); // Verifica o valor padrão de extinctionDate
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it("deve criar uma instância de HourBankAccount com parâmetros personalizados", () => {
|
|
16
|
+
const hourBankCode = 42;
|
|
17
|
+
const customHourBank = new HourBank({ code: hourBankCode });
|
|
18
|
+
const customCreationDate = new Date("2025-02-01");
|
|
19
|
+
const customExtinctionDate = new Date("2025-12-31");
|
|
20
|
+
|
|
21
|
+
const hourBankAccount = HourBankAccountBuilder.builder().withParams({
|
|
22
|
+
hourBank: customHourBank,
|
|
23
|
+
creationDate: customCreationDate,
|
|
24
|
+
extinctionDate: customExtinctionDate,
|
|
25
|
+
}).build();
|
|
26
|
+
|
|
27
|
+
expect(hourBankAccount).toBeInstanceOf(HourBankAccount);
|
|
28
|
+
expect(hourBankAccount.hourBank.code).toBe(hourBankCode); // Verifica o código personalizado
|
|
29
|
+
expect(hourBankAccount.creationDate).toEqual(customCreationDate); // Verifica a data personalizada
|
|
30
|
+
expect(hourBankAccount.extinctionDate).toEqual(customExtinctionDate); // Verifica a data de extinção personalizada
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BridgeBuilder } from "../../builder/bridgeBuilder.builder";
|
|
2
|
+
|
|
3
|
+
describe("Bridge", () => {
|
|
4
|
+
it("deve criar uma instância de Bridge com valores válidos", () => {
|
|
5
|
+
const originDate = new Date("2025-01-01");
|
|
6
|
+
const destinationDate = new Date("2025-01-02");
|
|
7
|
+
const bridge = BridgeBuilder.builder().withOriginDate(originDate).withDestinationDate(destinationDate).build();
|
|
8
|
+
|
|
9
|
+
expect(bridge.originDate).toEqual(originDate);
|
|
10
|
+
expect(bridge.destinationDate).toEqual(destinationDate);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { CompensationBuilder } from "../../builder/compensation.builder";
|
|
2
|
+
import { Context } from "../../../data/context";
|
|
3
|
+
import { CompensationType, PeriodType } from '../../../data/schedules/compensation';
|
|
4
|
+
|
|
5
|
+
describe('Compensation', () => {
|
|
6
|
+
it('should create a compensation with default values', () => {
|
|
7
|
+
const compensation = CompensationBuilder.default().build();
|
|
8
|
+
|
|
9
|
+
expect(compensation).toBeDefined();
|
|
10
|
+
expect(compensation.startDate).toEqual(new Date("2023-01-01"));
|
|
11
|
+
expect(compensation.endDate).toEqual(new Date("2023-01-31"));
|
|
12
|
+
expect(compensation.intervalStart).toBe(480); // 08:00
|
|
13
|
+
expect(compensation.intervalEnd).toBe(1020); // 17:00
|
|
14
|
+
expect(compensation.compensationType).toBe("OVERTIME");
|
|
15
|
+
expect(compensation.periodType).toBe("DAILY");
|
|
16
|
+
expect(compensation.numberOfHours).toBe(8);
|
|
17
|
+
expect(compensation.situationId).toBe("situation-123");
|
|
18
|
+
expect(compensation.workscheduleId).toBe("workschedule-456");
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('should create a compensation with custom values', () => {
|
|
22
|
+
const compensation = CompensationBuilder.default()
|
|
23
|
+
.withParams({
|
|
24
|
+
intervalStart: 540, // 09:00
|
|
25
|
+
intervalEnd: 1080, // 18:00
|
|
26
|
+
numberOfHours: 10
|
|
27
|
+
}).build();
|
|
28
|
+
|
|
29
|
+
expect(compensation.intervalStart).toBe(540);
|
|
30
|
+
expect(compensation.intervalEnd).toBe(1080);
|
|
31
|
+
expect(compensation.numberOfHours).toBe(10);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('should throw error if intervalStart is out of range', () => {
|
|
35
|
+
expect(() => {
|
|
36
|
+
CompensationBuilder.default()
|
|
37
|
+
.withParams({intervalStart: 1440}).build();
|
|
38
|
+
}).toThrow("compensation.intervalStart must be between 0 and 1439");
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('should throw error if intervalStart is out of range', () => {
|
|
42
|
+
expect(() => {
|
|
43
|
+
CompensationBuilder.default().
|
|
44
|
+
withParams({ intervalStart: 1440 }).build();
|
|
45
|
+
}).toThrow("compensation.intervalStart must be between 0 and 1439");
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('should throw error if intervalEnd is out of range', () => {
|
|
49
|
+
expect(() => {
|
|
50
|
+
CompensationBuilder.default()
|
|
51
|
+
.withParams({ intervalEnd: -1 }).build();
|
|
52
|
+
}).toThrow("compensation.intervalEnd must be between 0 and 1439");
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('inputJson should be valid', () => {
|
|
56
|
+
let inputRule = '{"version":"1.0.0","input":{"batchId":"33d29996-372d-4426-85a5-5f5c25689f12","processType":"EVALUATE","startDate":"2025-06-30","endDate":"2025-06-30","contracts":[{"id":"92f38c8c-cdd3-461b-ad04-43711c48956b","holidaysKeys":[],"timeEvaluation":[{"date":"2025-06-30","workscheduleId":"c52fb732-34ee-41d5-8f66-42e8700e01a3","workscheduleWorkshiftId":"c52fb732-34ee-41d5-8f66-42e8700e01a3","workshiftId":"47971e5f-3d1a-4494-8cf6-328c7dfa5394","timeEvaluationSituations":[],"clockingEvents":[],"intervals":[],"situationDefinitionKey":"1_2022-08-01_null","estimatedHours":{"meal":[],"snack":[],"work":[]},"syndicateKey":"1","missingClockingEvent":false}],"employee":{"id":"92f38c8c-cdd3-461b-ad04-43711c48956b","code":2,"person":{"name":"Franky"},"hireDate":"2022-01-01","employmentRelationshipId":"775ee7d1-5d7f-4a1b-b50b-b659a66014b2","employer":{"code":1},"jobPositionCode":"1","companyBranchCode":1,"workshiftCode":1,"workshiftGroupCode":4},"histories":{"jobPositionHistories":[{"startDate":"2025-01-01","jobPositionKey":"1_1"}],"companyBranchHistories":[{"startDate":"2022-08-08","companyBranchKey":"1_1"}],"employmentRelationshipHistories":[{"startDate":"2022-08-08","employmentRelationshipId":"775ee7d1-5d7f-4a1b-b50b-b659a66014b2"}],"timeEvaluationHistories":[{"startDate":"2025-03-15","type":"NORMAL"}],"workshiftHistories":[{"startDate":"2024-05-30","workshiftId":"47971e5f-3d1a-4494-8cf6-328c7dfa5394","workshiftGroupsCode":4}],"leaveHistories":[]},"schedules":{"bridges":[],"workscheduleChanges":[{"date":"2024-02-17","workscheduleId":"aa3cd88e-f8b9-443e-9b80-41333ea0ac8f"},{"date":"2024-02-13","workscheduleId":"45147dc7-6c80-4fbf-ba8b-c1f0da19fb07"},{"date":"2023-11-22","workscheduleId":"9850ad40-0d5f-495f-85ea-843f11b3b427"}],"workshiftChanges":[{"startDate":"2025-04-30","endDate":"2025-05-01","workshiftId":"a84e3094-fec7-4a1a-8e58-108f2737e227","workshiftGroupsCode":1}],"compensations":[{"startDate":"2023-06-10","endDate":"2023-06-10","intervalStart":0,"intervalEnd":0,"compensationType":"OVERTIME_FOR_COMPENSATION","periodType":"ANY_PART_OF_WORKDAY","numberOfHours":120,"situationId":"077f06c5-8826-4af6-83da-23b7e6294d7a"},{"startDate":"2024-01-21","endDate":"2024-01-22","intervalStart":0,"intervalEnd":0,"compensationType":"ABSENCE_FOR_COMPENSATION","periodType":"ANY_PART_OF_WORKDAY","numberOfHours":60,"situationId":"077f06c5-8826-4af6-83da-23b7e6294d7a"},{"startDate":"2024-01-22","endDate":"2024-01-22","intervalStart":0,"intervalEnd":0,"compensationType":"OVERTIME_FOR_COMPENSATION","periodType":"ANY_PART_OF_WORKDAY","numberOfHours":120,"situationId":"000554ae-2bdb-490e-a08a-f6602de49deb"},{"startDate":"2024-02-02","endDate":"2024-02-02","intervalStart":0,"intervalEnd":0,"compensationType":"OVERTIME_FOR_COMPENSATION","periodType":"ANY_PART_OF_WORKDAY","numberOfHours":120,"situationId":"209c328d-3fe8-446a-b690-846d75ef5ed5"},{"startDate":"2024-02-11","endDate":"2024-02-11","intervalStart":0,"intervalEnd":0,"compensationType":"OVERTIME_FOR_COMPENSATION","periodType":"ANY_PART_OF_WORKDAY","numberOfHours":120,"situationId":"209c328d-3fe8-446a-b690-846d75ef5ed5"},{"startDate":"2024-02-15","endDate":"2024-02-15","intervalStart":0,"intervalEnd":0,"compensationType":"OVERTIME_FOR_COMPENSATION","periodType":"ANY_PART_OF_WORKDAY","numberOfHours":60,"situationId":"209c328d-3fe8-446a-b690-846d75ef5ed5"},{"startDate":"2024-03-22","endDate":"2024-03-22","intervalStart":688,"intervalEnd":688,"compensationType":"RELEASE_HOUR_INTERVAL","numberOfHours":0,"situationId":"209c328d-3fe8-446a-b690-846d75ef5ed5"},{"startDate":"2024-09-03","endDate":"2024-09-05","intervalStart":0,"intervalEnd":0,"compensationType":"OVERTIME_FOR_COMPENSATION","periodType":"START_AND_END_OF_WORKDAY","numberOfHours":720,"situationId":"209c328d-3fe8-446a-b690-846d75ef5ed5"},{"startDate":"2025-04-11","endDate":"2025-04-18","intervalStart":0,"intervalEnd":0,"compensationType":"OVERTIME_FOR_COMPENSATION","periodType":"ANY_PART_OF_WORKDAY","numberOfHours":480,"situationId":"077f06c5-8826-4af6-83da-23b7e6294d7a"},{"startDate":"2025-06-30","endDate":"2025-06-30","intervalStart":420,"intervalEnd":780,"compensationType":"INTERVAL_OUTSIDE_WORKDAY","numberOfHours":0,"situationId":"077f06c5-8826-4af6-83da-23b7e6294d7a","workscheduleId":"14a8fd0f-af23-4f16-98b7-de0ebe030349"}]},"hourBankAccounts":[{"hourBank":{"code":5},"creationDate":"2024-01-01","extinctionDate":"2024-04-30"},{"hourBank":{"code":1},"creationDate":"2024-10-24"},{"hourBank":{"code":8},"creationDate":"2024-07-01"}]}],"database":{"situations":[{"id":"209c328d-3fe8-446a-b690-846d75ef5ed5","code":1,"type":"WORKING","exception":false,"complementarySituationId":"209c328d-3fe8-446a-b690-846d75ef5ed5","daytime":true},{"id":"6774bc30-d9db-4d52-ade2-9d3e5059e0ab","code":3,"type":"OVERTIME","exception":true,"complementarySituationId":"acaf9c07-9521-422b-9325-1af1f36fd589","daytime":false},{"id":"000554ae-2bdb-490e-a08a-f6602de49deb","code":4,"type":"COLLECTIVEVACATION","exception":true,"complementarySituationId":"000554ae-2bdb-490e-a08a-f6602de49deb","daytime":false},{"id":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","code":5,"type":"ABSENCES","exception":true,"complementarySituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","daytime":true},{"id":"a6e0401f-42f2-4dc8-ad48-c48682029689","code":6,"type":"WORKING","exception":true,"complementarySituationId":"a6e0401f-42f2-4dc8-ad48-c48682029689","daytime":false},{"id":"acaf9c07-9521-422b-9325-1af1f36fd589","code":8,"type":"OVERTIME","exception":true,"complementarySituationId":"6774bc30-d9db-4d52-ade2-9d3e5059e0ab","daytime":true},{"id":"489eab83-47ed-42ee-ab76-a1702bd13e79","code":9,"type":"VACATION","exception":false,"complementarySituationId":"489eab83-47ed-42ee-ab76-a1702bd13e79","daytime":true},{"id":"4be78b2c-cae5-46f8-93ae-850a1c85013a","code":11,"type":"WORKING","exception":true,"complementarySituationId":"4be78b2c-cae5-46f8-93ae-850a1c85013a","daytime":true},{"id":"848ec42d-b2df-4c4d-94f4-151f381e4a54","code":12,"type":"WORKING","exception":false,"complementarySituationId":"848ec42d-b2df-4c4d-94f4-151f381e4a54","daytime":true},{"id":"8cb7c936-a263-4845-979e-9c69d663b4a2","code":15,"type":"WORKING","exception":false,"complementarySituationId":"e63bd904-4cc8-4bc0-9e2d-b087f6fc0f81","daytime":true},{"id":"e63bd904-4cc8-4bc0-9e2d-b087f6fc0f81","code":16,"type":"WORKING","exception":false,"complementarySituationId":"8cb7c936-a263-4845-979e-9c69d663b4a2","daytime":false},{"id":"077f06c5-8826-4af6-83da-23b7e6294d7a","code":19,"type":"WORKING","exception":true,"complementarySituationId":"077f06c5-8826-4af6-83da-23b7e6294d7a","daytime":true},{"id":"e75ba021-148e-4f36-bb3e-13e024cc1908","code":20,"type":"WORKING","exception":true,"complementarySituationId":"2a2fae76-cf7e-498b-9107-0166f6e906ef","daytime":true},{"id":"2a2fae76-cf7e-498b-9107-0166f6e906ef","code":21,"type":"WORKING","exception":true,"complementarySituationId":"e75ba021-148e-4f36-bb3e-13e024cc1908","daytime":false},{"id":"950ba6cd-528d-42cc-aa07-9f15561735f9","code":999,"type":"TIMEEVALUATIONSITUATION","exception":true,"complementarySituationId":"950ba6cd-528d-42cc-aa07-9f15561735f9","daytime":true}],"holidays":[],"timeEvaluationSituationDefinitions":[{"code":1,"startDate":"2022-08-01","workSituationId":"209c328d-3fe8-446a-b690-846d75ef5ed5","nightShiftWorkPremiumId":"e75ba021-148e-4f36-bb3e-13e024cc1908","invalidEventsSituationId":"950ba6cd-528d-42cc-aa07-9f15561735f9","vacationPaidLeaveSituationId":"489eab83-47ed-42ee-ab76-a1702bd13e79","dailyRestViolationSituationId":"848ec42d-b2df-4c4d-94f4-151f381e4a54","workBreakViolationSituationId":"4be78b2c-cae5-46f8-93ae-850a1c85013a","absenceSituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","tardinessSituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","intermediateLeaveSituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","earlyLeaveSituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","absenceSituationOnRelayScheduleHolidaysId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","percentageNextDay":false,"normalOvertimeSeparationLimit":10,"separateOvertimeAfterConvertingNightShiftHours":false,"unauthorizedOvertimeId":"acaf9c07-9521-422b-9325-1af1f36fd589","overtimeBeforeId":"acaf9c07-9521-422b-9325-1af1f36fd589","overtimeEntryId":"acaf9c07-9521-422b-9325-1af1f36fd589","overtimeDuringMealId":"acaf9c07-9521-422b-9325-1af1f36fd589","leaveOvertimeId":"acaf9c07-9521-422b-9325-1af1f36fd589","overtimeAfterId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationLimitDuringRest":10,"overtimeDuringRestId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationLimitDuringCompensatedDays":10,"overtimeOnCompensatedDaysId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationLimitDuringHoliday":10,"overtimeDuringHolidayId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationLimitDuringDayOff":10,"overtimeDuringDayOffId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSituationOnRelayScheduleHolidaysId":"acaf9c07-9521-422b-9325-1af1f36fd589","nightShiftOvertimePremiumSituationId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationBeforeId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationEntryId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringMealId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationLeaveId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationAfterId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringRestId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringCompensatedDaysId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringHolidayId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringDayOffId":"8cb7c936-a263-4845-979e-9c69d663b4a2"}],"jobPositions":[{"key":"1_1","code":1,"structureCode":1}],"workschedules":[{"id":"9850ad40-0d5f-495f-85ea-843f11b3b427","code":7,"workload":480,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":480,"toleranceAfter":480,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":3,"clockingEvent":780,"toleranceBefore":780,"toleranceAfter":780,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":4,"clockingEvent":1020,"toleranceBefore":1020,"toleranceAfter":1020,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"14a8fd0f-af23-4f16-98b7-de0ebe030349","code":16,"workload":0,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"c52fb732-34ee-41d5-8f66-42e8700e01a3","code":10,"workload":0,"type":"RIGID","definitionType":"DSR","clockingRegisters":[],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"aa3cd88e-f8b9-443e-9b80-41333ea0ac8f","code":1973,"workload":510,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":470,"toleranceAfter":480,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":3,"clockingEvent":810,"toleranceBefore":810,"toleranceAfter":810,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":1080,"toleranceAfter":1080,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"45147dc7-6c80-4fbf-ba8b-c1f0da19fb07","code":1972,"workload":510,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":470,"toleranceAfter":480,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":3,"clockingEvent":810,"toleranceBefore":810,"toleranceAfter":810,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":1080,"toleranceAfter":1080,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}}],"workshifts":[{"id":"a84e3094-fec7-4a1a-8e58-108f2737e227","code":2,"type":"PERMANENT","rotationWorkShift":false,"extensionNightHours":false,"dsrMinutes":220,"weekMinutes":1320,"monthMinutes":6600,"timeShiftType":"FIRSTSHIFT","workshiftGroups":[{"code":1,"baseDate":"2022-08-01"},{"code":2,"baseDate":"2022-09-12"}],"workshiftDetails":[{"holidayGroup":{"code":0},"holidayType":"NONE","startDate":"2022-08-01"}]},{"id":"47971e5f-3d1a-4494-8cf6-328c7dfa5394","code":1,"type":"PERMANENT","rotationWorkShift":true,"extensionNightHours":true,"dsrMinutes":440,"weekMinutes":2640,"monthMinutes":13200,"timeShiftType":"GENERAL","workshiftGroups":[{"code":1,"baseDate":"2022-08-01"},{"code":2,"baseDate":"2022-08-08"},{"code":3,"baseDate":"2022-08-15"},{"code":4,"baseDate":"1901-01-08"},{"code":4,"baseDate":"2022-08-22"},{"code":5,"baseDate":"2023-03-22"},{"code":5,"baseDate":"2022-08-29"},{"code":6,"baseDate":"2022-09-05"}],"workshiftDetails":[{"holidayGroup":{"code":2},"holidayType":"OWN","startDate":"2022-08-12"}]}],"companyBranches":[{"key":"1_1","code":1}],"syndicates":[{"key":"1","code":1,"nightStartHour":1320,"nightEndHour":300,"minimumInterval4to6Hours":30,"minimumInterval6Hours":90,"minimumWorkDuration6Hours":361}],"employmentRelationships":[{"id":"775ee7d1-5d7f-4a1b-b50b-b659a66014b2","code":"1","contractType":"EMPLOYEE"}]},"currentUser":{"userName":"admin@allanalves.com.br"}}}';
|
|
57
|
+
|
|
58
|
+
const context = new Context({ body: inputRule });
|
|
59
|
+
const contracts = context.contracts[0];
|
|
60
|
+
const timeEvaluation = contracts.timeEvaluation[0];
|
|
61
|
+
|
|
62
|
+
const overtimeAuthorizationsInContract = contracts?.schedules?.compensations || [];
|
|
63
|
+
const overtimeAuthorizationsInTimeEvaluation = timeEvaluation.compensations;
|
|
64
|
+
|
|
65
|
+
expect(overtimeAuthorizationsInContract.length).toBe(10);
|
|
66
|
+
expect(overtimeAuthorizationsInTimeEvaluation.length).toBe(1);
|
|
67
|
+
|
|
68
|
+
expect(overtimeAuthorizationsInContract[0].startDate).toEqual(new Date("2023-06-10"));
|
|
69
|
+
expect(overtimeAuthorizationsInContract[0].endDate).toEqual(new Date("2023-06-10"));
|
|
70
|
+
expect(overtimeAuthorizationsInContract[0].intervalStart).toBe(0);
|
|
71
|
+
expect(overtimeAuthorizationsInContract[0].intervalEnd).toBe(0);
|
|
72
|
+
expect(overtimeAuthorizationsInContract[0].compensationType).toBe(CompensationType.OVERTIME_FOR_COMPENSATION);
|
|
73
|
+
expect(overtimeAuthorizationsInContract[0].periodType).toBe(PeriodType.ANY_PART_OF_WORKDAY);
|
|
74
|
+
expect(overtimeAuthorizationsInContract[0].numberOfHours).toBe(120);
|
|
75
|
+
expect(overtimeAuthorizationsInContract[0].situationId).toBe("077f06c5-8826-4af6-83da-23b7e6294d7a");
|
|
76
|
+
expect(overtimeAuthorizationsInContract[0].workscheduleId).toBeUndefined();
|
|
77
|
+
|
|
78
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].startDate).toEqual(new Date("2025-06-30"));
|
|
79
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].endDate).toEqual(new Date("2025-06-30"));
|
|
80
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].intervalStart).toBe(420); // 07:00
|
|
81
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].intervalEnd).toBe(780); // 13:00
|
|
82
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].compensationType).toBe(CompensationType.INTERVAL_OUTSIDE_WORKDAY);
|
|
83
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].periodType).toBe(PeriodType.ANY_PART_OF_WORKDAY);
|
|
84
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].numberOfHours).toBe(0);
|
|
85
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].situationId).toBe("077f06c5-8826-4af6-83da-23b7e6294d7a");
|
|
86
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].workscheduleId).toBe("14a8fd0f-af23-4f16-98b7-de0ebe030349");
|
|
87
|
+
|
|
88
|
+
});
|
|
89
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { OvertimeAuthorizationBuilder } from "../../builder/overtimeAuthorization.builder";
|
|
2
|
+
import { Context } from "../../../data/context/context";
|
|
3
|
+
|
|
4
|
+
describe("OvertimeAuthorization", () => {
|
|
5
|
+
it("deve criar uma instância de Bridge com valores válidos", () => {
|
|
6
|
+
const startDate = new Date("2023-01-01");
|
|
7
|
+
const endDate = new Date("2023-01-02");
|
|
8
|
+
const startTime = 9;
|
|
9
|
+
const endTime = 17;
|
|
10
|
+
|
|
11
|
+
const overtimeAuthorization = OvertimeAuthorizationBuilder.builder()
|
|
12
|
+
.withStartDate(startDate)
|
|
13
|
+
.withEndDate(endDate)
|
|
14
|
+
.withStartTime(startTime)
|
|
15
|
+
.withEndTime(endTime)
|
|
16
|
+
.build();
|
|
17
|
+
|
|
18
|
+
expect(overtimeAuthorization).toBeDefined();
|
|
19
|
+
expect(overtimeAuthorization.startDate).toEqual(startDate);
|
|
20
|
+
expect(overtimeAuthorization.endDate).toEqual(endDate);
|
|
21
|
+
expect(overtimeAuthorization.startTime).toEqual(startTime);
|
|
22
|
+
expect(overtimeAuthorization.endTime).toEqual(endTime);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("testJson", () => {
|
|
26
|
+
let inputRule = '{"version":"1.0.0","input":{"batchId":"947b80d0-4058-413f-9836-b88e0486ca15","processType":"EVALUATE","startDate":"2025-04-22","endDate":"2025-04-22","contracts":[{"id":"92f38c8c-cdd3-461b-ad04-43711c48956b","holidaysKeys":[],"timeEvaluation":[{"date":"2025-04-22","workscheduleId":"e7875638-42b4-479d-a825-10fa3b13fbae","workscheduleWorkshiftId":"e7875638-42b4-479d-a825-10fa3b13fbae","workshiftId":"47971e5f-3d1a-4494-8cf6-328c7dfa5394","timeEvaluationSituations":[],"clockingEvents":[{"clockingEventDate":"2025-04-22","clockingEventTime":429,"functionCode":0,"originType":"TYPED","useType":"CLOCKING"},{"clockingEventDate":"2025-04-22","clockingEventTime":717,"functionCode":0,"originType":"TYPED","useType":"CLOCKING"},{"clockingEventDate":"2025-04-22","clockingEventTime":812,"functionCode":0,"originType":"TYPED","useType":"CLOCKING"},{"clockingEventDate":"2025-04-22","clockingEventTime":1200,"functionCode":0,"originType":"TYPED","useType":"CLOCKING"}],"intervals":[],"situationDefinitionKey":"1_2022-08-01_null","estimatedHours":{"meal":[{"dailyHours":90,"nightlyHours":0}],"snack":[{"dailyHours":30,"nightlyHours":0},{"dailyHours":15,"nightlyHours":0}],"work":[{"dailyHours":60,"nightlyHours":0},{"dailyHours":150,"nightlyHours":0},{"dailyHours":150,"nightlyHours":0},{"dailyHours":105,"nightlyHours":0}]},"syndicateKey":"1","missingClockingEvent":false}],"employee":{"id":"92f38c8c-cdd3-461b-ad04-43711c48956b","code":2,"person":{"name":"Franky"},"hireDate":"2022-01-01","employmentRelationshipId":"775ee7d1-5d7f-4a1b-b50b-b659a66014b2","employer":{"code":1},"jobPositionCode":"1","companyBranchCode":1,"workshiftCode":1,"workshiftGroupCode":4},"histories":{"jobPositionHistories":[{"startDate":"2025-01-01","jobPositionKey":"1_1"}],"companyBranchHistories":[{"startDate":"2022-08-08","companyBranchKey":"1_1"}],"employmentRelationshipHistories":[{"startDate":"2022-08-08","employmentRelationshipId":"775ee7d1-5d7f-4a1b-b50b-b659a66014b2"}],"timeEvaluationHistories":[{"startDate":"2025-03-15","type":"NORMAL"}],"workshiftHistories":[{"startDate":"2024-05-30","workshiftId":"47971e5f-3d1a-4494-8cf6-328c7dfa5394","workshiftGroupsCode":4}],"leaveHistories":[]},"schedules":{"bridges":[{"originDate":"2025-04-25","destinationDate":"2025-04-26"}],"workscheduleChanges":[{"date":"2024-02-17","workscheduleId":"aa3cd88e-f8b9-443e-9b80-41333ea0ac8f"},{"date":"2024-02-13","workscheduleId":"45147dc7-6c80-4fbf-ba8b-c1f0da19fb07"},{"date":"2023-11-22","workscheduleId":"9850ad40-0d5f-495f-85ea-843f11b3b427"}],"workshiftChanges":[],"overtimeAuthorizations":[{"startDate":"2025-04-22","endDate":"2025-04-25","startTime":480,"endTime":1320},{"startDate":"2025-04-26","endDate":"2025-04-26","startTime":480,"endTime":720}]},"hourBankAccounts":[{"hourBank":{"code":5},"creationDate":"2024-01-01","extinctionDate":"2024-04-30"},{"hourBank":{"code":1},"creationDate":"2024-10-24"},{"hourBank":{"code":8},"creationDate":"2024-07-01"}]}],"database":{"situations":[{"id":"209c328d-3fe8-446a-b690-846d75ef5ed5","code":1,"type":"WORKING","exception":false,"complementarySituationId":"209c328d-3fe8-446a-b690-846d75ef5ed5","daytime":true},{"id":"6774bc30-d9db-4d52-ade2-9d3e5059e0ab","code":3,"type":"OVERTIME","exception":true,"complementarySituationId":"acaf9c07-9521-422b-9325-1af1f36fd589","daytime":false},{"id":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","code":5,"type":"ABSENCES","exception":true,"complementarySituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","daytime":true},{"id":"a6e0401f-42f2-4dc8-ad48-c48682029689","code":6,"type":"WORKING","exception":true,"complementarySituationId":"a6e0401f-42f2-4dc8-ad48-c48682029689","daytime":false},{"id":"acaf9c07-9521-422b-9325-1af1f36fd589","code":8,"type":"OVERTIME","exception":true,"complementarySituationId":"6774bc30-d9db-4d52-ade2-9d3e5059e0ab","daytime":true},{"id":"489eab83-47ed-42ee-ab76-a1702bd13e79","code":9,"type":"VACATION","exception":false,"complementarySituationId":"489eab83-47ed-42ee-ab76-a1702bd13e79","daytime":true},{"id":"4be78b2c-cae5-46f8-93ae-850a1c85013a","code":11,"type":"WORKING","exception":true,"complementarySituationId":"4be78b2c-cae5-46f8-93ae-850a1c85013a","daytime":true},{"id":"848ec42d-b2df-4c4d-94f4-151f381e4a54","code":12,"type":"WORKING","exception":false,"complementarySituationId":"848ec42d-b2df-4c4d-94f4-151f381e4a54","daytime":true},{"id":"8cb7c936-a263-4845-979e-9c69d663b4a2","code":15,"type":"WORKING","exception":false,"complementarySituationId":"e63bd904-4cc8-4bc0-9e2d-b087f6fc0f81","daytime":true},{"id":"e63bd904-4cc8-4bc0-9e2d-b087f6fc0f81","code":16,"type":"WORKING","exception":false,"complementarySituationId":"8cb7c936-a263-4845-979e-9c69d663b4a2","daytime":false},{"id":"e75ba021-148e-4f36-bb3e-13e024cc1908","code":20,"type":"WORKING","exception":true,"complementarySituationId":"2a2fae76-cf7e-498b-9107-0166f6e906ef","daytime":true},{"id":"2a2fae76-cf7e-498b-9107-0166f6e906ef","code":21,"type":"WORKING","exception":true,"complementarySituationId":"e75ba021-148e-4f36-bb3e-13e024cc1908","daytime":false},{"id":"950ba6cd-528d-42cc-aa07-9f15561735f9","code":999,"type":"TIMEEVALUATIONSITUATION","exception":true,"complementarySituationId":"950ba6cd-528d-42cc-aa07-9f15561735f9","daytime":true}],"holidays":[],"timeEvaluationSituationDefinitions":[{"code":1,"startDate":"2022-08-01","workSituationId":"209c328d-3fe8-446a-b690-846d75ef5ed5","nightShiftWorkPremiumId":"e75ba021-148e-4f36-bb3e-13e024cc1908","invalidEventsSituationId":"950ba6cd-528d-42cc-aa07-9f15561735f9","vacationPaidLeaveSituationId":"489eab83-47ed-42ee-ab76-a1702bd13e79","dailyRestViolationSituationId":"848ec42d-b2df-4c4d-94f4-151f381e4a54","workBreakViolationSituationId":"4be78b2c-cae5-46f8-93ae-850a1c85013a","absenceSituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","tardinessSituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","intermediateLeaveSituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","earlyLeaveSituationId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","absenceSituationOnRelayScheduleHolidaysId":"6f3d297a-8977-4b27-a2ca-e5cb5f1489b7","percentageNextDay":false,"normalOvertimeSeparationLimit":10,"separateOvertimeAfterConvertingNightShiftHours":false,"unauthorizedOvertimeId":"acaf9c07-9521-422b-9325-1af1f36fd589","overtimeBeforeId":"acaf9c07-9521-422b-9325-1af1f36fd589","overtimeEntryId":"acaf9c07-9521-422b-9325-1af1f36fd589","overtimeDuringMealId":"acaf9c07-9521-422b-9325-1af1f36fd589","leaveOvertimeId":"acaf9c07-9521-422b-9325-1af1f36fd589","overtimeAfterId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationLimitDuringRest":10,"overtimeDuringRestId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationLimitDuringCompensatedDays":10,"overtimeOnCompensatedDaysId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationLimitDuringHoliday":10,"overtimeDuringHolidayId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationLimitDuringDayOff":10,"overtimeDuringDayOffId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSituationOnRelayScheduleHolidaysId":"acaf9c07-9521-422b-9325-1af1f36fd589","nightShiftOvertimePremiumSituationId":"a6e0401f-42f2-4dc8-ad48-c48682029689","overtimeSeparationBeforeId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationEntryId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringMealId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationLeaveId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationAfterId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringRestId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringCompensatedDaysId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringHolidayId":"8cb7c936-a263-4845-979e-9c69d663b4a2","overtimeSeparationDuringDayOffId":"8cb7c936-a263-4845-979e-9c69d663b4a2"}],"jobPositions":[{"key":"1_1","code":1,"structureCode":1}],"workschedules":[{"id":"9850ad40-0d5f-495f-85ea-843f11b3b427","code":7,"workload":480,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":480,"toleranceAfter":480,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":3,"clockingEvent":780,"toleranceBefore":780,"toleranceAfter":780,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":4,"clockingEvent":1020,"toleranceBefore":1020,"toleranceAfter":1020,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"e7875638-42b4-479d-a825-10fa3b13fbae","code":1,"workload":465,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":480,"toleranceAfter":480,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":540,"toleranceBefore":540,"toleranceAfter":540,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"NOM_MANDATORY","usingType":"NON_MANDATORY_SNACK"},{"sequence":3,"clockingEvent":570,"toleranceBefore":570,"toleranceAfter":570,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"NOM_MANDATORY","usingType":"NON_MANDATORY_SNACK"},{"sequence":4,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":5,"clockingEvent":810,"toleranceBefore":810,"toleranceAfter":810,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_MEAL"},{"sequence":6,"clockingEvent":960,"toleranceBefore":960,"toleranceAfter":960,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"NOM_MANDATORY","usingType":"NON_MANDATORY_SNACK"},{"sequence":7,"clockingEvent":975,"toleranceBefore":975,"toleranceAfter":975,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"NOM_MANDATORY","usingType":"NON_MANDATORY_SNACK"},{"sequence":8,"clockingEvent":1080,"toleranceBefore":1080,"toleranceAfter":1080,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":10,"mealOvertimeTolerance":11,"overtimeDailyTotalTolerance":12,"absenceDailyTotalTolerance":15,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"aa3cd88e-f8b9-443e-9b80-41333ea0ac8f","code":1973,"workload":510,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":470,"toleranceAfter":480,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":3,"clockingEvent":810,"toleranceBefore":810,"toleranceAfter":810,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":1080,"toleranceAfter":1080,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}},{"id":"45147dc7-6c80-4fbf-ba8b-c1f0da19fb07","code":1972,"workload":510,"type":"RIGID","definitionType":"NORMAL","clockingRegisters":[{"sequence":1,"clockingEvent":480,"toleranceBefore":470,"toleranceAfter":480,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"},{"sequence":2,"clockingEvent":720,"toleranceBefore":720,"toleranceAfter":720,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":3,"clockingEvent":810,"toleranceBefore":810,"toleranceAfter":810,"mobilityBefore":0,"mobilityAfter":0,"intervalType":"RIGID","clockingEventScheduleType":"GENERATED","usingType":"GENERATED_PRE_ASSIGNED_MEAL"},{"sequence":4,"clockingEvent":1080,"toleranceBefore":1080,"toleranceAfter":1080,"mobilityBefore":0,"mobilityAfter":0,"clockingEventScheduleType":"MANDATORY","usingType":"MANDATORY_ENTRY_OR_EXIT"}],"clockingEvent":{"workStartEndOvertimeTolerance":0,"mealOvertimeTolerance":0,"overtimeDailyTotalTolerance":0,"absenceDailyTotalTolerance":0,"workStartEndAbsenceTolerance":0,"mealAbsenceTolerance":0}}],"workshifts":[{"id":"47971e5f-3d1a-4494-8cf6-328c7dfa5394","code":1,"type":"PERMANENT","rotationWorkShift":true,"extensionNightHours":true,"dsrMinutes":440,"weekMinutes":2640,"monthMinutes":13200,"timeShiftType":"GENERAL","workshiftGroups":[{"code":1,"baseDate":"2022-08-01"},{"code":2,"baseDate":"2022-08-08"},{"code":3,"baseDate":"2022-08-15"},{"code":4,"baseDate":"1901-01-08"},{"code":4,"baseDate":"2022-08-22"},{"code":5,"baseDate":"2023-03-22"},{"code":5,"baseDate":"2022-08-29"},{"code":6,"baseDate":"2022-09-05"}],"workshiftDetails":[{"holidayGroup":{"code":2},"holidayType":"OWN","startDate":"2022-08-12"}]}],"companyBranches":[{"key":"1_1","code":1}],"syndicates":[{"key":"1","code":1,"nightStartHour":1320,"nightEndHour":300,"minimumInterval4to6Hours":30,"minimumInterval6Hours":90,"minimumWorkDuration6Hours":361}],"employmentRelationships":[{"id":"775ee7d1-5d7f-4a1b-b50b-b659a66014b2","code":"1","contractType":"EMPLOYEE"}]},"currentUser":{"userName":"admin@allanalves.com.br"}}}';
|
|
27
|
+
const context = new Context({ body: inputRule });
|
|
28
|
+
const contracts = context.contracts[0];
|
|
29
|
+
const timeEvaluation = contracts.timeEvaluation[0];
|
|
30
|
+
|
|
31
|
+
const overtimeAuthorizationsInContract = contracts?.schedules?.overtimeAuthorizations;
|
|
32
|
+
const overtimeAuthorizationsInTimeEvaluation = timeEvaluation.overtimeAuthorizations;
|
|
33
|
+
|
|
34
|
+
expect(overtimeAuthorizationsInContract.length).toBe(2);
|
|
35
|
+
expect(overtimeAuthorizationsInContract[0].startDate).toEqual(new Date("2025-04-22T00:00:00.000Z"));
|
|
36
|
+
expect(overtimeAuthorizationsInContract[0].endDate).toEqual(new Date("2025-04-25T00:00:00.000Z"));
|
|
37
|
+
expect(overtimeAuthorizationsInContract[0].startTime).toBe(480);
|
|
38
|
+
expect(overtimeAuthorizationsInContract[0].endTime).toBe(1320);
|
|
39
|
+
|
|
40
|
+
expect(overtimeAuthorizationsInContract[1].startDate).toEqual(new Date("2025-04-26T00:00:00.000Z"));
|
|
41
|
+
expect(overtimeAuthorizationsInContract[1].endDate).toEqual(new Date("2025-04-26T00:00:00.000Z"));
|
|
42
|
+
expect(overtimeAuthorizationsInContract[1].startTime).toBe(480);
|
|
43
|
+
expect(overtimeAuthorizationsInContract[1].endTime).toBe(720);
|
|
44
|
+
|
|
45
|
+
expect(overtimeAuthorizationsInTimeEvaluation.length).toBe(1);
|
|
46
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].startDate).toEqual(new Date("2025-04-22T00:00:00.000Z"));
|
|
47
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].endDate).toEqual(new Date("2025-04-25T00:00:00.000Z"));
|
|
48
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].startTime).toBe(480);
|
|
49
|
+
expect(overtimeAuthorizationsInTimeEvaluation[0].endTime).toBe(1320);
|
|
50
|
+
|
|
51
|
+
});
|
|
52
|
+
});
|