diff --git a/.github/workflows/dotnet-core-master.yml b/.github/workflows/dotnet-core-master.yml index 556dfc978..63555f609 100644 --- a/.github/workflows/dotnet-core-master.yml +++ b/.github/workflows/dotnet-core-master.yml @@ -246,7 +246,7 @@ jobs: - name: a filter: "FullyQualifiedName=TimePlanning.Pn.Test.AbsenceRequestServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.BreakPolicyControllerTests|FullyQualifiedName=TimePlanning.Pn.Test.BreakPolicyServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.CanaryInAColeMine|FullyQualifiedName=TimePlanning.Pn.Test.AbsenceRequestRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.PayrollExportRemovedPlanRegistrationTests" - name: b - filter: "FullyQualifiedName=TimePlanning.Pn.Test.PictureSnapshotServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.DanLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.DataLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverRemovedRowTests" + filter: "FullyQualifiedName=TimePlanning.Pn.Test.PictureSnapshotServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.DanLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.DataLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.ConfigurationSeedDataTests" - name: c filter: "FullyQualifiedName=TimePlanning.Pn.Test.PlanningServiceMultiShiftTests|FullyQualifiedName=TimePlanning.Pn.Test.DeviceTokenServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GpsCoordinateServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PayDayTypeRuleServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.TimePlanningFlexServiceRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.PlanningUpdateByCurrentUserRemovedRowTests" - name: d @@ -258,7 +258,7 @@ jobs: - name: g filter: "FullyQualifiedName=TimePlanning.Pn.Test.SettingsServicePhoneNumberTests|FullyQualifiedName=TimePlanning.Pn.Test.TimePlanningWorkingHoursExportTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningAbsenceRequestGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningAuthGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.DagsoversigtWorksheetExportTests|FullyQualifiedName=TimePlanning.Pn.Test.WorkingHoursImportRemovedRowTests" - name: h - filter: "FullyQualifiedName=TimePlanning.Pn.Test.SettingsServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningContentHandoverGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningPlanningsGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningPlanningsGrpcServiceTimeZoneTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningSettingsGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningWorkingHoursGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.WorkingHoursExcelExportE2ETests" + filter: "FullyQualifiedName=TimePlanning.Pn.Test.SettingsServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningContentHandoverGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningPlanningsGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningPlanningsGrpcServiceTimeZoneTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningSettingsGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningWorkingHoursGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.WorkingHoursExcelExportE2ETests|FullyQualifiedName=TimePlanning.Pn.Test.WorkingHoursMessagePersistenceTests" steps: - uses: actions/checkout@v3 - name: Create docker network diff --git a/.github/workflows/dotnet-core-pr.yml b/.github/workflows/dotnet-core-pr.yml index 08503e519..0dbc130e5 100644 --- a/.github/workflows/dotnet-core-pr.yml +++ b/.github/workflows/dotnet-core-pr.yml @@ -235,7 +235,7 @@ jobs: - name: a filter: "FullyQualifiedName=TimePlanning.Pn.Test.AbsenceRequestServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.BreakPolicyControllerTests|FullyQualifiedName=TimePlanning.Pn.Test.BreakPolicyServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.CanaryInAColeMine|FullyQualifiedName=TimePlanning.Pn.Test.AbsenceRequestRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.PayrollExportRemovedPlanRegistrationTests" - name: b - filter: "FullyQualifiedName=TimePlanning.Pn.Test.PictureSnapshotServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.DanLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.DataLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverRemovedRowTests" + filter: "FullyQualifiedName=TimePlanning.Pn.Test.PictureSnapshotServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.DanLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.DataLonFileExporterTests|FullyQualifiedName=TimePlanning.Pn.Test.ContentHandoverRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.ConfigurationSeedDataTests" - name: c filter: "FullyQualifiedName=TimePlanning.Pn.Test.PlanningServiceMultiShiftTests|FullyQualifiedName=TimePlanning.Pn.Test.ScheduleMessageReadTests|FullyQualifiedName=TimePlanning.Pn.Test.DeviceTokenServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GpsCoordinateServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.PayDayTypeRuleServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.TimePlanningFlexServiceRemovedRowTests|FullyQualifiedName=TimePlanning.Pn.Test.PlanningUpdateByCurrentUserRemovedRowTests" - name: d @@ -247,7 +247,7 @@ jobs: - name: g filter: "FullyQualifiedName=TimePlanning.Pn.Test.SettingsServicePhoneNumberTests|FullyQualifiedName=TimePlanning.Pn.Test.TimePlanningWorkingHoursExportTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningAbsenceRequestGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningAuthGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.DagsoversigtWorksheetExportTests|FullyQualifiedName=TimePlanning.Pn.Test.WorkingHoursImportRemovedRowTests" - name: h - filter: "FullyQualifiedName=TimePlanning.Pn.Test.SettingsServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningContentHandoverGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningPlanningsGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningPlanningsGrpcServiceTimeZoneTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningSettingsGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningWorkingHoursGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.WorkingHoursExcelExportE2ETests" + filter: "FullyQualifiedName=TimePlanning.Pn.Test.SettingsServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningContentHandoverGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningPlanningsGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningPlanningsGrpcServiceTimeZoneTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningSettingsGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.GrpcServices.TimePlanningWorkingHoursGrpcServiceTests|FullyQualifiedName=TimePlanning.Pn.Test.WorkingHoursExcelExportE2ETests|FullyQualifiedName=TimePlanning.Pn.Test.WorkingHoursMessagePersistenceTests" steps: - uses: actions/checkout@v3 - name: Create docker network diff --git a/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn.Test/ConfigurationSeedDataTests.cs b/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn.Test/ConfigurationSeedDataTests.cs index 79e1ac9b9..92fd49143 100644 --- a/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn.Test/ConfigurationSeedDataTests.cs +++ b/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn.Test/ConfigurationSeedDataTests.cs @@ -30,4 +30,42 @@ public void SeedData_Contains_DaysBackInTimeAllowedEditingEnabled() && x.Value == "0"), Is.True); } + + // ------------------------------------------------------------------ + // Seed messages: the new Id 13 "PregnancyLeave" entry, plus uniqueness + // guards for future additions. (TimePlanningPluginSeed.SeedData upserts + // this catalog into the Messages table by Name; the DB-side assertion + // lives in WorkingHoursMessagePersistenceTests, which has a database.) + // ------------------------------------------------------------------ + + [Test] + public void SeedMessages_Contain_PregnancyLeaveWithId13() + { + var seedMessages = new TimePlanningSeedMessages(); + + var pregnancyLeave = seedMessages.Data + .Where(x => x.Id == 13) + .ToList(); + + Assert.That(pregnancyLeave.Count, Is.EqualTo(1), + "Exactly one seed message with Id 13"); + Assert.That(pregnancyLeave[0].Name, Is.EqualTo("PregnancyLeave")); + Assert.That(pregnancyLeave[0].DaName, Is.EqualTo("Graviditetsbetinget fravær")); + } + + [Test] + public void SeedMessages_IdsAndNamesAreUnique() + { + var seedMessages = new TimePlanningSeedMessages(); + + var ids = seedMessages.Data.Select(x => x.Id).ToList(); + Assert.That(ids, Is.Unique, + "Seed message Ids must stay unique — SeedData upserts by Name, and the Excel " + + "Total sheet emits one column per Id"); + + var names = seedMessages.Data.Select(x => x.Name).ToList(); + Assert.That(names, Is.Unique, + "Seed message Names must stay unique — TimePlanningPluginSeed matches existing " + + "rows by Name, so a duplicate would upsert the wrong row"); + } } diff --git a/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn.Test/WorkingHoursMessagePersistenceTests.cs b/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn.Test/WorkingHoursMessagePersistenceTests.cs new file mode 100644 index 000000000..9ccac5ac8 --- /dev/null +++ b/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn.Test/WorkingHoursMessagePersistenceTests.cs @@ -0,0 +1,253 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using Microting.eForm.Infrastructure.Constants; +using Microting.eFormApi.BasePn.Abstractions; +using Microting.eFormApi.BasePn.Infrastructure.Helpers.PluginDbOptions; +using NSubstitute; +using NUnit.Framework; +using TimePlanning.Pn.Infrastructure.Models.Settings; +using TimePlanning.Pn.Infrastructure.Models.WorkingHours.Index; +using TimePlanning.Pn.Infrastructure.Models.WorkingHours.UpdateCreate; +using TimePlanning.Pn.Services.TimePlanningLocalizationService; +using TimePlanning.Pn.Services.TimePlanningWorkingHoursService; +using AssignedSiteEntity = Microting.TimePlanningBase.Infrastructure.Data.Entities.AssignedSite; +using PlanRegistrationEntity = Microting.TimePlanningBase.Infrastructure.Data.Entities.PlanRegistration; +using SdkLanguage = Microting.eForm.Infrastructure.Data.Entities.Language; + +namespace TimePlanning.Pn.Test; + +/// +/// Regression coverage for the message-id persistence fix in the working-hours +/// update path (CreateUpdateUpdatePlanning): +/// planRegistration.MessageId = model.Message == 0 ? null : model.Message; +/// The sentinel used to be == 10, which silently DISCARDED the Maternity +/// message (Id 10) on every save. Tested through the public +/// CreateUpdate(TimePlanningWorkingHoursUpdateCreateModel) API, asserting +/// the persisted PlanRegistration.MessageId from a FRESH DbContext. +/// Also asserts the seeded Messages table carries the new Id 13 +/// "PregnancyLeave" row after TimePlanningPluginSeed.SeedData (run by +/// TestBaseSetup for every test). +/// +[TestFixture] +public class WorkingHoursMessagePersistenceTests : TestBaseSetup +{ + private TimePlanningWorkingHoursService _service = null!; + + [SetUp] + public async Task SetUpTest() + { + await base.Setup(); + + var userService = Substitute.For(); + userService.UserId.Returns(1); + + var localizationService = Substitute.For(); + localizationService.GetString(Arg.Any()).Returns(x => x[0]?.ToString()); + + var coreService = Substitute.For(); + var core = await GetCore(); + coreService.GetCore().Returns(core); + + var sdkDb = core.DbContextHelper.GetDbContext(); + var language = await sdkDb.Languages.FirstOrDefaultAsync(l => l.LanguageCode == "da"); + if (language == null) + { + language = new SdkLanguage { LanguageCode = "da", Name = "Danish" }; + await language.Create(sdkDb); + } + userService.GetCurrentUserLanguage().Returns(language); + + var options = Substitute.For>(); + options.Value.Returns(new TimePlanningBaseSettings + { + AutoBreakCalculationActive = "0", + DayOfPayment = 20, + GpsEnabled = "0", + SnapshotEnabled = "0" + }); + + _service = new TimePlanningWorkingHoursService( + Substitute.For>(), + TimePlanningPnDbContext!, + userService, + localizationService, + baseDbContext: null!, + options, + coreService); + } + + // ------------------------------------------------------------------ + // 1. THE bug regression: Message = 10 (Maternity) must persist. The old + // "model.Message == 10 ? null : ..." sentinel silently discarded it. + // ------------------------------------------------------------------ + + [Test] + public async Task CreateUpdate_Message10_PersistsMaternityMessageId() + { + var date = UpdateDate(); + await SeedSiteAndPlanRegistration(siteUid: 9451, date: date, initialMessageId: null); + + var result = await _service.CreateUpdate(BuildUpdateModel(9451, date, message: 10)); + Assert.That(result.Success, Is.True, result.Message); + + Assert.That(await ReadPersistedMessageId(9451, date), Is.EqualTo(10), + "Message 10 (Maternity) must persist — the old '== 10' sentinel discarded it"); + } + + // ------------------------------------------------------------------ + // 2. Message = 0 is the real "no message" sentinel: clears MessageId. + // ------------------------------------------------------------------ + + [Test] + public async Task CreateUpdate_Message0_ClearsMessageId() + { + var date = UpdateDate(); + await SeedSiteAndPlanRegistration(siteUid: 9452, date: date, initialMessageId: 10); + + var result = await _service.CreateUpdate(BuildUpdateModel(9452, date, message: 0)); + Assert.That(result.Success, Is.True, result.Message); + + Assert.That(await ReadPersistedMessageId(9452, date), Is.Null, + "Message 0 is the 'no message' sentinel and must clear MessageId"); + } + + // ------------------------------------------------------------------ + // 3. The new seed message Id 13 (PregnancyLeave) round-trips. + // ------------------------------------------------------------------ + + [Test] + public async Task CreateUpdate_Message13_PersistsPregnancyLeaveMessageId() + { + var date = UpdateDate(); + await SeedSiteAndPlanRegistration(siteUid: 9453, date: date, initialMessageId: null); + + var result = await _service.CreateUpdate(BuildUpdateModel(9453, date, message: 13)); + Assert.That(result.Success, Is.True, result.Message); + + Assert.That(await ReadPersistedMessageId(9453, date), Is.EqualTo(13), + "The new PregnancyLeave message (Id 13) must round-trip through the update path"); + } + + // ------------------------------------------------------------------ + // 4. Control: an ordinary message id (3 = Sick) persists as before. + // ------------------------------------------------------------------ + + [Test] + public async Task CreateUpdate_Message3_PersistsSickMessageId() + { + var date = UpdateDate(); + await SeedSiteAndPlanRegistration(siteUid: 9454, date: date, initialMessageId: null); + + var result = await _service.CreateUpdate(BuildUpdateModel(9454, date, message: 3)); + Assert.That(result.Success, Is.True, result.Message); + + Assert.That(await ReadPersistedMessageId(9454, date), Is.EqualTo(3), + "Control: an ordinary message id must persist unchanged"); + } + + // ------------------------------------------------------------------ + // 5. Seeded Messages table: TimePlanningPluginSeed.SeedData (run by + // TestBaseSetup) must have inserted the new Id 13 PregnancyLeave row. + // ------------------------------------------------------------------ + + [Test] + public void SeededMessagesTable_ContainsPregnancyLeaveRowWithId13() + { + var messages = TimePlanningPnDbContext!.Messages + .Where(x => x.Id == 13) + .ToList(); + + Assert.That(messages.Count, Is.EqualTo(1), + "Exactly one seeded message with Id 13"); + Assert.That(messages[0].Name, Is.EqualTo("PregnancyLeave")); + Assert.That(messages[0].DaName, Is.EqualTo("Graviditetsbetinget fravær")); + } + + // ------------------------------------------------------------------ + // Helpers + // ------------------------------------------------------------------ + + /// + /// A midnight date relative to now, 10 days out. It must NOT be today: + /// UpdatePlanning skips the whole field-copy block (including MessageId) + /// for today's row ("Date != midnight" guard). Well below the 180-day + /// horizon of CreateUpdate's forward-cascade. + /// + private static DateTime UpdateDate() => DateTime.Now.Date.AddDays(10); + + private static TimePlanningWorkingHoursUpdateCreateModel BuildUpdateModel( + int siteUid, DateTime date, int message) + { + return new TimePlanningWorkingHoursUpdateCreateModel + { + SiteId = siteUid, + Plannings = new List + { + new() + { + Date = date, + Message = message, + PlanText = "", + PlanHours = 0, + NettoHours = 0, + PaidOutFlex = "0", + CommentOffice = "", + CommentOfficeAll = "" + } + } + }; + } + + /// + /// Re-reads the persisted MessageId from a FRESH DbContext so the assert + /// cannot be satisfied by the service's tracked (unsaved) entity state. + /// + private async Task ReadPersistedMessageId(int siteUid, DateTime date) + { + await using var freshContext = CreateTimePlanningPnDbContext(); + var planRegistration = await freshContext.PlanRegistrations + .AsNoTracking() + .SingleAsync(x => x.SdkSitId == siteUid && x.Date == date); + return planRegistration.MessageId; + } + + /// + /// Seeds the plugin-side entities the update path needs: an AssignedSite + /// (UpdatePlanning dereferences it inside PlanRegistrationHelper. + /// UpdatePlanRegistration) and one existing PlanRegistration on + /// for CreateUpdate to match and update. No SDK + /// entities are required — CreateUpdate only touches the plugin DbContext. + /// + private async Task SeedSiteAndPlanRegistration(int siteUid, DateTime date, int? initialMessageId) + { + await new AssignedSiteEntity + { + SiteId = siteUid, + UseOneMinuteIntervals = false, + Resigned = false, + WorkflowState = Constants.WorkflowStates.Created, + CreatedByUserId = 1, + UpdatedByUserId = 1, + }.Create(TimePlanningPnDbContext!); + + await new PlanRegistrationEntity + { + SdkSitId = siteUid, + Date = date, + Start1Id = 0, + Stop1Id = 0, + Pause1Id = 0, + MessageId = initialMessageId, + PlanText = "", + CommentOffice = "", + CommentOfficeAll = "", + WorkflowState = Constants.WorkflowStates.Created, + CreatedByUserId = 1, + UpdatedByUserId = 1, + }.Create(TimePlanningPnDbContext!); + } +} diff --git a/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Infrastructure/Data/Seed/Data/TimePlanningSeedMessages.cs b/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Infrastructure/Data/Seed/Data/TimePlanningSeedMessages.cs index 1987d596b..32ac34192 100644 --- a/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Infrastructure/Data/Seed/Data/TimePlanningSeedMessages.cs +++ b/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Infrastructure/Data/Seed/Data/TimePlanningSeedMessages.cs @@ -93,6 +93,14 @@ public class TimePlanningSeedMessages DaName = "Helligdag", EnName = "Holiday day off", DeName = "Helligdag Tag" + }, + new Message + { + Id = 13, + Name = "PregnancyLeave", + DaName = "Graviditetsbetinget fravær", + EnName = "Pregnancy-related absence", + DeName = "Schwangerschaftsbedingte Abwesenheit" } }; } \ No newline at end of file diff --git a/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Services/TimePlanningWorkingHoursService/TimePlanningWorkingHoursService.cs b/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Services/TimePlanningWorkingHoursService/TimePlanningWorkingHoursService.cs index 1bd194244..643709c86 100644 --- a/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Services/TimePlanningWorkingHoursService/TimePlanningWorkingHoursService.cs +++ b/eFormAPI/Plugins/TimePlanning.Pn/TimePlanning.Pn/Services/TimePlanningWorkingHoursService/TimePlanningWorkingHoursService.cs @@ -635,7 +635,7 @@ private async Task UpdatePlanning(bool first, PlanRegistration planRegistration, if (planRegistration.Date != midnight) { - planRegistration.MessageId = model.Message == 10 ? null : model.Message; + planRegistration.MessageId = model.Message == 0 ? null : model.Message; planRegistration.PlanText = model.PlanText; planRegistration.Date = model.Date; planRegistration.PlanHours = model.PlanHours; diff --git a/eform-client/cypress/e2e/plugins/time-planning-pn/k/leave-policies.spec.cy.ts b/eform-client/cypress/e2e/plugins/time-planning-pn/k/leave-policies.spec.cy.ts index fa3f9b931..454ac31c0 100644 --- a/eform-client/cypress/e2e/plugins/time-planning-pn/k/leave-policies.spec.cy.ts +++ b/eform-client/cypress/e2e/plugins/time-planning-pn/k/leave-policies.spec.cy.ts @@ -16,6 +16,7 @@ describe('Time Planning - Leave policies', () => { { labelInFlags: 'Helligdag', expectedTooltip: 'Helligdag' }, { labelInFlags: 'Afspadsering', expectedTooltip: 'Afspadsering' }, { labelInFlags: 'Barselsorlov', expectedTooltip: 'Barselsorlov' }, + { labelInFlags: 'Graviditetsbetinget fravær', expectedTooltip: 'Graviditetsbetinget fravær' }, ]; beforeEach(() => { diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/components/plannings/time-plannings-table/time-plannings-table.component.html b/eform-client/src/app/plugins/modules/time-planning-pn/components/plannings/time-plannings-table/time-plannings-table.component.html index 93bc91a6a..4dccff3fe 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/components/plannings/time-plannings-table/time-plannings-table.component.html +++ b/eform-client/src/app/plugins/modules/time-planning-pn/components/plannings/time-plannings-table/time-plannings-table.component.html @@ -404,6 +404,7 @@ outdoor_grill clock_arrow_down luggage + pregnant_woman diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/consts/messages.ts b/eform-client/src/app/plugins/modules/time-planning-pn/consts/messages.ts index 4afd0c332..2080681f2 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/consts/messages.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/consts/messages.ts @@ -72,6 +72,12 @@ export function messages( TimePlanningMessagesEnum[TimePlanningMessagesEnum.Holiday] ), }, + { + id: TimePlanningMessagesEnum.PregnancyLeave, + value: translate.instant( + TimePlanningMessagesEnum[TimePlanningMessagesEnum.PregnancyLeave] + ), + }, // { // id: TimePlanningMessagesEnum.TimeOff, // value: translate.instant( diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/enums/time-planning-messages.enum.ts b/eform-client/src/app/plugins/modules/time-planning-pn/enums/time-planning-messages.enum.ts index 631cfd086..09a90b602 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/enums/time-planning-messages.enum.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/enums/time-planning-messages.enum.ts @@ -11,4 +11,5 @@ export enum TimePlanningMessagesEnum { Maternity, VacationDayOff, Holiday, + PregnancyLeave, } diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/bgBG.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/bgBG.ts index daf8fd466..83e079bfc 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/bgBG.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/bgBG.ts @@ -470,4 +470,5 @@ export const bgBG = { 'No tiers': 'Няма нива', 'Enter a duration as hours:minutes, for example 7:24': 'Въведете продължителност като часове:минути, например 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Нивата определят времевите прагове като часове:минути. Например, Ниво 1: до 8:00 (8 часа) = Редовно заплащане. Оставете „До“ празно за неограничено.', + PregnancyLeave: 'Отсъствие, свързано с бременност', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/csCZ.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/csCZ.ts index bc8102929..b40b76a78 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/csCZ.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/csCZ.ts @@ -470,4 +470,5 @@ export const csCZ = { 'No tiers': 'Žádné úrovně', 'Enter a duration as hours:minutes, for example 7:24': 'Zadejte dobu trvání ve formátu hodiny:minuty, například 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Úrovně definují časové prahy jako hodiny:minuty. Např. Úroveň 1: do 8:00 (8 hodin) = běžná mzda. Pro neomezený čas nechte pole „Do“ prázdné.', + PregnancyLeave: 'Absence související s těhotenstvím', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/da.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/da.ts index 6392c63c1..fd8847efb 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/da.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/da.ts @@ -468,4 +468,5 @@ export const da = { 'View pay rule set': 'Vis lønregelsæt', Close: 'Luk', 'Once enabled, 1-minute intervals cannot be turned off': 'Når 1-minutters intervaller er aktiveret, kan de ikke slås fra', + PregnancyLeave: 'Graviditetsbetinget fravær', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/deDE.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/deDE.ts index 91ac446d1..0d7593c7a 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/deDE.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/deDE.ts @@ -470,4 +470,5 @@ export const deDE = { 'No tiers': 'Keine Stufen', 'Enter a duration as hours:minutes, for example 7:24': 'Geben Sie eine Dauer im Format Stunden:Minuten ein, zum Beispiel 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Die Stufen definieren Zeitgrenzen in Stunden:Minuten. Beispiel: Stufe 1: bis zu 8:00 Uhr (8 Stunden) = Normalgehalt. Lassen Sie „Bis zu“ leer, wenn Sie unbegrenzt arbeiten möchten.', + PregnancyLeave: 'Schwangerschaftsbedingte Abwesenheit', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/elGR.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/elGR.ts index 58334586c..b65094338 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/elGR.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/elGR.ts @@ -470,4 +470,5 @@ export const elGR = { 'No tiers': 'Χωρίς επίπεδα', 'Enter a duration as hours:minutes, for example 7:24': 'Εισαγάγετε μια διάρκεια ως ώρες:λεπτά, για παράδειγμα 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Τα επίπεδα ορίζουν τα χρονικά όρια ως ώρες:λεπτά. Π.χ., Επίπεδο 1: έως 8:00 (8 ώρες) = Κανονική αμοιβή. Αφήστε το "Έως" κενό για απεριόριστο.', + PregnancyLeave: 'Απουσία που σχετίζεται με την εγκυμοσύνη', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/enUS.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/enUS.ts index 43cf8901d..0613a12df 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/enUS.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/enUS.ts @@ -142,6 +142,7 @@ export const enUS = { 'Maternity': 'Maternity leave', 'VacationDayOff': 'Vacation day off', 'Holiday': 'Holiday', + PregnancyLeave: 'Pregnancy-related absence', 'Absence Requests': 'Absence Requests', 'Inbox': 'Inbox', 'My Requests': 'My Requests', diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/esES.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/esES.ts index f371149eb..4c111df1b 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/esES.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/esES.ts @@ -470,4 +470,5 @@ export const esES = { 'No tiers': 'Sin niveles', 'Enter a duration as hours:minutes, for example 7:24': 'Introduzca una duración en formato horas:minutos, por ejemplo 7:24.', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Los niveles definen los umbrales de tiempo como horas:minutos. Por ejemplo, Nivel 1: hasta las 8:00 (8 horas) = Pago regular. Deje "Hasta" en blanco para un período ilimitado.', + PregnancyLeave: 'Ausencia relacionada con el embarazo', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/etET.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/etET.ts index 1b3f9a214..6887d1ed7 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/etET.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/etET.ts @@ -470,4 +470,5 @@ export const etET = { 'No tiers': 'Tasemeid pole', 'Enter a duration as hours:minutes, for example 7:24': 'Sisesta kestus kujul tunnid:minutid, näiteks 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Tasemed defineerivad ajalävesid tundide ja minutitena. Näiteks 1. tasand: kuni kella 8.00-ni (8 tundi) = regulaarne palk. Piiramatu aja saamiseks jätke "Kuni" tühjaks.', + PregnancyLeave: 'Rasedusega seotud puudumine', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/fiFI.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/fiFI.ts index 6222c161b..1bd9acb41 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/fiFI.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/fiFI.ts @@ -470,4 +470,5 @@ export const fiFI = { 'No tiers': 'Ei tasoja', 'Enter a duration as hours:minutes, for example 7:24': 'Syötä kesto muodossa tunnit:minuutit, esimerkiksi 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Tasot määrittelevät aikarajat muodossa tunnit:minuutit. Esim. Taso 1: klo 8.00 asti (8 tuntia) = Normaali palkka. Jätä "Jopa" tyhjäksi, jos haluat rajoittamattoman ajan.', + PregnancyLeave: 'Raskauteen liittyvä poissaolo', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/frFR.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/frFR.ts index b6cf20ad1..bc528fc98 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/frFR.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/frFR.ts @@ -470,4 +470,5 @@ export const frFR = { 'No tiers': 'Pas de niveaux', 'Enter a duration as hours:minutes, for example 7:24': 'Saisissez une durée au format heures:minutes, par exemple 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Les paliers définissent des seuils temporels en heures:minutes. Ex. : Palier 1 : jusqu’à 8 h 00 (8 heures) = Rémunération normale. Laissez le champ « Jusqu’à » vide pour une durée illimitée.', + PregnancyLeave: 'Absence liée à la grossesse', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/hrHR.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/hrHR.ts index a7296c47e..9a72f7300 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/hrHR.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/hrHR.ts @@ -470,4 +470,5 @@ export const hrHR = { 'No tiers': 'Nema slojeva', 'Enter a duration as hours:minutes, for example 7:24': 'Unesite trajanje u formatu sati:minute, na primjer 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Razine definiraju vremenske pragove kao sati:minute. Npr. Razina 1: do 8:00 (8 sati) = Redovna plaća. Ostavite "Do" prazno za neograničeno.', + PregnancyLeave: 'Izostanci povezani s trudnoćom', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/huHU.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/huHU.ts index ce1181d1d..03f9ec0bb 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/huHU.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/huHU.ts @@ -470,4 +470,5 @@ export const huHU = { 'No tiers': 'Nincsenek szintek', 'Enter a duration as hours:minutes, for example 7:24': 'Adja meg az időtartamot óra:perc formátumban, például 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'A szintek óra:perc formátumban határozzák meg az időküszöböket. Pl. 1. szint: 8:00-ig (8 óra) = Rendszeres fizetés. Korlátlan időhöz hagyja üresen az „Egész” mezőt.', + PregnancyLeave: 'Terhességgel kapcsolatos hiányzás', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/isIS.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/isIS.ts index 938a9f1c9..e5498e0de 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/isIS.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/isIS.ts @@ -470,4 +470,5 @@ export const isIS = { 'No tiers': 'Engin stig', 'Enter a duration as hours:minutes, for example 7:24': 'Sláðu inn tímalengd sem klukkustundir:mínútur, til dæmis 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Þrep skilgreina tímamörk sem klukkustundir:mínútur. T.d. Þrep 1: allt að 8:00 (8 klukkustundir) = Venjuleg laun. Skiljið „Allt að“ eftir autt fyrir ótakmarkaðan tíma.', + PregnancyLeave: 'Fjarvera vegna meðgöngu', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/itIT.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/itIT.ts index 35894c270..97296cbe8 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/itIT.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/itIT.ts @@ -470,4 +470,5 @@ export const itIT = { 'No tiers': 'Nessun livello', 'Enter a duration as hours:minutes, for example 7:24': 'Inserisci la durata nel formato ore:minuti, ad esempio 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'I livelli definiscono le soglie temporali in ore:minuti. Ad esempio, Livello 1: fino a 8:00 (8 ore) = Retribuzione ordinaria. Lasciare vuoto il campo "Fino a" per una retribuzione illimitata.', + PregnancyLeave: 'Assenza correlata alla gravidanza', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ltLT.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ltLT.ts index d851bace9..256c4523f 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ltLT.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ltLT.ts @@ -470,4 +470,5 @@ export const ltLT = { 'No tiers': 'Nėra pakopų', 'Enter a duration as hours:minutes, for example 7:24': 'Įveskite trukmę valandų:minutių formatu, pavyzdžiui, 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Pakopos apibrėžia laiko ribas kaip valandas:minutes. Pvz., 1 pakopa: iki 8:00 (8 valandos) = Įprastas atlyginimas. Palikite laukelį „Iki“ tuščią, jei norite neriboto laiko.', + PregnancyLeave: 'Su nėštumu susijęs nebuvimas', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/lvLV.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/lvLV.ts index 1e6fed923..1884d785f 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/lvLV.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/lvLV.ts @@ -470,4 +470,5 @@ export const lvLV = { 'No tiers': 'Nav līmeņu', 'Enter a duration as hours:minutes, for example 7:24': 'Ievadiet ilgumu kā stundas:minūtes, piemēram, 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Līmeņi definē laika sliekšņus kā stundas:minūtes. Piemēram, 1. līmenis: līdz plkst. 8:00 (8 stundas) = regulāra samaksa. Lai iegūtu neierobežotu laiku, atstājiet lauku "Līdz" tukšu.', + PregnancyLeave: 'Ar grūtniecību saistīta prombūtne', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/nlNL.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/nlNL.ts index 6a4902e4a..137561866 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/nlNL.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/nlNL.ts @@ -470,4 +470,5 @@ export const nlNL = { 'No tiers': 'Geen niveaus', 'Enter a duration as hours:minutes, for example 7:24': 'Voer een tijdsduur in als uren:minuten, bijvoorbeeld 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'De niveaus definiëren tijdslimieten in uren:minuten. Bijvoorbeeld: Niveau 1: tot 8:00 (8 uur) = Normaal loon. Laat "Tot" leeg voor onbeperkt.', + PregnancyLeave: 'Zwangerschapsgerelateerde afwezigheid', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/noNO.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/noNO.ts index bb362c58b..8b0e44ea7 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/noNO.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/noNO.ts @@ -470,4 +470,5 @@ export const noNO = { 'No tiers': 'Ingen nivåer', 'Enter a duration as hours:minutes, for example 7:24': 'Skriv inn en varighet som timer:minutter, for eksempel 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Nivåer definerer tidsgrenser som timer:minutter. F.eks. Nivå 1: opptil 8:00 (8 timer) = Vanlig lønn. La «Opptil» stå tomt for ubegrenset tid.', + PregnancyLeave: 'Graviditetsrelatert fravær', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/plPL.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/plPL.ts index 333d8d028..397b9403b 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/plPL.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/plPL.ts @@ -470,4 +470,5 @@ export const plPL = { 'No tiers': 'Brak poziomów', 'Enter a duration as hours:minutes, for example 7:24': 'Wprowadź czas trwania w formacie godziny:minuty, na przykład 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Poziomy definiują progi czasowe w postaci godzin:minut. Np. Poziom 1: do 8:00 (8 godzin) = płaca regularna. Pozostaw pole „Do”, aby uzyskać nieograniczony czas.', + PregnancyLeave: 'Nieobecność związana z ciążą', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ptBR.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ptBR.ts index 7b0a54150..7ccc413d6 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ptBR.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ptBR.ts @@ -470,4 +470,5 @@ export const ptBR = { 'No tiers': 'Sem níveis', 'Enter a duration as hours:minutes, for example 7:24': 'Insira a duração no formato horas:minutos, por exemplo, 7:24.', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Os níveis definem limites de tempo em horas:minutos. Exemplo: Nível 1: até 8:00 (8 horas) = Pagamento normal. Deixe "Até" em branco para pagamento ilimitado.', + PregnancyLeave: 'Ausência relacionada à gravidez', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ptPT.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ptPT.ts index c3617f4b9..a4464f8dd 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ptPT.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ptPT.ts @@ -470,4 +470,5 @@ export const ptPT = { 'No tiers': 'Sem níveis', 'Enter a duration as hours:minutes, for example 7:24': 'Insira a duração no formato horas:minutos, por exemplo, 7:24.', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Os níveis definem limites de tempo em horas:minutos. Exemplo: Nível 1: até 8:00 (8 horas) = Pagamento normal. Deixe "Até" em branco para pagamento ilimitado.', + PregnancyLeave: 'Ausência relacionada à gravidez', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/roRO.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/roRO.ts index 8b2446be7..3a253a38e 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/roRO.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/roRO.ts @@ -470,4 +470,5 @@ export const roRO = { 'No tiers': 'Fără niveluri', 'Enter a duration as hours:minutes, for example 7:24': 'Introduceți o durată în format ore:minute, de exemplu 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Nivelurile definesc pragurile de timp ca ore:minute. De exemplu, Nivelul 1: până la 8:00 (8 ore) = Salariu normal. Lăsați „Până la” gol pentru nelimitat.', + PregnancyLeave: 'Absență legată de sarcină', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/skSK.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/skSK.ts index 3ed9ea599..34d9c09cd 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/skSK.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/skSK.ts @@ -470,4 +470,5 @@ export const skSK = { 'No tiers': 'Žiadne úrovne', 'Enter a duration as hours:minutes, for example 7:24': 'Zadajte trvanie vo formáte hodiny:minúty, napríklad 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Úrovne definujú časové prahy ako hodiny:minúty. Napr. Úroveň 1: do 8:00 (8 hodín) = bežná mzda. Pre neobmedzený čas nechajte pole „Do“ prázdne.', + PregnancyLeave: 'Neprítomnosť súvisiaca s tehotenstvom', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/slSL.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/slSL.ts index 6a6c7bbb4..e7ceb7f2c 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/slSL.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/slSL.ts @@ -470,4 +470,5 @@ export const slSL = { 'No tiers': 'Brez stopenj', 'Enter a duration as hours:minutes, for example 7:24': 'Vnesite trajanje v obliki ur:minut, na primer 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Stopnje določajo časovne pragove kot ure:minute. Npr. Stopnja 1: do 8:00 (8 ur) = Redno plačilo. Za neomejeno plačilo pustite polje »Do« prazno.', + PregnancyLeave: 'Odsotnost zaradi nosečnosti', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/svSE.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/svSE.ts index 6b5e4655b..cb297b1bc 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/svSE.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/svSE.ts @@ -470,4 +470,5 @@ export const svSE = { 'No tiers': 'Inga nivåer', 'Enter a duration as hours:minutes, for example 7:24': 'Ange en varaktighet som timmar:minuter, till exempel 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Nivåer definierar tidsgränser som timmar:minuter. T.ex. Nivå 1: upp till 8:00 (8 timmar) = Ordinarie lön. Lämna "Upp till" tomt för obegränsat antal.', + PregnancyLeave: 'Graviditetsrelaterad frånvaro', }; diff --git a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ukUA.ts b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ukUA.ts index f209f88b7..baa7bd6ab 100644 --- a/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ukUA.ts +++ b/eform-client/src/app/plugins/modules/time-planning-pn/i18n/ukUA.ts @@ -470,4 +470,5 @@ export const ukUA = { 'No tiers': 'Без рівнів', 'Enter a duration as hours:minutes, for example 7:24': 'Введіть тривалість у форматі годин:хвилини, наприклад, 7:24', 'Tiers define time thresholds as hours:minutes. E.g., Tier 1: up to 8:00 (8 hours) = Regular pay. Leave "Up To" empty for unlimited.': 'Рівні визначають часові пороги як години:хвилини. Наприклад, Рівень 1: до 8:00 (8 годин) = Звичайна оплата. Залиште поле «До» порожнім для необмеженого часу.', + PregnancyLeave: 'Відсутність, пов\'язана з вагітністю', };