From 75f7d6a211e986ad97e52284078109e24803a90c Mon Sep 17 00:00:00 2001 From: CFX-SDIS33 Date: Wed, 8 Feb 2017 11:35:48 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Champ=20de=20comp=C3=A9tence=20de=20la=20co?= =?UTF-8?q?mmission=C2=A0pour=20la=20cr=C3=A9ation=20de=20dossiers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lors de la création d’un dossier de type « Étude » ou « Visite », il faut vérifier s’il existe une règle applicable pour conseiller une commission : c’est-à-dire si la combinaison des champs « N° INSEE » (commune de l’adresse), « Catégorie », « Type » et « Local à sommeil » de l’établissement, ainsi que le type du dossier correspondent à une règle définie dans l’écran « Champ de la compétence de la commission ». Cette vérification d’une commission compétente pour le dossier à créer s’effectuera dans l’ordre suivant : « Divers » « Commission d’arrondissement » « Commission intercommunale » « Commission communale » « Sous-commission départementale » Dès lors que l’utilisateur a choisi le type et la nature du dossier, la première commission compétente trouvée (pour laquelle une règle a été définie et qui correspond aux informations du dossier en cours de création) est présélectionnée, . NB : Pour la mise en place de cette évolution, on considère qu’à la fois les dossiers de type « Visite de commission » (ID_DOSSIERTYPE = 2) et « Groupe de visite » (ID_DOSSIERTYPE = 3) correspondent à une « visite » pour les règles de l’écran « Champ de la compétence de la commission ». Change-Id: I7dab4de62d94e283cfa5e7d37b33df9727ced696 --- application/controllers/DossierController.php | 44 +++++++++++++++ application/models/DbTable/Commission.php | 55 +++++++++++++++++++ application/services/Dossier.php | 27 +++++++++ .../scripts/dossier/defaultcommission.phtml | 13 +++++ application/views/scripts/dossier/index.phtml | 20 +++++++ 5 files changed, 159 insertions(+) create mode 100644 application/views/scripts/dossier/defaultcommission.phtml diff --git a/application/controllers/DossierController.php b/application/controllers/DossierController.php index 6ad5ad8e..942f60fd 100644 --- a/application/controllers/DossierController.php +++ b/application/controllers/DossierController.php @@ -664,6 +664,50 @@ public function shownatureAction(){ $this->view->dossierNatureListe = $DBdossiernatureliste->getDossierNature($idType); } + + public function defaultcommissionAction(){ + $idType = (int) $this->_getParam("idType"); + $idEtablissement = (int) $this->_getParam("idEtablissement"); + + // Modèle de données + $model_typesDesCommissions = new Model_DbTable_CommissionType(); + $model_commission = new Model_DbTable_Commission(); + + // On cherche tous les types de commissions + $rowset_typesDesCommissions = $model_typesDesCommissions->fetchAll(); + + // Tableau de résultats + $array_commissions = array(); + + // Pour tous les types, on cherche leur commission + foreach ($rowset_typesDesCommissions as $row_typeDeCommission) { + $array_commissions[$row_typeDeCommission->ID_COMMISSIONTYPE] = array( + "LIBELLE" => $row_typeDeCommission->LIBELLE_COMMISSIONTYPE, + "ARRAY" => $model_commission->fetchAll("ID_COMMISSIONTYPE = ".$row_typeDeCommission->ID_COMMISSIONTYPE)->toArray(), + ); + } + $this->view->array_commissions = $array_commissions; + + // Récupération des infos de l'établissement pour appliquer les règles de commission par défaut + if ($idEtablissement) { + + // Correspondance de valeur entre dossier de type "Visite" ou "Groupe de visite" et le critère de la règle de commission par défaut correspondant + if ($idType == 2 || $idType == 3){ + $idType = 0; + } + + $DBetablissement = new Model_DbTable_Etablissement(); + $etablissementTab = $DBetablissement->getInformations($idEtablissement); + $etablissement = $etablissementTab->toArray(); + + $model_adresse = new Model_DbTable_EtablissementAdresse(); + $array_adresses = $model_adresse->get($idEtablissement); + + $service_dossier = new Service_Dossier(); + $this->view->default_commission = $service_dossier->getDefaultCommission($array_adresses[0]["NUMINSEE_COMMUNE"], $etablissement['ID_CATEGORIE'], $etablissement['ID_TYPE'], $etablissement['LOCALSOMMEIL_ETABLISSEMENTINFORMATIONS'], $idType); + } + } + public function showchampsAction(){ $this->_helper->viewRenderer->setNoRender(); $listeNature = $this->_getParam("listeNature"); diff --git a/application/models/DbTable/Commission.php b/application/models/DbTable/Commission.php index d09bb7ed..e4c8504f 100755 --- a/application/models/DbTable/Commission.php +++ b/application/models/DbTable/Commission.php @@ -150,6 +150,61 @@ public function getCommission( $commune, $categorie, $type, $localsommeil) } } + + public function getCommissionDossier($commune, $categorie, $type, $localsommeil, $etudevisite) + { + // Check de la sous commission / comunale / interco / arrondissement + // R�cup�ration des types de commission + $model_types = new Model_DbTable_CommissionType; + $array_typesCommission = $model_types->fetchAll(null, "ID_COMMISSIONTYPE DESC")->toArray(); + + foreach ($array_typesCommission as $row_typeCommission) { + + $select = $this->select() + ->setIntegrityCheck(false) + ->from("commissionregle", array("ID_GROUPEMENT", "NUMINSEE_COMMUNE", "ID_COMMISSION") ) + ->joinLeft("commission", "commission.ID_COMMISSION = commissionregle.ID_COMMISSION", null) + ->joinLeft("commissionregletype", "commissionregle.ID_REGLE = commissionregletype.ID_REGLE", null) + ->joinLeft("commissionreglecategorie", "commissionregle.ID_REGLE = commissionreglecategorie.ID_REGLE", null) + ->joinLeft("commissionreglelocalsommeil", "commissionregle.ID_REGLE = commissionreglelocalsommeil.ID_REGLE", null) + ->joinLeft("commissionregleetudevisite", "commissionregle.ID_REGLE = commissionregleetudevisite.ID_REGLE", null) + ->joinLeft("adressecommune", "adressecommune.NUMINSEE_COMMUNE = commissionregle.NUMINSEE_COMMUNE", null) + ->where("commissionreglecategorie.ID_CATEGORIE = ?", $categorie) + ->where("commissionregletype.ID_TYPE = ?", $type) + ->where("commissionreglelocalsommeil.LOCALSOMMEIL = ?", $localsommeil) + ->where("commissionregleetudevisite.ETUDEVISITE = ?", $etudevisite) + ->where("commission.ID_COMMISSIONTYPE = ?", $row_typeCommission["ID_COMMISSIONTYPE"]); + + $results = $this->fetchAll($select); + + if ($results != null) { + + foreach($results as $result) { + + if ($result->NUMINSEE_COMMUNE != null) { + if ($result->NUMINSEE_COMMUNE == $commune) { + + $result = $this->find( $result->ID_COMMISSION )->toArray(); + + return $result; + } + } elseif ($result->ID_GROUPEMENT) { + + $model_groupementCommune = new Model_DbTable_GroupementCommune; + $row_groupement = $model_groupementCommune->fetchRow("ID_GROUPEMENT = '" . $result->ID_GROUPEMENT . "' AND NUMINSEE_COMMUNE = '" . $commune . "'"); + + if (count($row_groupement) == 1) { + $result = $this->find( $result->ID_COMMISSION )->toArray(); + + return $result; + } + } + } + + } + + } + } public function getCommissionIGH( $commune, $classe, $localsommeil) { diff --git a/application/services/Dossier.php b/application/services/Dossier.php index 565caf9c..efdd1c85 100644 --- a/application/services/Dossier.php +++ b/application/services/Dossier.php @@ -817,4 +817,31 @@ public function getCommission($idDossier) { $dbDossier = new Model_DbTable_Dossier; return $dbDossier->getCommissionV2($idDossier); } + + /** + * Récupération de la commission par défaut en fonction des critères donnés pour un dossier et son établissement + * + * @param int $numinsee + * @param int $categorie + * @param int $type + * @param bool $local_sommeil + * @param int $etudevisite + * @return array + */ + public function getDefaultCommission($numinsee = null, $categorie = null, $type = null, $local_sommeil = null, $etudevisite = null) + { + $model_etablissement = new Model_DbTable_Etablissement; + $model_commission = new Model_DbTable_Commission; + + $defaultCommission = 0; + + if ($numinsee !== null && $categorie !== null && $type !== null && $local_sommeil !== null) { + $commission = $model_commission->getCommissionDossier($numinsee, $categorie, $type, $local_sommeil ? 1 : 0, $etudevisite); + if($commission !== null) { + $defaultCommission = $commission[0]; + } + } + + return $defaultCommission; + } } diff --git a/application/views/scripts/dossier/defaultcommission.phtml b/application/views/scripts/dossier/defaultcommission.phtml new file mode 100644 index 00000000..0cae086c --- /dev/null +++ b/application/views/scripts/dossier/defaultcommission.phtml @@ -0,0 +1,13 @@ +default_commission["ID_COMMISSION"] != '') ? $this->default_commission["ID_COMMISSION"] : $this->infosDossier['COMMISSION_DOSSIER'])."' />"; +echo ""; +?> diff --git a/application/views/scripts/dossier/index.phtml b/application/views/scripts/dossier/index.phtml index 424dae73..96251852 100755 --- a/application/views/scripts/dossier/index.phtml +++ b/application/views/scripts/dossier/index.phtml @@ -194,6 +194,26 @@ return false; } }); + + if($("#do").val() == 'new' && (idType == 1 || idType == 2 || idType == 3)){ + $.ajax({ + url: "/dossier/defaultcommission", + data: "idType="+idType+"&idEtablissement="+$("#idEtablissement").val(), + type:"POST", + beforeSend: function(){ + $("#chargement").html(""); + }, + success: function(affichageResultat){ + $("#COMMISSION > .form").html(affichageResultat); + $("#COMMISSION").show(); + $("#chargement").html(""); + return false; + }, + error: function(){ + return false; + } + }); + } majAvisSelect(); } return false; From 9a82cb1af3f608cfe0b2428c85dde843ba7bc19d Mon Sep 17 00:00:00 2001 From: CFX-SDIS33 Date: Fri, 10 Mar 2017 16:38:11 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Correction=20bug=20ajout=20dossier=20sur=20?= =?UTF-8?q?=C3=A9tablissement=20sans=20adresse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2f0f45d938736f0c4bca852b0de117a8f7fe2067 --- application/controllers/DossierController.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/application/controllers/DossierController.php b/application/controllers/DossierController.php index 942f60fd..85c88427 100644 --- a/application/controllers/DossierController.php +++ b/application/controllers/DossierController.php @@ -703,8 +703,11 @@ public function defaultcommissionAction(){ $model_adresse = new Model_DbTable_EtablissementAdresse(); $array_adresses = $model_adresse->get($idEtablissement); - $service_dossier = new Service_Dossier(); - $this->view->default_commission = $service_dossier->getDefaultCommission($array_adresses[0]["NUMINSEE_COMMUNE"], $etablissement['ID_CATEGORIE'], $etablissement['ID_TYPE'], $etablissement['LOCALSOMMEIL_ETABLISSEMENTINFORMATIONS'], $idType); + if(count($array_adresses) > 0) { + $service_dossier = new Service_Dossier(); + $this->view->default_commission = $service_dossier->getDefaultCommission($array_adresses[0]["NUMINSEE_COMMUNE"], $etablissement['ID_CATEGORIE'], $etablissement['ID_TYPE'], $etablissement['LOCALSOMMEIL_ETABLISSEMENTINFORMATIONS'], $idType); + } + } }