diff --git a/application/controllers/DossierController.php b/application/controllers/DossierController.php index 6ad5ad8e..85c88427 100644 --- a/application/controllers/DossierController.php +++ b/application/controllers/DossierController.php @@ -664,6 +664,53 @@ 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); + + 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); + } + + } + } + 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;