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;