182 lines
7.8 KiB
Markdown
182 lines
7.8 KiB
Markdown
# ASP Bundle Deep Dive
|
|
|
|
## Ubiquitous Language
|
|
|
|
- **FicheContratAsp**: ASP-facing contract dossier with ASP IDs, statuses, and errors.
|
|
Path: `src/Uriae/AspBundle/Entity/FicheContratAsp.php`
|
|
- **TypeContratAsp**: ASP contract typology (`NPT`, `I`, `R1..R99`) and renewal semantics.
|
|
Path: `src/Uriae/AspBundle/Entity/TypeContratAsp.php`
|
|
- **Suivi**: trace line for ASP file exchanges.
|
|
Path: `src/Uriae/AspBundle/Entity/Suivi.php`
|
|
- **ModificationAsp**: ASP modification request with dedicated lifecycle.
|
|
Path: `src/Uriae/AspBundle/Entity/ModificationAsp.php`
|
|
- **FichierEnvoiAsp / FichierRetourAsp**: outbound/inbound ASP files.
|
|
Paths: `src/Uriae/AspBundle/Entity/AbstractFichierAsp.php`, `src/Uriae/AspBundle/Entity/FichierRetourAsp.php`
|
|
- **SuiviMensuelEtSortieAsp**: monthly batch submission root.
|
|
Path: `src/Uriae/AspBundle/Entity/SuiviMensuelEtSortieAsp.php`
|
|
- **FicheSuiviMensuelEtSortieAsp**: monthly line per contract.
|
|
Path: `src/Uriae/AspBundle/Entity/FicheSuiviMensuelEtSortieAsp.php`
|
|
- **SortieEtSuiviAnnuel / FicheSortieEtSuiviAnnuel**: annual exit/follow-up model.
|
|
Paths: `src/Uriae/AspBundle/Entity/SortieEtSuiviAnnuel.php`, `src/Uriae/AspBundle/Entity/FicheSortieEtSuiviAnnuel.php`
|
|
- **Erreur**: unified internal/return error catalog by ASP domain type.
|
|
Path: `src/Uriae/AspBundle/Entity/Erreur.php`
|
|
|
|
## Domain Core
|
|
|
|
- **De facto root: `FicheContratAsp`**
|
|
- Carries ASP IDs, multi-channel statuses (inscription/sortie/renewal), ASP and internal errors.
|
|
- Hard-linked to `Contrat` (Employee context).
|
|
- Paths:
|
|
- `src/Uriae/AspBundle/Entity/FicheContratAsp.php`
|
|
- `src/Uriae/EmployeeBundle/Entity/Contrat.php`
|
|
|
|
- **Monthly submission cluster**
|
|
- Root: `SuiviMensuelEtSortieAsp`
|
|
- Child lines: `FicheSuiviMensuelEtSortieAsp`
|
|
- Paths:
|
|
- `src/Uriae/AspBundle/Entity/SuiviMensuelEtSortieAsp.php`
|
|
- `src/Uriae/AspBundle/Entity/FicheSuiviMensuelEtSortieAsp.php`
|
|
|
|
- **Annual submission cluster**
|
|
- Root: `SortieEtSuiviAnnuel`
|
|
- Child lines: `FicheSortieEtSuiviAnnuel`
|
|
- Paths:
|
|
- `src/Uriae/AspBundle/Entity/SortieEtSuiviAnnuel.php`
|
|
- `src/Uriae/AspBundle/Entity/FicheSortieEtSuiviAnnuel.php`
|
|
|
|
- **Status behavior**
|
|
- Generic status set in `StatusTrait`.
|
|
- Modification flow has separate status constants.
|
|
- Paths:
|
|
- `src/Uriae/AspBundle/Traits/StatusTrait.php`
|
|
- `src/Uriae/AspBundle/Entity/ModificationAsp.php`
|
|
|
|
## Invariants / Concistency
|
|
|
|
- `src/Uriae/AspBundle/Traits/StatusTrait.php`
|
|
- Status is constrained to allowed values.
|
|
|
|
- `src/Uriae/AspBundle/Entity/FicheContratAsp.php`
|
|
- Clearing both ASP IDs resets auto flags/dates and reverts transfer status branch.
|
|
- Setting both ASP IDs manually marks manual provenance and transmitted status.
|
|
|
|
- `src/Uriae/AspBundle/Entity/TypeContratAsp.php`
|
|
- Contract type codes constrained to `NPT`, `I`, `R1..R99`.
|
|
- Renewal semantics inferred from label set.
|
|
|
|
- `src/Uriae/AspBundle/Repository/FicheContratAspRepository.php`
|
|
- Inscription/renewal/sortie/modification candidate filtering encoded via cross-context query rules.
|
|
- Monthly candidate contracts depend on period overlap + ASP IDs presence.
|
|
|
|
- `src/Uriae/AspBundle/Validator/ErreursInternesValidator.php`
|
|
- EI duration <= 24 months.
|
|
- Work hours/salary/annexe prerequisites.
|
|
- Renewal sequence integrity and ASP ID prerequisites.
|
|
- Aid/resource/PE/agrement consistency mapped to error catalog entries.
|
|
|
|
- `src/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAsp.php`
|
|
- Return-line length depends on SIAE type.
|
|
|
|
- `src/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspSuivieMensuelEtSortie.php`
|
|
- Monthly return line must have expected structure and success code handling.
|
|
|
|
- `src/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspSortieEtSuiviAnnuel.php`
|
|
- Annual return parsing enforces line count format and matching sent file expectations.
|
|
|
|
## Cross-context Dependencies
|
|
|
|
- **ASP -> Employee**
|
|
- `FicheContratAsp` linked to `Contrat`.
|
|
- ASP processing mutates employee-related fields.
|
|
- Paths:
|
|
- `src/Uriae/AspBundle/Entity/FicheContratAsp.php`
|
|
- `src/Uriae/EmployeeBundle/Entity/Contrat.php`
|
|
- `src/Uriae/AspBundle/Manager/AspFicheContratManager.php`
|
|
|
|
- **ASP -> Structure**
|
|
- Depends on structure metadata (`SiaeType`, `AnnexeFinanciere`, measures, ASP IDs).
|
|
- Paths:
|
|
- `src/Uriae/StructureBundle/Entity/Structure.php`
|
|
- `src/Uriae/StructureBundle/Entity/SiaeType.php`
|
|
- `src/Uriae/StructureBundle/Entity/AnnexeFinanciere.php`
|
|
|
|
- **ASP -> Union**
|
|
- Uses sortie/typology references for mappings and checks.
|
|
- Paths:
|
|
- `src/Uriae/UnionBundle/Entity/SituationSortie.php`
|
|
- `src/Uriae/UnionBundle/Entity/TypeSituationSortie.php`
|
|
|
|
- **ASP -> Suivi (indirect reporting coupling)**
|
|
- Aggregated reporting joins via broader employee/bilan query paths.
|
|
- Paths:
|
|
- `src/Uriae/EmployeeBundle/Repository/EmployeeRepository.php`
|
|
- `src/Uriae/BilanBundle/Model/Formatter.php`
|
|
|
|
## DDD Slicing
|
|
|
|
- **Aggregates (candidate)**
|
|
- `AspContractDossier` (replacement concept for `FicheContratAsp`).
|
|
- `AspModificationRequest`.
|
|
- `AspMonthlySubmission` + `MonthlySubmissionLine`.
|
|
- `AspAnnualExitSubmission` + `AnnualExitSubmissionLine`.
|
|
|
|
- **Domain services (candidate)**
|
|
- `AspEligibilityPolicy`.
|
|
- `AspInternalErrorPolicy`.
|
|
- `AspReturnFileParser` (pure parsing).
|
|
- `AspSubmissionDomainService` (state transitions and domain decisions).
|
|
|
|
- **Repository interfaces (domain-facing)**
|
|
- `AspContractDossierRepository`.
|
|
- `AspMonthlySubmissionRepository`.
|
|
- `AspAnnualExitSubmissionRepository`.
|
|
- `AspErrorCatalogRepository`.
|
|
|
|
- **Domain events (candidate)**
|
|
- `AspSubmissionRequested`.
|
|
- `AspSubmissionAccepted`.
|
|
- `AspSubmissionRejected`.
|
|
- `AspIdsAssignedToContract`.
|
|
- `AspInternalRuleViolationDetected`.
|
|
- `AspMonthlyLineAccepted`.
|
|
- `AspMonthlyLineRejected`.
|
|
|
|
- **Value objects (candidate)**
|
|
- `AspEmployeeId`, `AspContractId`.
|
|
- `TransmissionStatus`.
|
|
- `AspErrorCode`.
|
|
- `SubmissionPeriod`.
|
|
- `AnnexeNumber`.
|
|
- `MesureCode`.
|
|
- `AspLineNumber`.
|
|
|
|
## Reading Order
|
|
|
|
1. `src/Uriae/AspBundle/Entity/FicheContratAsp.php`
|
|
2. `src/Uriae/AspBundle/Traits/StatusTrait.php`
|
|
3. `src/Uriae/AspBundle/Entity/TypeContratAsp.php`
|
|
4. `src/Uriae/AspBundle/Repository/FicheContratAspRepository.php`
|
|
5. `src/Uriae/AspBundle/Validator/ErreursInternesValidator.php`
|
|
6. `src/Uriae/AspBundle/Manager/AbstractAspManager.php`
|
|
7. `src/Uriae/AspBundle/Manager/AspFicheContratManager.php`
|
|
8. `src/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAsp.php`
|
|
9. `src/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspRenouvellement.php`
|
|
10. `src/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspModification.php`
|
|
11. `src/Uriae/AspBundle/Controller/AbstractInscriptionRenouvellementSortieController.php`
|
|
12. `src/Uriae/AspBundle/Controller/InscriptionController.php`
|
|
13. `src/Uriae/AspBundle/Controller/RenouvellementController.php`
|
|
14. `src/Uriae/AspBundle/Controller/ModificationController.php`
|
|
15. `src/Uriae/AspBundle/Entity/SuiviMensuelEtSortieAsp.php`
|
|
16. `src/Uriae/AspBundle/Entity/FicheSuiviMensuelEtSortieAsp.php`
|
|
17. `src/Uriae/AspBundle/Manager/SuiviMensuelManager.php`
|
|
18. `src/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspSuivieMensuelEtSortie.php`
|
|
19. `src/Uriae/AspBundle/Entity/SortieEtSuiviAnnuel.php`
|
|
20. `src/Uriae/AspBundle/Entity/FicheSortieEtSuiviAnnuel.php`
|
|
21. `src/Uriae/AspBundle/Model/SortieEtSuiviAnnuelManager.php`
|
|
22. `src/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspSortieEtSuiviAnnuel.php`
|
|
23. `src/Uriae/EmployeeBundle/Entity/Contrat.php`
|
|
24. `src/Uriae/EmployeeBundle/Controller/ContratsController.php`
|
|
25. `src/Uriae/EmployeeBundle/Form/Type/ContratType.php`
|
|
26. `src/Uriae/StructureBundle/Entity/SiaeType.php`
|
|
27. `src/Uriae/UnionBundle/Entity/TypeSituationSortie.php`
|