feat : Ajout du système de RTT sur la page employé avec le repport annuel des heures
All checks were successful
Auto Tag Develop / tag (push) Successful in 6s

This commit is contained in:
2026-03-13 10:26:33 +01:00
parent 1858817649
commit 4a2c3a8eed
29 changed files with 1595 additions and 391 deletions

View File

@@ -26,8 +26,20 @@ class EmployeeRttBalance
#[ORM\Column(type: 'integer', options: ['comment' => 'Annee d exercice (year = annee de fin, ex: 2026 = 01/06/2025 -> 31/05/2026).'])]
private int $year = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Report N-1 en minutes (solde d ouverture).'])]
private int $openingMinutes = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Mois de fin du report (1-12). Le report s affiche dans le mois suivant.', 'default' => 5])]
private int $month = 5;
#[ORM\Column(type: 'integer', options: ['comment' => 'Report N-1 base 25% en minutes.', 'default' => 0])]
private int $openingBase25Minutes = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Report N-1 bonus 25% en minutes.', 'default' => 0])]
private int $openingBonus25Minutes = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Report N-1 base 50% en minutes.', 'default' => 0])]
private int $openingBase50Minutes = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Report N-1 bonus 50% en minutes.', 'default' => 0])]
private int $openingBonus50Minutes = 0;
#[ORM\Column(type: 'boolean', options: ['default' => false, 'comment' => 'Indique si le solde est fige (verrouille RH).'])]
private bool $isLocked = false;
@@ -74,18 +86,71 @@ class EmployeeRttBalance
return $this;
}
public function getOpeningMinutes(): int
public function getMonth(): int
{
return $this->openingMinutes;
return $this->month;
}
public function setOpeningMinutes(int $openingMinutes): self
public function setMonth(int $month): self
{
$this->openingMinutes = $openingMinutes;
$this->month = $month;
return $this;
}
public function getOpeningBase25Minutes(): int
{
return $this->openingBase25Minutes;
}
public function setOpeningBase25Minutes(int $openingBase25Minutes): self
{
$this->openingBase25Minutes = $openingBase25Minutes;
return $this;
}
public function getOpeningBonus25Minutes(): int
{
return $this->openingBonus25Minutes;
}
public function setOpeningBonus25Minutes(int $openingBonus25Minutes): self
{
$this->openingBonus25Minutes = $openingBonus25Minutes;
return $this;
}
public function getOpeningBase50Minutes(): int
{
return $this->openingBase50Minutes;
}
public function setOpeningBase50Minutes(int $openingBase50Minutes): self
{
$this->openingBase50Minutes = $openingBase50Minutes;
return $this;
}
public function getOpeningBonus50Minutes(): int
{
return $this->openingBonus50Minutes;
}
public function setOpeningBonus50Minutes(int $openingBonus50Minutes): self
{
$this->openingBonus50Minutes = $openingBonus50Minutes;
return $this;
}
public function getTotalOpeningMinutes(): int
{
return $this->openingBase25Minutes + $this->openingBonus25Minutes + $this->openingBase50Minutes + $this->openingBonus50Minutes;
}
public function isLocked(): bool
{
return $this->isLocked;

View File

@@ -28,11 +28,17 @@ class EmployeeRttPayment
#[ORM\Column(type: 'integer', options: ['comment' => 'Mois du paiement.'])]
private int $month = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Duree en minutes.'])]
private int $minutes = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Base heures palier 25% en minutes.', 'default' => 0])]
private int $base25Minutes = 0;
#[ORM\Column(type: 'string', length: 10, options: ['comment' => 'Taux applique.'])]
private string $rate = '';
#[ORM\Column(type: 'integer', options: ['comment' => 'Bonus 25% en minutes.', 'default' => 0])]
private int $bonus25Minutes = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Base heures palier 50% en minutes.', 'default' => 0])]
private int $base50Minutes = 0;
#[ORM\Column(type: 'integer', options: ['comment' => 'Bonus 50% en minutes.', 'default' => 0])]
private int $bonus50Minutes = 0;
#[ORM\Column(type: 'datetime_immutable')]
private DateTimeImmutable $createdAt;
@@ -88,26 +94,50 @@ class EmployeeRttPayment
return $this;
}
public function getMinutes(): int
public function getBase25Minutes(): int
{
return $this->minutes;
return $this->base25Minutes;
}
public function setMinutes(int $minutes): self
public function setBase25Minutes(int $base25Minutes): self
{
$this->minutes = $minutes;
$this->base25Minutes = $base25Minutes;
return $this;
}
public function getRate(): string
public function getBonus25Minutes(): int
{
return $this->rate;
return $this->bonus25Minutes;
}
public function setRate(string $rate): self
public function setBonus25Minutes(int $bonus25Minutes): self
{
$this->rate = $rate;
$this->bonus25Minutes = $bonus25Minutes;
return $this;
}
public function getBase50Minutes(): int
{
return $this->base50Minutes;
}
public function setBase50Minutes(int $base50Minutes): self
{
$this->base50Minutes = $base50Minutes;
return $this;
}
public function getBonus50Minutes(): int
{
return $this->bonus50Minutes;
}
public function setBonus50Minutes(int $bonus50Minutes): self
{
$this->bonus50Minutes = $bonus50Minutes;
return $this;
}