Compare commits

...

2 Commits

Author SHA1 Message Date
gitea-actions
f96fd64767 chore: bump version to v0.1.25
All checks were successful
Auto Tag Develop / tag (push) Successful in 4s
Build Release Artefact / build (push) Successful in 1m12s
2026-03-11 16:27:05 +00:00
523d4f296b fix : prise en compte des congés au provisionnel
All checks were successful
Auto Tag Develop / tag (push) Successful in 5s
2026-03-11 17:26:48 +01:00
3 changed files with 6 additions and 22 deletions

View File

@@ -1,2 +1,2 @@
parameters: parameters:
app.version: '0.1.24' app.version: '0.1.25'

View File

@@ -203,8 +203,9 @@ Tous les filtres checkbox sont cochés par défaut à l'ouverture du drawer.
- la prise sur `en cours d'acquisition` est autorisée (usage anticipé) - la prise sur `en cours d'acquisition` est autorisée (usage anticipé)
- `en cours d'acquisition` peut devenir négatif si la prise dépasse le généré (ex: `2.08 - 3 = -0.92`), puis se reconstitue avec les acquisitions suivantes - `en cours d'acquisition` peut devenir négatif si la prise dépasse le généré (ex: `2.08 - 3 = -0.92`), puis se reconstitue avec les acquisitions suivantes
- date d'arret de calcul: - date d'arret de calcul:
- les compteurs sont calculés jusqu'au dernier jour du mois précédent (le mois en cours est exclu) - les compteurs sont calculés en prévisionnel jusqu'à la fin de l'exercice
- exemple: au `04/03/2026`, l'arret de calcul est le `28/02/2026` (ou `29/02` en année bissextile) - les absences futures déjà posées sur l'exercice sont déduites du `reste à prendre`
- exemple: au `11/03/2026`, l'exercice `2026` est calculé jusqu'au `31/05/2026`
- hors périmètre phase 1: `INTERIM` (retour non supporté) - hors périmètre phase 1: `INTERIM` (retour non supporté)
- onglet `RTT`: - onglet `RTT`:
- endpoint de synthèse: `GET /api/employees/{id}/rtt-summary?year=YYYY` - endpoint de synthèse: `GET /api/employees/{id}/rtt-summary?year=YYYY`

View File

@@ -168,7 +168,7 @@ final readonly class EmployeeLeaveSummaryProvider implements ProviderInterface
$carrySaturdays = 0.0; $carrySaturdays = 0.0;
} }
$calculationEnd = $this->resolveCalculationEndDate($leavePolicy['ruleCode'], $year, $to, $employee); $calculationEnd = $this->resolveCalculationEndDate($to, $employee);
$generatedDays = $leavePolicy['accrualPerMonth'] > 0.0 $generatedDays = $leavePolicy['accrualPerMonth'] > 0.0
? $this->computeAccruedDaysFromStart( ? $this->computeAccruedDaysFromStart(
$leavePolicy['acquiredDays'], $leavePolicy['acquiredDays'],
@@ -354,27 +354,10 @@ final readonly class EmployeeLeaveSummaryProvider implements ProviderInterface
} }
private function resolveCalculationEndDate( private function resolveCalculationEndDate(
string $ruleCode,
int $year,
DateTimeImmutable $periodEnd, DateTimeImmutable $periodEnd,
Employee $employee Employee $employee
): ?DateTimeImmutable { ): ?DateTimeImmutable {
$today = new DateTimeImmutable('today');
$currentYear = LeaveRuleCode::FORFAIT_218->value === $ruleCode
? (int) $today->format('Y')
: $this->resolveCurrentLeaveYear($today);
if ($year < $currentYear) {
$end = $periodEnd; $end = $periodEnd;
} elseif ($year > $currentYear) {
$end = null;
} else {
$lastDayPreviousMonth = $today
->modify('first day of this month')
->modify('-1 day')
;
$end = $lastDayPreviousMonth < $periodEnd ? $lastDayPreviousMonth : $periodEnd;
}
// Cap at contract end date if the employee has left. // Cap at contract end date if the employee has left.
$contractEndRaw = $employee->getCurrentContractEndDate(); $contractEndRaw = $employee->getCurrentContractEndDate();