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 (CreateUpdate → UpdatePlanning):
+/// 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: 'Відсутність, пов\'язана з вагітністю',
};