Changeset 61768 in spip-zone


Ignore:
Timestamp:
May 28, 2012, 12:10:20 AM (7 years ago)
Author:
gildas.cotomale@…
Message:

début de réécriture des exports

Location:
_plugins_/Association/Associaspip
Files:
4 edited

Legend:

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

    r61705 r61768  
    2525        } else {
    2626// initialisations
     27                include_spip('inc/association_comptabilite');
     28                $ids = association_passe_parametres_comptables();
    2729                $plan = sql_countsel('spip_asso_plan','active=1');
    28                 $id_exercice = intval(_request('exercice'));
    29                 if(!$id_exercice){
    30                         /* on recupere l'id_exercice dont la date "fin" est "la plus grande" */
    31                         $id_exercice = sql_getfetsel('id_exercice', 'spip_asso_exercices', '', '', 'fin DESC');
    32                 }
    33                 $destination = intval(_request('destination'));
    34                 $exercice_data = sql_asso1ligne('exercice', $id_exercice);
    35                 include_spip('inc/association_comptabilite');
     30                $exercice_data = sql_asso1ligne('exercice', $ids['exercice']);
    3631// traitements
    3732                onglets_association('titre_onglet_comptes');
     
    3934                $infos['exercice_entete_debut'] = association_datefr($exercice_data['debut'], 'dtstart');
    4035                $infos['exercice_entete_fin'] = association_datefr($exercice_data['fin'], 'dtend');
    41                 echo totauxinfos_intro($exercice_data['intitule'], 'exercice', $id_exercice, $infos);
     36                echo totauxinfos_intro($exercice_data['intitule'], 'exercice', $ids['exercice'], $infos);
    4237                // pas de sommes de synthes puisque tous les totaux sont dans la zone centrale ;-
    4338                // datation et raccourcis
    44                 icones_association(array('comptes', "exercice=$id_exercice"), array(
    45                         'encaisse_titre_general' => array('finances-24.png', 'encaisse', "exercice=$id_exercice".($destination?"&destination=$id_destination":'')),
    46                         'cpte_resultat_titre_general' => array('finances-24.png', 'compte_resultat', "exercice=$id_exercice".($destination?"&destination=$id_destination":'')),
    47 #                       'annexe_titre_general' => array('finances-24.png', 'annexe', "exercice=$id_exercice".($destination?"&destination=$id_destination":'')),
     39                icones_association(array('comptes', "exercice=$ids[exercice]"), array(
     40                        'encaisse_titre_general' => array('finances-24.png', 'encaisse', "exercice=$ids[exercice]".($ids['destination']?"&destination=$ids[destination]":'')),
     41                        'cpte_resultat_titre_general' => array('finances-24.png', 'compte_resultat', "exercice=$ids[exercice]".($ids['destination']?"&destination=$ids[destination]":'')),
     42#                       'annexe_titre_general' => array('finances-24.png', 'annexe', "exercice=$ids[exercice]".($ids['destination']?"&destination=$ids[destination]":'')),
    4843                ));
    4944                $var = association_passe_parametres_comptables();
     
    5348                        echo '<h3>'. _T('asso:cpte_bilan_mode_exportation') .'</h3>';
    5449                        if (test_plugin_actif('FPDF')) { // impression en PDF : _T('asso:bouton_impression')
    55                                 echo icone1_association('PDF', generer_url_ecrire('export_comptebilans_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()
     50                                echo icone1_association('PDF', generer_url_ecrire('export_comptebilans_pdf'), "exercice=$ids[exercice]".($ids['destination']?"&destination=$ids[destination]":'')), 'print-24.png');
    5651                        }
    5752                        foreach(array('csv','ctx','dbk','json','tex','tsv','xml','yaml') as $type) { // autres exports (donnees brutes) possibles
    58                                 echo icone1_association(strtoupper($type), generer_url_ecrire("export_comptebilans_$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...
     53                                echo icone1_association(strtoupper($type), generer_url_ecrire("export_comptebilans_$type").'&var='.rawurlencode($ids['url']), 'export-24.png'); //!\ generer_url_ecrire($exec, $param) equivaut a generer_url_ecrire($exec).'&'.urlencode($param) or il faut utiliser rawurlencode($param) ici...
    5954                        }
    6055                        echo fin_cadre_enfonce(true);
     
    6459                // Filtres
    6560                filtres_association(array(
    66                         'exercice'=>$id_exercice,
    67                         'destination'=>$id_destination,
     61                        'exercice'=>$ids['exercice'],
     62                        'destination'=>$ids['destination'],
    6863                ), 'compte_bilan');
    6964                // les autres classes a prendre en compte ici
     
    8075                }
    8176                // liste des actifs (les dettes) cumulees par comptes
    82                 $actifs = association_liste_totaux_comptes_classes($classes_bilan, 'cpte_bilan', '-1', $id_exercice, $id_destination);
     77                $actifs = association_liste_totaux_comptes_classes($classes_bilan, 'cpte_bilan', '-1', $ids['exercice'], $ids['destination']);
    8378                // liste des passifs (le patrimoine/avoir) cumulees par comptes
    84                 $passifs = association_liste_totaux_comptes_classes($classes_bilan, 'cpte_bilan', '+1', $id_exercice, $id_destination);
     79                $passifs = association_liste_totaux_comptes_classes($classes_bilan, 'cpte_bilan', '+1', $ids['exercice'], $ids['destination']);
    8580                // resultat comptable courant : en comptabilite francaise, la somme les actifs et les passifs doivent s'egaler, ce qui se fait en incorporant le resultat comptable (perte en actif et benefice en passif)
    8681                association_liste_resultat_net($passifs, $actifs);
  • _plugins_/Association/Associaspip/exec/compte_resultat.php

    r61705 r61768  
    2525        } else {
    2626// initialisations
    27                 $plan = sql_countsel('spip_asso_plan','active=1');
    28                 $id_exercice = intval(_request('exercice'));
    29                 if(!$id_exercice){
    30                         /* on recupere l'id_exercice dont la date "fin" est "la plus grande" */
    31                         $id_exercice = sql_getfetsel('id_exercice', 'spip_asso_exercices', '', '', 'fin DESC');
    32                 }
    33                 $id_destination = intval(_request('destination'));
    34                 $exercice_data = sql_asso1ligne('exercice', $id_exercice);
    3527                include_spip('inc/association_comptabilite');
     28                $ids = association_passe_parametres_comptables();
     29                $exercice_data = sql_asso1ligne('exercice', $ids['exercice']);
    3630// traitements
    3731                onglets_association('titre_onglet_comptes');
     
    3933                $infos['exercice_entete_debut'] = association_datefr($exercice_data['debut'], 'dtstart');
    4034                $infos['exercice_entete_fin'] = association_datefr($exercice_data['fin'], 'dtend');
    41                 echo totauxinfos_intro($exercice_data['intitule'], 'exercice', $id_exercice, $infos);
     35                echo totauxinfos_intro($exercice_data['intitule'], 'exercice', $ids['exercice'], $infos);
    4236                // pas de sommes de synthes puisque tous les totaux sont dans la zone centrale ;-
    4337                // datation et raccourcis
    44                 icones_association(array('comptes', "exercice=$id_exercice"), array(
    45                         'encaisse_titre_general' => array('finances-24.png', 'encaisse', "exercice=$id_exercice".($destination?"&destination=$id_destination":'')),
    46                         'cpte_bilan_titre_general' => array('finances-24.png', 'compte_bilan', "exercice=$id_exercice".($destination?"&destination=$id_destination":'')),
    47 #                       'annexe_titre_general' => array('finances-24.png', 'annexe', "exercice=$id_exercice".($destination?"&destination=$id_destination":'')),
     38                icones_association(array('comptes', "exercice=$ids[exercice]"), array(
     39                        'encaisse_titre_general' => array('finances-24.png', 'encaisse', "exercice=$ids[exercice]".($ids['destination']?"&destination=$ids[destination]":'')),
     40                        'cpte_bilan_titre_general' => array('finances-24.png', 'compte_bilan', "exercice=$ids[exercice]".($ids['destination']?"&destination=$ids[destination]":'')),
     41#                       'annexe_titre_general' => array('finances-24.png', 'annexe', "exercice=$ids[exercice]".($ids['destination']?"&destination=$ids[destination]":'')),
    4842                ));
    4943                // elements communs aux requetes
    50                 if ($plan) {
    51                         $join = ' RIGHT JOIN spip_asso_plan ON imputation=code';
    52                         $sel = ', code, intitule, classe';
    53                         $where = " date>='$exercice_data[debut]' AND date<='$exercice_data[fin]' ";
    54                         $having = 'classe = ';
    55                         $order = 'code';
    56                 } else {
    57                         $join = $sel = $where = $having = $order = '';
    58                 }
    59                 $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...
    60 //              $var = serialize(array('id'=>$id_exercice, '1'=>$join, '2'=>$sel, '3'=>$where, '4'=>$having, '5'=>$order));
     44                $var = serialize(array($ids['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...
     45//              $var = serialize(array('id'=>$ids['exercice'], '1'=>$join, '2'=>$sel, '3'=>$where, '4'=>$having, '5'=>$order));
    6146                if(autoriser('associer', 'export_comptes')){ // on peut exporter : pdf, csv, xml, ...
    6247                        echo debut_cadre_enfonce('',true);
    6348                        echo '<h3>'. _T('asso:cpte_resultat_mode_exportation') .'</h3>';
    6449                        if (test_plugin_actif('FPDF')) { // impression en PDF : _T('asso:bouton_impression')
    65                                 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()
     50                                echo icone1_association('PDF', generer_url_ecrire('export_compteresultats_pdf', "exercice=$ids[exercice]".($ids['destination']?"&destination=$ids[destination]":'')), 'print-24.png');
    6651                        }
    6752                        foreach(array('csv','ctx','dbk','json','tex','tsv','xml','yaml') as $type) { // autres exports (donnees brutes) possibles
    68                                 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...
     53                                echo icone1_association(strtoupper($type), generer_url_ecrire("export_compteresultats_$type").'&var='.rawurlencode($ids['url']), 'export-24.png'); //!\ generer_url_ecrire($exec, $param) equivaut a generer_url_ecrire($exec).'&'.urlencode($param) or il faut utiliser rawurlencode($param) ici...
    6954                        }
    7055                        echo fin_cadre_enfonce(true);
     
    7358                // Filtres
    7459                filtres_association(array(
    75                         'exercice'=>$id_exercice,
    76                         'destination'=>$id_destination,
     60                        'exercice'=>$ids['exercice'],
     61                        'destination'=>$ids['destination'],
    7762                ), 'compte_resultat');
    7863                // liste des charges (depenses d'exploitation) cumulees par comptes
    79                 $charges = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_charges'], 'cpte_resultat', '-1', $id_exercice, $id_destination);
     64                $charges = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_charges'], 'cpte_resultat', '-1', $ids['exercice'], $ids['destination']);
    8065                // liste des produits (recettes d'exploitation) cumules par comptes
    81                 $produits = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_produits'], 'cpte_resultat', '+1', $id_exercice, $id_destination);
     66                $produits = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_produits'], 'cpte_resultat', '+1', $ids['exercice'], $ids['destination']);
    8267                // resultat comptable courant : c'est la difference entre les recettes et les depenses d'exploitation
    8368                association_liste_resultat_net($produits, $charges);
    8469                // liste des contributions volontaires (emplois et ressources) par comptes
    85                 $contributions = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_contributions_volontaires'], 'cpte_benevolat', 0, $id_exercice, $id_destination);
     70                $contributions = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_contributions_volontaires'], 'cpte_benevolat', 0, $ids['exercice'], $ids['destination']);
    8671                fin_page_association();
    8772        }
     
    9176        include_spip('inc/charsets');
    9277        include_spip('inc/association_plan_comptable');
     78        include_spip('inc/association_comptabilite');
    9379
    9480// Brique commune aux classes d'exportation des donnees du compte de resultat
     
    9682
    9783        var $exercice;
    98         var $join;
    99         var $sel;
    100         var $where;
    101         var $having;
    102         var $order;
     84        var $destination;
     85        var $annee;
     86        var $classes;
    10387        var $out;
    10488
    10589        function  __construct($var) {
    10690                $tableau = unserialize(rawurldecode($var));
    107                 $this->exercice = $tableau[0];
    108                 $this->join = $tableau[1];
    109                 $this->sel = $tableau[2];
    110                 $this->where = $tableau[3];
    111                 $this->having = $tableau[4];
    112                 $this->order = $tableau[5];
     91                $this->exercice = $tableau['exercice'];
     92                $this->destination = $tableau['destination'];
     93                $this->annee = $tableau['annee'];
     94                $this->classes = $tableau['classes'];
    11395                $this->out = '';
    11496        }
     
    125107                switch ($key) {
    126108                        case 'charges' :
    127                                 $quoi = "SUM(depense) AS valeurs";
     109                                $dir = '-1';
    128110                                break;
    129111                        case 'produits' :
    130                                 $quoi = "SUM(recette) AS valeurs";
     112                                $dir = '+1';
    131113                                break;
    132114                        case 'contributions_volontaires' :
    133                                 $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
     115                                $dir = 0;
    134116                                break;
    135117                }
    136                 $query = sql_select(
    137                         "imputation, $quoi ".$this->sel, // select
    138                         'spip_asso_comptes '.$this->join, // from
    139                         $this->where, // where
    140                         $this->order, // group by
    141                         $this->order, // order by
    142                         '', // limit
    143                         $this->having .$GLOBALS['association_metas']['classe_'.$key] // having
    144                 );
     118                $query = association_calcul_totaux_comptes_classe($GLOBALS['association_metas']['classe_'.$key], $this->exercice, $this->destination, $dir);
    145119                $chapitre = '';
    146120                $i = 0;
    147121                while ($data = sql_fetch($query)) {
    148122                        if ($key==='contributions_volontaires') {
    149                                 if ($data['charge_evaluee']>0) {
    150                                         $valeurs = $data['charge_evaluee'];
     123                                if ($data['depenses']>0) {
     124                                        $valeurs = $data['depenses'];
    151125                                } else {
    152                                         $valeurs = $data['produit_evalue'];
     126                                        $valeurs = $data['recettes'];
    153127                                }
    154128                        } else {
     
    173147        function exportLignesUniques($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='', $entete=true) {
    174148                if ($entete) {
    175                         LignesSimplesEntete($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
     149                        $this->LignesSimplesEntete($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
    176150                }
    177151                foreach (array('charges', 'produits', 'contributions_volontaires') as $nomClasse) {
    178                         LignesSimplesCorps($nomClasse, $champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
     152                        $this->LignesSimplesCorps($nomClasse, $champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
    179153                }
    180154        }
     
    194168                        switch ($nomClasse) {
    195169                                case 'charges' :
    196                                         $quoi = "SUM(depense) AS valeurs";
     170                                        $dir = '-1';
    197171                                        break;
    198172                                case 'produits' :
    199                                         $quoi = "SUM(recette) AS valeurs";
     173                                        $dir = '+1';
    200174                                        break;
    201175                                case 'contributions_volontaires' :
    202                                         $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
     176                                        $dir = 0;
    203177                                        break;
    204178                        }
    205179                        $baliseClasse = $nomClasse.'1';
    206180                        $this->out .= "$indent$balises[$baliseClasse]\n";
    207                         $query = sql_select(
    208                                 "imputation, $quoi ".$this->sel, // select
    209                         'spip_asso_comptes'.$this->join, // from
    210                                 $this->where, // where
    211                                 $this->order, // group by
    212                                 $this->order, // order by
    213                         '', // limit
    214                                 $this->having .$GLOBALS['association_metas']['classe_'.$nomClasse] // having
    215                         );
     181                        $query = association_calcul_totaux_comptes_classe($GLOBALS['association_metas']['classe_'.$nomClasse], $this->exercice, $this->destination, $dir);
    216182                        $chapitre = '';
    217183                        $i = 0;
    218184                        while ($data = sql_fetch($query)) {
    219185                                if ($key==='contributions_volontaires') {
    220                                         if ($data['charge_evaluee']>0) {
    221                                                 $valeurs = $data['charge_evaluee'];
     186                                        if ($data['depenses']>0) {
     187                                                $valeurs = $data['depenses'];
    222188                                        } else {
    223                                                 $valeurs = $data['produit_evalue'];
     189                                                $valeurs = $data['recettes'];
    224190                                        }
    225191                                } else {
     
    253219        // fichier texte final a afficher/telecharger
    254220        function leFichier($ext) {
    255                 $fichier = _DIR_RACINE.'/'._NOM_TEMPORAIRES_ACCESSIBLES.'compte_resultats_'.$this->exercice.".$ext"; // on essaye de creer le fichier dans le cache local/ http://www.spip.net/fr_article4637.html
     221                $fichier = _DIR_RACINE.'/'._NOM_TEMPORAIRES_ACCESSIBLES.'compte_resultats_'.$this->exercice.'_'.$this->destination.".$ext"; // on essaye de creer le fichier dans le cache local/ http://www.spip.net/fr_article4637.html
    256222                $f = fopen($fichier, 'w');
    257223                fputs($f, $this->out);
  • _plugins_/Association/Associaspip/exec/export_compteresultats_pdf.php

    r61705 r61768  
    2222                echo minipres();
    2323        } else {
    24                 $var = _request('var');
     24                include_spip('inc/association_comptabilite');
     25                $ids = association_passe_parametres_comptables();
    2526                $pdf = new EXPORT_PDF();
    2627                $pdf->SetFont('Arial', '', 12);
    2728                $pdf->AddPage();
    28                 $pdf->init($var);
     29                $pdf->init($ids);
    2930                $pdf->enTete();
    3031                $pdf->lesCharges($GLOBALS['association_metas']['classe_charges']);
     
    5859        var $largeur_pour_titre = 0; // largeur utile sans icone
    5960        var $exercice;
    60         var $join;
    61         var $sel;
    62         var $where;
    63         var $having;
    64         var $order;
     61        var $destination;
    6562        var $total_charges;
    6663        var $total_produits;
    6764
    68         function init($var) {
    69                 $tableau = unserialize(rawurldecode($var));
    70                 $this->exercice = $tableau[0];
    71                 $this->join = $tableau[1];
    72                 $this->sel = $tableau[2];
    73                 $this->where = $tableau[3];
    74                 $this->having = $tableau[4];
    75                 $this->order = $tableau[5];
     65        function init($ids) {
     66                $this->exercice = $ids['exercice'];
     67                $this->destination = $ids['destination'];
    7668
    7769                $this->largeur_utile = $this->largeur-$this->marge_gauche-$this->marge_droite;
     
    183175                $yc += $this->space_v;
    184176
    185                 $query = sql_select(
    186                         "imputation, SUM(depense) AS valeurs, date_format(date, '%Y') AS annee".$this->sel, // select
    187                         'spip_asso_comptes '.$this->join, // from
    188                         $this->where, // where
    189                         $this->order, // group by
    190                         $this->order, // order by
    191                         '', // limit
    192                         $this->having.$classe // having
    193                 );
     177                $query = association_calcul_totaux_comptes_classe($GLOBALS['association_metas']['classe_charges'], $this->exercice, $this->destination, -1);
    194178                $chapitre = '';
    195179                $i = 0;
     
    277261                $yc += $this->space_v;
    278262
    279                 $query = sql_select(
    280                         "imputation, SUM(recette) AS valeurs, date_format(date, '%Y') AS annee".$this->sel, // select
    281                         'spip_asso_comptes '.$this->join, // from
    282                         $this->where, // where
    283                         $this->order, // group by
    284                         $this->order, // order by
    285                         '', // limit
    286                         $this->having.$classe // having
    287                 );
     263                $query = association_calcul_totaux_comptes_classe($GLOBALS['association_metas']['classe_produits'], $this->exercice, $this->destination, +1);
    288264                $chapitre = '';
    289265                $i = 0;
     
    420396
    421397                $charges_evaluees = $produits_evalues = 0;
    422                 $query = sql_select(
    423                         "imputation, SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue, date_format(date, '%Y') AS annee".$this->sel, // select
    424                         'spip_asso_comptes '.$this->join, // from
    425                         $this->where, // where
    426                         $this->order, // group by
    427                         $this->order, // order by
    428                         '', // limit
    429                         $this->having.$classe // having
    430                 );
     398                $query = association_calcul_totaux_comptes_classe($GLOBALS['association_metas']['classe_contributions_volantaires'], $this->exercice, $this->destination, 0);
    431399                $chapitre = '';
    432400                $i = 0;
     
    498466
    499467        function leFichier() {
    500                 $this->Output('compte_resultats_'.$this->exercice.'.pdf', 'I');
     468                $this->Output('comptes_resultats_'.$this->exercice.'_'.$this->destination.'.pdf', 'I');
    501469        }
    502470
    503471}
    504472
    505 
    506473?>
  • _plugins_/Association/Associaspip/inc/association_comptabilite.php

    r60763 r61768  
    378378/* on recupere les parametres de requete a passer aux fonctions */
    379379function association_passe_parametres_comptables($classes=array()) {
    380     $id_exercice = intval(_request('exercice'));
    381     if( !$id_exercice ) { // pas d'exercice en parametre
    382         $id_exercice = sql_getfetsel('id_exercice', 'spip_asso_exercices', '', '', 'fin DESC'); // on recupere l'id_exercice dont la date "fin" est "la plus grande", c'est a dire l'id de l'exercice le plus recent
    383         if( !$id_exercice ) // pas d'exercice defini...
    384             $id_exercice = 0; // forcer la valeur zero pour les requetes devant l'utiliser
    385     }
    386     $annee = intval(_request('annee'));
    387     if( !$annee ) { // pas d'annee en parametre
    388         $annee = date('Y'); // on prende l'annee actuelle
    389     }
    390     $id_destination = intval(_request('destination'));
    391     if( !$id_destination ) { // pas de destination
    392     }
    393     return serialize(array($id_exercice, $id_destination, $classes) ); //!\ 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...
     380    $params = array(); // initialisation de la liste
     381    $params['exercice'] = intval(_request('exercice'));
     382    if( !$params['exercice'] ) { // pas de "id_exercice" en parametre
     383        $params['exercice'] = intval(sql_getfetsel('id_exercice', 'spip_asso_exercices', '', '', 'fin DESC')); // on recupere l'id_exercice dont la "date de fin" est "la plus grande", c'est a dire l'id de l'exercice le plus recent
     384    }
     385    $params['annee'] = intval(_request('annee'));
     386    if( !$params['annee'] ) { // pas d'annee en parametre
     387        $params['annee'] = date('Y'); // on prende l'annee actuelle
     388    }
     389    $params['destination'] = intval(_request('destination'));
     390#    if( !$params['destination'] ) { // pas de destination
     391#    }
     392    $params['classes'] = $classes;
     393    $params['url'] = serialize($params); //!\ 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...
     394    return $params;
    394395}
    395396
     
    516517}
    517518
    518 // Brique commune aux classes d'exportation des donnees du compte de bilan
     519// Brique commune aux classes d'exportation des etats comptables
    519520class ExportComptes {
    520521
    521522    var $exercice;
    522     var $join;
    523     var $sel;
    524     var $where;
    525     var $having;
    526     var $order;
     523    var $destination;
     524    var $annee;
     525    var $classes;
    527526    var $out;
    528527
    529528    function  __construct($var) {
    530529        $tableau = unserialize(rawurldecode($var));
    531         $this->exercice = $tableau[0];
    532         $this->join = $tableau[1];
    533         $this->sel = $tableau[2];
    534         $this->where = $tableau[3];
    535         $this->having = $tableau[4];
    536         $this->order = $tableau[5];
     530        $this->exercice = $tableau['exercice'];
     531        $this->destination = $tableau['estination'];
     532        $this->annee = $tableau['annee'];
     533        $this->classes = $tableau['classes'];
    537534        $this->out = '';
    538535    }
     
    549546        switch ($key) {
    550547            case 'charges' :
    551                 $quoi = "SUM(depense) AS valeurs";
     548                $dir = -1;
    552549                break;
    553550            case 'produits' :
    554                 $quoi = "SUM(recette) AS valeurs";
     551                $dir = +1;
    555552                break;
    556553            case 'contributions_volontaires' :
    557                 $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
     554                $dir = 0;
    558555                break;
    559556        }
    560         $query = sql_select(
    561             "imputation, $quoi ".$this->sel, // select
    562             'spip_asso_comptes '.$this->join, // from
    563             $this->where, // where
    564             $this->order, // group by
    565             $this->order, // order by
    566             '', // limit
    567             $this->having .$GLOBALS['association_metas']['classe_'.$key] // having
    568         );
     557        $query = association_calcul_totaux_comptes_classe($GLOBALS['association_metas']['classe_'.$key], $this->exercice, $this->destination, $dir);
    569558        $chapitre = '';
    570559        $i = 0;
    571560        while ($data = sql_fetch($query)) {
    572561            if ($key==='contributions_volontaires') {
    573                 if ($data['charge_evaluee']>0) {
    574                     $valeurs = $data['charge_evaluee'];
     562                if ($data['depenses']>0) {
     563                    $valeurs = $data['depenses'];
    575564                } else {
    576                     $valeurs = $data['produit_evalue'];
     565                    $valeurs = $data['recettes'];
    577566                }
    578567            } else {
     
    597586    function exportLignesUniques($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='', $entete=true) {
    598587        if ($entete) {
    599             LignesSimplesEntete($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
     588            $this->LignesSimplesEntete($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
    600589        }
    601590        foreach (array('charges', 'produits', 'contributions_volontaires') as $nomClasse) {
    602             LignesSimplesCorps($nomClasse, $champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
     591            $this->LignesSimplesCorps($nomClasse, $champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
    603592        }
    604593    }
     
    618607            switch ($nomClasse) {
    619608                case 'charges' :
    620                     $quoi = "SUM(depense) AS valeurs";
     609                    $dir = '-1';
    621610                    break;
    622611                case 'produits' :
    623                     $quoi = "SUM(recette) AS valeurs";
     612                    $dir = '+1';
    624613                    break;
    625614                case 'contributions_volontaires' :
    626                     $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
     615                    $dir = 0;
    627616                    break;
    628617            }
    629618            $baliseClasse = $nomClasse.'1';
    630619            $this->out .= "$indent$balises[$baliseClasse]\n";
    631             $query = sql_select(
    632                 "imputation, $quoi ".$this->sel, // select
    633                 'spip_asso_comptes'.$this->join, // from
    634                 $this->where, // where
    635                 $this->order, // group by
    636                 $this->order, // order by
    637                 '', // limit
    638                 $this->having .$GLOBALS['association_metas']['classe_'.$nomClasse] // having
    639             );
     620            $query = association_calcul_totaux_comptes_classe($GLOBALS['association_metas']['classe_'.$nomClasse], $this->exercice, $this->destination, $dir);
    640621            $chapitre = '';
    641622            $i = 0;
    642623            while ($data = sql_fetch($query)) {
    643624                if ($key==='contributions_volontaires') {
    644                     if ($data['charge_evaluee']>0) {
    645                         $valeurs = $data['charge_evaluee'];
     625                    if ($data['depenses']>0) {
     626                        $valeurs = $data['depenses'];
    646627                    } else {
    647                         $valeurs = $data['produit_evalue'];
     628                        $valeurs = $data['recettes'];
    648629                    }
    649630                } else {
     
    677658    // fichier texte final a afficher/telecharger
    678659    function leFichier($ext, $subtype) {
    679         $fichier = _DIR_RACINE.'/'._NOM_TEMPORAIRES_ACCESSIBLES.'compte_'.$subtype.'_'.$this->exercice.".$ext"; // on essaye de creer le fichier dans le cache local/ http://www.spip.net/fr_article4637.html
     660        $fichier = _DIR_RACINE.'/'._NOM_TEMPORAIRES_ACCESSIBLES.'compte_'.$subtype.'_'.$this->exercice.'_'.$this->destination.".$ext"; // on essaye de creer le fichier dans le cache local/ http://www.spip.net/fr_article4637.html
    680661        $f = fopen($fichier, 'w');
    681662        fputs($f, $this->out);
Note: See TracChangeset for help on using the changeset viewer.