7.8 KiB
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.phpsrc/Uriae/EmployeeBundle/Entity/Contrat.php
-
Monthly submission cluster
- Root:
SuiviMensuelEtSortieAsp - Child lines:
FicheSuiviMensuelEtSortieAsp - Paths:
src/Uriae/AspBundle/Entity/SuiviMensuelEtSortieAsp.phpsrc/Uriae/AspBundle/Entity/FicheSuiviMensuelEtSortieAsp.php
- Root:
-
Annual submission cluster
- Root:
SortieEtSuiviAnnuel - Child lines:
FicheSortieEtSuiviAnnuel - Paths:
src/Uriae/AspBundle/Entity/SortieEtSuiviAnnuel.phpsrc/Uriae/AspBundle/Entity/FicheSortieEtSuiviAnnuel.php
- Root:
-
Status behavior
- Generic status set in
StatusTrait. - Modification flow has separate status constants.
- Paths:
src/Uriae/AspBundle/Traits/StatusTrait.phpsrc/Uriae/AspBundle/Entity/ModificationAsp.php
- Generic status set in
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.
- Contract type codes constrained to
-
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
FicheContratAsplinked toContrat.- ASP processing mutates employee-related fields.
- Paths:
src/Uriae/AspBundle/Entity/FicheContratAsp.phpsrc/Uriae/EmployeeBundle/Entity/Contrat.phpsrc/Uriae/AspBundle/Manager/AspFicheContratManager.php
-
ASP -> Structure
- Depends on structure metadata (
SiaeType,AnnexeFinanciere, measures, ASP IDs). - Paths:
src/Uriae/StructureBundle/Entity/Structure.phpsrc/Uriae/StructureBundle/Entity/SiaeType.phpsrc/Uriae/StructureBundle/Entity/AnnexeFinanciere.php
- Depends on structure metadata (
-
ASP -> Union
- Uses sortie/typology references for mappings and checks.
- Paths:
src/Uriae/UnionBundle/Entity/SituationSortie.phpsrc/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.phpsrc/Uriae/BilanBundle/Model/Formatter.php
DDD Slicing
-
Aggregates (candidate)
AspContractDossier(replacement concept forFicheContratAsp).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
src/Uriae/AspBundle/Entity/FicheContratAsp.phpsrc/Uriae/AspBundle/Traits/StatusTrait.phpsrc/Uriae/AspBundle/Entity/TypeContratAsp.phpsrc/Uriae/AspBundle/Repository/FicheContratAspRepository.phpsrc/Uriae/AspBundle/Validator/ErreursInternesValidator.phpsrc/Uriae/AspBundle/Manager/AbstractAspManager.phpsrc/Uriae/AspBundle/Manager/AspFicheContratManager.phpsrc/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAsp.phpsrc/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspRenouvellement.phpsrc/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspModification.phpsrc/Uriae/AspBundle/Controller/AbstractInscriptionRenouvellementSortieController.phpsrc/Uriae/AspBundle/Controller/InscriptionController.phpsrc/Uriae/AspBundle/Controller/RenouvellementController.phpsrc/Uriae/AspBundle/Controller/ModificationController.phpsrc/Uriae/AspBundle/Entity/SuiviMensuelEtSortieAsp.phpsrc/Uriae/AspBundle/Entity/FicheSuiviMensuelEtSortieAsp.phpsrc/Uriae/AspBundle/Manager/SuiviMensuelManager.phpsrc/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspSuivieMensuelEtSortie.phpsrc/Uriae/AspBundle/Entity/SortieEtSuiviAnnuel.phpsrc/Uriae/AspBundle/Entity/FicheSortieEtSuiviAnnuel.phpsrc/Uriae/AspBundle/Model/SortieEtSuiviAnnuelManager.phpsrc/Uriae/AspBundle/Model/FichierRetourAsp/ProcessFichierRetourAspSortieEtSuiviAnnuel.phpsrc/Uriae/EmployeeBundle/Entity/Contrat.phpsrc/Uriae/EmployeeBundle/Controller/ContratsController.phpsrc/Uriae/EmployeeBundle/Form/Type/ContratType.phpsrc/Uriae/StructureBundle/Entity/SiaeType.phpsrc/Uriae/UnionBundle/Entity/TypeSituationSortie.php