<?php
/**
 * Ce script définit la classe 'concession'.
 *
 * @package opencimetiere
 * @version SVN : $Id$
 */

require_once "../obj/emplacement.class.php";

/**
 * Définition de la classe 'concession' (om_dbform).
 *
 * Surcharge de la classe 'emplacement'.
 */
class concession extends emplacement {

    /**
     * @var string
     */
    protected $_absolute_class_name = "concession";

    /**
     * Attribut de nature d'emplacement
     * @var string Prend la valeur "concession"
     */
    var $nature = "concession";

    /**
     * Option pour la gestion ou non du type de concession
     * @var boolean Prend la valeur true or false
     */
    var $option_typeconcession = false;

    /**
     * Valeurs pour la sélection du type de concession
     * @var array
     */
    var $select_typeconcession = array ();

    /**
     * Option pour la gestion ou non du renouvellement de concession
     * @var boolean Prend la valeur true or false
     */
    var $option_renouvellementconcession = false;

    /**
     * Option pour la gestion d'un lien SIG externe (id sig)
     * @var boolean Prend ka valeur true or false
    */
    var $option_externesig = false;

    function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
        //
        parent::verifier($val);
        // verification donnees real non vide (GI/compatibilite postgresql)
        // Check data real not empty (compatibility postgresql)
        if ($val['duree']=="" or is_null($val['duree']))
           $this->valF['duree'] = 0;
        if ($val['placeoccupe']=="" or is_null($val['placeoccupe']))
           $this->valF['placeoccupe'] = 0;
        if ($val['nombreplace']=="" or is_null($val['nombreplace']))
           $this->valF['nombreplace'] = 0;
        if ($val['superficie']=="" or is_null($val['superficie']))
           $this->valF['superficie'] = 0;
        if ($val['placeconstat']=="" or is_null($val['placeconstat']))
           $this->valF['placeconstat'] = 0;
        if ( ($val['datevente']=="" or is_null($val['datevente'])) && isset($_GET['idx']) ){
            $val['datevente'] = NULL;
            $this->valF['datevente'] = NULL;
        }
        // verif voie [verify street]
        if($this->correct)
            $this->verifierVoie($val);
        // verif renouvellement
        if($this->valF['renouvellementconcession']=='Oui'
            and ( $this->valF['daterenouvellement']=="" 
                or is_null($this->valF['daterenouvellement']))
            ) {
            $this->addToMessage(__("Date de renouvellement non remplie"));
            $this->correct = false;
        }
        if($this->valF['renouvellementconcession']=='Oui'
            and ( $this->valF['datevente']=="" 
                or is_null($this->valF['datevente']))
            ) {
            $this->addToMessage(__("Date de vente non remplie"));
            $this->correct = false;
        }
    }

    function setType(&$form, $maj) {
        //
        parent::setType($form, $maj);
        // Localisation
        $form->setType('geom', 'hidden');
        
        $form->setType('plans', 'hidden');
        $form->setType('positionx', 'hidden');
        $form->setType('positiony', 'hidden');
        // Champs paramétrables
        $form->setType('temp1', 'hidden');
        $form->setType('temp2', 'hidden');
        $form->setType('temp3', 'hidden');
        $form->setType('temp4', 'hidden');
        $form->setType('temp5', 'hidden');
        //// Champs de l'emplacement qui ne concernent pas une concession
        // Acte
        $form->setType('archive_daterenouvellement','hidden');
        $form->setType('archive_duree','hidden');
        $form->setType('archive_dateterme','hidden');
        $form->setType('archive_datevente','hidden');
        // XXX Ce champ est à supprimer de l'application
        $form->setType('photo','hidden');
        // MODE AJOUTER & MODE MODIFIER
        if ($maj == 0 || $maj == 1) {
            // Id
            $form->setType('emplacement', 'hiddenstatic');
            $form->setType('nature', 'hiddenstatic');
            // Libre
            $form->setType('libre', 'select');
            // Adresse
            $form->setType('complement', 'select');
            $form->setType('voie', 'autocomplete');
            // Localisation
            if ($this->f->getParameter("option_localisation") == "plan") {
                $form->setType('plans', 'select');
                $form->setType('positionx', 'text');
                $form->setType('positiony', 'localisation_plan');
            } elseif ($this->f->getParameter("option_localisation") == "sig_interne") {
                $form->setType('geom', 'geom');
            } elseif ($this->f->getParameter("option_localisation") == "sig_externe") {
                
            }
            //
            $form->setType('terme', 'select');
            $form->setType('datevente','date');
            $form->setType('dateterme','hiddenstaticdate');
            $form->setType('dateconstat','date');

            $form->setType('placeoccupe','hiddenstatic');

            $form->setType('videsanitaire','select');
            // type de concession
            $form->setType('typeconcession', 'select');
            // renouvellement de concession
            $form->setType('renouvellementconcession', 'checkbox');
            $form->setType('daterenouvellement', 'date');

            $form->setType('etatsemelle','select');
            $form->setType('etatmonument','select');
            // Abandon
            $form->setType('abandon','select');
        }
        //
        if ($maj == 3) {
            // Localisation
            if ($this->f->getParameter("option_localisation") == "plan") {
                $form->setType('plans', 'localisation_plan_static');
                $form->setType('positionx', 'hidden');
                $form->setType('positiony', 'hidden');
            } elseif ($this->f->getParameter("option_localisation") == "sig_interne") {
                $form->setType('geom', 'geom');
            } elseif ($this->f->getParameter("option_localisation") == "sig_externe") {
			}     
		}
		$form->setType('pgeom', 'hidden');
    }

    function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) {
        //
        parent::setSelect($form, $maj);
        // MODE AJOUTER & MODE MODIFIER
        if ($maj == 0 || $maj == 1) {
            // Localisation
            $contenu = array();
            $contenu[0] = array('plans', 'positionx');
            $form->setSelect("positiony", $contenu);
            // Libre
            $contenu = array();
            $contenu[0] = array('Non', 'Oui');
            $contenu[1] = array(__("Non"), __("Oui"));
            $form->setSelect("libre", $contenu);
            // abandon
            $form->setSelect("abandon",$contenu);
            // terme
            $contenu = array ();
            $contenu[0]=array('',"perpetuite",'temporaire');
            $contenu[1]=array('',__("perpetuite"),__("temporaire"));
            $form->setSelect("terme",$contenu);
            //vide sanitaire
           $contenu=array();
            $contenu[0]=array('','Non','Oui');
            $contenu[1]=array('',__("Non"),__("Oui"));
            $form->setSelect("videsanitaire",$contenu);
            //etat semelle
            $contenu=array();
            $contenu[0]=array('','Bonne','Mauvaise','Passable');
            $contenu[1]=array('',__("Bonne"),__("Mauvaise"),__("Passable"));
            $form->setSelect("etatsemelle",$contenu);
            //etat monument
            $contenu=array();
            $contenu[0]=array('','Bon','Mauvais','Passable');
            $contenu[1]=array('',__("Bon"),__("Mauvais"),__("Passable"));
            $form->setSelect("etatmonument",$contenu);

            // type de concession
            $contenu = array();
            $contenu [0] = array ("", "Familiale", "Individuelle", "Collective");
            $contenu [1] = array ("", __("Familiale"), __("Individuelle"), __("Collective"));
            $form->setSelect ('typeconcession', $contenu);            
        }
    }

    function setOnchange(&$form, $maj) {
        //
        parent::setOnchange($form, $maj);
        //
        if ($this->option_renouvellementconcession) {
            $form->setOnchange("daterenouvellement","date(this)");
        }
    }

    function triggerajouter($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
        //
        $this->calculdatefin($id, $val);
        // Option renouvellement de concession
        if ($this->option_renouvellementconcession) {
            $this->valF['daterenouvellement'] = $this->dateDB($val['datevente']);
        }

        return true;
    }

    function triggermodifier($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
        //
        $this->calculdatefin($id, $val);
        // Option renouvellement de concession
        if ($this->option_renouvellementconcession) {
            $this->valF['daterenouvellement'] = $this->dateDB($val['datevente']);
        }
        // renouvellement de concession
        $this->calculrenouvellement($id, $val);

        return true;
    }

    function calculrenouvellement($id, $val = array()) {
        // Récupération des valeurs
        $ancien_dateterme = $val["archive_dateterme"];//$this->val [15];
        $nouveau_dateterme = $this->dateDB($val ['dateterme']);
        $ancien_datevente = $val["archive_datevente"];//$this->val [10];
        $nouveau_datevente = $this->dateDB($val ['datevente']);
        $ancien_daterenouvellement = $val["archive_daterenouvellement"];//$this->val [13];
        $nouveau_daterenouvellement = $this->dateDB($val ['daterenouvellement']);
        $ancien_duree = $val["archive_duree"];//$this->val [14];
        $nouveau_duree = $val ['duree'];

        // Cas de la saisie de date de vente et de renouvellement en même temps (régularisation)
        if ($ancien_daterenouvellement == '' or is_null($ancien_daterenouvellement)){
            $ancien_daterenouvellement = $this->valF['datevente'];
        }

        // Si la case de renouvellement est cochée
        if ($val['renouvellementconcession'] == "Oui") {
            //
            $this->valF['renouvellementconcession'] = "Non";
            // On affecte l'ancienne date de fin à la date de concession
            if($ancien_dateterme != ""){
                $this->valF['daterenouvellement'] = $ancien_dateterme;
            }

            // On ajoute la duree à la date de renouvellement pour l'affecter à la date de fin
            $temp = explode("-", $this->valF['daterenouvellement']);
            $temp[0] = $temp[0] + $nouveau_duree;
            $this->valF['dateterme']= $temp[0]."-".$temp[1]."-".$temp[2];

            $terme = $temp[2]."/".$temp[1]."/".$temp[0];
            $this->msg .= " ".__("terme")." : ".$terme."<br/>";

            if($ancien_datevente != ""){
                $temp = explode("-", $ancien_datevente);
                $ancien_datevente = $temp[2]."/".$temp[1]."/".$temp[0];                
            }
            if($ancien_daterenouvellement != "") {
                $temp = explode("-", $ancien_daterenouvellement);
                $ancien_daterenouvellement = $temp[2]."/".$temp[1]."/".$temp[0];                
            }
            $temp = explode("-", $nouveau_datevente);
            $nouveau_datevente = $temp[2]."/".$temp[1]."/".$temp[0];
            /**/
            $observations = $val['observation'];
            $observations .= "\n";
            $observations .= __("La concession anciennement vendu le");
            $observations .= " ".$ancien_datevente." ";
            $observations .= __("debutant le")." ".($ancien_daterenouvellement)." ";
            $observations .= __("pour une duree de")." ".$ancien_duree." ".__("ans")." ";
            $observations .= __("est renouvellee le")." ".($nouveau_datevente)." ".__("pour");
            $observations .= " ".($nouveau_duree)." ".__("ans").".\n";
            $this->valF['observation'] = $observations;

        } else { // Si la case de renouvellement n'est pas cochée
            $this->valF['renouvellementconcession'] = "Non";
            if($val['daterenouvellement']!="" and $val['daterenouvellement']!="00/00/0000"
            and $val['duree']!="" and  $val['terme']=="temporaire"){
                $temp =explode("-", $nouveau_daterenouvellement);
                $temp[0] = $temp[0]+$val['duree'];
                $this->valF['dateterme']= $temp[0]."-".$temp[1]."-".$temp[2];
                //$form->val['dateterme']=
                $terme=$temp[2]."/".$temp[1]."/".$temp[0];
                $this->msg=$this->msg." ".__("terme")." : ".$terme."<br>";
            }
        }
    }
}
