Changeset 59824 in spip-zone


Ignore:
Timestamp:
Mar 27, 2012, 4:19:48 PM (7 years ago)
Author:
gildas.cotomale@…
Message:

refactorisation de l'export des comptes de resultat

Location:
_plugins_/Association/Associaspip/exec
Files:
1 added
8 edited

Legend:

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

    r59760 r59824  
    6262                                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                        }
    64                         foreach(array('csv','ctx','tex','tsv','xml','yaml') as $type) { // autres exports (donnees brutes) possibles
     64                        foreach(array('csv','ctx','dbk','json','tex','tsv','xml','yaml') as $type) { // autres exports (donnees brutes) possibles
    6565                                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                        }
     
    282282        }
    283283
     284        // export texte de type tableau (lignes*colonnes) simple : CSV,CTX,HTML*SPIP,INI*,TSV,etc.
     285        // de par la simplicite recherchee il n'y a pas de types ou autres : CSV et CTX dans une certaine mesure pouvant distinguer "nombres", "chaines alphanumeriques" et "chaine binaires encodees"
     286        function exportLignesUniques($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='', $entete=true) {
     287                if ($entete) {
     288                        LignesSimplesEntete($champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
     289                }
     290                foreach (array('charges', 'produits', 'contributions_volontaires') as $nomClasse) {
     291                        LignesSimplesCorps($nomClasse, $champsSeparateur, $lignesSeparateur, $echappements=array(), $champDebut='', $champFin='');
     292                }
     293        }
     294
     295        // export texte de type s-expression / properties-list / balisage (conteneurs*conteneurs*donnees) simple : JSON, XML (utilisable avec ASN.1), YAML, etc.
     296        // de par la simplicite recherchee il n'y a pas de types ou d'attributs : BSON, Bencode, JSON, pList, XML, etc.
     297        function exportLignesMultiples($balises, $echappements=array(), $champDebut='', $champFin='', $indent="\t", $entetesPerso='') {
     298                $this->out .= "$balises[compteresultat1]\n";
     299                if (!$entetesPerso) {
     300                        $this->out .= "$indent$balises[entete1]\n";
     301                        $this->out .= "$indent$indent$balises[titre1] $champDebut". utf8_decode(html_entity_decode(_T('asso:cpte_resultat_titre_general'))) ."$champFin $balises[titre0]\n";
     302                        $this->out .= "$indent$indent$balises[nom1] $champDebut". $GLOBALS['association_metas']['nom'] ."$champFin $balises[nom0]\n";
     303                        $this->out .= "$indent$indent$balises[exercice1] $champDebut". sql_asso1champ('exercice', $this->exercice, 'intitule') ."$champFin $balises[exercice0]\n";
     304                        $this->out .= "$indent$balises[entete0]\n";
     305                }
     306                foreach (array('charges', 'produits', 'contributions_volontaires') as $nomClasse) {
     307                        switch ($nomClasse) {
     308                                case 'charges' :
     309                                        $quoi = "SUM(depense) AS valeurs";
     310                                        break;
     311                                case 'produits' :
     312                                        $quoi = "SUM(recette) AS valeurs";
     313                                        break;
     314                                case 'contributions_volontaires' :
     315                                        $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
     316                                        break;
     317                        }
     318                        $baliseClasse = $nomClasse.'1';
     319                        $this->out .= "$indent$balises[$baliseClasse]\n";
     320                        $query = sql_select(
     321                                "imputation, $quoi, DATE_FORMAT(date, '%Y') AS annee ".$this->sel, // select
     322                        'spip_asso_comptes'.$this->join, // from
     323                                $this->where, // where
     324                                $this->order, // group by
     325                                $this->order, // order by
     326                        '', // limit
     327                                $this->having .$GLOBALS['association_metas']['classe_'.$nomClasse] // having
     328                        );
     329                        $chapitre = '';
     330                        $i = 0;
     331                        while ($data = sql_fetch($query)) {
     332                                if ($key==='contributions_volontaires') {
     333                                        if ($data['charge_evaluee']>0) {
     334                                                $valeurs = $data['charge_evaluee'];
     335                                        } else {
     336                                                $valeurs = $data['produit_evalue'];
     337                                        }
     338                                } else {
     339                                        $valeurs = $data['valeurs'];
     340                                }
     341                                $new_chapitre = substr($data['code'], 0, 2);
     342                                if ($chapitre!=$new_chapitre) {
     343                                        if ($chapitre!='') {
     344                                                $this->out .= "$indent$indent$balises[chapitre0]\n";
     345                                        }
     346                                        $this->out .= "$indent$indent$balises[chapitre1]\n";
     347                                        $this->out .= "$indent$indent$indent$balises[code1] $champDebut". str_replace(array_keys($echappements), array_values($echappements), $new_chapitre) ."$champFin $balises[code0]\n";;
     348                                        $this->out .= "$indent$indent$indent$balises[libelle1] $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 $balises[libelle0]\n";
     349                                        $chapitre = $new_chapitre;
     350                                }
     351                                $this->out .= "$indent$indent$indent$balises[categorie1]\n";
     352                                $this->out .= "$indent$indent$indent$indent$balises[code1] $champDebut". str_replace(array_keys($echappements), array_values($echappements), $data['code']) ."$champFin $balises[code0]\n";
     353                                $this->out .= "$indent$indent$indent$indent$balises[intitule1] $champDebut". str_replace(array_keys($echappements), array_values($echappements), $data['intitule']) ."$champFin $balises[intitule0]\n";
     354                                $this->out .= "$indent$indent$indent$indent$balises[montant1] $champDebut".$valeurs."$champFin $balises[montant0]\n";
     355                                $this->out .= "$indent$indent$indent$balises[categorie0]\n";
     356                        }
     357                        if ($chapitre!='') {
     358                                $this->out .= "$indent$indent$balises[chapitre0]\n";
     359                        }
     360                        $baliseClasse = $nomClasse.'0';
     361                        $this->out .= "$indent$balises[$baliseClasse]\n";
     362                }
     363                $this->out .= "$balises[compteresultat0]\n";
     364        }
     365
     366        // fichier texte final a afficher/telecharger
    284367        function leFichier($ext) {
    285                 $fichier = _DIR_RACINE.'/'._NOM_TEMPORAIRES_ACCESSIBLES.'compte_resultats_'.$this->exercice.".$ext";
     368                $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
    286369                $f = fopen($fichier, 'w');
    287370                fputs($f, $this->out);
  • _plugins_/Association/Associaspip/exec/export_compteresultats_csv.php

    r59760 r59824  
    2626        } else {
    2727                $csv = new ExportCompteResultats(_request('var'));
    28                 $csv->LignesSimplesEntete(',', "\n", array('"'=>'""'), '"', '"');
    29                 foreach (array('charges', 'produits', 'contributions_volontaires') as $key) {
    30                         $csv->LignesSimplesCorps($key, ',', "\n", array('"'=>'""'), '"', '"');
    31                 }
     28                $csv->exportLignesUniques(',', "\n", array('"'=>'""'), '"', '"');
    3229                $csv->leFichier('csv');
    3330        }
  • _plugins_/Association/Associaspip/exec/export_compteresultats_ctx.php

    r59760 r59824  
    2525        } else {
    2626                $ctx = new ExportCompteResultats(_request('var'));
    27                 $ctx->LignesSimplesEntete('|', "\n", array("\r"=>'\r', "\n"=>'\n', "\\"=>'\i', '|'=>'\p'), '', '');
    28                 foreach (array('charges', 'produits', 'contributions_volontaires') as $key) {
    29                         $ctx->LignesSimplesCorps($key, '|', "\n", array("\r"=>'\r', "\n"=>'\n', "\\"=>'\i', '|'=>'\p'), '', '')
    30                 }
     27                $ctx->exportLignesUniques('|', "\n", array("\r"=>'\r', "\n"=>'\n', "\\"=>'\i', '|'=>'\p'), '', '');
    3128                $ctx->leFichier('ctx');
    3229        }
  • _plugins_/Association/Associaspip/exec/export_compteresultats_json.php

    r59760 r59824  
    2424                echo minipres();
    2525        } else {
    26                 include_spip('inc/charsets');
    27                 include_spip('inc/association_plan_comptable');
    28                 $var = _request('var');
    29                 $json = new JSON($var);
    30                 $json->EnTete();
    31                 foreach (array('charges', 'produits', 'contributions_volontaires') as $key) {
    32                         $json->LesEcritures($key);
     26                $json = new ExportCompteResultats(_request('var'));
     27                $balises = array();
     28                foreach (array('entete', 'titre', 'nom', 'exercice', 'charges', 'produits', 'contributions_volontaires', 'chapitre', 'code', 'libelle', 'categorie', 'intitule', 'montant') as $key) {
     29                        $balises[$key.'1'] = '{ "'.ucfirst($key).'": ';
     30                        $balises[$key.'0'] = '}';
    3331                }
    34                 $json->Pied();
     32                $balises['compteresultat1'] = '{ "CompteDeResultat": ';
     33                $balises['compteresultat0'] = '}';
     34                $json->exportLignesMultiples($balises, array('&'=>'&amp;','"'=>'&quot;','<'=>'&lt;','>'=>'&gt;'), '"', '"');
    3535                $json->leFichier('json');
    3636        }
    3737}
    3838
    39 /**
    40  *  Utilisation d'une classe tres tres tres simple !!!
    41  */
    42 class JSON extends ExportCompteResultats {
    43 
    44         function EnTete() {
    45                 $this->out .= "{\n\t'CompteDeResultat': \n";
    46                 $this->out .= "\t\t{\n\t\t\t'Entete': \n\t\t\t{\n\t\t\t\n";
    47                 $this->out .= "\t\t\t\t{'Titre': '". utf8_decode(html_entity_decode(_T('asso:cpte_resultat_titre_general'))) ."' }\n";
    48                 $this->out .= "\t\t\t\t{'Nom': '". $GLOBALS['association_metas']['nom'] ."' }\n";
    49                 $this->out .= "\t\t\t\t{'Exercice': '". sql_asso1champ('exercice', $this->exercice, 'intitule') ."' }\n";
    50                 $this->out .= "\t\t\t}\n\t\t}\n"; // /Entete
    51         }
    52 
    53         function LesEcritures($key) {
    54                 switch ($key) {
    55                         case 'charges' :
    56                                 $quoi = "SUM(depense) AS valeurs";
    57                                 break;
    58                         case 'produits' :
    59                                 $quoi = "SUM(recette) AS valeurs";
    60                                 break;
    61                         case 'contributions_volontaires' :
    62                                 $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
    63                                 break;
    64                 }
    65                 $this->out .= $this->out .= "\t\t{\n\t\t\t". ucfirst($key) ."': \n\t\t\t{\n\t\t\t\n";
    66                 $query = sql_select(
    67                         "imputation, $quoi, DATE_FORMAT(date, '%Y') AS annee ".$this->sel, // select
    68                         'spip_asso_comptes'.$this->join, // from
    69                         $this->where, // where
    70                         $this->order, // group by
    71                         $this->order, // order by
    72                         '', // limit
    73                         $this->having .$GLOBALS['association_metas']['classe_'.$key] // having
    74                 );
    75                 $chapitre = '';
    76                 $i = 0;
    77                 while ($data = sql_fetch($query)) {
    78                         if ($key==='contributions_volontaires') {
    79                                 if ($data['charge_evaluee']>0) {
    80                                         $valeurs = $data['charge_evaluee'];
    81                                 } else {
    82                                         $valeurs = $data['produit_evalue'];
    83                                 }
    84                         } else {
    85                                 $valeurs = $data['valeurs'];
    86                         }
    87                         $new_chapitre = substr($data['code'], 0, 2);
    88                         if ($chapitre!=$new_chapitre) {
    89                                 if ($chapitre!='') {
    90                                         $this->out .= "\t\t\t}\n"; // /Chapitre
    91                                 }
    92                                 $this->out .= "\t\t\t'Chapitre': \n\t\t\t{\n";
    93                                 $this->out .= "\t\t\t\t{'Code': '". str_replace(array("'",'<','>'), array('&quot;','&lt;','&gt;'), $new_chapitre) ."' }\n";
    94                                 $this->out .= "\t\t\t\t{'Libelle': '". str_replace(array("'",'<','>'), array('&quot;','&lt;','&gt;'), ($GLOBALS['association_metas']['plan_comptable_prerenseigne']?association_plan_comptable_complet($new_chapitre):sql_getfetsel('intitule','spip_asso_plan',"code='$new_chapitre'"))) ."' }\n";
    95                                 $chapitre = $new_chapitre;
    96                         }
    97                         $this->out .= "\t\t\t\t'Categorie': \n\t\t\t\t\t{\n";
    98                         $this->out .= "\t\t\t\t\t\t{'Code': '". str_replace(array("'",'<','>'), array('&quot;','&lt;','&gt;'), $data['code']) ."' }\n";
    99                         $this->out .= "\t\t\t\t\t\t{'Intitule': '". str_replace(array("'",'<','>'), array('&quot;','&lt;','&gt;'), $data['intitule']) ."' }\n";
    100                         $this->out .= "\t\t\t\t\t\t{'Montant': '$valeurs' }\n";
    101                         $this->out .= "\t\t\t\t\t}\n"; // /Categorie
    102                 }
    103                 if ($chapitre!='') {
    104                         $this->out .= "\t\t\t}\n"; // /Chapitre
    105                 }
    106                 $this->out .= "\n\t\t\t}\n"; // /Classe
    107         }
    108 
    109         function Pied() {
    110                 $this->out .= "\n}\n";
    111         }
    112 
    113 }
    114 
    11539?>
  • _plugins_/Association/Associaspip/exec/export_compteresultats_tex.php

    r59760 r59824  
    2424                echo minipres();
    2525        } else {
    26                 $var = _request('var');
    2726                $latex = new LaTeX(_request('var'));
     27                $balises = array();
    2828                $latex->EnTete();
    2929                foreach (array('charges', 'produits', 'contributions_volontaires') as $key) {
     
    4242        function EnTete() {
    4343                $this->out .= '\\documentclass[a4paper]{article}'."\n";
    44                 $this->out .= '\\usepackage['.$GLOBALS['meta']['charset'].']{inputenc}'."\n";
     44                $this->out .= '\\usepackage['. str_replace('-', '', strtolower($GLOBALS['meta']['charset']) ).']{inputenc}'."\n";
    4545                $this->out .= '\\usepackage[french]{babel}'."\n";
    4646                $this->out .= '\\usepackage[table]{xcolor}'."\n";
     
    6565                                break;
    6666                }
    67                 $this->out .= '\\section*{'. ucfirst($key) .'}'."\n";
     67                $this->out .= '\\section*{'. ucfirst(_T("asso:$key")) .'}'."\n";
    6868                $this->out .= '\\begin{tabular}{|l p{.7562\\textwidth} r|}'."\n"; // 20/210=9.52381/100 30/210=14.8571/100 (210-20-30)/100=75.61909
    6969                $query = sql_select(
     
    9191                        if ($chapitre!=$new_chapitre) {
    9292                                $this->out .= str_replace(array('\\','&'), array('\\backslash{}','\\&'), $new_chapitre) .' & ';
    93                                 $this->out .= '\multicolumn{2}{l|}{'. str_replace(array('\\','&'), array('\\backslash{}','\\&'), ($GLOBALS['association_metas']['plan_comptable_prerenseigne']?association_plan_comptable_complet($new_chapitre):sql_getfetsel('intitule','spip_asso_plan',"code='$new_chapitre'"))) .'}\\\\'."\n";
     93                                $this->out .= '\multicolumn{2}{p{.86\\textwidth}|}{'. str_replace(array('\\','&'), array('\\backslash{}','\\&'), ($GLOBALS['association_metas']['plan_comptable_prerenseigne']?association_plan_comptable_complet($new_chapitre):sql_getfetsel('intitule','spip_asso_plan',"code='$new_chapitre'"))) .'}\\\\'."\n";
    9494                                $chapitre = $new_chapitre;
    9595                        }
  • _plugins_/Association/Associaspip/exec/export_compteresultats_tsv.php

    r59760 r59824  
    2525        } else {
    2626                $tsv = new ExportCompteResultats(_request('var'));
    27                 $tsv->LignesSimplesEntete("\t", "\n", array("\t"=>'\t',"\n"=>'\n'), '"', '"');
    28                 foreach (array('charges', 'produits', 'contributions_volontaires') as $key) {
    29                         $tsv->LignesSimplesCorps($key, ',', "\n", array("\t"=>'\t',"\n"=>'\n'), '"', '"');
    30                 }
     27                $tsv->exportLignesUniques("\t", "\n", array("\t"=>'\t',"\n"=>'\n'), '"', '"');
    3128                $tsv->leFichier('tab');
    3229        }
  • _plugins_/Association/Associaspip/exec/export_compteresultats_xml.php

    r59760 r59824  
    1919// Export du Compte de Resultat au format XML
    2020// http://fr.wikipedia.org/wiki/Extensible_Markup_Language
     21// jeu de balisage propre a Associaspip ; pas de DTD ni de Schema
    2122function exec_export_compteresultats_xml() {
    2223        if (!autoriser('associer', 'export_compteresultats')) {
     
    2425                echo minipres();
    2526        } else {
    26                 include_spip('inc/charsets');
    27                 include_spip('inc/association_plan_comptable');
    28                 $var = _request('var');
    29                 $xml = new XML($var);
    30                 $xml->EnTete();
    31                 foreach (array('charges', 'produits', 'contributions_volontaires') as $key) {
    32                         $xml->LesEcritures($key);
     27                $xml = new ExportCompteResultats(_request('var'));
     28                $balises = array();
     29                foreach (array('entete', 'titre', 'nom', 'exercice', 'charges', 'produits', 'contributions_volontaires', 'chapitre', 'code', 'libelle', 'categorie', 'intitule', 'montant') as $key) {
     30                        $balises[$key.'1'] = '<'.ucfirst($key).'>';
     31                        $balises[$key.'0'] = '</'.ucfirst($key).'>';
    3332                }
    34                 $xml->Pied();
     33                $balises['compteresultat1'] = '<?xml version="1.0" encoding="'.$GLOBALS['meta']['charset'].'"?>'."\n<CompteDeResultat>";
     34                $balises['compteresultat0'] = '</CompteDeResultat>';
     35                $xml->exportLignesMultiples($balises, array('<'=>'&lt;','>'=>'&gt;'), '', '');
    3536                $xml->leFichier('xml');
    3637        }
    3738}
    3839
    39 /**
    40  *  Utilisation d'une classe tres tres tres simple !!!
    41  */
    42 class XML extends ExportCompteResultats {
    43 
    44         function EnTete() {
    45                 $this->out .= '<?xml version="1.0" encoding="'.$GLOBALS['meta']['charset'].'"?>'."\n";
    46                 $this->out .= "<CompteDeResultat>\n";
    47                 $this->out .= "<Entete>\n";
    48                 $this->out .= '<Titre>'. utf8_decode(html_entity_decode(_T('asso:cpte_resultat_titre_general'))) ."</Titre>\n";
    49                 $this->out .= '<Nom>'. $GLOBALS['association_metas']['nom'] ."</Nom>\n";
    50                 $this->out .= '<Exercice>'. sql_asso1champ('exercice', $this->exercice, 'intitule') ."</Exercice>\n";
    51                 $this->out .= "</Entete>\n";
    52         }
    53 
    54         function LesEcritures($key) {
    55                 switch ($key) {
    56                         case 'charges' :
    57                                 $quoi = "SUM(depense) AS valeurs";
    58                                 break;
    59                         case 'produits' :
    60                                 $quoi = "SUM(recette) AS valeurs";
    61                                 break;
    62                         case 'contributions_volontaires' :
    63                                 $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
    64                                 break;
    65                 }
    66                 $this->out .= '<'. ucfirst($key) .">\n";
    67                 $query = sql_select(
    68                         "imputation, $quoi, DATE_FORMAT(date, '%Y') AS annee ".$this->sel, // select
    69                         'spip_asso_comptes'.$this->join, // from
    70                         $this->where, // where
    71                         $this->order, // group by
    72                         $this->order, // order by
    73                         '', // limit
    74                         $this->having .$GLOBALS['association_metas']['classe_'.$key] // having
    75                 );
    76                 $chapitre = '';
    77                 $i = 0;
    78                 while ($data = sql_fetch($query)) {
    79                         if ($key==='contributions_volontaires') {
    80                                 if ($data['charge_evaluee']>0) {
    81                                         $valeurs = $data['charge_evaluee'];
    82                                 } else {
    83                                         $valeurs = $data['produit_evalue'];
    84                                 }
    85                         } else {
    86                                 $valeurs = $data['valeurs'];
    87                         }
    88                         $new_chapitre = substr($data['code'], 0, 2);
    89                         if ($chapitre!=$new_chapitre) {
    90                                 if ($chapitre!='') {
    91                                         $this->out .= "</Chapitre>\n";
    92                                 }
    93                                 $this->out .= "<Chapitre>\n";
    94                                 $this->out .= '<Code>'. str_replace(array('<','>'), array('&lt;','&gt;'), $new_chapitre) ."</Code>\n";
    95                                 $this->out .= '<Libelle>'. str_replace(array('<','>'), array('&lt;','&gt;'), ($GLOBALS['association_metas']['plan_comptable_prerenseigne']?association_plan_comptable_complet($new_chapitre):sql_getfetsel('intitule','spip_asso_plan',"code='$new_chapitre'"))) ."</Libelle>\n";
    96                                 $chapitre = $new_chapitre;
    97                         }
    98                         $this->out .= "<Categorie>\n";
    99                         $this->out .= '<Code>'. str_replace(array('<','>'), array('&lt;','&gt;'), $data['code']) ."</Code>\n";
    100                         $this->out .= '<Intitule>'. str_replace(array('<','>'), array('&lt;','&gt;'), $data['intitule']) ."</Intitule>\n";
    101                         $this->out .= "<Montant>$valeurs</Montant>\n";
    102                         $this->out .= "</Categorie>\n";
    103                 }
    104                 if ($chapitre!='') {
    105                         $this->out .= "</Chapitre>\n";
    106                 }
    107                 $this->out .= '</'. ucfirst($key) .'>'."\n";
    108         }
    109 
    110         function Pied() {
    111                 $this->out .= '</CompteDeResultat>'."\n";
    112         }
    113 
    114 }
    115 
    11640?>
  • _plugins_/Association/Associaspip/exec/export_compteresultats_yaml.php

    r59760 r59824  
    2424                echo minipres();
    2525        } else {
    26                 include_spip('inc/charsets');
    27                 include_spip('inc/association_plan_comptable');
    28                 $var = _request('var');
    29                 $yaml = new YAML($var);
    30                 $yaml->EnTete();
    31                 foreach (array('charges', 'produits', 'contributions_volontaires') as $key) {
    32                         $yaml->LesEcritures($key);
     26                $yaml = new ExportCompteResultats(_request('var'));
     27                $balises = array();
     28                foreach (array('entete', 'titre', 'nom', 'exercice', 'charges', 'produits', 'contributions_volontaires', 'chapitre', 'code', 'libelle', 'categorie', 'intitule', 'montant') as $key) {
     29                        $balises[$key.'1'] = ucfirst($key).': ';
     30                        $balises[$key.'0'] = '';
    3331                }
     32                $balises['compteresultat1'] = 'Encodage: '.$GLOBALS['meta']['charset']."\nCompteDeResultat: ";
     33                $balises['compteresultat0'] = '';
     34                $yaml->exportLignesMultiples($balises, array("\t"=>'\t',"\r"=>'\r',"\n"=>'\n','\\'=>'\\\\'), '', '');
    3435                $yaml->leFichier('yaml');
    3536        }
    3637}
    3738
    38 /**
    39  *  Utilisation d'une classe tres tres tres simple !!!
    40  */
    41 class YAML extends ExportCompteResultats {
    42 
    43         function EnTete() {
    44                 $this->out .= 'Encodage: '.$GLOBALS['meta']['charset'].'"?>'."\n";
    45                 $this->out .= 'Titre: '. utf8_decode(html_entity_decode(_T('asso:cpte_resultat_titre_general'))) ."\n";
    46                 $this->out .= 'Association:'. $GLOBALS['association_metas']['nom'] ."\n";
    47                 $this->out .= 'Exercice: '. sql_asso1champ('exercice', $this->exercice, 'intitule') ."\n";
    48         }
    49 
    50         function LesEcritures($key) {
    51                 switch ($key) {
    52                         case 'charges' :
    53                                 $quoi = "SUM(depense) AS valeurs";
    54                                 break;
    55                         case 'produits' :
    56                                 $quoi = "SUM(recette) AS valeurs";
    57                                 break;
    58                         case 'contributions_volontaires' :
    59                                 $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
    60                                 break;
    61                 }
    62                 $this->out .= 'Classe: '.ucfirst($key) ."\n";
    63                 $query = sql_select(
    64                         "imputation, $quoi, DATE_FORMAT(date, '%Y') AS annee ".$this->sel, // select
    65                         'spip_asso_comptes'.$this->join, // from
    66                         $this->where, // where
    67                         $this->order, // group by
    68                         $this->order, // order by
    69                         '', // limit
    70                         $this->having .$GLOBALS['association_metas']['classe_'.$key] // having
    71                 );
    72                 $chapitre = '';
    73                 $i = 0;
    74                 while ($data = sql_fetch($query)) {
    75                         if ($key==='contributions_volontaires') {
    76                                 if ($data['charge_evaluee']>0) {
    77                                         $valeurs = $data['charge_evaluee'];
    78                                 } else {
    79                                         $valeurs = $data['produit_evalue'];
    80                                 }
    81                         } else {
    82                                 $valeurs = $data['valeurs'];
    83                         }
    84                         $new_chapitre = substr($data['code'], 0, 2);
    85                         if ($chapitre!=$new_chapitre) {
    86                                 $this->out .= "\tChapitre:\n";
    87                                 $this->out .= "\t\tCode: $new_chapitre\n";
    88                                 $this->out .= "\t\tLibelle: ". ($GLOBALS['association_metas']['plan_comptable_prerenseigne']?association_plan_comptable_complet($new_chapitre):sql_getfetsel('intitule','spip_asso_plan',"code='$new_chapitre'")) ."\n";
    89                                 $chapitre = $new_chapitre;
    90                         }
    91                         $this->out .= "\t\tCategorie:\n";
    92                         $this->out .= "\t\t\tCode: $data[code]\n";
    93                         $this->out .= "\t\t\tIntitule: $data[intitule]\n";
    94                         $this->out .= "\t\t\tMontant: $valeurs\n";
    95                 }
    96         }
    97 
    98 }
    99 
    10039?>
Note: See TracChangeset for help on using the changeset viewer.