Ignore:
Timestamp:
Mar 26, 2012, 5:10:58 PM (9 years ago)
Author:
gildas.cotomale@…
Message:

revue de l'exportation des comptes de résultats (ensemble encore perfectible et modulable)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/Association/Associaspip/exec/compte_resultat.php

    r59723 r59760  
    5656                $var = serialize(array($id_exercice, $join, $sel, $where, $having, $order)); //!\ les cles numeriques peuvent poser probleme... <http://www.mail-archive.com/php-bugs@lists.php.net/msg100262.html> mais il semble qu'ici le souci vient de l'absence d'encodage lorsqu'on passe $var par URL...
    5757//              $var = serialize(array('id'=>$id_exercice, '1'=>$join, '2'=>$sel, '3'=>$where, '4'=>$having, '5'=>$order));
    58                 if($plan){ // on peut exporter : pdf, csv, xml, ...
     58                if(autoriser('associer', 'export_compte_resultats') && $plan){ // on peut exporter : pdf, csv, xml, ...
    5959                        echo debut_cadre_enfonce('',true);
    6060                        echo '<h3>'. _T('asso:cpte_resultat_mode_exportation') .'</h3>';
    6161                        if (test_plugin_actif('FPDF')) { // impression en PDF : _T('asso:bouton_impression')
    62                                 echo icone1_association('PDF', generer_url_ecrire('export_compteresultats_pdf').'&var='.rawurlencode($var), 'print-24.png', 'print-24.png'); //!\ generer_url_ecrire() utilise url_enconde() or il est preferable avec les grosses variables serialisees d'utiliser rawurlencode()
     62                                echo icone1_association('PDF', generer_url_ecrire('export_compteresultats_pdf').'&var='.rawurlencode($var), 'print-24.png'); //!\ generer_url_ecrire() utilise url_enconde() or il est preferable avec les grosses variables serialisees d'utiliser rawurlencode()
    6363                        }
    6464                        foreach(array('csv','ctx','tex','tsv','xml','yaml') as $type) { // autres exports (donnees brutes) possibles
    65                                 echo icone1_association(strtoupper($type), generer_url_ecrire("export_compteresultats_$type").'&var='.rawurlencode($var), "export-$type.png"); //!\ generer_url_ecrire($exec, $param) equivaut a generer_url_ecrire($exec).'&'.urlencode($param) or il faut utiliser rawurlencode($param) ici...
     65                                echo icone1_association(strtoupper($type), generer_url_ecrire("export_compteresultats_$type").'&var='.rawurlencode($var), 'export-24.png'); //!\ generer_url_ecrire($exec, $param) equivaut a generer_url_ecrire($exec).'&'.urlencode($param) or il faut utiliser rawurlencode($param) ici...
    6666                        }
    6767                        echo fin_cadre_enfonce(true);
    6868                }
    69                 debut_cadre_association('finances-24.png', 'cpte_resultat_titre_general', $exercice_data['intitule']);
     69                debut_cadre_association('finances-24.jpg', 'cpte_resultat_titre_general', $exercice_data['intitule']);
    7070                $depenses = compte_resultat_charges_produits($var, intval($GLOBALS['association_metas']['classe_charges']));
    7171                $recettes = compte_resultat_charges_produits($var, intval($GLOBALS['association_metas']['classe_produits']));
     
    7373                compte_resultat_benevolat($var, intval($GLOBALS['association_metas']['classe_contributions_volontaires']));
    7474/*
    75                 if($plan){ // on peut exporter : pdf, csv, xml, ...
     75                if(autoriser('associer', 'export_compte_resultats') && $plan){ // on peut exporter : pdf, csv, xml, ...
    7676                        echo "<br /><table width='100%' class='asso_tablo' cellspacing='6' id='asso_tablo_exports'>\n";
    7777                        echo '<tbody><tr>';
     
    202202}
    203203
     204        include_spip('inc/charsets');
     205        include_spip('inc/association_plan_comptable');
     206
     207// Brique commune aux classes d'exportation des donnees du compte de resultat
     208class ExportCompteResultats {
     209
     210        var $exercice;
     211        var $join;
     212        var $sel;
     213        var $where;
     214        var $having;
     215        var $order;
     216        var $out;
     217
     218        function  __construct($var) {
     219                $tableau = unserialize(rawurldecode($var));
     220                $this->exercice = $tableau[0];
     221                $this->join = $tableau[1];
     222                $this->sel = $tableau[2];
     223                $this->where = $tableau[3];
     224                $this->having = $tableau[4];
     225                $this->order = $tableau[5];
     226                $this->out = '';
     227        }
     228
     229        // de type CSV,INI,TSV, etc.
     230        function LignesSimplesEntete($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='') {
     231                $this->out .= $champDebut. str_replace(array_keys($echappements), array_values($echappements), utf8_decode(html_entity_decode(_T('asso:entete_code')))) .$champFin.$champsSeparateur;
     232                $this->out .= $champDebut. str_replace(array_keys($echappements), array_values($echappements), utf8_decode(html_entity_decode(_T('asso:entete_intitule')))) .$champFin.$champsSeparateur;
     233                $this->out .= $champDebut. str_replace(array_keys($echappements), array_values($echappements), utf8_decode(html_entity_decode(_T('asso:entete_montant')))) .$champFin.$lignesSeparateur;
     234        }
     235
     236        // de type CSV,INI,TSV, etc.
     237        function LignesSimplesCorps($key, $champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='') {
     238                switch ($key) {
     239                        case 'charges' :
     240                                $quoi = "SUM(depense) AS valeurs";
     241                                break;
     242                        case 'produits' :
     243                                $quoi = "SUM(recette) AS valeurs";
     244                                break;
     245                        case 'contributions_volontaires' :
     246                                $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
     247                                break;
     248                }
     249                $query = sql_select(
     250                        "imputation, $quoi, DATE_FORMAT(date, '%Y') AS annee".$this->sel, // select
     251                        'spip_asso_comptes '.$this->join, // from
     252                        $this->where, // where
     253                        $this->order, // group by
     254                        $this->order, // order by
     255                        '', // limit
     256                        $this->having .$GLOBALS['association_metas']['classe_'.$key] // having
     257                );
     258                $chapitre = '';
     259                $i = 0;
     260                while ($data = sql_fetch($query)) {
     261                        if ($key==='contributions_volontaires') {
     262                                if ($data['charge_evaluee']>0) {
     263                                        $valeurs = $data['charge_evaluee'];
     264                                } else {
     265                                        $valeurs = $data['produit_evalue'];
     266                                }
     267                        } else {
     268                                $valeurs = $data['valeurs'];
     269                        }
     270                        $new_chapitre = substr($data['code'], 0, 2);
     271                        if ($chapitre!=$new_chapitre) {
     272                                $this->out .= $champDebut. str_replace(array_keys($echappements), array_values($echappements), $new_chapitre) .$champFin.$champsSeparateur;
     273                                $this->out .= $champDebut. str_replace(array_keys($echappements), array_values($echappements), ($GLOBALS['association_metas']['plan_comptable_prerenseigne']?association_plan_comptable_complet($new_chapitre):sql_getfetsel('intitule','spip_asso_plan',"code='$new_chapitre'"))) .$champFin.$champsSeparateur;
     274                                $this->out .= $champsSeparateur.' '.$champsSeparateur;
     275                                $this->out .= $lignesSeparateur;
     276                                $chapitre = $new_chapitre;
     277                        }
     278                        $this->out .= $champDebut. str_replace(array_keys($echappements), array_values($echappements), $data['code']) .$champFin.$champsSeparateur;
     279                        $this->out .= $champDebut. str_replace(array_keys($echappements), array_values($echappements), $data['intitule']) .$champFin.$champsSeparateur;
     280                        $this->out .= $champDebut.$valeurs.$champFin.$lignesSeparateur;
     281                }
     282        }
     283
     284        function leFichier($ext) {
     285                $fichier = _DIR_RACINE.'/'._NOM_TEMPORAIRES_ACCESSIBLES.'compte_resultats_'.$this->exercice.".$ext";
     286                $f = fopen($fichier, 'w');
     287                fputs($f, $this->out);
     288                fclose($f);
     289                header('Content-type: application/'.$ext);
     290                header('Content-Disposition: attachment; filename="'.$fichier.'"');
     291                readfile($fichier);
     292        }
     293
     294}
     295
    204296?>
Note: See TracChangeset for help on using the changeset viewer.