<?php
//$Id$ 
//gen openMairie le 04/09/2017 13:41

require_once PATH_OPENMAIRIE."../gen/obj/num_bordereau.class.php";

class num_bordereau extends num_bordereau_gen {

    function __construct($id, &$dnu1 = null, $dnu2 = null) {
        $this->constructeur($id);
    }
    
    function init_class_actions() {
        parent::init_class_actions();
        
        $this->class_actions[4] = array(
            "identifier" => "edition-pdf",
            "portlet" => array(
                "type" => "action-blank",
                "libelle" => __("bordereau_editer"),
                "class" => "pdf-16",
                "order" => 40,
                'description' => __('bordereau_edition_pdf'),
            ),
            "view" => "view_edition_bordereau",
            "permission_suffix" => "consulter"
        );
        
        $this->class_actions[8] = array(
            "identifier" => "retour_num",
            "portlet" => array(
                "type" => "action-direct-with-confirmation",
                "libelle" => __("Retour Numérisation"),
                //"class" => "pdf-16"
                "order" => 80,
                'description' => __('Mets à jour la date de numérisation de tous les dossiers du bordereau'),
            ),
            "view" => "formulaire",
            "method" => "mise_a_jour_dossier_date_num",
            "permission_suffix" => "modifier_dossier",
        );
    }
    

        /**
     * Configuration du formulaire (VIEW formulaire et VIEW sousformulaire).
     *
     * @param formulaire $form Instance formulaire.
     * @param integer $maj Identifant numérique de l'action.
     * @param integer $validation Marqueur de validation du formulaire.
     *
     * @return void
     */
    function set_form_default_values(&$form, $maj, $validation) {
        parent::set_form_default_values($form, $maj, $validation);
        //
        if ($validation==0) {           
            // pré-renseigner la date
            if ($this->getVal('envoi') == "") {
                $form->setVal('envoi', date("d/m/Y"));
            }
        }        
    }
    
    /**
     * Surcharge pour ne pas laisser saisir le libellé
     * {@inheritDoc}
     * @see num_bordereau_gen::setType()
     */
    function setType(&$form, $maj) {
        
        // héritage
        parent::setType($form, $maj);
        
        // Récupération du mode de l'action
        $crud = $this->get_action_crud($maj);
        
        // TOUS MODES, par défaut
        $form->setType("num_bordereau", "hidden");
        $form->setType("envoi", "hidden");
        
        // MODE AJOUTER
        if ($maj == 0 || $crud == 'create') {
            $form->setType("libelle", "hidden");
            $form->setType("envoi", "date");
        }
        
        // MODE MODIFIER
        if ($maj == 1 || $crud == 'update') {
            $form->setType("libelle", "hiddenstatic");
            
        }
        
    }
        /**
         * Surcharge pour positionner le libellé
         * 
         * @param unknown $val
         */
    function setValFAjout($val = array()) {
        
        // le liebllé est standardisé" 
        $this->valF["libelle"] = "BOR_".date('Y-m-d');
        
        //libellé = date + n° séquence éventuel
        $sql="SELECT COUNT(1)
              FROM ".DB_PREFIXE."num_bordereau
              WHERE TO_CHAR(envoi,'DD/MM/YYYY') = '".$val["envoi"]."'
              GROUP BY envoi"
        ;
        $res = $this->f->db->getOne($sql);
        $this->f->addToLog("num_bordereau.class.php : db->getOne(\"".$sql."\")", VERBOSE_MODE);
        $this->f->isDatabaseError($res);
        
        // si ce n'est pas le premier bordereau du jour
        // on ajoute un numéro de séquence 
        if ( intval($res) != 0 ) {
            $this->valF["libelle"] .= '_'.intval($res);
        } 
        
    }
        
        
    function view_edition_bordereau() {
        $idx = $this->getVal($this->clePrimaire); // id de l'objet du formulaire
        $lettre_type = "bordereau"; // id de la lettre type
        $this->checkAccessibility();
        $params["watermark"] = false;
       // $filename = $lettre_type."_".str_replace("/","_",$this->getVal($this->clePrimaire)).".pdf";
        
        
        // Génération du PDF
        
        $pdfedition =  $this->compute_pdf_output("lettretype", $lettre_type, null, $idx, $params);
            
        
        
        // Affichage du PDF
        $this->expose_pdf_output(
            $pdfedition["pdf_output"],
           "bordereau.pdf"
          //  $filename
            )
        ; 
        return true;
    }
        
        
    function mise_a_jour_dossier_date_num() {
            
        // Begin (pour positionner $this->correct à true)
        $this->begin_treatment(__METHOD__);

        // Vérification de l'accessibilité sur l'élément
        $this->checkAccessibility();
        
        // id de l'objet du formulaire (id_bordereau)
        $idx = intval($this->getVal($this->clePrimaire));
                          
        $sql = "UPDATE ". DB_PREFIXE . "num_dossier
                SET datenum = CURRENT_DATE
                WHERE num_bordereau = ".$idx
                ;
                
        $res = $this->f->db->query($sql);
        $this->f->addToLog("num_bordereau.class.php : db->query(\"".$sql."\")", VERBOSE_MODE);
        $this->f->isDatabaseError($res);
        
        // Fin du traitement: message récapitulatif
        //
 
        // Message
        $this->addToMessage(__("Les dates de numérisation des dossiers ont été correctement mises à jour."));

        return $this->end_treatment(__METHOD__, true);
    }

}

