Loading admin/migration/PJPassageDureeVie.php 0 → 100644 +58 −0 Original line number Diff line number Diff line <?php class PJPassageDureeVie extends AbstractMigration { protected $contexte = self::CONTEXTE_ALL; public function description(): string { return "Initalisation de la durée de vie des pièces justificatives"; } public function utile(): bool { return $this->manager->hasOldColumn('TYPE_PIECE_JOINTE_STATUT', 'PREMIER_RECRUTEMENT') && $this->manager->hasNewColumn('TYPE_PIECE_JOINTE_STATUT', 'DUREE_VIE'); } public function action(string $contexte) { if ($contexte == self::CONTEXTE_PRE) { $this->before(); } else { $this->after(); } } protected function before() { $this->manager->sauvegarderTable('TYPE_PIECE_JOINTE_STATUT', 'TPJS_AJOUT_DUREE_VIE'); } protected function after() { $sql = ' UPDATE TYPE_PIECE_JOINTE_STATUT SET DUREE_VIE = ( SELECT CASE WHEN PREMIER_RECRUTEMENT = 1 THEN 99 ELSE 1 END FROM TPJS_AJOUT_DUREE_VIE O WHERE O.ID = TYPE_PIECE_JOINTE_STATUT.ID )'; $this->manager->getSchema()->getBdd()->exec($sql); $this->manager->supprimerSauvegarde('TPJS_AJOUT_DUREE_VIE'); } } No newline at end of file data/ddl.php +184 −30 Original line number Diff line number Diff line Loading @@ -10808,6 +10808,17 @@ 'default' => NULL, 'commentaire' => NULL, ), 'DATE_ARCHIVE' => array ( 'name' => 'DATE_ARCHIVE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), ), ), 'PIECE_JOINTE_FICHIER' => Loading Loading @@ -14812,6 +14823,17 @@ 'default' => NULL, 'commentaire' => NULL, ), 'CODE_INTERVENANT' => array ( 'name' => 'CODE_INTERVENANT', 'type' => 'VARCHAR2', 'length' => 255, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), ), ), 'TBL_PIECE_JOINTE_FOURNIE' => Loading Loading @@ -14911,6 +14933,50 @@ 'default' => NULL, 'commentaire' => NULL, ), 'DUREE_VIE' => array ( 'name' => 'DUREE_VIE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => false, 'default' => NULL, 'commentaire' => NULL, ), 'CODE_INTERVENANT' => array ( 'name' => 'CODE_INTERVENANT', 'type' => 'VARCHAR2', 'length' => 255, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), 'DATE_VALIDITE' => array ( 'name' => 'DATE_VALIDITE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), 'DATE_ARCHIVE' => array ( 'name' => 'DATE_ARCHIVE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), ), ), 'TBL_SERVICE' => Loading Loading @@ -17903,6 +17969,17 @@ 'default' => '0', 'commentaire' => NULL, ), 'DUREE_VIE' => array ( 'name' => 'DUREE_VIE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => false, 'default' => '1', 'commentaire' => 'Durée de vie de la pièce jointe', ), ), ), 'TYPE_RESSOURCE' => Loading Loading @@ -30661,10 +30738,14 @@ END UNICAEN_TBL;', tv.* FROM (WITH pjf AS ( SELECT SELECT DISTINCT pjf.annee_id, pjf.type_piece_jointe_id, pjf.intervenant_id, pjf.code_intervenant, pjf.date_validite, pjf.duree_vie, pjf.date_archive, COUNT(*) count, SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation, SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier Loading @@ -30672,10 +30753,16 @@ END UNICAEN_TBL;', tbl_piece_jointe_fournie pjf GROUP BY pjf.annee_id, pjf.intervenant_id, pjf.code_intervenant, pjf.type_piece_jointe_id, pjf.intervenant_id pjf.date_validite, pjf.duree_vie, pjf.date_archive ORDER BY pjf.annee_id ASC ) SELECT SELECT DISTINCT COALESCE( pjd.annee_id, pjf.annee_id ) annee_id, COALESCE( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id, COALESCE( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id, Loading @@ -30683,10 +30770,16 @@ END UNICAEN_TBL;', CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie, CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee, COALESCE(pjd.heures_pour_seuil,0) heures_pour_seuil, COALESCE(pjd.obligatoire,1) obligatoire COALESCE(pjd.obligatoire,1) obligatoire, pjf.date_archive FROM tbl_piece_jointe_demande pjd FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id) tv FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjd.code_intervenant = pjf.code_intervenant AND pjd.annee_id BETWEEN pjf.annee_id AND (pjf.annee_id + pjf.duree_vie - 1) AND pjd.annee_id BETWEEN pjf.annee_id AND NVL(pjf.date_archive - 1,(pjf.annee_id + pjf.duree_vie - 1)) ORDER By annee_id) tv WHERE \' || conds || \' Loading Loading @@ -30776,6 +30869,7 @@ END UNICAEN_TBL;', ) SELECT i.annee_id annee_id, i.code code_intervenant, i.id intervenant_id, tpj.id type_piece_jointe_id, MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil, Loading @@ -30801,9 +30895,6 @@ END UNICAEN_TBL;', -- Seuil HETD AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1)) -- En fonction du premier recrutement ou non AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1) -- Le RIB n\'\'est demandé QUE s\'\'il est différent!! AND CASE WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1 Loading @@ -30815,6 +30906,7 @@ END UNICAEN_TBL;', GROUP BY i.annee_id, i.id, i.code, tpj.id, tpjs.obligatoire) tv WHERE Loading @@ -30829,6 +30921,7 @@ END UNICAEN_TBL;', OBLIGATOIRE = v.OBLIGATOIRE, HEURES_POUR_SEUIL = v.HEURES_POUR_SEUIL, ANNEE_ID = v.ANNEE_ID, CODE_INTERVENANT = v.CODE_INTERVENANT, to_delete = 0 WHEN NOT MATCHED THEN INSERT ( Loading @@ -30839,6 +30932,7 @@ END UNICAEN_TBL;', INTERVENANT_ID, TYPE_PIECE_JOINTE_ID, ANNEE_ID, CODE_INTERVENANT, TO_DELETE ) VALUES ( Loading @@ -30849,6 +30943,7 @@ END UNICAEN_TBL;', v.INTERVENANT_ID, v.TYPE_PIECE_JOINTE_ID, v.ANNEE_ID, v.CODE_INTERVENANT, 0 ); Loading Loading @@ -30877,13 +30972,17 @@ END UNICAEN_TBL;', SELECT tv.* FROM (SELECT (SELECT DISTINCT i.annee_id, i.code code_intervenant, pj.type_piece_jointe_id, pj.intervenant_id, pj.id piece_jointe_id, v.id validation_id, f.id fichier_id f.id fichier_id, MAX(tpjs.duree_vie) duree_vie, MAX(i.annee_id+duree_vie) date_validite, pj.date_archive date_archive FROM piece_jointe pj JOIN intervenant i ON i.id = pj.intervenant_id Loading @@ -30892,11 +30991,23 @@ END UNICAEN_TBL;', JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id JOIN fichier f ON f.id = pjf.fichier_id AND f.histo_destruction IS NULL JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id AND tpjs.HISTO_DESTRUCTION IS NULL LEFT JOIN validation v ON v.id = pj.validation_id AND v.histo_destruction IS NULL WHERE pj.histo_destruction IS NULL) tv pj.histo_destruction IS NULL GROUP BY i.annee_id, i.code, pj.type_piece_jointe_id, pj.intervenant_id, pj.id, v.id, f.id, pj.date_archive) tv WHERE \' || conds || \' Loading @@ -30910,6 +31021,10 @@ END UNICAEN_TBL;', PIECE_JOINTE_ID = v.PIECE_JOINTE_ID, ANNEE_ID = v.ANNEE_ID, DATE_ARCHIVE = v.DATE_ARCHIVE, DATE_VALIDITE = v.DATE_VALIDITE, CODE_INTERVENANT = v.CODE_INTERVENANT, DUREE_VIE = v.DUREE_VIE, to_delete = 0 WHEN NOT MATCHED THEN INSERT ( Loading @@ -30921,6 +31036,10 @@ END UNICAEN_TBL;', INTERVENANT_ID, TYPE_PIECE_JOINTE_ID, ANNEE_ID, DATE_ARCHIVE, DATE_VALIDITE, CODE_INTERVENANT, DUREE_VIE, TO_DELETE ) VALUES ( Loading @@ -30932,6 +31051,11 @@ END UNICAEN_TBL;', v.INTERVENANT_ID, v.TYPE_PIECE_JOINTE_ID, v.ANNEE_ID, v.PIECE_JOINTE_ID, v.DATE_ARCHIVE, v.DATE_VALIDITE, v.CODE_INTERVENANT, v.DUREE_VIE, 0 ); Loading Loading @@ -36435,10 +36559,14 @@ FROM 'name' => 'V_TBL_PIECE_JOINTE', 'definition' => 'CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE AS WITH pjf AS ( SELECT SELECT DISTINCT pjf.annee_id, pjf.type_piece_jointe_id, pjf.intervenant_id, pjf.code_intervenant, pjf.date_validite, pjf.duree_vie, pjf.date_archive, COUNT(*) count, SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation, SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier Loading @@ -36446,10 +36574,16 @@ WITH pjf AS ( tbl_piece_jointe_fournie pjf GROUP BY pjf.annee_id, pjf.intervenant_id, pjf.code_intervenant, pjf.type_piece_jointe_id, pjf.intervenant_id pjf.date_validite, pjf.duree_vie, pjf.date_archive ORDER BY pjf.annee_id ASC ) SELECT SELECT DISTINCT COALESCE( pjd.annee_id, pjf.annee_id ) annee_id, COALESCE( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id, COALESCE( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id, Loading @@ -36457,10 +36591,16 @@ SELECT CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie, CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee, COALESCE(pjd.heures_pour_seuil,0) heures_pour_seuil, COALESCE(pjd.obligatoire,1) obligatoire COALESCE(pjd.obligatoire,1) obligatoire, pjf.date_archive FROM tbl_piece_jointe_demande pjd FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id', FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjd.code_intervenant = pjf.code_intervenant AND pjd.annee_id BETWEEN pjf.annee_id AND (pjf.annee_id + pjf.duree_vie - 1) AND pjd.annee_id BETWEEN pjf.annee_id AND NVL(pjf.date_archive - 1,(pjf.annee_id + pjf.duree_vie - 1)) ORDER By annee_id', ), 'V_TBL_PIECE_JOINTE_DEMANDE' => array ( Loading @@ -36486,6 +36626,7 @@ WITH i_h AS ( ) SELECT i.annee_id annee_id, i.code code_intervenant, i.id intervenant_id, tpj.id type_piece_jointe_id, MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil, Loading @@ -36511,9 +36652,6 @@ WHERE -- Seuil HETD AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1)) -- En fonction du premier recrutement ou non AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1) -- Le RIB n\'est demandé QUE s\'il est différent!! AND CASE WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1 Loading @@ -36525,6 +36663,7 @@ WHERE GROUP BY i.annee_id, i.id, i.code, tpj.id, tpjs.obligatoire', ), Loading @@ -36532,26 +36671,41 @@ GROUP BY array ( 'name' => 'V_TBL_PIECE_JOINTE_FOURNIE', 'definition' => 'CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE_FOURNIE AS SELECT SELECT DISTINCT i.annee_id, i.code code_intervenant, pj.type_piece_jointe_id, pj.intervenant_id, pj.id piece_jointe_id, v.id validation_id, f.id fichier_id f.id fichier_id, MAX(tpjs.duree_vie) duree_vie, MAX(i.annee_id+duree_vie) date_validite, pj.date_archive date_archive FROM piece_jointe pj JOIN intervenant i ON i.id = pj.intervenant_id AND i.histo_destruction IS NULL JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id JOIN fichier f ON f.id = pjf.fichier_id AND f.histo_destruction IS NULL JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id AND tpjs.HISTO_DESTRUCTION IS NULL LEFT JOIN validation v ON v.id = pj.validation_id AND v.histo_destruction IS NULL WHERE pj.histo_destruction IS NULL', pj.histo_destruction IS NULL GROUP BY i.annee_id, i.code, pj.type_piece_jointe_id, pj.intervenant_id, pj.id, v.id, f.id, pj.date_archive', ), 'V_TBL_SERVICE' => array ( data/ddl_config.php +1 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ return [ 'TYPE_DOTATION', 'ELEMENT_TAUX_REGIMES_SAVE', 'TBL_DOSSIER2', 'FORMULE_TEST_STRUCTURE', ]], \BddAdmin\Ddl\DdlMaterializedView::class => ['includes' => [ Loading docker-compose.yml +2 −1 Original line number Diff line number Diff line Loading @@ -4,8 +4,9 @@ version: '3' # 172.21.0.10 ose-dev.localhost services: ose-dev: ose-dev-test: container_name: ose-dev image: ose-dev:php7.4 environment: XDEBUG_CONFIG: remote_host=172.17.0.1 Loading module/Application/config/dossier-pieces.config.php +29 −14 Original line number Diff line number Diff line Loading @@ -142,6 +142,19 @@ return [ ], ], ], 'archiver' => [ // archiver la PJ 'type' => 'Segment', 'options' => [ 'route' => '/archiver/:pieceJointe', 'constraints' => [ 'pieceJointe' => '[0-9]*', ], 'defaults' => [ 'action' => 'archiver', ], ], ], 'fichier' => [ 'type' => 'Literal', 'options' => [ Loading @@ -153,9 +166,11 @@ return [ // lister les fichiers d'une PJ 'type' => 'Segment', 'options' => [ 'route' => '/lister/:typePieceJointe', 'route' => '/lister/:typePieceJointe/:pieceJointe', 'constraints' => [ 'typePieceJointe' => '[0-9]*', 'pieceJointe' => '[0-9]*', ], 'defaults' => [ 'action' => 'lister', Loading Loading @@ -345,7 +360,7 @@ return [ 'guards' => [ PrivilegeController::class => [ /* Dossier */ [ [//Créer un droit archivage 'controller' => 'Application\Controller\Dossier', 'action' => ['index'], 'privileges' => [Privileges::DOSSIER_VISUALISATION], Loading Loading @@ -430,7 +445,7 @@ return [ ], [ 'controller' => 'Application\Controller\PieceJointe', 'action' => ['televerser', 'supprimer'], 'action' => ['televerser', 'supprimer', 'archiver'], 'privileges' => Privileges::PIECE_JUSTIFICATIVE_EDITION, 'assertion' => Assertion\DossierPiecesAssertion::class, ], Loading Loading
admin/migration/PJPassageDureeVie.php 0 → 100644 +58 −0 Original line number Diff line number Diff line <?php class PJPassageDureeVie extends AbstractMigration { protected $contexte = self::CONTEXTE_ALL; public function description(): string { return "Initalisation de la durée de vie des pièces justificatives"; } public function utile(): bool { return $this->manager->hasOldColumn('TYPE_PIECE_JOINTE_STATUT', 'PREMIER_RECRUTEMENT') && $this->manager->hasNewColumn('TYPE_PIECE_JOINTE_STATUT', 'DUREE_VIE'); } public function action(string $contexte) { if ($contexte == self::CONTEXTE_PRE) { $this->before(); } else { $this->after(); } } protected function before() { $this->manager->sauvegarderTable('TYPE_PIECE_JOINTE_STATUT', 'TPJS_AJOUT_DUREE_VIE'); } protected function after() { $sql = ' UPDATE TYPE_PIECE_JOINTE_STATUT SET DUREE_VIE = ( SELECT CASE WHEN PREMIER_RECRUTEMENT = 1 THEN 99 ELSE 1 END FROM TPJS_AJOUT_DUREE_VIE O WHERE O.ID = TYPE_PIECE_JOINTE_STATUT.ID )'; $this->manager->getSchema()->getBdd()->exec($sql); $this->manager->supprimerSauvegarde('TPJS_AJOUT_DUREE_VIE'); } } No newline at end of file
data/ddl.php +184 −30 Original line number Diff line number Diff line Loading @@ -10808,6 +10808,17 @@ 'default' => NULL, 'commentaire' => NULL, ), 'DATE_ARCHIVE' => array ( 'name' => 'DATE_ARCHIVE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), ), ), 'PIECE_JOINTE_FICHIER' => Loading Loading @@ -14812,6 +14823,17 @@ 'default' => NULL, 'commentaire' => NULL, ), 'CODE_INTERVENANT' => array ( 'name' => 'CODE_INTERVENANT', 'type' => 'VARCHAR2', 'length' => 255, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), ), ), 'TBL_PIECE_JOINTE_FOURNIE' => Loading Loading @@ -14911,6 +14933,50 @@ 'default' => NULL, 'commentaire' => NULL, ), 'DUREE_VIE' => array ( 'name' => 'DUREE_VIE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => false, 'default' => NULL, 'commentaire' => NULL, ), 'CODE_INTERVENANT' => array ( 'name' => 'CODE_INTERVENANT', 'type' => 'VARCHAR2', 'length' => 255, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), 'DATE_VALIDITE' => array ( 'name' => 'DATE_VALIDITE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), 'DATE_ARCHIVE' => array ( 'name' => 'DATE_ARCHIVE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => true, 'default' => NULL, 'commentaire' => NULL, ), ), ), 'TBL_SERVICE' => Loading Loading @@ -17903,6 +17969,17 @@ 'default' => '0', 'commentaire' => NULL, ), 'DUREE_VIE' => array ( 'name' => 'DUREE_VIE', 'type' => 'NUMBER', 'length' => 0, 'scale' => NULL, 'precision' => NULL, 'nullable' => false, 'default' => '1', 'commentaire' => 'Durée de vie de la pièce jointe', ), ), ), 'TYPE_RESSOURCE' => Loading Loading @@ -30661,10 +30738,14 @@ END UNICAEN_TBL;', tv.* FROM (WITH pjf AS ( SELECT SELECT DISTINCT pjf.annee_id, pjf.type_piece_jointe_id, pjf.intervenant_id, pjf.code_intervenant, pjf.date_validite, pjf.duree_vie, pjf.date_archive, COUNT(*) count, SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation, SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier Loading @@ -30672,10 +30753,16 @@ END UNICAEN_TBL;', tbl_piece_jointe_fournie pjf GROUP BY pjf.annee_id, pjf.intervenant_id, pjf.code_intervenant, pjf.type_piece_jointe_id, pjf.intervenant_id pjf.date_validite, pjf.duree_vie, pjf.date_archive ORDER BY pjf.annee_id ASC ) SELECT SELECT DISTINCT COALESCE( pjd.annee_id, pjf.annee_id ) annee_id, COALESCE( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id, COALESCE( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id, Loading @@ -30683,10 +30770,16 @@ END UNICAEN_TBL;', CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie, CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee, COALESCE(pjd.heures_pour_seuil,0) heures_pour_seuil, COALESCE(pjd.obligatoire,1) obligatoire COALESCE(pjd.obligatoire,1) obligatoire, pjf.date_archive FROM tbl_piece_jointe_demande pjd FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id) tv FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjd.code_intervenant = pjf.code_intervenant AND pjd.annee_id BETWEEN pjf.annee_id AND (pjf.annee_id + pjf.duree_vie - 1) AND pjd.annee_id BETWEEN pjf.annee_id AND NVL(pjf.date_archive - 1,(pjf.annee_id + pjf.duree_vie - 1)) ORDER By annee_id) tv WHERE \' || conds || \' Loading Loading @@ -30776,6 +30869,7 @@ END UNICAEN_TBL;', ) SELECT i.annee_id annee_id, i.code code_intervenant, i.id intervenant_id, tpj.id type_piece_jointe_id, MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil, Loading @@ -30801,9 +30895,6 @@ END UNICAEN_TBL;', -- Seuil HETD AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1)) -- En fonction du premier recrutement ou non AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1) -- Le RIB n\'\'est demandé QUE s\'\'il est différent!! AND CASE WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1 Loading @@ -30815,6 +30906,7 @@ END UNICAEN_TBL;', GROUP BY i.annee_id, i.id, i.code, tpj.id, tpjs.obligatoire) tv WHERE Loading @@ -30829,6 +30921,7 @@ END UNICAEN_TBL;', OBLIGATOIRE = v.OBLIGATOIRE, HEURES_POUR_SEUIL = v.HEURES_POUR_SEUIL, ANNEE_ID = v.ANNEE_ID, CODE_INTERVENANT = v.CODE_INTERVENANT, to_delete = 0 WHEN NOT MATCHED THEN INSERT ( Loading @@ -30839,6 +30932,7 @@ END UNICAEN_TBL;', INTERVENANT_ID, TYPE_PIECE_JOINTE_ID, ANNEE_ID, CODE_INTERVENANT, TO_DELETE ) VALUES ( Loading @@ -30849,6 +30943,7 @@ END UNICAEN_TBL;', v.INTERVENANT_ID, v.TYPE_PIECE_JOINTE_ID, v.ANNEE_ID, v.CODE_INTERVENANT, 0 ); Loading Loading @@ -30877,13 +30972,17 @@ END UNICAEN_TBL;', SELECT tv.* FROM (SELECT (SELECT DISTINCT i.annee_id, i.code code_intervenant, pj.type_piece_jointe_id, pj.intervenant_id, pj.id piece_jointe_id, v.id validation_id, f.id fichier_id f.id fichier_id, MAX(tpjs.duree_vie) duree_vie, MAX(i.annee_id+duree_vie) date_validite, pj.date_archive date_archive FROM piece_jointe pj JOIN intervenant i ON i.id = pj.intervenant_id Loading @@ -30892,11 +30991,23 @@ END UNICAEN_TBL;', JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id JOIN fichier f ON f.id = pjf.fichier_id AND f.histo_destruction IS NULL JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id AND tpjs.HISTO_DESTRUCTION IS NULL LEFT JOIN validation v ON v.id = pj.validation_id AND v.histo_destruction IS NULL WHERE pj.histo_destruction IS NULL) tv pj.histo_destruction IS NULL GROUP BY i.annee_id, i.code, pj.type_piece_jointe_id, pj.intervenant_id, pj.id, v.id, f.id, pj.date_archive) tv WHERE \' || conds || \' Loading @@ -30910,6 +31021,10 @@ END UNICAEN_TBL;', PIECE_JOINTE_ID = v.PIECE_JOINTE_ID, ANNEE_ID = v.ANNEE_ID, DATE_ARCHIVE = v.DATE_ARCHIVE, DATE_VALIDITE = v.DATE_VALIDITE, CODE_INTERVENANT = v.CODE_INTERVENANT, DUREE_VIE = v.DUREE_VIE, to_delete = 0 WHEN NOT MATCHED THEN INSERT ( Loading @@ -30921,6 +31036,10 @@ END UNICAEN_TBL;', INTERVENANT_ID, TYPE_PIECE_JOINTE_ID, ANNEE_ID, DATE_ARCHIVE, DATE_VALIDITE, CODE_INTERVENANT, DUREE_VIE, TO_DELETE ) VALUES ( Loading @@ -30932,6 +31051,11 @@ END UNICAEN_TBL;', v.INTERVENANT_ID, v.TYPE_PIECE_JOINTE_ID, v.ANNEE_ID, v.PIECE_JOINTE_ID, v.DATE_ARCHIVE, v.DATE_VALIDITE, v.CODE_INTERVENANT, v.DUREE_VIE, 0 ); Loading Loading @@ -36435,10 +36559,14 @@ FROM 'name' => 'V_TBL_PIECE_JOINTE', 'definition' => 'CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE AS WITH pjf AS ( SELECT SELECT DISTINCT pjf.annee_id, pjf.type_piece_jointe_id, pjf.intervenant_id, pjf.code_intervenant, pjf.date_validite, pjf.duree_vie, pjf.date_archive, COUNT(*) count, SUM(CASE WHEN validation_id IS NULL THEN 0 ELSE 1 END) validation, SUM(CASE WHEN fichier_id IS NULL THEN 0 ELSE 1 END) fichier Loading @@ -36446,10 +36574,16 @@ WITH pjf AS ( tbl_piece_jointe_fournie pjf GROUP BY pjf.annee_id, pjf.intervenant_id, pjf.code_intervenant, pjf.type_piece_jointe_id, pjf.intervenant_id pjf.date_validite, pjf.duree_vie, pjf.date_archive ORDER BY pjf.annee_id ASC ) SELECT SELECT DISTINCT COALESCE( pjd.annee_id, pjf.annee_id ) annee_id, COALESCE( pjd.type_piece_jointe_id, pjf.type_piece_jointe_id ) type_piece_jointe_id, COALESCE( pjd.intervenant_id, pjf.intervenant_id ) intervenant_id, Loading @@ -36457,10 +36591,16 @@ SELECT CASE WHEN pjf.fichier = pjf.count THEN 1 ELSE 0 END fournie, CASE WHEN pjf.validation = pjf.count THEN 1 ELSE 0 END validee, COALESCE(pjd.heures_pour_seuil,0) heures_pour_seuil, COALESCE(pjd.obligatoire,1) obligatoire COALESCE(pjd.obligatoire,1) obligatoire, pjf.date_archive FROM tbl_piece_jointe_demande pjd FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjf.intervenant_id = pjd.intervenant_id', FULL JOIN pjf ON pjf.type_piece_jointe_id = pjd.type_piece_jointe_id AND pjd.code_intervenant = pjf.code_intervenant AND pjd.annee_id BETWEEN pjf.annee_id AND (pjf.annee_id + pjf.duree_vie - 1) AND pjd.annee_id BETWEEN pjf.annee_id AND NVL(pjf.date_archive - 1,(pjf.annee_id + pjf.duree_vie - 1)) ORDER By annee_id', ), 'V_TBL_PIECE_JOINTE_DEMANDE' => array ( Loading @@ -36486,6 +36626,7 @@ WITH i_h AS ( ) SELECT i.annee_id annee_id, i.code code_intervenant, i.id intervenant_id, tpj.id type_piece_jointe_id, MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil, Loading @@ -36511,9 +36652,6 @@ WHERE -- Seuil HETD AND (COALESCE(i_h.heures,0) > COALESCE(tpjs.seuil_hetd,-1)) -- En fonction du premier recrutement ou non AND (tpjs.premier_recrutement = 0 OR COALESCE(i.premier_recrutement,0) = 1) -- Le RIB n\'est demandé QUE s\'il est différent!! AND CASE WHEN tpjs.changement_rib = 0 OR d.id IS NULL THEN 1 Loading @@ -36525,6 +36663,7 @@ WHERE GROUP BY i.annee_id, i.id, i.code, tpj.id, tpjs.obligatoire', ), Loading @@ -36532,26 +36671,41 @@ GROUP BY array ( 'name' => 'V_TBL_PIECE_JOINTE_FOURNIE', 'definition' => 'CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE_FOURNIE AS SELECT SELECT DISTINCT i.annee_id, i.code code_intervenant, pj.type_piece_jointe_id, pj.intervenant_id, pj.id piece_jointe_id, v.id validation_id, f.id fichier_id f.id fichier_id, MAX(tpjs.duree_vie) duree_vie, MAX(i.annee_id+duree_vie) date_validite, pj.date_archive date_archive FROM piece_jointe pj JOIN intervenant i ON i.id = pj.intervenant_id AND i.histo_destruction IS NULL JOIN piece_jointe_fichier pjf ON pjf.piece_jointe_id = pj.id JOIN fichier f ON f.id = pjf.fichier_id AND f.histo_destruction IS NULL JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id AND tpjs.HISTO_DESTRUCTION IS NULL LEFT JOIN validation v ON v.id = pj.validation_id AND v.histo_destruction IS NULL WHERE pj.histo_destruction IS NULL', pj.histo_destruction IS NULL GROUP BY i.annee_id, i.code, pj.type_piece_jointe_id, pj.intervenant_id, pj.id, v.id, f.id, pj.date_archive', ), 'V_TBL_SERVICE' => array (
data/ddl_config.php +1 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ return [ 'TYPE_DOTATION', 'ELEMENT_TAUX_REGIMES_SAVE', 'TBL_DOSSIER2', 'FORMULE_TEST_STRUCTURE', ]], \BddAdmin\Ddl\DdlMaterializedView::class => ['includes' => [ Loading
docker-compose.yml +2 −1 Original line number Diff line number Diff line Loading @@ -4,8 +4,9 @@ version: '3' # 172.21.0.10 ose-dev.localhost services: ose-dev: ose-dev-test: container_name: ose-dev image: ose-dev:php7.4 environment: XDEBUG_CONFIG: remote_host=172.17.0.1 Loading
module/Application/config/dossier-pieces.config.php +29 −14 Original line number Diff line number Diff line Loading @@ -142,6 +142,19 @@ return [ ], ], ], 'archiver' => [ // archiver la PJ 'type' => 'Segment', 'options' => [ 'route' => '/archiver/:pieceJointe', 'constraints' => [ 'pieceJointe' => '[0-9]*', ], 'defaults' => [ 'action' => 'archiver', ], ], ], 'fichier' => [ 'type' => 'Literal', 'options' => [ Loading @@ -153,9 +166,11 @@ return [ // lister les fichiers d'une PJ 'type' => 'Segment', 'options' => [ 'route' => '/lister/:typePieceJointe', 'route' => '/lister/:typePieceJointe/:pieceJointe', 'constraints' => [ 'typePieceJointe' => '[0-9]*', 'pieceJointe' => '[0-9]*', ], 'defaults' => [ 'action' => 'lister', Loading Loading @@ -345,7 +360,7 @@ return [ 'guards' => [ PrivilegeController::class => [ /* Dossier */ [ [//Créer un droit archivage 'controller' => 'Application\Controller\Dossier', 'action' => ['index'], 'privileges' => [Privileges::DOSSIER_VISUALISATION], Loading Loading @@ -430,7 +445,7 @@ return [ ], [ 'controller' => 'Application\Controller\PieceJointe', 'action' => ['televerser', 'supprimer'], 'action' => ['televerser', 'supprimer', 'archiver'], 'privileges' => Privileges::PIECE_JUSTIFICATIVE_EDITION, 'assertion' => Assertion\DossierPiecesAssertion::class, ], Loading