source: spip-zone/_plugins_/Association/Associaspip/exec/export_compteresultats_yaml.php @ 59668

Last change on this file since 59668 was 59668, checked in by gildas.cotomale@…, 9 years ago

homogenisation+refactorisation interface/source/etc. diverses corrections

File size: 4.0 KB
Line 
1<?php
2
3/* * *************************************************************************\
4 *  Associaspip, extension de SPIP pour gestion d'associations             *
5 *                                                                         *
6 *  Copyright (c) 2007 Bernard Blazin & François de Montlivault (V1)       *
7 *  Copyright (c) 2010-2011 Emmanuel Saint-James & Jeannot Lapin (V2)      *
8 *  Ecrit par Marcel BOLLA en 01/2012                                      *
9 *                                                                         *
10 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
11 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
12  \************************************************************************** */
13
14if (!defined('_ECRIRE_INC_VERSION'))
15        return;
16
17// Export du Compte de Resultat au format YAML
18function exec_export_compteresultats_yaml() {
19        if (!autoriser('associer', 'export_compteresultats_xml')) {
20                include_spip('inc/minipres');
21                echo minipres();
22        } else {
23                include_spip('inc/charsets');
24                include_spip('inc/association_plan_comptable');
25                $var = _request('var');
26                $yaml = new YAML($var);
27                $yaml->EnTete();
28                foreach (array('charges', 'produits', 'contributions_volontaires') as $key) {
29                        $yaml->LesEcritures($key);
30                }
31                $yaml->Enregistre();
32        }
33}
34
35/**
36 *  Utilisation d'une classe tres tres tres simple !!!
37 */
38class YAML {
39
40        var $exercice;
41        var $join;
42        var $sel;
43        var $where;
44        var $having;
45        var $order;
46        var $out;
47
48        function __construct($var) {
49                $tableau = unserialize(rawurldecode($var));
50                $this->exercice = $tableau[0];
51                $this->join = $tableau[1];
52                $this->sel = $tableau[2];
53                $this->where = $tableau[3];
54                $this->having = $tableau[4];
55                $this->order = $tableau[5];
56                $this->out = '';
57        }
58
59        function EnTete() {
60                $this->out .= 'Encodage: '.$GLOBALS['meta']['charset'].'"?>'."\n";
61                $this->out .= 'Titre: '. utf8_decode(html_entity_decode(_T('asso:cpte_resultat_titre_general'))) ."\n";
62                $this->out .= 'Association:'. $GLOBALS['association_metas']['nom'] ."\n";
63                $this->out .= 'Exercice: '. sql_asso1champ('exercice', $this->exercice, 'intitule') ."\n";
64        }
65
66        function LesEcritures($key) {
67                switch ($key) {
68                        case 'charges' :
69                                $quoi = "SUM(depense) AS valeurs";
70                                break;
71                        case 'produits' :
72                                $quoi = "SUM(recette) AS valeurs";
73                                break;
74                        case 'contributions_volontaires' :
75                                $quoi = "SUM(depense) AS charge_evaluee, SUM(recette) AS produit_evalue";
76                                break;
77                }
78                $this->out .= 'Classe: '.ucfirst($key) ."\n";
79                $query = sql_select(
80                        "imputation, $quoi, DATE_FORMAT(date, '%Y') AS annee ".$this->sel, // select
81                        'spip_asso_comptes'.$this->join, // from
82                        $this->where, // where
83                        $this->order, // group by
84                        $this->order, // order by
85                        '', // limit
86                        $this->having .$GLOBALS['association_metas']['classe_'.$key] // having
87                );
88                $chapitre = '';
89                $i = 0;
90                while ($data = sql_fetch($query)) {
91                        if ($key==='contributions_volontaires') {
92                                if ($data['charge_evaluee']>0) {
93                                        $valeurs = $data['charge_evaluee'];
94                                } else {
95                                        $valeurs = $data['produit_evalue'];
96                                }
97                        } else {
98                                $valeurs = $data['valeurs'];
99                        }
100                        $new_chapitre = substr($data['code'], 0, 2);
101                        if ($chapitre!=$new_chapitre) {
102                                $this->out .= "\tChapitre:\n";
103                                $this->out .= "\t\tCode: $new_chapitre\n";
104                                $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";
105                                $chapitre = $new_chapitre;
106                        }
107                        $this->out .= "\t\tCategorie:\n";
108                        $this->out .= "\t\t\tCode: $data[code]\n";
109                        $this->out .= "\t\t\tIntitule: $data[intitule]\n";
110                        $this->out .= "\t\t\tMontant: $valeurs\n";
111                }
112        }
113
114        function Enregistre() {
115                $fichier =_DIR_RACINE.'/'._NOM_TEMPORAIRES_ACCESSIBLES.'compte_resultats_'.$this->exercice.'.yaml';
116                $f = fopen($fichier, 'w');
117                fputs($f, $this->out);
118                fclose($f);
119                header('Content-Type: text/yaml');
120                header('Content-Type: application/yaml');
121                header('Content-Disposition: attachment; filename="'.$fichier.'"');
122                readfile($fichier);
123        }
124}
125
126?>
Note: See TracBrowser for help on using the repository browser.