source: spip-zone/_plugins_/Association/Associaspip/exec/export_compteresultats_xml.php @ 59760

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

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

File size: 4.2 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
17include_spip('exec/compte_resultat'); // c'est pour la definition de classe ExportCompteResultats
18
19// Export du Compte de Resultat au format XML
20// http://fr.wikipedia.org/wiki/Extensible_Markup_Language
21function exec_export_compteresultats_xml() {
22        if (!autoriser('associer', 'export_compteresultats')) {
23                include_spip('inc/minipres');
24                echo minipres();
25        } 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);
33                }
34                $xml->Pied();
35                $xml->leFichier('xml');
36        }
37}
38
39/**
40 *  Utilisation d'une classe tres tres tres simple !!!
41 */
42class 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
116?>
Note: See TracBrowser for help on using the repository browser.