Files
Lesstime/migrations/Version20260521123521.php
Matthieu de98924fd3 feat(absences) : fondation backend du module de gestion des absences
Module type Payfit (étapes 1+2 de la spec V1) : demande d'absence, validation
admin, soldes à jour.

- Enums : AbsenceType, AbsenceStatus, HalfDay, ContractType, FamilySituation
- Entités : AbsencePolicy, AbsenceBalance, AbsenceRequest + champs RH sur User
- Services : PublicHolidayProvider (fériés FR métropole en PHP pur, Computus),
  AbsenceDayCalculator (décompte jours ouvrés/ouvrables + demi-journées, TDD),
  AbsenceBalanceService (périodes + pending/taken/recrédit)
- API Platform : providers/processors (création, approve/reject/cancel) + RBAC
  me/admin, contrôleurs preview (dry-run), upload/download justificatif, calendrier
- Migrations : une par table + colonnes RH user (DEFAULT puis DROP DEFAULT)
- Fixtures : 5 policies par défaut, salariés démo, soldes et demandes
- Tests unitaires : PublicHolidayProvider, AbsenceDayCalculator (12 tests)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 14:45:14 +02:00

50 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Absence management: create the absence_balance table.
*/
final class Version20260521123521 extends AbstractMigration
{
public function getDescription(): string
{
return 'Create absence_balance table';
}
public function up(Schema $schema): void
{
$this->addSql(<<<'SQL'
CREATE TABLE absence_balance (
id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
type VARCHAR(32) NOT NULL,
period VARCHAR(16) NOT NULL,
acquired DOUBLE PRECISION NOT NULL,
taken DOUBLE PRECISION NOT NULL,
pending DOUBLE PRECISION NOT NULL,
user_id INT NOT NULL,
PRIMARY KEY (id)
)
SQL);
$this->addSql('CREATE INDEX IDX_65723A76A76ED395 ON absence_balance (user_id)');
$this->addSql('CREATE UNIQUE INDEX uniq_absence_balance_user_type_period ON absence_balance (user_id, type, period)');
$this->addSql(<<<'SQL'
ALTER TABLE
absence_balance
ADD
CONSTRAINT FK_65723A76A76ED395 FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE NOT DEFERRABLE
SQL);
}
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE absence_balance DROP CONSTRAINT FK_65723A76A76ED395');
$this->addSql('DROP TABLE absence_balance');
}
}