Loading composer.lock +107 −46 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "7a7db71710b834c735285baffb020cd0", "content-hash": "e34098a8e70d6a7c335de21eb2633b00", "packages": [ { "name": "apereo/phpcas", Loading Loading @@ -850,26 +850,29 @@ }, { "name": "doctrine/deprecations", "version": "1.1.4", "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "conflict": { "phpunit/phpunit": "<=7.5 || >=13" }, "require-dev": { "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "1.4.10 || 2.0.3", "doctrine/coding-standard": "^9 || ^12 || ^13", "phpstan/phpstan": "1.4.10 || 2.1.11", "phpstan/phpstan-phpunit": "^1.0 || ^2", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", "psr/log": "^1 || ^2 || ^3" }, "suggest": { Loading @@ -889,9 +892,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", "source": "https://github.com/doctrine/deprecations/tree/1.1.4" "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, "time": "2024-12-07T21:18:45+00:00" "time": "2025-04-07T20:06:18+00:00" }, { "name": "doctrine/doctrine-laminas-hydrator", Loading Loading @@ -3107,16 +3110,16 @@ }, { "name": "laminas/laminas-i18n", "version": "2.29.0", "version": "2.30.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", "reference": "9aa7ef6073556e9b4cfd8d9a0cb8e41cd3883454" "reference": "397907ee061e147939364df9d6c485ac1e0fed87" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/9aa7ef6073556e9b4cfd8d9a0cb8e41cd3883454", "reference": "9aa7ef6073556e9b4cfd8d9a0cb8e41cd3883454", "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/397907ee061e147939364df9d6c485ac1e0fed87", "reference": "397907ee061e147939364df9d6c485ac1e0fed87", "shasum": "" }, "require": { Loading @@ -3131,18 +3134,18 @@ "zendframework/zend-i18n": "*" }, "require-dev": { "laminas/laminas-cache": "^3.12.1", "laminas/laminas-cache-storage-adapter-memory": "^2.3.0", "laminas/laminas-cache-storage-deprecated-factory": "^1.2", "laminas/laminas-cache": "^3.13.0", "laminas/laminas-cache-storage-adapter-memory": "^2.4.0", "laminas/laminas-cache-storage-deprecated-factory": "^1.3", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-config": "^3.9.0", "laminas/laminas-eventmanager": "^3.13", "laminas/laminas-filter": "^2.34", "laminas/laminas-validator": "^2.49", "laminas/laminas-view": "^2.34", "phpunit/phpunit": "^10.5.11", "psalm/plugin-phpunit": "^0.19.0", "vimeo/psalm": "^5.22.2" "laminas/laminas-config": "^3.10.1", "laminas/laminas-eventmanager": "^3.14.0", "laminas/laminas-filter": "^2.40", "laminas/laminas-validator": "^2.64.2", "laminas/laminas-view": "^2.36", "phpunit/phpunit": "^10.5.45", "psalm/plugin-phpunit": "^0.19.5", "vimeo/psalm": "^6.10.0" }, "suggest": { "laminas/laminas-cache": "You should install this package to cache the translations", Loading Loading @@ -3189,7 +3192,7 @@ "type": "community_bridge" } ], "time": "2024-10-11T09:44:53+00:00" "time": "2025-04-15T09:07:02+00:00" }, { "name": "laminas/laminas-i18n-resources", Loading Loading @@ -3252,16 +3255,16 @@ }, { "name": "laminas/laminas-inputfilter", "version": "2.31.0", "version": "2.32.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-inputfilter.git", "reference": "214b033769616f4211ffb63b432b716d786622c9" "reference": "5f04f1e5a6b1bd3c82114b6ea748a70ce65787f6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/214b033769616f4211ffb63b432b716d786622c9", "reference": "214b033769616f4211ffb63b432b716d786622c9", "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/5f04f1e5a6b1bd3c82114b6ea748a70ce65787f6", "reference": "5f04f1e5a6b1bd3c82114b6ea748a70ce65787f6", "shasum": "" }, "require": { Loading @@ -3276,11 +3279,11 @@ }, "require-dev": { "ext-json": "*", "laminas/laminas-coding-standard": "~3.0", "phpunit/phpunit": "^10.5.20", "psalm/plugin-phpunit": "^0.19.0", "laminas/laminas-coding-standard": "^3.0.1", "phpunit/phpunit": "^10.5.45", "psalm/plugin-phpunit": "^0.19.5", "psr/http-message": "^2.0", "vimeo/psalm": "^5.24.0", "vimeo/psalm": "^6.10.0", "webmozart/assert": "^1.11" }, "suggest": { Loading Loading @@ -3322,7 +3325,7 @@ "type": "community_bridge" } ], "time": "2024-11-15T20:17:41+00:00" "time": "2025-04-14T00:23:41+00:00" }, { "name": "laminas/laminas-json", Loading Loading @@ -9138,16 +9141,16 @@ }, { "name": "phpdocumentor/reflection-docblock", "version": "5.6.1", "version": "5.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62", "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62", "shasum": "" }, "require": { Loading Loading @@ -9196,9 +9199,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2" }, "time": "2024-12-07T09:39:29+00:00" "time": "2025-04-13T19:20:35+00:00" }, { "name": "phpdocumentor/type-resolver", Loading Loading @@ -9388,6 +9391,64 @@ }, "time": "2025-02-19T13:28:12+00:00" }, { "name": "phpstan/phpstan", "version": "2.1.13", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", "reference": "e55e03e6d4ac49cd1240907e5b08e5cd378572a9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e55e03e6d4ac49cd1240907e5b08e5cd378572a9", "reference": "e55e03e6d4ac49cd1240907e5b08e5cd378572a9", "shasum": "" }, "require": { "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" }, "bin": [ "phpstan", "phpstan.phar" ], "type": "library", "autoload": { "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ "dev", "static analysis" ], "support": { "docs": "https://phpstan.org/user-guide/getting-started", "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", "security": "https://github.com/phpstan/phpstan/security/policy", "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { "url": "https://github.com/ondrejmirtes", "type": "github" }, { "url": "https://github.com/phpstan", "type": "github" } ], "time": "2025-04-27T12:28:25+00:00" }, { "name": "phpunit/php-code-coverage", "version": "9.2.32", Loading Loading @@ -11367,16 +11428,16 @@ }, { "name": "squizlabs/php_codesniffer", "version": "3.12.0", "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630" "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/2d1b63db139c3c6ea0c927698e5160f8b3b8d630", "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630", "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "shasum": "" }, "require": { Loading Loading @@ -11447,7 +11508,7 @@ "type": "thanks_dev" } ], "time": "2025-03-18T05:04:51+00:00" "time": "2025-04-13T04:10:18+00:00" }, { "name": "symfony/config", Loading config/autoload/unicaen-tbl.global.php +2 −1 Original line number Diff line number Diff line Loading @@ -357,7 +357,7 @@ return [ 'piece_jointe' => [ 'order' => 10, 'process' => 'DbDiff', 'process' => \PieceJointe\Tbl\Process\PieceJointeProcess::class, 'cols' => [ 'ANNEE_ID', 'TYPE_PIECE_JOINTE_ID', Loading @@ -368,6 +368,7 @@ return [ 'VALIDEE', 'HEURES_POUR_SEUIL', 'OBLIGATOIRE', 'DEMANDEE_APRES_RECRUTEMENT', ], 'key' => [ 'TYPE_PIECE_JOINTE_ID', Loading data/ddl/table/TBL_PIECE_JOINTE.php +77 −52 Original line number Diff line number Diff line Loading @@ -9,6 +9,18 @@ return [ 'commentaire' => 'Pièces justificatives', 'sequence' => 'TBL_PIECE_JOINTE_ID_SEQ', 'columns' => [ 'ID' => [ 'name' => 'ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => '"TBL_PIECE_JOINTE_ID_SEQ"."NEXTVAL"', 'position' => 1, 'commentaire' => null, ], 'ANNEE_ID' => [ 'name' => 'ANNEE_ID', 'type' => 'int', Loading @@ -21,6 +33,42 @@ return [ 'position' => 2, 'commentaire' => null, ], 'TYPE_PIECE_JOINTE_ID' => [ 'name' => 'TYPE_PIECE_JOINTE_ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => null, 'position' => 3, 'commentaire' => null, ], 'PIECE_JOINTE_ID' => [ 'name' => 'PIECE_JOINTE_ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => true, 'default' => null, 'position' => 4, 'commentaire' => null, ], 'INTERVENANT_ID' => [ 'name' => 'INTERVENANT_ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => null, 'position' => 5, 'commentaire' => null, ], 'DEMANDEE' => [ 'name' => 'DEMANDEE', 'type' => 'bool', Loading @@ -45,41 +93,17 @@ return [ 'position' => 7, 'commentaire' => 'Témoin (1 si la PJ est fournie)', ], 'HEURES_POUR_SEUIL' => [ 'name' => 'HEURES_POUR_SEUIL', 'type' => 'float', 'bdd-type' => 'FLOAT', 'length' => 0, 'scale' => null, 'precision' => 126, 'nullable' => false, 'default' => '0', 'position' => 9, 'commentaire' => 'NB d\'heures de seuil pour la demande', ], 'ID' => [ 'name' => 'ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => '"TBL_PIECE_JOINTE_ID_SEQ"."NEXTVAL"', 'position' => 1, 'commentaire' => null, ], 'INTERVENANT_ID' => [ 'name' => 'INTERVENANT_ID', 'type' => 'int', 'VALIDEE' => [ 'name' => 'VALIDEE', 'type' => 'bool', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'precision' => 1, 'nullable' => false, 'default' => null, 'position' => 5, 'commentaire' => null, 'default' => '0', 'position' => 8, 'commentaire' => 'Témoin (1 si la PJ est validée)', ], 'OBLIGATOIRE' => [ 'name' => 'OBLIGATOIRE', Loading @@ -90,47 +114,47 @@ return [ 'precision' => 1, 'nullable' => false, 'default' => '1', 'position' => 10, 'position' => 9, 'commentaire' => null, ], 'PIECE_JOINTE_ID' => [ 'name' => 'PIECE_JOINTE_ID', 'DATE_ORIGINE' => [ 'name' => 'DATE_ORIGINE', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => true, 'default' => null, 'position' => 4, 'commentaire' => null, 'nullable' => false, 'default' => '0', 'position' => 10, 'commentaire' => '', ], 'TYPE_PIECE_JOINTE_ID' => [ 'name' => 'TYPE_PIECE_JOINTE_ID', 'DATE_VALIDITEE' => [ 'name' => 'DATE_VALIDITEE', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => null, 'position' => 3, 'commentaire' => null, 'default' => '0', 'position' => 11, 'commentaire' => '', ], 'VALIDEE' => [ 'name' => 'VALIDEE', 'type' => 'bool', 'bdd-type' => 'NUMBER', 'SEUIL_HETD' => [ 'name' => 'SEUIL_HETD', 'type' => 'float', 'bdd-type' => 'FLOAT', 'length' => 0, 'scale' => null, 'precision' => 1, 'precision' => 126, 'nullable' => false, 'default' => '0', 'position' => 8, 'commentaire' => 'Témoin (1 si la PJ est validée)', 'position' => 12, 'commentaire' => 'NB d\'heures de seuil pour la demande', ], 'DEMANDEE_APRES_RECRUTEMENT' => [ 'name' => 'DEMANDEE_APRES_RECRUTEMENT',, 'name' => 'DEMANDEE_APRES_RECRUTEMENT', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, Loading @@ -138,9 +162,10 @@ return [ 'precision' => null, 'nullable' => false, 'default' => '0', 'position' => 20, 'position' => 13, 'commentaire' => 'PIECE DEMANDE APRES RECRUTEMENT', ], ], ]; Loading data/ddl/view/V_TBL_PIECE_JOINTE_DEMANDE.sql +8 −3 Original line number Diff line number Diff line --CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE_DEMANDE AS CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE_DEMANDE AS WITH i_h AS ( SELECT s.intervenant_id, Loading Loading @@ -29,6 +29,7 @@ hetd AS ( JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id WHERE tvh.code = 'PREVU' /*@INTERVENANT_ID=fr.intervenant_id*/ GROUP BY intervenant_id ) Loading @@ -40,8 +41,10 @@ SELECT MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil, MAX(tpjs.obligatoire) obligatoire, MAX(COALESCE(hetd.total_hetd, 0)) heures_pour_seuil_hetd, MAX(tpjs.seuil_hetd) seuil_hetd, MIN(tpjs.duree_vie) duree_vie, MAX(tpjs.demandee_apres_recrutement) demandee_apres_recrutement MAX(tpjs.demandee_apres_recrutement) demandee_apres_recrutement, tpj.code type_pj_code FROM intervenant i LEFT JOIN intervenant_dossier d ON d.intervenant_id = i.id Loading Loading @@ -101,4 +104,6 @@ GROUP BY i.annee_id, i.id, i.code, tpj.id No newline at end of file tpj.id, tpj.code ORDER BY i.annee_id DESC; No newline at end of file data/ddl/view/V_TBL_PIECE_JOINTE_FOURNIE.sql +12 −10 Original line number Diff line number Diff line Loading @@ -6,13 +6,14 @@ SELECT pj.intervenant_id, pj.id piece_jointe_id, v.id validation_id, f.id fichier_id, -- CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN 1 ELSE MIN(COALESCE(tpjs.duree_vie,1)) END duree_vie, --CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN i.annee_id+1 ELSE MIN(i.annee_id+COALESCE(tpjs.duree_vie,1)) END date_validite, MAX(f.id) fichier_id, MIN(COALESCE(tpjs.duree_vie,999)) duree_vie, MIN(i.annee_id+COALESCE(tpjs.duree_vie,999)) date_validite, pj.date_archive date_archive MIN(i.annee_id+COALESCE(tpjs.duree_vie,999)) date_validitee, pj.date_archive date_archive, pjs.code type_pj_code, COALESCE(max(tpjs.demandee_apres_recrutement),0) demandee_apres_recrutement, COALESCE(max(tpjs.seuil_hetd),0) seuil_hetd, COALESCE(max(tpjs.obligatoire),0) obligatoire FROM piece_jointe pj JOIN intervenant i ON i.id = pj.intervenant_id Loading @@ -23,7 +24,8 @@ FROM LEFT JOIN type_piece_jointe_statut tpjs ON tpjs.statut_id = i.statut_id AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id AND i.annee_id = tpjs.annee_id AND tpjs.HISTO_DESTRUCTION IS NULL AND tpjs.histo_destruction IS NULL LEFT JOIN type_piece_jointe pjs ON pjs.id = pj.type_piece_jointe_id LEFT JOIN validation v ON v.id = pj.validation_id AND v.histo_destruction IS NULL WHERE Loading @@ -34,6 +36,6 @@ GROUP BY pj.type_piece_jointe_id, pj.intervenant_id, pj.id, v.id, f.id, pj.date_archive No newline at end of file pj.date_archive, pjs.code, v.id Loading
composer.lock +107 −46 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "7a7db71710b834c735285baffb020cd0", "content-hash": "e34098a8e70d6a7c335de21eb2633b00", "packages": [ { "name": "apereo/phpcas", Loading Loading @@ -850,26 +850,29 @@ }, { "name": "doctrine/deprecations", "version": "1.1.4", "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "conflict": { "phpunit/phpunit": "<=7.5 || >=13" }, "require-dev": { "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "1.4.10 || 2.0.3", "doctrine/coding-standard": "^9 || ^12 || ^13", "phpstan/phpstan": "1.4.10 || 2.1.11", "phpstan/phpstan-phpunit": "^1.0 || ^2", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", "psr/log": "^1 || ^2 || ^3" }, "suggest": { Loading @@ -889,9 +892,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", "source": "https://github.com/doctrine/deprecations/tree/1.1.4" "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, "time": "2024-12-07T21:18:45+00:00" "time": "2025-04-07T20:06:18+00:00" }, { "name": "doctrine/doctrine-laminas-hydrator", Loading Loading @@ -3107,16 +3110,16 @@ }, { "name": "laminas/laminas-i18n", "version": "2.29.0", "version": "2.30.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", "reference": "9aa7ef6073556e9b4cfd8d9a0cb8e41cd3883454" "reference": "397907ee061e147939364df9d6c485ac1e0fed87" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/9aa7ef6073556e9b4cfd8d9a0cb8e41cd3883454", "reference": "9aa7ef6073556e9b4cfd8d9a0cb8e41cd3883454", "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/397907ee061e147939364df9d6c485ac1e0fed87", "reference": "397907ee061e147939364df9d6c485ac1e0fed87", "shasum": "" }, "require": { Loading @@ -3131,18 +3134,18 @@ "zendframework/zend-i18n": "*" }, "require-dev": { "laminas/laminas-cache": "^3.12.1", "laminas/laminas-cache-storage-adapter-memory": "^2.3.0", "laminas/laminas-cache-storage-deprecated-factory": "^1.2", "laminas/laminas-cache": "^3.13.0", "laminas/laminas-cache-storage-adapter-memory": "^2.4.0", "laminas/laminas-cache-storage-deprecated-factory": "^1.3", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-config": "^3.9.0", "laminas/laminas-eventmanager": "^3.13", "laminas/laminas-filter": "^2.34", "laminas/laminas-validator": "^2.49", "laminas/laminas-view": "^2.34", "phpunit/phpunit": "^10.5.11", "psalm/plugin-phpunit": "^0.19.0", "vimeo/psalm": "^5.22.2" "laminas/laminas-config": "^3.10.1", "laminas/laminas-eventmanager": "^3.14.0", "laminas/laminas-filter": "^2.40", "laminas/laminas-validator": "^2.64.2", "laminas/laminas-view": "^2.36", "phpunit/phpunit": "^10.5.45", "psalm/plugin-phpunit": "^0.19.5", "vimeo/psalm": "^6.10.0" }, "suggest": { "laminas/laminas-cache": "You should install this package to cache the translations", Loading Loading @@ -3189,7 +3192,7 @@ "type": "community_bridge" } ], "time": "2024-10-11T09:44:53+00:00" "time": "2025-04-15T09:07:02+00:00" }, { "name": "laminas/laminas-i18n-resources", Loading Loading @@ -3252,16 +3255,16 @@ }, { "name": "laminas/laminas-inputfilter", "version": "2.31.0", "version": "2.32.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-inputfilter.git", "reference": "214b033769616f4211ffb63b432b716d786622c9" "reference": "5f04f1e5a6b1bd3c82114b6ea748a70ce65787f6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/214b033769616f4211ffb63b432b716d786622c9", "reference": "214b033769616f4211ffb63b432b716d786622c9", "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/5f04f1e5a6b1bd3c82114b6ea748a70ce65787f6", "reference": "5f04f1e5a6b1bd3c82114b6ea748a70ce65787f6", "shasum": "" }, "require": { Loading @@ -3276,11 +3279,11 @@ }, "require-dev": { "ext-json": "*", "laminas/laminas-coding-standard": "~3.0", "phpunit/phpunit": "^10.5.20", "psalm/plugin-phpunit": "^0.19.0", "laminas/laminas-coding-standard": "^3.0.1", "phpunit/phpunit": "^10.5.45", "psalm/plugin-phpunit": "^0.19.5", "psr/http-message": "^2.0", "vimeo/psalm": "^5.24.0", "vimeo/psalm": "^6.10.0", "webmozart/assert": "^1.11" }, "suggest": { Loading Loading @@ -3322,7 +3325,7 @@ "type": "community_bridge" } ], "time": "2024-11-15T20:17:41+00:00" "time": "2025-04-14T00:23:41+00:00" }, { "name": "laminas/laminas-json", Loading Loading @@ -9138,16 +9141,16 @@ }, { "name": "phpdocumentor/reflection-docblock", "version": "5.6.1", "version": "5.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62", "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62", "shasum": "" }, "require": { Loading Loading @@ -9196,9 +9199,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2" }, "time": "2024-12-07T09:39:29+00:00" "time": "2025-04-13T19:20:35+00:00" }, { "name": "phpdocumentor/type-resolver", Loading Loading @@ -9388,6 +9391,64 @@ }, "time": "2025-02-19T13:28:12+00:00" }, { "name": "phpstan/phpstan", "version": "2.1.13", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", "reference": "e55e03e6d4ac49cd1240907e5b08e5cd378572a9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e55e03e6d4ac49cd1240907e5b08e5cd378572a9", "reference": "e55e03e6d4ac49cd1240907e5b08e5cd378572a9", "shasum": "" }, "require": { "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" }, "bin": [ "phpstan", "phpstan.phar" ], "type": "library", "autoload": { "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ "dev", "static analysis" ], "support": { "docs": "https://phpstan.org/user-guide/getting-started", "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", "security": "https://github.com/phpstan/phpstan/security/policy", "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { "url": "https://github.com/ondrejmirtes", "type": "github" }, { "url": "https://github.com/phpstan", "type": "github" } ], "time": "2025-04-27T12:28:25+00:00" }, { "name": "phpunit/php-code-coverage", "version": "9.2.32", Loading Loading @@ -11367,16 +11428,16 @@ }, { "name": "squizlabs/php_codesniffer", "version": "3.12.0", "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630" "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/2d1b63db139c3c6ea0c927698e5160f8b3b8d630", "reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630", "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "shasum": "" }, "require": { Loading Loading @@ -11447,7 +11508,7 @@ "type": "thanks_dev" } ], "time": "2025-03-18T05:04:51+00:00" "time": "2025-04-13T04:10:18+00:00" }, { "name": "symfony/config", Loading
config/autoload/unicaen-tbl.global.php +2 −1 Original line number Diff line number Diff line Loading @@ -357,7 +357,7 @@ return [ 'piece_jointe' => [ 'order' => 10, 'process' => 'DbDiff', 'process' => \PieceJointe\Tbl\Process\PieceJointeProcess::class, 'cols' => [ 'ANNEE_ID', 'TYPE_PIECE_JOINTE_ID', Loading @@ -368,6 +368,7 @@ return [ 'VALIDEE', 'HEURES_POUR_SEUIL', 'OBLIGATOIRE', 'DEMANDEE_APRES_RECRUTEMENT', ], 'key' => [ 'TYPE_PIECE_JOINTE_ID', Loading
data/ddl/table/TBL_PIECE_JOINTE.php +77 −52 Original line number Diff line number Diff line Loading @@ -9,6 +9,18 @@ return [ 'commentaire' => 'Pièces justificatives', 'sequence' => 'TBL_PIECE_JOINTE_ID_SEQ', 'columns' => [ 'ID' => [ 'name' => 'ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => '"TBL_PIECE_JOINTE_ID_SEQ"."NEXTVAL"', 'position' => 1, 'commentaire' => null, ], 'ANNEE_ID' => [ 'name' => 'ANNEE_ID', 'type' => 'int', Loading @@ -21,6 +33,42 @@ return [ 'position' => 2, 'commentaire' => null, ], 'TYPE_PIECE_JOINTE_ID' => [ 'name' => 'TYPE_PIECE_JOINTE_ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => null, 'position' => 3, 'commentaire' => null, ], 'PIECE_JOINTE_ID' => [ 'name' => 'PIECE_JOINTE_ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => true, 'default' => null, 'position' => 4, 'commentaire' => null, ], 'INTERVENANT_ID' => [ 'name' => 'INTERVENANT_ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => null, 'position' => 5, 'commentaire' => null, ], 'DEMANDEE' => [ 'name' => 'DEMANDEE', 'type' => 'bool', Loading @@ -45,41 +93,17 @@ return [ 'position' => 7, 'commentaire' => 'Témoin (1 si la PJ est fournie)', ], 'HEURES_POUR_SEUIL' => [ 'name' => 'HEURES_POUR_SEUIL', 'type' => 'float', 'bdd-type' => 'FLOAT', 'length' => 0, 'scale' => null, 'precision' => 126, 'nullable' => false, 'default' => '0', 'position' => 9, 'commentaire' => 'NB d\'heures de seuil pour la demande', ], 'ID' => [ 'name' => 'ID', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => '"TBL_PIECE_JOINTE_ID_SEQ"."NEXTVAL"', 'position' => 1, 'commentaire' => null, ], 'INTERVENANT_ID' => [ 'name' => 'INTERVENANT_ID', 'type' => 'int', 'VALIDEE' => [ 'name' => 'VALIDEE', 'type' => 'bool', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'precision' => 1, 'nullable' => false, 'default' => null, 'position' => 5, 'commentaire' => null, 'default' => '0', 'position' => 8, 'commentaire' => 'Témoin (1 si la PJ est validée)', ], 'OBLIGATOIRE' => [ 'name' => 'OBLIGATOIRE', Loading @@ -90,47 +114,47 @@ return [ 'precision' => 1, 'nullable' => false, 'default' => '1', 'position' => 10, 'position' => 9, 'commentaire' => null, ], 'PIECE_JOINTE_ID' => [ 'name' => 'PIECE_JOINTE_ID', 'DATE_ORIGINE' => [ 'name' => 'DATE_ORIGINE', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => true, 'default' => null, 'position' => 4, 'commentaire' => null, 'nullable' => false, 'default' => '0', 'position' => 10, 'commentaire' => '', ], 'TYPE_PIECE_JOINTE_ID' => [ 'name' => 'TYPE_PIECE_JOINTE_ID', 'DATE_VALIDITEE' => [ 'name' => 'DATE_VALIDITEE', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, 'scale' => null, 'precision' => null, 'nullable' => false, 'default' => null, 'position' => 3, 'commentaire' => null, 'default' => '0', 'position' => 11, 'commentaire' => '', ], 'VALIDEE' => [ 'name' => 'VALIDEE', 'type' => 'bool', 'bdd-type' => 'NUMBER', 'SEUIL_HETD' => [ 'name' => 'SEUIL_HETD', 'type' => 'float', 'bdd-type' => 'FLOAT', 'length' => 0, 'scale' => null, 'precision' => 1, 'precision' => 126, 'nullable' => false, 'default' => '0', 'position' => 8, 'commentaire' => 'Témoin (1 si la PJ est validée)', 'position' => 12, 'commentaire' => 'NB d\'heures de seuil pour la demande', ], 'DEMANDEE_APRES_RECRUTEMENT' => [ 'name' => 'DEMANDEE_APRES_RECRUTEMENT',, 'name' => 'DEMANDEE_APRES_RECRUTEMENT', 'type' => 'int', 'bdd-type' => 'NUMBER', 'length' => 0, Loading @@ -138,9 +162,10 @@ return [ 'precision' => null, 'nullable' => false, 'default' => '0', 'position' => 20, 'position' => 13, 'commentaire' => 'PIECE DEMANDE APRES RECRUTEMENT', ], ], ]; Loading
data/ddl/view/V_TBL_PIECE_JOINTE_DEMANDE.sql +8 −3 Original line number Diff line number Diff line --CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE_DEMANDE AS CREATE OR REPLACE FORCE VIEW V_TBL_PIECE_JOINTE_DEMANDE AS WITH i_h AS ( SELECT s.intervenant_id, Loading Loading @@ -29,6 +29,7 @@ hetd AS ( JOIN etat_volume_horaire evh ON evh.id = fr.etat_volume_horaire_id WHERE tvh.code = 'PREVU' /*@INTERVENANT_ID=fr.intervenant_id*/ GROUP BY intervenant_id ) Loading @@ -40,8 +41,10 @@ SELECT MAX(COALESCE(i_h.heures, 0)) heures_pour_seuil, MAX(tpjs.obligatoire) obligatoire, MAX(COALESCE(hetd.total_hetd, 0)) heures_pour_seuil_hetd, MAX(tpjs.seuil_hetd) seuil_hetd, MIN(tpjs.duree_vie) duree_vie, MAX(tpjs.demandee_apres_recrutement) demandee_apres_recrutement MAX(tpjs.demandee_apres_recrutement) demandee_apres_recrutement, tpj.code type_pj_code FROM intervenant i LEFT JOIN intervenant_dossier d ON d.intervenant_id = i.id Loading Loading @@ -101,4 +104,6 @@ GROUP BY i.annee_id, i.id, i.code, tpj.id No newline at end of file tpj.id, tpj.code ORDER BY i.annee_id DESC; No newline at end of file
data/ddl/view/V_TBL_PIECE_JOINTE_FOURNIE.sql +12 −10 Original line number Diff line number Diff line Loading @@ -6,13 +6,14 @@ SELECT pj.intervenant_id, pj.id piece_jointe_id, v.id validation_id, f.id fichier_id, -- CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN 1 ELSE MIN(COALESCE(tpjs.duree_vie,1)) END duree_vie, --CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN i.annee_id+1 ELSE MIN(i.annee_id+COALESCE(tpjs.duree_vie,1)) END date_validite, MAX(f.id) fichier_id, MIN(COALESCE(tpjs.duree_vie,999)) duree_vie, MIN(i.annee_id+COALESCE(tpjs.duree_vie,999)) date_validite, pj.date_archive date_archive MIN(i.annee_id+COALESCE(tpjs.duree_vie,999)) date_validitee, pj.date_archive date_archive, pjs.code type_pj_code, COALESCE(max(tpjs.demandee_apres_recrutement),0) demandee_apres_recrutement, COALESCE(max(tpjs.seuil_hetd),0) seuil_hetd, COALESCE(max(tpjs.obligatoire),0) obligatoire FROM piece_jointe pj JOIN intervenant i ON i.id = pj.intervenant_id Loading @@ -23,7 +24,8 @@ FROM LEFT JOIN type_piece_jointe_statut tpjs ON tpjs.statut_id = i.statut_id AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id AND i.annee_id = tpjs.annee_id AND tpjs.HISTO_DESTRUCTION IS NULL AND tpjs.histo_destruction IS NULL LEFT JOIN type_piece_jointe pjs ON pjs.id = pj.type_piece_jointe_id LEFT JOIN validation v ON v.id = pj.validation_id AND v.histo_destruction IS NULL WHERE Loading @@ -34,6 +36,6 @@ GROUP BY pj.type_piece_jointe_id, pj.intervenant_id, pj.id, v.id, f.id, pj.date_archive No newline at end of file pj.date_archive, pjs.code, v.id