Changeset 72883 in spip-zone


Ignore:
Timestamp:
May 20, 2013, 4:31:02 AM (7 years ago)
Author:
gildas.cotomale@…
Message:

On profite du filtre sinon_interdire_acces() introduit en r72056 ... ; et on corrige quelques erreurs

Location:
_plugins_/Associaspip/trunk/exec
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/Associaspip/trunk/exec/activites.php

    r72013 r72883  
    1313
    1414function exec_activites() {
    15         if (!autoriser('voir_activites', 'association') OR !(test_plugin_actif('AGENDA') OR test_plugin_actif('SIMPLECAL')) ) {
    16                 include_spip('inc/minipres');
    17                 echo minipres();
    18         } else {
    19                 exec_activites_args(association_passeparam_id('evenement'));
    20         }
    21 }
    22 
    23 function exec_activites_args($id_evenement) {
    24         include_spip ('association_modules');
     15        sinon_interdire_acces(autoriser('voir_activites', 'association') AND (test_plugin_actif('AGENDA') OR test_plugin_actif('SIMPLECAL')) );
     16        include_spip('association_modules');
     17/// INITIALISATIONS
     18        $id_evenement = association_passeparam_id('evenement');
    2519        list($id_periode, $critere_periode) = association_passeparam_periode('debut', 'evenement', $id_evenement);
    2620        if ($id_evenement) { // la presence de ce parametre interdit la prise en compte d'autres (a annuler donc si presents dans la requete)
     
    3024                $inscription = _request('inscription');
    3125        }
     26/// AFFICHAGES_LATERAUX (connexes)
    3227        echo association_navigation_onglets('titre_onglet_activite', 'activites');
    33         // TOTAUX : nombre d'activites de la periode en cours selon iscriptions
     28/// AFFICHAGES_LATERAUX : TOTAUX : nombre d'activites de la periode en cours selon iscriptions
    3429        $avec_inscrits = sql_countsel('spip_asso_activites', sql_in_select('id_evenement', 'id_evenement', 'spip_evenements', $critere_periode), 'id_evenement');
    3530        echo association_tablinfos_effectifs('activites', array(
     
    3732                'impair'=>array( 'activites_avec_inscrits', $avec_inscrits, ),
    3833        ));
    39         // STATS : places et participations pour la periode en cours
     34/// AFFICHAGES_LATERAUX : STATS : places et participations pour la periode en cours
    4035        echo association_tablinfos_stats('participations_par_personne_par_activite', 'activites AS a INNER JOIN spip_evenements AS e ON a.id_evenement=e.id_evenement', array('entete_quantite'=>'quantite','entete_montant'=>'prix_unitaire',), $critere_periode);
    41         // TOTAUX : montants des participations pour la periode
     36/// AFFICHAGES_LATERAUX : TOTAUX : montants des participations pour la periode
    4237        echo association_tablinfos_montants('activites', sql_getfetsel('SUM(prix_unitaire) AS somme_recettes', 'spip_asso_activites AS a INNER JOIN spip_evenements AS e ON a.id_evenement=e.id_evenement', $critere_periode), 0);
    43         // datation et raccourci vers la gestion des evenements
     38/// AFFICHAGES_LATERAUX : RACCOURCIS
    4439        if ( test_plugin_actif('SIMPLECAL') ) { // gestion des evenements avec Simple Calendrier
    4540                echo association_navigation_raccourcis(array(
     
    5449                echo fin_boite_info(TRUE);
    5550        }
     51/// AFFICHAGES_CENTRAUX (corps)
    5652        debut_cadre_association('activites.gif', 'activite_titre_toutes_activites');
    57         // FILTRES
     53/// AFFICHAGES_CENTRAUX : FILTRES
    5854        $filtre_motscles = '<select name="mot" onchange="form.submit()">';
    5955        $filtre_motscles .= '<option value="">' ._T('asso:entete_tous') .'</option>';
     
    8177        echo association_form_filtres(array(
    8278                'periode' => array($id_periode, 'evenements', 'debut'),
    83 #                       'id' => $id_evenement,
     79#               'id' => $id_evenement,
    8480        ), 'activites', array(
    8581                'mot' => $filtre_motscles,
    8682                'inscription' => $filtre_incrits,
    8783        ));
    88         // TABLEAU
    89         $q_from = 'spip_evenements AS e LEFT JOIN spip_asso_activites AS a ON e.id_evenement=a.id_evenement';
     84/// AFFICHAGES_CENTRAUX : TABLEAU
     85        $q_from = 'spip_evenements AS e LEFT JOIN spip_asso_activites AS a ON e.id_evenement=a.id_evenement ';
    9086        $q_where = $critere_periode;
    9187        if ($id_mot) {
    9288                $mc_sel = ', m.id_mot AS motact';
    93                 $q_from .= ' LEFT JOIN spip_mots_evenements AS k ON  k.id_evenement=e.id_evenement LEFT JOIN spip_mots AS m ON k.id_mot=m.id_mot';
    94                 //$q_where .= " AND (m.id_mot=$id_mot OR m.titre LIKE '$mot' OR m.titre IS NULL) ";
     89                $desc_table = charger_fonction('trouver_table', 'base');
     90                if ( $desc_table('spip_mots_evenements') ) // SPIP2
     91                        $q_from .= 'INNER JOIN spip_mots_evenements AS k ON  k.id_evenement=e.id_evenement';
     92                elseif ( $desc_table('spip_mots_liens') ) // SPIP3
     93                        $q_from .= "INNER JOIN spip_mots_liens AS k ON (k.id_objet=e.id_evenement AND k.objet='evenement')";
     94                else // ??
     95                        $q_from .= ' INNER JOIN spip_mots AS k ON k.id_mot=e.id_mot ';
     96                $q_from .= ' LEFT JOIN spip_mots AS m ON k.id_mot=m.id_mot';
    9597                $q_where .= " AND m.id_mot=$id_mot";
    9698        } else {
     
    103105        }
    104106        $limit = intval(_request('debut')) . "," . _ASSOCIASPIP_LIMITE_SOUSPAGE;
    105         $q = sql_select("e.id_evenement, e.date_debut, e.date_fin, e.titre  AS intitule, e.lieu,  COUNT(a.id_activite) AS inscriptions, SUM(a.quantite) AS quantites, SUM(a.prix_unitaire) AS montants, CASE COUNT(a.id_activite) WHEN 0 THEN 0 ELSE 1 END AS participations $mc_sel", $q_from, $q_where, 'e.id_evenement', 'date_debut DESC, date_fin DESC', $limit, $q_having);
    106         echo association_bloc_listehtml2('evenements', $q,
     107        echo association_bloc_listehtml2('evenements',
     108                sql_select("e.id_evenement, e.date_debut, e.date_fin, e.titre  AS intitule, e.lieu,  COUNT(a.id_activite) AS inscriptions, SUM(a.quantite) AS quantites, SUM(a.prix_unitaire) AS montants, CASE COUNT(a.id_activite) WHEN 0 THEN 0 ELSE 1 END AS participations $mc_sel", $q_from, $q_where, 'e.id_evenement', 'date_debut DESC, date_fin DESC', $limit, $q_having), // requete
    107109                array(
    108110                        'id_evenement' => array('asso:entete_id', 'entier'),
     
    122124                array('pair vevent', 'impair vevent'), 'participations', $id_evenement
    123125        );
    124         //SOUS-PAGINATION
     126/// AFFICHAGES_CENTRAUX : PAGINATION
    125127        echo association_form_souspage(array($q_from, $q_where, 'e.id_evenement', $q_having), 'activites&'.($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode".($mot?"&mot=$mot":'').($inscription?"&inscription='$inscription'":'') );
     128/// AFFICHAGES_CENTRAUX : FIN
    126129        fin_page_association();
    127130}
  • _plugins_/Associaspip/trunk/exec/bilan.php

    r71725 r72883  
    1414// Version HTML de la synthese des Comptes de Bilan
    1515function exec_bilan() {
    16         if (!autoriser('voir_compta', 'association')) {
    17                 include_spip('inc/minipres');
    18                 echo minipres();
     16        sinon_interdire_acces(autoriser('voir_compta', 'association'));
     17        include_spip('association_modules');
     18/// INITIALISATIONS
     19        include_spip ('inc/association_comptabilite');
     20        $plan = sql_countsel('spip_asso_plan');
     21        $ids = association_passeparam_compta();
     22        if ( !($ids_destinations = _request('destinations')) ) // recuperer l'id_destination de la ou des destinations
     23                $ids_destinations = array(0); // ...ou creer une entree a 0 dans le tableau
     24/// AFFICHAGES_LATERAUX (connexes)
     25        echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
     26/// AFFICHAGES_LATERAUX : INTRO : rappel de l'exercicee affichee
     27        $infos['exercice_entete_debut'] = association_formater_date($ids['debut_periode'], 'dtstart');
     28        $infos['exercice_entete_fin'] = association_formater_date($ids['fin_periode'], 'dtend');
     29        echo association_tablinfos_intro($ids['titre_periode'], 'exercice', $ids['id_periode'], $infos);
     30/// AFFICHAGES_LATERAUX : RACCOURCIS
     31        echo association_navigation_raccourcis(array(
     32                array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     33                array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     34#               array('annexe_titre_general', 'finances-24.png', array('compte_annexe', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     35                array('encaisse', 'finances-24.png', array('encaisse', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     36        ), 16);
     37/// AFFICHAGES_LATERAUX : Form-
     38        // on cree les intitule de toutes les destinations dans un tableau
     39        $intitule_destinations = array();
     40        $destinations = sql_allfetsel('id_destination, intitule', 'spip_asso_destination', '', '', 'intitule'); // on recupere tout dans un tableau : il ne devrait pas y en avoir des masses...
     41        foreach ($destinations as $d) { // on veut plutot un tableau des intitules de toutes les destinations, donc une association id_destination=>intitule
     42                $intitule_destinations[$d['id_destination']] = $d['intitule'];
     43        }
     44        if ($GLOBALS['association_metas']['destinations']) { // on affiche une liste de choix de destinations
     45                echo debut_cadre_enfonce('',TRUE);
     46                echo '<h3>'. _T('plugins_vue_liste') .'</h3>';
     47                echo association_selectionner_destinations($ids_destinations, 'bilan&'."$ids[type_periode]=$ids[id_periode]", '<p class="boutons"><input type="submit" value="'. _T('asso:compte_resultat') .'" /></p>', FALSE); // selecteur de destinations
     48                echo fin_cadre_enfonce(TRUE);
     49        }
     50/// AFFICHAGES_CENTRAUX (corps)
     51        debut_cadre_association('finances-24.png', 'resultat_courant');
     52/// AFFICHAGES_CENTRAUX : FILTRES
     53        echo association_form_filtres(array(
     54                'periode' => array($ids['id_periode'], 'asso_comptes', 'operation'),
     55                'destinations' => array($ids_destinations, 'bilan&'."$ids[type_periode]=$ids[id_periode]", '', TRUE),
     56        ), 'bilan');
     57        if ($plan) {
     58                $join = ' RIGHT JOIN spip_asso_plan ON imputation=code';
     59                $sel = ', code, intitule, classe';
     60                $where = " date_operation>='$ids[debut_periode]' AND date_operation<='$ids[fin_operation]' ";
     61                $having =  "classe NOT IN (". sql_quote($GLOBALS['association_metas']['classe_banques']). ',' .sql_quote($GLOBALS['association_metas']['classe_contributions_volontaires']) . ',' .sql_quote($GLOBALS['association_metas']['classe_charges']) . ',' .sql_quote($GLOBALS['association_metas']['classe_produits']) . ')';
     62                $order = 'code';
    1963        } else {
    20                 include_spip ('association_modules');
    21                 include_spip ('inc/association_comptabilite');
    22                 $plan = sql_countsel('spip_asso_plan');
    23                 $ids = association_passeparam_compta();
    24                 if ( !($ids_destinations = _request('destinations')) ) // recuperer l'id_destination de la ou des destinations
    25                         $ids_destinations = array(0); // ...ou creer une entree a 0 dans le tableau
    26                 include_spip('inc/association_comptabilite');
    27                 echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
    28                 // INTRO : rappel de l'exercicee affichee
    29                 $infos['exercice_entete_debut'] = association_formater_date($ids['debut_periode'], 'dtstart');
    30                 $infos['exercice_entete_fin'] = association_formater_date($ids['fin_periode'], 'dtend');
    31                 echo association_tablinfos_intro($ids['titre_periode'], 'exercice', $ids['id_periode'], $infos);
    32                 // datation et raccourcis
    33                 echo association_navigation_raccourcis(array(
    34                         array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    35                         array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    36 #                       array('annexe_titre_general', 'finances-24.png', array('compte_annexe', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    37                         array('encaisse', 'finances-24.png', array('encaisse', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    38                 ), 16);
    39                 // on cree les intitule de toutes les destinations dans un tableau
    40                 $intitule_destinations = array();
    41                 $destinations = sql_allfetsel('id_destination, intitule', 'spip_asso_destination', '', '', 'intitule'); // on recupere tout dans un tableau : il ne devrait pas y en avoir des masses...
    42                 foreach ($destinations as $d) { // on veut plutot un tableau des intitules de toutes les destinations, donc une association id_destination=>intitule
    43                         $intitule_destinations[$d['id_destination']] = $d['intitule'];
     64                $join = $sel = $where = $having = $order = '';
     65        }
     66        $classes = array(
     67                sql_quote($GLOBALS['association_metas']['classe_charges']),
     68                sql_quote($GLOBALS['association_metas']['classe_produits']),
     69        );
     70/// AFFICHAGES_CENTRAUX : TABLEAUX : bilans
     71        foreach ($ids_destinations as $id_destination) { // on boucle sur le tableau des destinations en refaisant le fetch a chaque iteration
     72                echo debut_cadre_relief('', TRUE, '', ($id_destination ? $intitule_destinations[$id_destination] : ($GLOBALS['association_metas']['destinations']?_T('asso:toutes_destination'):'') ) );
     73                association_liste_totaux_comptes_classes($classes, 'cpte_resultat', 0, $ids['id_periode'], $id_destination);
     74                if(autoriser('exporter_compta', 'association') && !$id_destination) { // on peut exporter : pdf, csv, xml, ...
     75                        echo "<div class='action'>\n",  _T('asso:cpte_resultat_mode_exportation');
     76                        if (test_plugin_actif('FPDF')) { // impression en PDF
     77                                echo "<a href='".generer_action_auteur('pdf_comptesresultat', 0) ."'>PDF</a> ";
     78                         }
     79                        export_compte(array('id_periode' => 0, 'type_periode' => 'annee'), 'x', false) ;
     80                        echo "\n</div>";
    4481                }
    45                 if ($GLOBALS['association_metas']['destinations']) { // on affiche une liste de choix de destinations
    46                         echo debut_cadre_enfonce('',TRUE);
    47                         echo '<h3>'. _T('plugins_vue_liste') .'</h3>';
    48                         echo association_selectionner_destinations($ids_destinations, 'bilan&'."$ids[type_periode]=$ids[id_periode]", '<p class="boutons"><input type="submit" value="'. _T('asso:compte_resultat') .'" /></p>', FALSE); // selecteur de destinations
    49                         echo fin_cadre_enfonce(TRUE);
    50                 }
    51                 debut_cadre_association('finances-24.png', 'resultat_courant');
    52                 // Filtres
    53                 echo association_form_filtres(array(
    54                         'periode' => array($ids['id_periode'], 'asso_comptes', 'operation'),
    55                         'destinations' => array($ids_destinations, 'bilan&'."$ids[type_periode]=$ids[id_periode]", '', TRUE),
    56                 ), 'bilan');
    57                 if ($plan) {
    58                         $join = ' RIGHT JOIN spip_asso_plan ON imputation=code';
    59                         $sel = ', code, intitule, classe';
    60                         $where = " date_operation>='$ids[debut_periode]' AND date_operation<='$ids[fin_operation]' ";
    61                         $having =  "classe NOT IN (". sql_quote($GLOBALS['association_metas']['classe_banques']). ',' .sql_quote($GLOBALS['association_metas']['classe_contributions_volontaires']) . ',' .sql_quote($GLOBALS['association_metas']['classe_charges']) . ',' .sql_quote($GLOBALS['association_metas']['classe_produits']) . ')';
    62                         $order = 'code';
    63                 } else {
    64                         $join = $sel = $where = $having = $order = '';
    65                 }
    66                 $classes = array(
    67                         sql_quote($GLOBALS['association_metas']['classe_charges']),
    68                         sql_quote($GLOBALS['association_metas']['classe_produits']),
    69                 );
    70                 foreach ($ids_destinations as $id_destination) { // on boucle sur le tableau des destinations en refaisant le fetch a chaque iteration
    71                         // TABLEAU EXPLOITATION
    72                         echo debut_cadre_relief('', TRUE, '', ($id_destination ? $intitule_destinations[$id_destination] : ($GLOBALS['association_metas']['destinations']?_T('asso:toutes_destination'):'') ) );
    73                         association_liste_totaux_comptes_classes($classes, 'cpte_resultat', 0, $ids['id_periode'], $id_destination);
    74                         if(autoriser('exporter_compta', 'association') && !$id_destination) { // on peut exporter : pdf, csv, xml, ...
    75                           echo "<div class='action'>\n",  _T('asso:cpte_resultat_mode_exportation');
    76                           if (test_plugin_actif('FPDF')) { // impression en PDF
    77                             echo "<a href='".generer_action_auteur('pdf_comptesresultat', 0) ."'>PDF</a> ";
    78                           }
    79                           export_compte(array('id_periode' => 0, 'type_periode' => 'annee'), 'x', false) ;
    80                           echo "\n</div>";
    81                         }
    82                         echo fin_cadre_relief(TRUE);
    83                 }
    84 //              bilan_encaisse();
    85                 fin_page_association();
     82                echo fin_cadre_relief(TRUE);
    8683        }
     84/// AFFICHAGES_CENTRAUX : TABLEAU : encaisse
     85/// AFFICHAGES_CENTRAUX : FIN
     86        fin_page_association();
    8787}
    8888
  • _plugins_/Associaspip/trunk/exec/compte_annexe.php

    r71725 r72883  
    1414// Version HTML de la synthese des Comptes d'Annexes ?
    1515function exec_compte_annexe() {
    16         if (!autoriser('voir_compta', 'association')) {
    17                 include_spip('inc/minipres');
    18                 echo minipres();
    19         } else {
    20                 include_spip('association_modules');
    21                 include_spip('inc/association_comptabilite');
    22 // initialisations
    23                 $ids = association_passeparam_compta();
    24 // traitements
    25                 echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
    26                 // INTRO : rappel de l'exercicee affichee
    27                 $infos['exercice_entete_debut'] = association_formater_date($ids['debut_periode'], 'dtstart');
    28                 $infos['exercice_entete_fin'] = association_formater_date($ids['fin_periode'], 'dtend');
    29                 echo association_tablinfos_intro($ids['titre_periode'], 'exercice', $ids['id_periode'], $infos);
    30                 // datation et raccourcis
    31                 echo association_navigation_raccourcis(array(
    32                         array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    33                         array('encaisse_titre_general', 'finances-24.png', array('encaisse', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    34                         array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    35                         'cpte_bilan_titre_general' => array('finances-24.png', array('bilan', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    36                 ), 16);
    37                 debut_cadre_association('finances-24.png', 'annexe_titre_general');
    38                 // Filtres
    39                 echo association_form_filtres(array(
    40                         'periode' => array($ids['id_periode'], 'asso_comptes', 'operation'),
    41                         'destination' => $ids['destination'],
    42                 ), 'annexe');
    43                 echo _T('asso:non_implemente');
    44                 // http://www.aquadesign.be/actu/article-3678.php
    45                 // http://www.documentissime.fr/dossiers-droit-pratique/dossier-274-les-documents-comptables-obligatoires/les-comptes-annuels/l-annexe.html
    46                 fin_page_association();
    47         }
     16        sinon_interdire_acces(autoriser('voir_compta', 'association'));
     17        include_spip('association_modules');
     18/// INITIALISATIONS
     19        include_spip('inc/association_comptabilite');
     20        $ids = association_passeparam_compta();
     21/// AFFICHAGES_LATERAUX (connexes)
     22        echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
     23/// AFFICHAGES_LATERAUX : INTRO : rappel de l'exercicee affichee
     24        $infos['exercice_entete_debut'] = association_formater_date($ids['debut_periode'], 'dtstart');
     25        $infos['exercice_entete_fin'] = association_formater_date($ids['fin_periode'], 'dtend');
     26        echo association_tablinfos_intro($ids['titre_periode'], 'exercice', $ids['id_periode'], $infos);
     27/// AFFICHAGES_LATERAUX : RACCOURCIS
     28        echo association_navigation_raccourcis(array(
     29                array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     30                array('encaisse_titre_general', 'finances-24.png', array('encaisse', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     31                array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     32                'cpte_bilan_titre_general' => array('finances-24.png', array('bilan', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     33        ), 16);
     34/// AFFICHAGES_CENTRAUX (corps)
     35        debut_cadre_association('finances-24.png', 'annexe_titre_general');
     36/// AFFICHAGES_CENTRAUX : FILTRES
     37        echo association_form_filtres(array(
     38                'periode' => array($ids['id_periode'], 'asso_comptes', 'operation'),
     39                'destination' => $ids['destination'],
     40        ), 'annexe');
     41/// AFFICHAGES_CENTRAUX : TABLEAU
     42        echo _T('asso:non_implemente');
     43        // http://www.aquadesign.be/actu/article-3678.php
     44        // http://www.documentissime.fr/dossiers-droit-pratique/dossier-274-les-documents-comptables-obligatoires/les-comptes-annuels/l-annexe.html
     45/// AFFICHAGES_CENTRAUX : FIN
     46        fin_page_association();
    4847}
    4948
  • _plugins_/Associaspip/trunk/exec/compte_bilan.php

    r71725 r72883  
    1414// Version HTML de la synthese des Comptes de Bilan
    1515function exec_compte_bilan() {
    16         if (!autoriser('voir_compta', 'association')) {
    17                 include_spip('inc/minipres');
    18                 echo minipres();
    19         } else {
    20                 include_spip('association_modules');
    21                 include_spip('inc/association_comptabilite');
    22                 $ids = association_passeparam_compta();
    23                 echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
    24                 // INTRO : rappel de l'exercicee affichee
    25                 $infos['exercice_entete_debut'] = association_formater_date($ids['debut_periode'], 'dtstart');
    26                 $infos['exercice_entete_fin'] = association_formater_date($ids['fin_periode'], 'dtend');
    27                 echo association_tablinfos_intro($ids['titre_periode'], 'exercice', $ids['id_periode'], $infos);
    28                 // pas de sommes de synthes puisque tous les totaux sont dans la zone centrale ;-
    29                 // datation et raccourcis
    30                 echo association_navigation_raccourcis(array(
    31                         array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    32                         array('encaisse_titre_general', 'finances-24.png', array('encaisse', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    33                         array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', "$ids[type_periode]=$ids[id_periode]".($ids['destination']?"&destination=$ids[destination]":'')), array('voir_compta', 'association') ),
    34 #                       array('annexe_titre_general', 'finances-24.png', array('compte_annexe', "$ids[type_periode]=$ids[id_periode]".($ids['destination']?"&destination=$ids[destination]":'')), array('voir_compta', 'association') ),
    35                 ), 16);
    36                 if(autoriser('exporter_compta', 'association')) { // on peut exporter : pdf, csv, xml, ...
    37                         echo debut_cadre_enfonce('', TRUE);
    38                         echo '<h3>'. _T('asso:cpte_bilan_mode_exportation') .'</h3>';
    39                         if (test_plugin_actif('FPDF')) {  // impression en PDF : _T('asso:bouton_impression')
    40                                 echo association_navigation_raccourci1('PDF', 'print-24.png', generer_action_auteur('pdf_comptesbilan', 0) );
    41                         }
    42                         export_compte($ids, 'bilan');
    43                         echo fin_cadre_enfonce(TRUE);
     16        sinon_interdire_acces(autoriser('voir_compta', 'association'));
     17        include_spip('association_modules');
     18/// INITIALISATIONS
     19        include_spip('inc/association_comptabilite');
     20        $ids = association_passeparam_compta();
     21/// AFFICHAGES_LATERAUX (connexes)
     22        echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
     23/// AFFICHAGES_LATERAUX : INTRO : rappel de l'exercicee affichee
     24        $infos['exercice_entete_debut'] = association_formater_date($ids['debut_periode'], 'dtstart');
     25        $infos['exercice_entete_fin'] = association_formater_date($ids['fin_periode'], 'dtend');
     26        echo association_tablinfos_intro($ids['titre_periode'], 'exercice', $ids['id_periode'], $infos);
     27        // pas de sommes de synthes puisque tous les totaux sont dans la zone centrale ;-
     28/// AFFICHAGES_LATERAUX : RACCOURCIS
     29        echo association_navigation_raccourcis(array(
     30                array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     31                array('encaisse_titre_general', 'finances-24.png', array('encaisse', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     32                array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', "$ids[type_periode]=$ids[id_periode]".($ids['destination']?"&destination=$ids[destination]":'')), array('voir_compta', 'association') ),
     33#               array('annexe_titre_general', 'finances-24.png', array('compte_annexe', "$ids[type_periode]=$ids[id_periode]".($ids['destination']?"&destination=$ids[destination]":'')), array('voir_compta', 'association') ),
     34        ), 16);
     35        if(autoriser('exporter_compta', 'association')) { // on peut exporter : pdf, csv, xml, ...
     36                echo debut_cadre_enfonce('', TRUE);
     37                echo '<h3>'. _T('asso:cpte_bilan_mode_exportation') .'</h3>';
     38                if (test_plugin_actif('FPDF')) {  // impression en PDF : _T('asso:bouton_impression')
     39                        echo association_navigation_raccourci1('PDF', 'print-24.png', generer_action_auteur('pdf_comptesbilan', 0) );
    4440                }
    45                 debut_cadre_association('finances-24.png', 'cpte_bilan_titre_general');
    46                 // Filtres
    47                 echo association_form_filtres(array(
    48                         'periode' => array($ids['id_periode'], 'asso_comptes', 'operation'),
    49                         'destination' => $ids['destination'],
    50                 ), 'compte_bilan');
    51                 // les autres classes a prendre en compte ici
    52                 $classes_bilan = array();
    53                 $query = sql_select(
    54                         'classe', // select
    55                         'spip_asso_plan', // from
    56                         sql_in('classe', array($GLOBALS['association_metas']['classe_charges'],$GLOBALS['association_metas']['classe_produits'],$GLOBALS['association_metas']['classe_contributions_volontaires']), 'NOT'), // where http://programmer.spip.org/sql_in,642
    57                         'classe', // group by
    58                         'classe' // order by
    59                 );
    60                 while ($data = sql_fetch($query)) {
    61                         $classes_bilan[] = $data['classe'];
    62                 }
    63                 // liste des passifs (le patrimoine/avoir) cumulees par comptes
    64                 $passifs = association_liste_totaux_comptes_classes($classes_bilan, 'cpte_bilan', '+1', $ids['id_periode'], $ids['destination']);
    65                 // liste des actifs (les dettes) cumulees par comptes
    66                 $actifs = association_liste_totaux_comptes_classes($classes_bilan, 'cpte_bilan', '-1', $ids['id_periode'], $ids['destination']);
    67                 // 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)
    68                 association_liste_resultat_net($passifs, $actifs);
    69                 // liste des bilans (actifs et passifs) par comptes
    70                 fin_page_association();
     41                export_compte($ids, 'bilan');
     42                echo fin_cadre_enfonce(TRUE);
    7143        }
     44/// AFFICHAGES_CENTRAUX (corps)
     45        debut_cadre_association('finances-24.png', 'cpte_bilan_titre_general');
     46/// AFFICHAGES_CENTRAUX : FILTRES
     47        echo association_form_filtres(array(
     48                'periode' => array($ids['id_periode'], 'asso_comptes', 'operation'),
     49                'destination' => $ids['destination'],
     50        ), 'compte_bilan');
     51/// AFFICHAGES_CENTRAUX : TABLEAUX
     52        // les autres classes a prendre en compte ici
     53        $classes_bilan = array();
     54        $query = sql_select(
     55                'classe', // select
     56                'spip_asso_plan', // from
     57                sql_in('classe', array($GLOBALS['association_metas']['classe_charges'],$GLOBALS['association_metas']['classe_produits'],$GLOBALS['association_metas']['classe_contributions_volontaires']), 'NOT'), // where http://programmer.spip.org/sql_in,642
     58                'classe', // group by
     59                'classe' // order by
     60        );
     61        while ($data = sql_fetch($query)) {
     62                $classes_bilan[] = $data['classe'];
     63        }
     64        // liste des passifs (le patrimoine/avoir) cumulees par comptes
     65        $passifs = association_liste_totaux_comptes_classes($classes_bilan, 'cpte_bilan', '+1', $ids['id_periode'], $ids['destination']);
     66        // liste des actifs (les dettes) cumulees par comptes
     67        $actifs = association_liste_totaux_comptes_classes($classes_bilan, 'cpte_bilan', '-1', $ids['id_periode'], $ids['destination']);
     68        // 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)
     69        association_liste_resultat_net($passifs, $actifs);
     70        // liste des bilans (actifs et passifs) par comptes
     71/// AFFICHAGES_CENTRAUX : FIN
     72        fin_page_association();
    7273}
    7374
  • _plugins_/Associaspip/trunk/exec/compte_resultat.php

    r71725 r72883  
    1414// Version HTML de la synthese des Comptes de Resultat
    1515function exec_compte_resultat() {
    16         if (!autoriser('voir_compta', 'association')) {
    17                 include_spip('inc/minipres');
    18                 echo minipres();
    19         } else {
    20                 include_spip('association_modules');
    21                 include_spip('inc/association_comptabilite');
    22                 $ids = association_passeparam_compta();
    23                 echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
    24                 // INTRO : rappel de l'exercicee affichee
    25                 $infos['exercice_entete_debut'] = association_formater_date($ids['debut_periode'], 'dtstart');
    26                 $infos['exercice_entete_fin'] = association_formater_date($ids['fin_periode'], 'dtend');
    27                 echo association_tablinfos_intro($ids['titre_periode'], 'exercice', $ids['id_periode'], $infos);
    28                 // pas de sommes de synthes puisque tous les totaux sont dans la zone centrale ;-
    29                 // datation et raccourcis
    30                 echo association_navigation_raccourcis(array(
    31                         array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    32                         array('encaisse_titre_general', 'finances-24.png', array('encaisse', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    33                         array('cpte_bilan_titre_general', 'finances-24.png', array('compte_bilan', "$ids[type_periode]=$ids[id_periode]".($ids['destination']?"&destination=$ids[destination]":'')), array('voir_compta', 'association') ),
    34 #                       array('annexe_titre_general', 'finances-24.png', array('compte_annexe', "$ids[type_periode]=$ids[id_periode]".($ids['destination']?"&destination=$ids[destination]":'')), array('voir_compta', 'association') ),
    35                 ), 16);
    36                 if(autoriser('exporter_compta', 'association')) { // on peut exporter : pdf, csv, xml, ...
    37                         echo debut_cadre_enfonce('', TRUE);
    38                         echo '<h3>'. _T('asso:cpte_resultat_mode_exportation') .'</h3>';
    39                         if (test_plugin_actif('FPDF')) { // impression en PDF : _T('asso:bouton_impression')
    40                                 echo association_navigation_raccourci1('PDF', 'print-24.png', generer_action_auteur('pdf_comptesresultat', 0) );
    41                         }
    42                         export_compte($ids, 'resultats');
    43                         echo fin_cadre_enfonce(TRUE);
     16        sinon_interdire_acces(autoriser('voir_compta', 'association'));
     17        include_spip('association_modules');
     18/// INITIALISATIONS
     19        include_spip('inc/association_comptabilite');
     20        $ids = association_passeparam_compta();
     21/// AFFICHAGES_LATERAUX (connexes)
     22        echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
     23/// AFFICHAGES_LATERAUX : INTRO : rappel de l'exercicee affichee
     24        $infos['exercice_entete_debut'] = association_formater_date($ids['debut_periode'], 'dtstart');
     25        $infos['exercice_entete_fin'] = association_formater_date($ids['fin_periode'], 'dtend');
     26        echo association_tablinfos_intro($ids['titre_periode'], 'exercice', $ids['id_periode'], $infos);
     27        // pas de sommes de synthes puisque tous les totaux sont dans la zone centrale ;-
     28/// AFFICHAGES_LATERAUX : RACCOURCIS
     29        echo association_navigation_raccourcis(array(
     30                array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     31                array('encaisse_titre_general', 'finances-24.png', array('encaisse', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     32                array('cpte_bilan_titre_general', 'finances-24.png', array('compte_bilan', "$ids[type_periode]=$ids[id_periode]".($ids['destination']?"&destination=$ids[destination]":'')), array('voir_compta', 'association') ),
     33#               array('annexe_titre_general', 'finances-24.png', array('compte_annexe', "$ids[type_periode]=$ids[id_periode]".($ids['destination']?"&destination=$ids[destination]":'')), array('voir_compta', 'association') ),
     34        ), 16);
     35        if(autoriser('exporter_compta', 'association')) { // on peut exporter : pdf, csv, xml, ...
     36                echo debut_cadre_enfonce('', TRUE);
     37                echo '<h3>'. _T('asso:cpte_resultat_mode_exportation') .'</h3>';
     38                if (test_plugin_actif('FPDF')) { // impression en PDF : _T('asso:bouton_impression')
     39                        echo association_navigation_raccourci1('PDF', 'print-24.png', generer_action_auteur('pdf_comptesresultat', 0) );
    4440                }
    45                 debut_cadre_association('finances-24.png', 'cpte_resultat_titre_general');
    46                 // Filtres
    47                 echo association_form_filtres(array(
    48                         'periode' => array($ids['id_periode'], 'asso_comptes', 'operation'),
    49                         'destination' => $ids['destination'],
    50                 ), 'compte_resultat');
    51                 // liste des charges (depenses d'exploitation) cumulees par comptes
    52                 $charges = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_charges'], 'cpte_resultat', '-1', $ids['id_periode'], $ids['destination']);
    53                 // liste des produits (recettes d'exploitation) cumules par comptes
    54                 $produits = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_produits'], 'cpte_resultat', '+1', $ids['id_periode'], $ids['destination']);
    55                 // resultat comptable courant : c'est la difference entre les recettes et les depenses d'exploitation
    56                 association_liste_resultat_net($produits, $charges);
    57                 // liste des contributions volontaires (emplois et ressources) par comptes
    58                 $contributions = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_contributions_volontaires'], 'cpte_benevolat', 0, $ids['id_periode'], $ids['destination']);
    59                 fin_page_association();
     41                export_compte($ids, 'resultats');
     42                echo fin_cadre_enfonce(TRUE);
    6043        }
     44/// AFFICHAGES_CENTRAUX (corps)
     45        debut_cadre_association('finances-24.png', 'cpte_resultat_titre_general');
     46/// AFFICHAGES_CENTRAUX : FILTRES
     47        echo association_form_filtres(array(
     48                'periode' => array($ids['id_periode'], 'asso_comptes', 'operation'),
     49                'destination' => $ids['destination'],
     50        ), 'compte_resultat');
     51/// AFFICHAGES_CENTRAUX : TABLEAU
     52        // liste des charges (depenses d'exploitation) cumulees par comptes
     53        $charges = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_charges'], 'cpte_resultat', '-1', $ids['id_periode'], $ids['destination']);
     54        // liste des produits (recettes d'exploitation) cumules par comptes
     55        $produits = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_produits'], 'cpte_resultat', '+1', $ids['id_periode'], $ids['destination']);
     56        // resultat comptable courant : c'est la difference entre les recettes et les depenses d'exploitation
     57        association_liste_resultat_net($produits, $charges);
     58        // liste des contributions volontaires (emplois et ressources) par comptes
     59        $contributions = association_liste_totaux_comptes_classes($GLOBALS['association_metas']['classe_contributions_volontaires'], 'cpte_benevolat', 0, $ids['id_periode'], $ids['destination']);
     60/// AFFICHAGES_CENTRAUX : FIN
     61        fin_page_association();
    6162}
    6263
  • _plugins_/Associaspip/trunk/exec/comptes.php

    r72873 r72883  
    1313
    1414function exec_comptes() {
    15         if (!autoriser('voir_compta', 'association')) {
    16                 include_spip('inc/minipres');
    17                 echo minipres();
    18         } else {
    19                 include_spip ('association_modules');
    20 // initialisations
    21                 $vu = _request('vu');
    22                 if (!is_numeric($vu))
    23                         $vu = '';
    24                 $imputation = _request('imputation');
    25                 if (!$imputation)
    26                         $imputation= '%';
    27                 $id_compte = association_passeparam_id('compte');
    28                 list($id_periode, $critere_periode) = association_passeparam_periode('operation', 'asso_comptes', $id_compte);
    29 // traitements
    30                 $where = 'imputation LIKE '. sql_quote($imputation);
    31                 $where .= (!is_numeric($vu) ? '' : " AND vu=$vu");
    32                 $where .= " AND $critere_periode";
    33                 echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
    34                 $journaux = sql_allfetsel('journal, intitule', 'spip_asso_comptes RIGHT JOIN spip_asso_plan ON journal=code', $critere_periode, "intitule DESC"); // on se permet sql_allfetsel car il s'agit d'une association (mois d'une demie dizaine de comptes) et non d'un etablissement financier (des milliers de comptes clients)
    35                 // TOTAUX : operations de l'exercice par compte financier (indique rapidement les comptes financiers les plus utilises ou les modes de paiement preferes...)
    36                 foreach (array('recette','depense') as $direction) {
    37                         foreach ($journaux as $financier) {
    38                                 $nombre_direction = sql_countsel('spip_asso_comptes', "journal=".sql_quote($financier['journal'])." AND $critere_periode AND $direction<>0 ");
    39                                 if ($nombre_direction) { // on ne s'embarasse pas avec ceux a zero
    40                                         $direction_decomptes[$financier['journal']] = array( $financier['intitule'], $nombre_direction, );
    41                                 }
    42                         }
    43                         if (count($direction_libelles))
    44                                 echo association_tablinfos_effectifs(_T('asso:compte_entete_financier') .': '. _T('asso:'.$direction.'s'), $direction_decomptes); // ToDo: tri par ordre decroissant (sorte de "top")
    45                 }
    46                 // TOTAUX : operations de l'exercice par type d'operation
    47                 $classes = array('pair'=>'produits', 'impair'=>'charges', 'cv'=>'contributions_volontaires', 'vi'=>'banques');
    48                 $liste_types = array();
    49                 foreach ($classes as $classe_css=>$classe_cpt) {
    50                         $liste_types[$classe_css] = array( 'compte_liste_nombre_'.$classe_css, sql_countsel('spip_asso_comptes', "LEFT(imputation,1)=".sql_quote($GLOBALS['association_metas']["classe_$classe_cpt"])." AND $critere_periode "), );
    51                 }
    52                 echo association_tablinfos_effectifs(_T('asso:bouton_radio_type_operation_titre'), $liste_types);
    53                 // STATS : montants de l'exercice pour l'imputation choisie (toutes si aucune)
    54                 echo association_tablinfos_stats('mouvements', 'comptes', array('bilan_recettes'=>'recette','bilan_depenses'=>'depense',), $where, 2);
    55                 // TOTAUX : montants de l'exercice pour l'imputation choisie (toutes si aucune)
    56                 $data = sql_fetsel( 'SUM(recette) AS somme_recettes, SUM(depense) AS somme_depenses, code, classe',  'spip_asso_comptes RIGHT JOIN spip_asso_plan ON imputation=code', "$where AND classe<>".sql_quote($GLOBALS['association_metas']['classe_banques']). " AND classe<>".sql_quote($GLOBALS['association_metas']['classe_contributions_volontaires']), 'code'); // une contribution benevole ne doit pas etre comptabilisee en charge/produit
    57                 echo association_tablinfos_montants(($imputation=='%' ? _T('asso:entete_tous') : $imputation), $data['somme_recettes'], $data['somme_depenses']);
    58                 // datation et raccourcis
    59                 echo association_navigation_raccourcis(array(
    60                         array('encaisse_titre_general', 'finances-24.png', array('encaisse', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_compta', 'association') ),
    61                         array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_compta', 'association') ),
    62                         array('cpte_bilan_titre_general','finances-24.png', array('compte_bilan', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_compta', 'association') ),
    63 #                       array('annexe_titre_general', 'finances-24.png', array('compte_annexe', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_compta', 'association') ),
    64                         array('ajouter_une_operation', 'ajout-24.png', array('edit_compte'), array('editer_compta', 'association') ),
    65                 ), 6);
    66                 debut_cadre_association('finances-24.png', 'informations_comptables');
    67                 // FILTRES
    68                 $filtre_imputation = '<select name="imputation" onchange="form.submit()">';
    69                 $filtre_imputation .= '<option value="%" ';
    70                 $filtre_imputation .= (($imputation=='%' || $imputation='')?' selected="selected"':'');
    71                 $filtre_imputation .= '>'. _T('asso:entete_tous') .'</option>';
    72                 $sql = sql_select(
    73                         'imputation , code, intitule, classe',
    74                         'spip_asso_comptes RIGHT JOIN spip_asso_plan ON imputation=code',
    75                         "classe<>". sql_quote($GLOBALS['association_metas']['classe_banques']) ." AND active AND $critere_periode ", // pour l'exercice en cours... ; n'afficher ni les comptes de la classe financiere --ce ne sont pas des imputations-- ni les inactifs
    76                         'code', 'code ASC');
    77                 while ($plan = sql_fetch($sql)) { // Remplir le select uniquement avec les comptes utilises
    78                         $filtre_imputation .= '<option value="'.$plan['code'].'"';
    79                         $filtre_imputation .= ($imputation==$plan['code']?' selected="selected"':'');
    80                         $filtre_imputation .= '>'.$plan['code'].' - '.$plan['intitule'].'</option>';
    81                 }
    82                 $filtre_imputation .= '</select>';
    83                 $filtre_vu = '<select name="vu" onchange="form.submit()">';
    84                 $filtre_vu .= '<option value="" '. ($vu==''?'':' selected="selected"') .'>'. _T('asso:cpte_op_vu_tous') .'</option>';
    85                 $filtre_vu .= '<option value="0" '. ($vu=='0'?' selected="selected"':'') .'>'. _T('asso:cpte_op_vu_non') .'</option>';
    86                 $filtre_vu .= '<option value="1" '. ($vu=='1'?' selected="selected"':'') .'>'. _T('asso:cpte_op_vu_oui') .'</option>';
    87                 $filtre_vu .= '</select>';
    88                 echo association_form_filtres(array(
    89                         'periode' => array($id_periode, 'asso_comptes', 'operation'),
    90 #                       'id' => $id_compte,
    91                 ), 'comptes', array(
    92                         'imputation' => $filtre_imputation,
    93                         'vu' => $filtre_vu,
    94                 ));
    95                 if ($id_compte) { // (re)calculer la pagination en fonction de id_compte
    96                         $all_id_compte = sql_allfetsel('id_compte', 'spip_asso_comptes', $where, '',  'date_operation DESC,id_compte DESC'); // on recupere les id_comptes de la requete sans le critere de limite...
    97                         $index_id_compte = -1;
    98                         reset($all_id_compte);
    99                         while (($index_id_compte<0) && (list($k,$v) = each($all_id_compte))) { // ...et on en tire l'index de l'id_compte recherche parmis tous ceux disponible
    100                                 if ($v['id_compte']==$id_compte) $index_id_compte = $k;
    101                         }
    102                         if ($index_id_compte>=0) { // on recalcule le parametre de limite de la requete
    103                                 set_request('debut', intval($index_id_compte/_ASSOCIASPIP_LIMITE_SOUSPAGE)*_ASSOCIASPIP_LIMITE_SOUSPAGE);
     15        sinon_interdire_acces(autoriser('voir_compta', 'association'));
     16        include_spip('association_modules');
     17/// INITIALISATIONS
     18        $vu = _request('vu');
     19        if (!is_numeric($vu))
     20                $vu = '';
     21        $imputation = _request('imputation');
     22        if (!$imputation)
     23                $imputation= '%';
     24        $id_compte = association_passeparam_id('compte');
     25        list($id_periode, $critere_periode) = association_passeparam_periode('operation', 'asso_comptes', $id_compte);
     26        $where = 'imputation LIKE '. sql_quote($imputation);
     27        $where .= (!is_numeric($vu) ? '' : " AND vu=$vu");
     28        $where .= " AND $critere_periode";
     29/// AFFICHAGES_LATERAUX (connexes)
     30        echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
     31/// AFFICHAGES_LATERAUX : TOTAUX : noperations de l'exercice par compte financier (indique rapidement les comptes financiers les plus utilises ou les modes de paiement preferes...)
     32        $journaux = sql_allfetsel('journal, intitule', 'spip_asso_comptes RIGHT JOIN spip_asso_plan ON journal=code', $critere_periode, "intitule DESC"); // on se permet sql_allfetsel car il s'agit d'une association (mois d'une demie dizaine de comptes) et non d'un etablissement financier (des milliers de comptes clients)
     33        foreach (array('recette','depense') as $direction) {
     34                foreach ($journaux as $financier) {
     35                        $nombre_direction = sql_countsel('spip_asso_comptes', "journal=".sql_quote($financier['journal'])." AND $critere_periode AND $direction<>0 ");
     36                        if ($nombre_direction) { // on ne s'embarasse pas avec ceux a zero
     37                                $direction_decomptes[$financier['journal']] = array( $financier['intitule'], $nombre_direction, );
    10438                        }
    10539                }
    106                 // TABLEAU
    107                 $limit = intval(_request('debut')) . "," . _ASSOCIASPIP_LIMITE_SOUSPAGE;
    108                 $table = comptes_while($where, $limit, $id_compte);
    109                 if ($table) { // affichage de la liste
    110                         // SOUS-PAGINATION
    111                         $nav = association_form_souspage(array('spip_asso_comptes', $where), 'comptes', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode".($imputation?"&imputation=$imputation":''). (is_numeric($vu)?"&vu=$vu":''), '<td align="right"><input type="submit" value="'. _T('asso:bouton_valider') . '"  /></td>');
    112                         // ENTETES
    113                         $table = "<table width='100%' class='asso_tablo' $onload_option id='asso_liste_comptes'>\n"
    114                         . '<tr class="row_first">'
    115                         . '<th>'. _T('asso:entete_id') .'</th>'
    116                         . '<th>'. _T('asso:entete_date') .'</th>'
    117                         . '<th>'. _T('asso:compte_entete_imputation') .'</th>'
    118                         . '<th>'. _T('asso:compte_entete_justification') .'</th>'
    119                         . '<th>'. _T('asso:entete_montant') .'</th>'
    120                         . '<th>'. _T('asso:compte_entete_financier') .'</th>'
    121                         . '<th colspan="2" class="actions">'. _T('asso:entete_actions') .'</th>'
    122                         . '<th><input title="'._T('asso:selectionner_tout').'" type="checkbox" id="selectionnerTous" onclick="var currentVal = this.checked; var checkboxList = document.getElementsByName(\'valide[]\'); for (var i in checkboxList) {checkboxList[i].checked=currentVal;}" /></th>'
    123                         . '</tr>'
    124                         . $table
    125                         . "\n</table>\n"
    126                         . $nav;
    127                         echo generer_form_ecrire('action_comptes', $table);
    128                 } else { // absence d'operation pour l'exercice
    129                         echo '<table width="100%"><tr><td class="actions erreur">' .( $id_periode ? _T('asso:exercice_sans_operation') : '<a href="'.generer_url_ecrire('exercice_comptable').'">'._T('asso:ajouter_un_exercice').'</a>' ). '</td></tr></table>';
     40                if (count($direction_libelles))
     41                        echo association_tablinfos_effectifs(_T('asso:compte_entete_financier') .': '. _T('asso:'.$direction.'s'), $direction_decomptes); // ToDo: tri par ordre decroissant (sorte de "top")
     42        }
     43/// AFFICHAGES_LATERAUX : TOTAUX : operations de l'exercice par type d'operation
     44        $classes = array('pair'=>'produits', 'impair'=>'charges', 'cv'=>'contributions_volontaires', 'vi'=>'banques');
     45        $liste_types = array();
     46        foreach ($classes as $classe_css=>$classe_cpt) {
     47                $liste_types[$classe_css] = array( 'compte_liste_nombre_'.$classe_css, sql_countsel('spip_asso_comptes', "LEFT(imputation,1)=".sql_quote($GLOBALS['association_metas']["classe_$classe_cpt"])." AND $critere_periode "), );
     48        }
     49        echo association_tablinfos_effectifs(_T('asso:bouton_radio_type_operation_titre'), $liste_types);
     50/// AFFICHAGES_LATERAUX : STATS : montants de l'exercice pour l'imputation choisie (toutes si aucune)
     51        echo association_tablinfos_stats('mouvements', 'comptes', array('bilan_recettes'=>'recette','bilan_depenses'=>'depense',), $where, 2);
     52/// AFFICHAGES_LATERAUX : TOTAUX : montants de l'exercice pour l'imputation choisie (toutes si aucune)
     53        $data = sql_fetsel( 'SUM(recette) AS somme_recettes, SUM(depense) AS somme_depenses, code, classe',  'spip_asso_comptes RIGHT JOIN spip_asso_plan ON imputation=code', "$where AND classe<>".sql_quote($GLOBALS['association_metas']['classe_banques']). " AND classe<>".sql_quote($GLOBALS['association_metas']['classe_contributions_volontaires']), 'code'); // une contribution benevole ne doit pas etre comptabilisee en charge/produit
     54        echo association_tablinfos_montants(($imputation=='%' ? _T('asso:entete_tous') : $imputation), $data['somme_recettes'], $data['somme_depenses']);
     55/// AFFICHAGES_LATERAUX : RACCOURCIS
     56        echo association_navigation_raccourcis(array(
     57                array('encaisse_titre_general', 'finances-24.png', array('encaisse', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_compta', 'association') ),
     58                array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_compta', 'association') ),
     59                array('cpte_bilan_titre_general','finances-24.png', array('compte_bilan', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_compta', 'association') ),
     60#               array('annexe_titre_general', 'finances-24.png', array('compte_annexe', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_compta', 'association') ),
     61                array('ajouter_une_operation', 'ajout-24.png', array('edit_compte'), array('editer_compta', 'association') ),
     62        ), 6);
     63/// AFFICHAGES_CENTRAUX (corps)
     64        debut_cadre_association('finances-24.png', 'informations_comptables');
     65/// AFFICHAGES_CENTRAUX : FILTRES
     66        $filtre_imputation = '<select name="imputation" onchange="form.submit()">';
     67        $filtre_imputation .= '<option value="%" ';
     68        $filtre_imputation .= (($imputation=='%' || $imputation='')?' selected="selected"':'');
     69        $filtre_imputation .= '>'. _T('asso:entete_tous') .'</option>';
     70        $sql = sql_select(
     71                'imputation , code, intitule, classe',
     72                'spip_asso_comptes RIGHT JOIN spip_asso_plan ON imputation=code',
     73                "classe<>". sql_quote($GLOBALS['association_metas']['classe_banques']) ." AND active AND $critere_periode ", // pour l'exercice en cours... ; n'afficher ni les comptes de la classe financiere --ce ne sont pas des imputations-- ni les inactifs
     74                'code', 'code ASC');
     75        while ($plan = sql_fetch($sql)) { // Remplir le select uniquement avec les comptes utilises
     76                $filtre_imputation .= '<option value="'.$plan['code'].'"';
     77                $filtre_imputation .= ($imputation==$plan['code']?' selected="selected"':'');
     78                $filtre_imputation .= '>'.$plan['code'].' - '.$plan['intitule'].'</option>';
     79        }
     80        $filtre_imputation .= '</select>';
     81        $filtre_vu = '<select name="vu" onchange="form.submit()">';
     82        $filtre_vu .= '<option value="" '. ($vu==''?'':' selected="selected"') .'>'. _T('asso:cpte_op_vu_tous') .'</option>';
     83        $filtre_vu .= '<option value="0" '. ($vu=='0'?' selected="selected"':'') .'>'. _T('asso:cpte_op_vu_non') .'</option>';
     84        $filtre_vu .= '<option value="1" '. ($vu=='1'?' selected="selected"':'') .'>'. _T('asso:cpte_op_vu_oui') .'</option>';
     85        $filtre_vu .= '</select>';
     86        echo association_form_filtres(array(
     87                'periode' => array($id_periode, 'asso_comptes', 'operation'),
     88#               'id' => $id_compte,
     89        ), 'comptes', array(
     90                'imputation' => $filtre_imputation,
     91                'vu' => $filtre_vu,
     92        ));
     93/// AFFICHAGES_CENTRAUX : TABLEAU
     94        if ($id_compte) { // (re)calculer la pagination en fonction de id_compte
     95                $all_id_compte = sql_allfetsel('id_compte', 'spip_asso_comptes', $where, '',  'date_operation DESC,id_compte DESC'); // on recupere les id_comptes de la requete sans le critere de limite...
     96                $index_id_compte = -1;
     97                reset($all_id_compte);
     98                while (($index_id_compte<0) && (list($k,$v) = each($all_id_compte))) { // ...et on en tire l'index de l'id_compte recherche parmis tous ceux disponible
     99                        if ($v['id_compte']==$id_compte) $index_id_compte = $k;
    130100                }
    131                 fin_page_association();
     101                if ($index_id_compte>=0) { // on recalcule le parametre de limite de la requete
     102                        set_request('debut', intval($index_id_compte/_ASSOCIASPIP_LIMITE_SOUSPAGE)*_ASSOCIASPIP_LIMITE_SOUSPAGE);
     103                }
    132104        }
     105        $limit = intval(_request('debut')) . "," . _ASSOCIASPIP_LIMITE_SOUSPAGE;
     106        $table = comptes_while($where, $limit, $id_compte);
     107        if ($table) { // affichage de la liste
     108                // SOUS-PAGINATION
     109                $nav = association_form_souspage(array('spip_asso_comptes', $where), 'comptes', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode".($imputation?"&imputation=$imputation":''). (is_numeric($vu)?"&vu=$vu":''), '<td align="right"><input type="submit" value="'. _T('asso:bouton_valider') . '"  /></td>');
     110                // TABLEAU/ENTETES
     111                $table = "<table width='100%' class='asso_tablo' $onload_option id='asso_liste_comptes'>\n"
     112                . '<tr class="row_first">'
     113                . '<th>'. _T('asso:entete_id') .'</th>'
     114                . '<th>'. _T('asso:entete_date') .'</th>'
     115                . '<th>'. _T('asso:compte_entete_imputation') .'</th>'
     116                . '<th>'. _T('asso:compte_entete_justification') .'</th>'
     117                . '<th>'. _T('asso:entete_montant') .'</th>'
     118                . '<th>'. _T('asso:compte_entete_financier') .'</th>'
     119                . '<th colspan="2" class="actions">'. _T('asso:entete_actions') .'</th>'
     120                . '<th><input title="'._T('asso:selectionner_tout').'" type="checkbox" id="selectionnerTous" onclick="var currentVal = this.checked; var checkboxList = document.getElementsByName(\'valide[]\'); for (var i in checkboxList) {checkboxList[i].checked=currentVal;}" /></th>'
     121                . '</tr>'
     122                // TABLEAU/CORPS
     123                . $table
     124                . "\n</table>\n"
     125                . $nav;
     126                echo generer_form_ecrire('action_comptes', $table);
     127        } else { // absence d'operation pour l'exercice
     128                echo '<table width="100%"><tr><td class="actions erreur">' .( $id_periode ? _T('asso:exercice_sans_operation') : '<a href="'.generer_url_ecrire('exercice_comptable').'">'._T('asso:ajouter_un_exercice').'</a>' ). '</td></tr></table>';
     129        }
     130/// AFFICHAGES_CENTRAUX : FIN
     131        fin_page_association();
    133132}
    134133
  • _plugins_/Associaspip/trunk/exec/edit_activite.php

    r72819 r72883  
    1313
    1414function exec_edit_activite() {
    15         sinon_interdire_acces(autoriser('editer_inscriptions', 'association') OR !(test_plugin_actif('AGENDA') OR test_plugin_actif('SIMPLECAL')) );
     15        sinon_interdire_acces(autoriser('editer_inscriptions', 'association') AND (test_plugin_actif('AGENDA') OR test_plugin_actif('SIMPLECAL')) );
    1616        include_spip ('association_modules');
    1717/// INITIALISATIONS
  • _plugins_/Associaspip/trunk/exec/encaisse.php

    r71725 r72883  
    1313
    1414function exec_encaisse() {
    15         if (!autoriser('voir_compta', 'association')) {
    16                 include_spip('inc/minipres');
    17                 echo minipres();
    18         } else {
    19                 include_spip('association_modules');
    20 // initialisations
    21                 $plan = sql_countsel('spip_asso_plan');
    22                 $id_exercice = association_passeparam_exercice();
    23 // traitements
    24                 echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
    25                 // INTRO : rappel de l'exercicee affichee
    26                 echo association_tablinfos_intro('encaisse', '');
    27                 // STATS recettes et depenses par comptes financiers (indique rapidement les comptes financiers avec les mouvements les plus importants --en montant !)
    28                 $journaux = sql_allfetsel('journal, intitule', 'spip_asso_comptes RIGHT JOIN spip_asso_plan ON journal=code', "date_operation>=date_anterieure AND date_operation<=NOW()", "intitule DESC"); // on se permet sql_allfetsel car il n'y en a pas des masses a priori...
    29                 foreach ($journaux as $financier) {
    30                         echo association_tablinfos_stats($financier['intitule'], 'comptes', array('bilan_recettes'=>'recette','bilan_depenses'=>'depense',), 'journal='.sql_quote($financier['journal']) .' AND date_operation>='. sql_quote($financier['date_anterieure']) .' AND date_operation<=NOW()');
    31                 }
    32                 // datation et raccourcis
    33                 echo association_navigation_raccourcis(array(
    34                         array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
    35                         array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', "exercice=$id_exercice"), array('voir_compta', 'association') ),
    36                         array('cpte_bilan_titre_general', 'finances-24.png', array('compte_bilan', "exercice=$id_exercice"), array('voir_compta', 'association') ),
    37 #                       array('annexe_titre_general', 'finances-24.png', array('compte_annexe', "exercice=$id_exercice"), array('voir_compta', 'association') ),
    38                 ), 16);
    39                 debut_cadre_association('finances-24.png', 'encaisse');
    40                 $lesEcritures = array(); // initialiser le tableaux des ecritures a afficher
    41                 // Recuperer les comptes financiers avec toutes les informations dont on aura besoin
    42                 $encaisses = sql_select(
    43                         'a_p.id_plan, a_p.code, a_p.intitule, a_p.date_anterieure, a_p.solde_anterieur, SUM(a_c.recette) AS recettes, SUM(a_c.depense) AS depenses, SUM(a_c.recette-a_c.depense) AS solde_actuel ', // select
    44                         'spip_asso_comptes AS a_c INNER JOIN spip_asso_plan AS a_p ON a_c.journal=a_p.code', // from
    45                         'a_p.classe='. sql_quote($GLOBALS['association_metas']['classe_banques']) .' AND LEFT(a_c.imputation,1)<>'. sql_quote($GLOBALS['association_metas']['classe_contributions_volontaires']) .' AND a_p.active=1 AND a_c.date_operation>=a_p.date_anterieure AND a_c.date_operation<=NOW() ', // where
    46                         'a_c.journal', // group by
    47                         'a_p.code', // order by
    48                         '', // limit
    49                         '' // having
    50                 ); // cette requete ne recupere que les comptes financiers utilises dans les journaux et on n'a donc pas les comptes dormants/inactifs...
    51                 /* Completer le tableau des ecritures avec les informations recuperees */
    52                 while ($val = sql_fetch($encaisses)) {
    53                         $lesEcritures[$val['code']] = $val; // on recupere les informations de la requete
    54 #                       $lesEcritures[$val['code']]['solde_actuel'] = $val['recettes']-$val['depenses']; // on ajoute la donnee du solde des flux sur la periode
    55                 }
    56                 // Afficher les releves de situation des encaisses /!\ Tous les comptes financiers ne sont normalement pas concernes : idealement il aurait fallu configurer un groupe "caisse" (51xx) et un groupe "banque" (53xx) mais d'une part nous ignorons si d'autres systemes comptables n'utilisent pas plus de groupes et d'autre part (meme une association francaise) peut bien ne pas avoir les deux types de comptes...
    57                 echo "\n<table width='100%' class='asso_tablo' id='asso_tablo_encaisse'>\n";
    58                 echo "<tr class='row_first'>";
    59                 echo "<th scope='col'>&nbsp;</th>\n";
    60                 echo '<th scope="col">'. _T('asso:entete_date') ."</th>\n";
    61                 echo '<th scope="col">'. _T('asso:avoir_initial') ."</th>\n";
    62                 echo '<th scope="col">'. _T('asso:avoir_actuel') ."</th>\n";
     15        sinon_interdire_acces(autoriser('voir_compta', 'association'));
     16        include_spip('association_modules');
     17/// INITIALISATIONS
     18        include_spip('inc/association_comptabilite');
     19        $ids = association_passeparam_compta();
     20/// AFFICHAGES_LATERAUX (connexes)
     21        echo association_navigation_onglets('titre_onglet_comptes', 'comptes');
     22/// AFFICHAGES_LATERAUX : INTRO : rappel de l'exercicee affichee
     23        echo association_tablinfos_intro('encaisse', '');
     24/// AFFICHAGES_LATERAUX : STATS recettes et depenses par comptes financiers (indique rapidement les comptes financiers avec les mouvements les plus importants --en montant !)
     25        $journaux = sql_allfetsel('journal, intitule', 'spip_asso_comptes RIGHT JOIN spip_asso_plan ON journal=code', "date_operation>=date_anterieure AND date_operation<=NOW()", "intitule DESC"); // on se permet sql_allfetsel car il n'y en a pas des masses a priori...
     26        foreach ($journaux as $financier) {
     27                echo association_tablinfos_stats($financier['intitule'], 'comptes', array('bilan_recettes'=>'recette','bilan_depenses'=>'depense',), 'journal='.sql_quote($financier['journal']) .' AND date_operation>='. sql_quote($financier['date_anterieure']) .' AND date_operation<=NOW()');
     28        }
     29/// AFFICHAGES_LATERAUX : RACCOURCIS
     30        echo association_navigation_raccourcis(array(
     31                array('informations_comptables', 'grille-24.png', array('comptes', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     32                array('cpte_resultat_titre_general', 'finances-24.png', array('compte_resultat', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     33                array('cpte_bilan_titre_general', 'finances-24.png', array('compte_bilan', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     34#               array('annexe_titre_general', 'finances-24.png', array('compte_annexe', "$ids[type_periode]=$ids[id_periode]"), array('voir_compta', 'association') ),
     35        ), 16);
     36/// AFFICHAGES_CENTRAUX (corps)
     37        debut_cadre_association('finances-24.png', 'encaisse');
     38/// AFFICHAGES_CENTRAUX : TABLEAU
     39        $lesEcritures = array(); // initialiser le tableaux des ecritures a afficher
     40        // Recuperer les comptes financiers avec toutes les informations dont on aura besoin
     41        $encaisses = sql_select(
     42                'a_p.id_plan, a_p.code, a_p.intitule, a_p.date_anterieure, a_p.solde_anterieur, SUM(a_c.recette) AS recettes, SUM(a_c.depense) AS depenses, SUM(a_c.recette-a_c.depense) AS solde_actuel ', // select
     43                'spip_asso_comptes AS a_c INNER JOIN spip_asso_plan AS a_p ON a_c.journal=a_p.code', // from
     44                'a_p.classe='. sql_quote($GLOBALS['association_metas']['classe_banques']) .' AND LEFT(a_c.imputation,1)<>'. sql_quote($GLOBALS['association_metas']['classe_contributions_volontaires']) .' AND a_p.active=1 AND a_c.date_operation>=a_p.date_anterieure AND a_c.date_operation<=NOW() ', // where
     45                'a_c.journal', // group by
     46                'a_p.code', // order by
     47                '', // limit
     48                '' // having
     49        ); // cette requete ne recupere que les comptes financiers utilises dans les journaux et on n'a donc pas les comptes dormants/inactifs...
     50        while ($val = sql_fetch($encaisses)) { // Completer le tableau des ecritures avec les informations recuperees
     51                $lesEcritures[$val['code']] = $val; // on recupere les informations de la requete
     52#               $lesEcritures[$val['code']]['solde_actuel'] = $val['recettes']-$val['depenses']; // on ajoute la donnee du solde des flux sur la periode
     53        }
     54        // Afficher les releves de situation des encaisses /!\ Tous les comptes financiers ne sont normalement pas concernes : idealement il aurait fallu configurer un groupe "caisse" (51xx) et un groupe "banque" (53xx) mais d'une part nous ignorons si d'autres systemes comptables n'utilisent pas plus de groupes et d'autre part (meme une association francaise) peut bien ne pas avoir les deux types de comptes...
     55        echo "\n<table width='100%' class='asso_tablo' id='asso_tablo_encaisse'>\n";
     56        echo "<tr class='row_first'>";
     57        echo "<th scope='col'>&nbsp;</th>\n";
     58        echo '<th scope="col">'. _T('asso:entete_date') ."</th>\n";
     59        echo '<th scope="col">'. _T('asso:avoir_initial') ."</th>\n";
     60        echo '<th scope="col">'. _T('asso:avoir_actuel') ."</th>\n";
     61        echo "</tr>\n";
     62        $total_actuel = $total_initial = 0;
     63        foreach($lesEcritures as $compteFinancier) {
     64                echo '<tr>';
     65                echo '<td class="text">'. $compteFinancier['code'] .' : '. $compteFinancier['intitule'] ."</td>\n";
     66                echo '<td class="date">'. association_formater_date($compteFinancier['date_anterieure'],'dtstart') ."</td>\n";
     67                echo '<td class="decimal">'. association_formater_prix($compteFinancier['solde_anterieur']) ."</td>\n";
     68                echo '<td class="decimal">'. association_formater_prix($compteFinancier['solde_anterieur']+$compteFinancier['solde_actuel']) ."</td>\n";
    6369                echo "</tr>\n";
    64                 $total_actuel = $total_initial = 0;
    65                 foreach($lesEcritures as $compteFinancier) {
    66                         echo '<tr>';
    67                         echo '<td class="text">'. $compteFinancier['code'] .' : '. $compteFinancier['intitule'] ."</td>\n";
    68                         echo '<td class="date">'. association_formater_date($compteFinancier['date_anterieure'],'dtstart') ."</td>\n";
    69                         echo '<td class="decimal">'. association_formater_prix($compteFinancier['solde_anterieur']) ."</td>\n";
    70                         echo '<td class="decimal">'. association_formater_prix($compteFinancier['solde_anterieur']+$compteFinancier['solde_actuel']) ."</td>\n";
    71                         echo "</tr>\n";
    72                         $total_initial += $compteFinancier['solde_anterieur'];
    73                         $total_actuel += $compteFinancier['solde_anterieur']+$compteFinancier['solde_actuel'];
    74                 } // fin corps
    75                 echo "<tr>";
    76                 echo '<th scope="row" colspan="2" class="solde text">'. _T('asso:encaisse_total_general') ."</th>\n";
    77                 echo '<th class="solde decimal">'. association_formater_prix($total_initial) ."</th>\n";
    78                 echo '<th class="solde decimal">'. association_formater_prix($total_actuel) ."</th>\n";
    79                 $solde_virementsinternes = sql_getfetsel('SUM(recette)-SUM(depense)', 'spip_asso_comptes', 'imputation='.sql_quote($GLOBALS['association_metas']['pc_intravirements']), 'imputation');
    80                 if( $solde_virementsinternes!=0 ) { // desequilible du compte de virements internes (ceci ne devrait arriver que si l'operation n'est pas enregistree via ce plugin !) /!\ Attention a bien forcer la comparaison avec zero car '0.00' sera faux !
    81                         echo '</tr><tr class="erreur"><td  colspan="3" class="message_erreur">'. _T('asso:erreur_equilibre_comptes58') .'</td><td class="decimal">'. association_formater_prix($solde_virementsinternes) .'</td></tr>';
    82                 }
    83                 echo "</tr>\n</table>\n";
    84                 fin_page_association();
     70                $total_initial += $compteFinancier['solde_anterieur'];
     71                $total_actuel += $compteFinancier['solde_anterieur']+$compteFinancier['solde_actuel'];
     72        } // fin corps
     73        echo "<tr>";
     74        echo '<th scope="row" colspan="2" class="solde text">'. _T('asso:encaisse_total_general') ."</th>\n";
     75        echo '<th class="solde decimal">'. association_formater_prix($total_initial) ."</th>\n";
     76        echo '<th class="solde decimal">'. association_formater_prix($total_actuel) ."</th>\n";
     77        $solde_virementsinternes = sql_getfetsel('SUM(recette)-SUM(depense)', 'spip_asso_comptes', 'imputation='.sql_quote($GLOBALS['association_metas']['pc_intravirements']), 'imputation');
     78        if( $solde_virementsinternes!=0 ) { // desequilible du compte de virements internes (ceci ne devrait arriver que si l'operation n'est pas enregistree via ce plugin !) /!\ Attention a bien forcer la comparaison avec zero car '0.00' sera faux !
     79                echo '</tr><tr class="erreur"><td  colspan="3" class="message_erreur">'. _T('asso:erreur_equilibre_comptes58') .'</td><td class="decimal">'. association_formater_prix($solde_virementsinternes) .'</td></tr>';
    8580        }
     81        echo "</tr>\n</table>\n";
     82/// AFFICHAGES_CENTRAUX : FIN
     83        fin_page_association();
    8684}
    8785
  • _plugins_/Associaspip/trunk/exec/exercice_comptable.php

    r71725 r72883  
    1313
    1414function exec_exercice_comptable() {
    15         if (!autoriser('gerer_compta', 'association')) {
    16                 include_spip('inc/minipres');
    17                 echo minipres();
    18         } else {
    19                 include_spip('association_modules');
    20                 echo association_navigation_onglets('exercices_budgetaires_titre', 'association');
    21                 // notice
    22                 echo '';
     15        sinon_interdire_acces(autoriser('gerer_compta', 'association'));
     16        include_spip('association_modules');
     17/// INITIALISATIONS : rien a faire
     18/// AFFICHAGES_LATERAUX (connexes)
     19        echo association_navigation_onglets('exercices_budgetaires_titre', 'association');
     20/// AFFICHAGES_LATERAUX : INTRO : notice
     21        echo '';
    2322                // quelques stats sur les exrcices
    2423                echo association_tablinfos_stats('tous', 'exercices', array('semaines'=>"TIMESTAMPDIFF(week,date_debut,date_fin)", 'mois'=>"TIMESTAMPDIFF(month,date_debut,date_fin)") );
     
    3130                // finaly I use ODBC "TIMESTAMPDIFF()" that should be known by latest major rdbms...
    3231                ///
    33                 // datation et raccourcis
    34                 echo association_navigation_raccourcis(array(
    35                         array('association_infos_contacts', 'assoc_qui.png', array('association'), array('voir_profil', 'association') ),
    36                         'ajouter_un_exercice' => array('calculatrice.gif', array('edit_exercice'),array('gerer_compta', 'association') ),
    37                         array('plan_comptable', 'plan_compte.png', array('plan_comptable'), array('gerer_compta', 'association') ),
    38                         array('destination_comptable', 'euro-39.gif', array('destination_comptable'), $GLOBALS['association_metas']['destinations'] ? array('gerer_compta', 'association') : FALSE ),
    39                 ) );
    40                 debut_cadre_association('calculatrice.gif', 'tous_les_exercices');
    41                 echo association_bloc_listehtml2('asso_exercices',
    42                         sql_select('*', 'spip_asso_exercices', '', 'intitule DESC'),
    43                         array(
    44                                 'id_exercice' => array('asso:entete_id', 'entier'),
    45                                 'intitule' => array('asso:entete_intitule', 'texte'),
    46                                 'date_debut' => array('asso:exercice_entete_debut', 'date', 'dtstart'),
    47                                 'date_fin' => array('asso:exercice_entete_fin', 'date', 'dtend'),
    48                                 'commentaire' => array('asso:entete_commentaire', 'texte', 'propre'),
    49                         ), // entetes et formats des donnees
    50                         array(
    51                                 array('suppr', 'exercice', 'id=$$' ),
    52                                 array('edit', 'exercice', 'id=$$' ),
    53                         ), // boutons d'action
    54                         'id_exercice' // champ portant la cle des lignes et des boutons
    55                 );
    56                 fin_page_association();
    57         }
     32/// AFFICHAGES_LATERAUX : RACCOURCIS
     33        echo association_navigation_raccourcis(array(
     34                array('association_infos_contacts', 'assoc_qui.png', array('association'), array('voir_profil', 'association') ),
     35                array('ajouter_un_exercice', 'calculatrice.gif', array('edit_exercice'),array('gerer_compta', 'association') ),
     36                array('plan_comptable', 'plan_compte.png', array('plan_comptable'), array('gerer_compta', 'association') ),
     37                array('destination_comptable', 'euro-39.gif', array('destination_comptable'), $GLOBALS['association_metas']['destinations'] ? array('gerer_compta', 'association') : FALSE ),
     38        ) );
     39/// AFFICHAGES_CENTRAUX (corps)
     40        debut_cadre_association('calculatrice.gif', 'tous_les_exercices');
     41/// AFFICHAGES_CENTRAUX : TABLEAU
     42        echo association_bloc_listehtml2('asso_exercices',
     43                sql_select('*', 'spip_asso_exercices', '', 'intitule DESC'),
     44                array(
     45                        'id_exercice' => array('asso:entete_id', 'entier'),
     46                        'intitule' => array('asso:entete_intitule', 'texte'),
     47                        'date_debut' => array('asso:exercice_entete_debut', 'date', 'dtstart'),
     48                        'date_fin' => array('asso:exercice_entete_fin', 'date', 'dtend'),
     49                        'commentaire' => array('asso:entete_commentaire', 'texte', 'propre'),
     50                ), // entetes et formats des donnees
     51                array(
     52                        array('suppr', 'exercice', 'id=$$' ),
     53                        array('edit', 'exercice', 'id=$$' ),
     54                ), // boutons d'action
     55                'id_exercice' // champ portant la cle des lignes et des boutons
     56        );
     57/// AFFICHAGES_CENTRAUX : PAGINATION
     58        echo association_form_souspage(array('spip_asso_exercices', '', 'intitule DESC'), 'exercice_comptable' );
     59/// AFFICHAGES_CENTRAUX : FIN
     60        fin_page_association();
    5861}
    5962
  • _plugins_/Associaspip/trunk/exec/groupes.php

    r72024 r72883  
    1313
    1414function exec_groupes() {
    15         if (!autoriser('voir_groupes', 'association', 100)) { // l'id groupe passe en parametre est a 100 car ce sont les groupes definis par l'utilisateur et non ceux des autorisation qu'on liste dans cette page.
    16                 include_spip('inc/minipres');
    17                 echo minipres();
    18         } else {
    19                 include_spip ('association_modules');
    20                 echo association_navigation_onglets('gestion_groupes', 'adherents');
    21                 // notice
    22                 echo _T('asso:aide_groupes');
    23                 // datation et raccourcis
    24                 echo association_navigation_raccourcis(array(
    25                                 array('adherent_titre_liste_actifs', 'grille-24.png', array('adherents'), array('voir_membres', 'association') ),
    26                                 array('ajouter_un_groupe', 'annonce.gif', array('edit_groupe'), array('editer_groupes', 'association', 100) )
    27                 ), 11);
    28                 debut_cadre_association('annonce.gif', 'tous_les_groupes');
    29                 // affichage du tableau
    30                 echo association_bloc_listehtml2('asso_groupes',
    31                         sql_select('*', 'spip_asso_groupes', 'id_groupe>=100','',  'nom'),
    32                         array(
    33 #                               'id_groupe' => array('asso:entete_id', 'entier'),
    34                                 'nom' => array('asso:entete_nom', 'texte'),
    35                                 'affichage' => array('asso:ordre_affichage_groupe', 'entier'),
    36                                 'commentaire' => array('asso:entete_commentaire', 'texte'),
    37                         ), // entetes et formats des donnees
    38                         array(
    39                                 array('suppr', 'groupe', 'id=$$'),
    40                                 array('edit', 'groupe', 'id=$$'),
    41                                 array('act', 'voir_groupe', 'voir-12.png', 'membres_groupe', 'id=$$'),
    42                         ), // boutons d'action
    43                         'id_groupe' // champ portant la cle des lignes et des boutons
    44                 );
    45                 fin_page_association();
    46         }
     15        sinon_interdire_acces(autoriser('voir_groupes', 'association', 100)); // l'id groupe passe en parametre est a 100 car ce sont les groupes definis par l'utilisateur et non ceux des autorisation qu'on liste dans cette page.
     16        include_spip('association_modules');
     17/// INITIALISATIONS : rien a faire
     18/// AFFICHAGES_LATERAUX (connexes)
     19        echo association_navigation_onglets('gestion_groupes', 'adherents');
     20/// AFFICHAGES_LATERAUX : INTRO : notice
     21        echo _T('asso:aide_groupes');
     22/// AFFICHAGES_LATERAUX : RACCOURCIS
     23        echo association_navigation_raccourcis(array(
     24                array('adherent_titre_liste_actifs', 'grille-24.png', array('adherents'), array('voir_membres', 'association') ),
     25                array('ajouter_un_groupe', 'annonce.gif', array('edit_groupe'), array('editer_groupes', 'association', 100) )
     26        ), 11);
     27/// AFFICHAGES_CENTRAUX (corps)
     28        debut_cadre_association('annonce.gif', 'tous_les_groupes');
     29/// AFFICHAGES_CENTRAUX : TABLEAU
     30        echo association_bloc_listehtml2('asso_groupes',
     31                sql_select('*', 'spip_asso_groupes', 'id_groupe>=100','',  'nom'),
     32                array(
     33#                       'id_groupe' => array('asso:entete_id', 'entier'),
     34                        'nom' => array('asso:entete_nom', 'texte'),
     35                        'affichage' => array('asso:ordre_affichage_groupe', 'entier'),
     36                        'commentaire' => array('asso:entete_commentaire', 'texte'),
     37                ), // entetes et formats des donnees
     38                array(
     39                        array('suppr', 'groupe', 'id=$$'),
     40                        array('edit', 'groupe', 'id=$$'),
     41                        array('act', 'voir_groupe', 'voir-12.png', 'membres_groupe', 'id=$$'),
     42                ), // boutons d'action
     43                'id_groupe' // champ portant la cle des lignes et des boutons
     44        );
     45/// AFFICHAGES_CENTRAUX : PAGINATION
     46        echo association_form_souspage(array('spip_asso_groupes', 'id_groupe>100'), 'groupes' );
     47/// AFFICHAGES_CENTRAUX : FIN
     48        fin_page_association();
    4749}
    4850
  • _plugins_/Associaspip/trunk/exec/inscrits_activite.php

    r71763 r72883  
    1313
    1414function exec_inscrits_activite() {
    15         if (!autoriser('voir_inscriptions', 'association') OR !(test_plugin_actif('AGENDA') OR test_plugin_actif('SIMPLECAL')) ) {
    16                 include_spip('inc/minipres');
    17                 echo minipres();
     15        sinon_interdire_acces(autoriser('voir_inscriptions', 'association') AND (test_plugin_actif('AGENDA') OR test_plugin_actif('SIMPLECAL')) );
     16        include_spip('association_modules');
     17/// INITIALISATIONS
     18        $id_evenement = association_passeparam_id('evenement');
     19        list($id_periode, $critere_periode) = association_passeparam_periode('debut', 'evenements', $id_evenement);
     20        $evenement = sql_fetsel('*', 'spip_evenements', "id_evenement=$id_evenement");
     21        $statut = association_passeparam_statut();
     22        $suffixe_pdf = "inscriptions_$id_evenement".'_';
     23        if ($statut) { // restriction de la selection
     24                $critereSupplementaire = ' AND '. ($statut>0?"date_paiement<date_inscription ":"date_paiement>=date_inscription ");
     25                $suffixe_pdf .= ($statut>0?'avecpaie':'sanspaie');
    1826        } else {
    19                 include_spip ('association_modules');
    20 /// INITIALISATIONS
    21                 $id_evenement = association_passeparam_id('evenement');
    22                 list($id_periode, $critere_periode) = association_passeparam_periode('debut', 'evenements', $id_evenement);
    23                 $evenement = sql_fetsel('*', 'spip_evenements', "id_evenement=$id_evenement");
    24                 $statut = association_passeparam_statut();
    25                 $suffixe_pdf = "inscriptions_$id_evenement".'_';
    26                 if ($statut) { // restriction de la selection
    27                         $critereSupplementaire = ' AND '. ($statut>0?"date_paiement<date_inscription ":"date_paiement>=date_inscription ");
    28                         $suffixe_pdf .= ($statut>0?'avecpaie':'sanspaie');
    29                 } else {
    30                         $critereSupplementaire = '';
    31                         $suffixe_pdf .= 'quelpaie';
    32                 }
     27                $critereSupplementaire = '';
     28                $suffixe_pdf .= 'quelpaie';
     29        }
    3330/// AFFICHAGES_LATERAUX (connexes)
    34                 echo association_navigation_onglets('titre_onglet_activite', 'activites');
     31        echo association_navigation_onglets('titre_onglet_activite', 'activites');
    3532/// AFFICHAGES_LATERAUX : INTRO : Rappel Infos Evenement
    36                 $format = 'association_formater_'. (($evenement['horaire']=='oui')?'heure':'date');
    37                 $infos['agenda:evenement_date_du'] = $format($evenement['date_debut'],'dtstart');
    38                 $infos['agenda:evenement_date_au'] = $format($evenement['date_fin'],'dtend');
    39                 $infos['agenda:evenement_lieu'] = '<span class="location">'.$evenement['lieu'].'</span>';
    40                 echo '<div class="vevent">'. association_tablinfos_intro('<span class="summary">'.$evenement['titre'].'</span>', 'evenement', $id_evenement, $infos, 'evenement') .'</div>';
     33        $format = 'association_formater_'. (($evenement['horaire']=='oui')?'heure':'date');
     34        $infos['agenda:evenement_date_du'] = $format($evenement['date_debut'],'dtstart');
     35        $infos['agenda:evenement_date_au'] = $format($evenement['date_fin'],'dtend');
     36        $infos['agenda:evenement_lieu'] = '<span class="location">'.$evenement['lieu'].'</span>';
     37        echo '<div class="vevent">'. association_tablinfos_intro('<span class="summary">'.$evenement['titre'].'</span>', 'evenement', $id_evenement, $infos, 'evenement') .'</div>';
    4138/// AFFICHAGES_LATERAUX : TOTAUX : nombres d'inscriptions par etat de paiement
    42                 echo association_tablinfos_effectifs('inscriptions', array(
    43                         'pair' => array( 'asso:activite_entete_validees', array('spip_asso_activites', "id_evenement=$id_evenement AND date_paiement<date_inscription "), ),
    44                         'valide' => array( 'asso:activite_entete_impayees', array('spip_asso_activites', "id_evenement=$id_evenement AND NOT date_paiement<date_inscription "), ),
    45                 ));
     39        echo association_tablinfos_effectifs('inscriptions', array(
     40                'pair' => array( 'asso:activite_entete_validees', array('spip_asso_activites', "id_evenement=$id_evenement AND date_paiement<date_inscription "), ),
     41                'valide' => array( 'asso:activite_entete_impayees', array('spip_asso_activites', "id_evenement=$id_evenement AND NOT date_paiement<date_inscription "), ),
     42        ));
    4643/// AFFICHAGES_LATERAUX : STATS sur les participations a cette activite (nombre de place et montant paye)
    47                 echo association_tablinfos_stats('inscriptions', 'activites', array('entete_quantite'=>'quantite','entete_montant'=>'prix_unitaire',), "id_evenement=$id_evenement");
     44        echo association_tablinfos_stats('inscriptions', 'activites', array('entete_quantite'=>'quantite','entete_montant'=>'prix_unitaire',), "id_evenement=$id_evenement");
    4845/// AFFICHAGES_LATERAUX : TOTAUX : montants des participations
    49                 echo association_tablinfos_montants('inscriptions', array('SUM(prix_unitaire) AS encaisse', 'spip_asso_activites', "id_evenement=$id_evenement " ), NULL);
     46        echo association_tablinfos_montants('inscriptions', array('SUM(prix_unitaire) AS encaisse', 'spip_asso_activites', "id_evenement=$id_evenement " ), NULL);
    5047/// AFFICHAGES_LATERAUX : RACCOURCIS
    51                 $res[] = array('activite_titre_toutes_activites', 'grille-24.png', array('activites', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_activites', 'association') );
    52                 $res[] = array('activite_bouton_modifier_article', 'edit-12.gif', array('articles', 'id_article='.$evenement['id_article']) );
    53                 $res[] = array('activite_bouton_ajouter_inscription', 'panier_in.gif', array('edit_activite', "id_evenement=$id_evenement"), array('editer_inscriptions', 'association') );
    54                 if ( test_plugin_actif('FPDF') && sql_countsel('spip_asso_activites', "id_evenement=$id_evenement", 'id_auteur') ) { // PDF des inscrits
    55                         $res[] = array('activite_bouton_imprimer_inscriptions', 'print-24.png', generer_action_auteur('pdf_activite', $id_evenement), array('exporter_inscriptions', 'association') );
    56                 }
    57                 if ( test_plugin_actif('AGENDA') && sql_countsel('spip_evenements_participants', "id_evenement=$id_evenement", 'id_auteur') ) { // inscrits via le formulaire d'Agenda2
    58                         $res[] = array('activite_bouton_synchroniser_inscriptions', 'reload-32.png', array('synchronis_activites', "id=$id_evenement"), array('gerer_activites', 'association') );
    59                 }
    60                 echo association_navigation_raccourcis($res, 14);
     48        $res[] = array('activite_titre_toutes_activites', 'grille-24.png', array('activites', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode"), array('voir_activites', 'association') );
     49        $res[] = array('activite_bouton_modifier_article', 'edit-12.gif', array('articles', 'id_article='.$evenement['id_article']) );
     50        $res[] = array('activite_bouton_ajouter_inscription', 'panier_in.gif', array('edit_activite', "id_evenement=$id_evenement"), array('editer_inscriptions', 'association') );
     51        if ( test_plugin_actif('FPDF') && sql_countsel('spip_asso_activites', "id_evenement=$id_evenement", 'id_auteur') ) { // PDF des inscrits
     52                $res[] = array('activite_bouton_imprimer_inscriptions', 'print-24.png', generer_action_auteur('pdf_activite', $id_evenement), array('exporter_inscriptions', 'association') );
     53        }
     54        if ( test_plugin_actif('AGENDA') && sql_countsel('spip_evenements_participants', "id_evenement=$id_evenement", 'id_auteur') ) { // inscrits via le formulaire d'Agenda2
     55                $res[] = array('activite_bouton_synchroniser_inscriptions', 'reload-32.png', array('synchronis_activites', "id=$id_evenement"), array('gerer_activites', 'association') );
     56        }
     57        echo association_navigation_raccourcis($res, 14);
    6158/// AFFICHAGES_LATERAUX : Forms-PDF
    62                 if ( autoriser('exporter_membres', 'association') ) { // etiquettes
    63                         echo association_form_etiquettes("id_evenement=$id_evenement $critereSupplementaire ", ' LEFT JOIN spip_asso_activites AS e ON m.id_auteur=e.id_auteur ', $suffixe_pdf);
    64                 }
     59        if ( autoriser('exporter_membres', 'association') ) { // etiquettes
     60                echo association_form_etiquettes("id_evenement=$id_evenement $critereSupplementaire ", ' LEFT JOIN spip_asso_activites AS e ON m.id_auteur=e.id_auteur ', $suffixe_pdf);
     61        }
    6562/// AFFICHAGES_CENTRAUX (corps)
    66                 debut_cadre_association('activites.gif', 'activite_titre_inscriptions_activites');
     63        debut_cadre_association('activites.gif', 'activite_titre_inscriptions_activites');
    6764/// AFFICHAGES_CENTRAUX : FILTRES
    68                 $filtre_statut = '<select name="statut" onchange="form.submit()" id="asso_statutinscription">';
    69                 $filtre_statut .= '<option value="">' ._T('asso:entete_tous') .'</option>';
    70                 $filtre_statut .= '<option value="1"'. (intval($statut)>0?' selected="selected"':'') .'>'. _T('asso:activite_entete_validees') .'</option>';
    71                 $filtre_statut .= '<option value="-1"'. (intval($statut)<0?' selected="selected"':'') .'>'. _T('asso:activite_entete_impayees') .'</option>';
    72                 $filtre_statut .= '</select>';
    73                 echo association_form_filtres(array(
    74 //                      'periode' => array($id_periode, 'asso_activites', 'inscription'),
    75 #                       'id' => $id_activite,
    76                 ), 'inscrits_activite', array(
    77                         'statut' => $filtre_statut,
    78                         0 => '<input type="hidden" name="id" value="'.$id_evenement.'" />',
    79                 ));
     65        $filtre_statut = '<select name="statut" onchange="form.submit()" id="asso_statutinscription">';
     66        $filtre_statut .= '<option value="">' ._T('asso:entete_tous') .'</option>';
     67        $filtre_statut .= '<option value="1"'. (intval($statut)>0?' selected="selected"':'') .'>'. _T('asso:activite_entete_validees') .'</option>';
     68        $filtre_statut .= '<option value="-1"'. (intval($statut)<0?' selected="selected"':'') .'>'. _T('asso:activite_entete_impayees') .'</option>';
     69        $filtre_statut .= '</select>';
     70        echo association_form_filtres(array(
     71//              'periode' => array($id_periode, 'asso_activites', 'inscription'),
     72#               'id' => $id_activite,
     73        ), 'inscrits_activite', array(
     74                'statut' => $filtre_statut,
     75                0 => '<input type="hidden" name="id" value="'.$id_evenement.'" />',
     76        ));
    8077/// AFFICHAGES_CENTRAUX : TABLEAU
    81                 echo association_bloc_listehtml2('asso_activites',
    82                         sql_select("*, CASE date_paiement WHEN '0000-00-00' THEN 0 ELSE 1 END AS statut_paiement ", 'spip_asso_activites', "id_evenement=$id_evenement $critereSupplementaire ", '', 'id_activite DESC'), // requete
    83                         array(
    84                                 'id_activite' => array('asso:entete_id', 'entier'),
    85                                 'date_inscription' => array('asso:entete_date', 'date', ''),
    86 //                              'date_paiement' => array('asso:entete_date', 'date', ''),
    87                                 'id_auteur' => array('asso:entete_nom', 'idnom', array('spip_asso_activites', 'nom', 'id_auteur'), 'membre'),
    88                                 'quantite' => array('asso:entete_quantite', 'entier'),
    89                                 'prix_unitaire' => array('asso:entete_montant', 'prix', 'fees'),
    90                                 'commentaire' => array('asso:entete_commentaire', 'texte', 'propre'),
    91                         ), // entetes et formats des donnees
    92                         autoriser('editer_inscriptions', 'association') ? array(
    93                                 array('suppr', 'activite', 'id=$$'),
    94                                 array('paye', 'edit_activite', 'id=$$'),
     78        echo association_bloc_listehtml2('asso_activites',
     79                sql_select("*, CASE date_paiement WHEN '0000-00-00' THEN 0 ELSE 1 END AS statut_paiement ", 'spip_asso_activites', "id_evenement=$id_evenement $critereSupplementaire ", '', 'id_activite DESC'), // requete
     80                array(
     81                        'id_activite' => array('asso:entete_id', 'entier'),
     82                        'date_inscription' => array('asso:entete_date', 'date', ''),
     83//                      'date_paiement' => array('asso:entete_date', 'date', ''),
     84                        'id_auteur' => array('asso:entete_nom', 'idnom', array('spip_asso_activites', 'nom', 'id_auteur'), 'membre'),
     85                        'quantite' => array('asso:entete_quantite', 'entier'),
     86                        'prix_unitaire' => array('asso:entete_montant', 'prix', 'fees'),
     87                        'commentaire' => array('asso:entete_commentaire', 'texte', 'propre'),
     88                ), // entetes et formats des donnees
     89                autoriser('editer_inscriptions', 'association') ? array(
     90                        array('suppr', 'activite', 'id=$$'),
     91                        array('paye', 'edit_activite', 'id=$$'),
    9592                        ) : array(), // boutons d'action
    96                         'id_activite', // champ portant la cle des lignes et des boutons
    97                         array('pair', 'valide'), 'statut_paiement'
    98                 );
    99                 fin_page_association();
    100         }
     93                'id_activite', // champ portant la cle des lignes et des boutons
     94                array('pair', 'valide'), 'statut_paiement'
     95        );
     96/// AFFICHAGES_CENTRAUX : PAGINATION
     97        echo association_form_souspage(array('spip_asso_activites', "id_evenement=$id_evenement $critereSupplementaire "), 'inscrits_activite', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode".($statut?"&etat='$statut'":'') );
     98/// AFFICHAGES_CENTRAUX : FIN
     99        fin_page_association();
    101100}
    102101
  • _plugins_/Associaspip/trunk/exec/prets.php

    r71763 r72883  
    1313
    1414function exec_prets() {
    15         if (!autoriser('voir_prets', 'association')) {
    16                 include_spip('inc/minipres');
    17                 echo minipres();
    18         } else {
    19                 include_spip ('association_modules');
     15        sinon_interdire_acces(autoriser('voir_prets', 'association'));
     16        include_spip('association_modules');
    2017/// INITIALISATIONS
    21                 $id_pret = association_recuperer_entier('id_pret');
    22                 list($id_periode, $critere_periode) = association_passeparam_periode('sortie', 'asso_prets', $id_pret);
    23                 if ($id_pret) { // la presence de ce parametre interdit la prise en compte d'autres (a annuler donc si presents dans la requete)
    24                         $id_ressource = intval(sql_getfetsel('id_ressource', 'spip_asso_prets', "id_pret=$id_pret"));
    25                         $ressource = sql_fetsel('*', 'spip_asso_ressources', "id_ressource=$id_ressource");
    26                         $statut = '';
    27                         $suffixe_pdf = "pret$id_pret";
    28                 } else { // on peut prendre en compte les filtres ; on recupere les parametres de :
    29                         $r = association_controle_id('ressource', 'asso_ressources');
    30                         if (!$r) return;
    31                         list($id_ressource, $ressource) = $r;
    32                         $statut = association_passeparam_statut(); // etat de restitution du pret
    33                         $suffixe_pdf = "prets_$id_ressource"."_$id_periode".'_'.($statut?$statut:'tous');
    34                 }
    35                 $where = "id_ressource=$id_ressource AND $critere_periode";
     18        $id_pret = association_recuperer_entier('id_pret');
     19        list($id_periode, $critere_periode) = association_passeparam_periode('sortie', 'asso_prets', $id_pret);
     20        if ($id_pret) { // la presence de ce parametre interdit la prise en compte d'autres (a annuler donc si presents dans la requete)
     21                $id_ressource = intval(sql_getfetsel('id_ressource', 'spip_asso_prets', "id_pret=$id_pret"));
     22                $ressource = sql_fetsel('*', 'spip_asso_ressources', "id_ressource=$id_ressource");
     23                $statut = '';
     24                $suffixe_pdf = "pret$id_pret";
     25        } else { // on peut prendre en compte les filtres ; on recupere les parametres de :
     26                $r = association_controle_id('ressource', 'asso_ressources');
     27                if (!$r) return;
     28                list($id_ressource, $ressource) = $r;
     29                $statut = association_passeparam_statut(); // etat de restitution du pret
     30                $suffixe_pdf = "prets_$id_ressource"."_$id_periode".'_'.($statut?$statut:'tous');
     31        }
     32        $where = "id_ressource=$id_ressource AND $critere_periode";
    3633/// AFFICHAGES_LATERAUX (connexes)
    37                 echo association_navigation_onglets('titre_onglet_prets', 'ressources');
    38         prets_gauche($id_ressource, $ressource, $where);
    39         echo "</div></div>\n";
    40         pret_corps($id_periode, $id_pret, $id_ressource, $where, $statut, $ressource['ud']);
    41         fin_page_association();
    42         }
    43 }
    44 
    45 function prets_gauche($id_ressource, $ressource, $where) {
    46 
     34        echo association_navigation_onglets('titre_onglet_prets', 'ressources');
     35/// AFFICHAGES_LATERAUX : TOTAUX : effectifs par statuts
    4736        $infos['entete_code'] = association_formater_code($ressource['code'], 'x-spip_asso_ressources');
    4837        $infos['ressources_entete_montant'] = association_formater_prix($ressource['pu'], 'rent');
    4938        $infos['ressources_entete_caution'] = association_formater_prix($ressource['prix_caution'], 'guarantee');
    5039        if (is_numeric($ressource['statut'])) { // utilisation des 3 nouveaux statuts numeriques (gestion de quantites/exemplaires)
    51                         if ($ressource['statut']>0) {
     40                if ($ressource['statut']>0) {
     41                        $puce = 'verte';
     42                        $type = 'ok';
     43                } elseif ($ressource['statut']<0) {
     44                        $puce = 'orange';
     45                        $type = 'suspendu';
     46                } else {
     47                        $puce = 'rouge';
     48                        $type = 'reserve';
     49                }
     50        } else { // utilisation des anciens 4+ statuts textuels (etat de reservation)
     51                switch($ressource['statut']) {
     52                        case 'ok':
    5253                                $puce = 'verte';
    53                                 $type = 'ok';
    54                         } elseif ($ressource['statut']<0) {
     54                                break;
     55                        case 'reserve':
     56                                $puce = 'rouge';
     57                                break;
     58                        case 'suspendu':
    5559                                $puce = 'orange';
    56                                 $type = 'suspendu';
    57                         } else {
    58                                 $puce = 'rouge';
    59                                 $type = 'reserve';
    60                         }
    61         } else {
    62         // utilisation des anciens 4+ statuts textuels (etat de reservation)
    63                 switch($ressource['statut']) {
    64                                 case 'ok':
    65                                         $puce = 'verte';
    66                                         break;
    67                                 case 'reserve':
    68                                         $puce = 'rouge';
    69                                         break;
    70                                 case 'suspendu':
    71                                         $puce = 'orange';
    72                                         break;
    73                                 case 'sorti':
    74                                 case '':
    75                                 case NULL:
    76                                         $puce = 'poubelle';
    77                                         break;
     60                                break;
     61                        case 'sorti':
     62                        case '':
     63                        case NULL:
     64                                $puce = 'poubelle';
     65                                break;
    7866                }
    7967                $type = $ressource['statut'];
    8068        }
    81 
    8269        $infos['statut'] = '<span class="'.(is_numeric($ressource['statut'])?'quanttity':'availability').'">'. association_formater_puce($ressource['statut'], $puce, "ressources_libelle_statut_$type") .'</span>';
    8370        echo '<div class="hproduct">'. association_tablinfos_intro('<span class="n">'.$ressource['intitule'].'</span>', 'ressource', $id_ressource, $infos, 'asso_ressource') .'</div>';
    84         // TOTAUX : nombres d'emprunts de la ressource pour la periode
     71/// AFFICHAGES_LATERAUX : TOTAUX : nombres d'emprunts de la ressource pour la periode
    8572        echo association_tablinfos_effectifs('prets', array(
    86                         'pair' => array( 'prets_restitues', sql_countsel('spip_asso_prets', "$where AND date_retour<NOW() AND date_retour<>'0000-00-00T00:00:00' "), ), // restitues, termines, anciens, ...
    87                         'impair' => array( 'prets_encours', sql_countsel('spip_asso_prets', "$where AND (date_retour>NOW() OR date_retour='0000-00-00T00:00:00' ) "), ), // dus, en attente, en cours, nouveaux, ...
    88                 ));
    89                 // STATS sur la duree et le montant des emprunts pendant la periode
     73                'pair' => array( 'prets_restitues', sql_countsel('spip_asso_prets', "$where AND date_retour<NOW() AND date_retour<>'0000-00-00T00:00:00' "), ), // restitues, termines, anciens, ...
     74                'impair' => array( 'prets_encours', sql_countsel('spip_asso_prets', "$where AND (date_retour>NOW() OR date_retour='0000-00-00T00:00:00' ) "), ), // dus, en attente, en cours, nouveaux, ...
     75        ));
     76/// AFFICHAGES_LATERAUX : STATS sur la duree et le montant des emprunts pendant la periode
    9077        echo association_tablinfos_stats('prets', 'prets', array('entete_duree'=>'duree','entete_montant'=>'duree*prix_unitaire',), $where);
    91         // TOTAUX : montants generes par les umprunts de la ressources depuis le debut
     78/// AFFICHAGES_LATERAUX : TOTAUX : montants generes par les umprunts de la ressources depuis le debut
    9279        echo association_tablinfos_montants('emprunts', sql_getfetsel('SUM(duree*prix_unitaire) AS totale', 'spip_asso_prets', "id_ressource=$id_ressource"), $ressource['prix_acquisition']); // /!\ les recettes sont calculees simplement (s'il y a un systeme de penalite pour retard, il faut s'adapter a la saisie pour que le module soit utile) ; les depenses ne prennent pas en compte les eventuels frais d'entretien ou de reparation de la ressource...
    93         // datation et raccourcis
    94 
    95         if ( (is_numeric($ressource['statut']) && $ressource['statut']>0) || $ressource['statut']=='ok' )
    96                 echo association_navigation_raccourcis(array(
    97                         array('ressources_titre_liste_ressources', 'grille-24.png', array('ressources', "id=$id_ressource"), array('voir_ressources', 'association')),
    98                         array('prets_nav_ajouter', 'creer-12.gif', array('edit_pret', "id_ressource=$id_ressource&id_pret=0"), array('editer_prets', 'association')),
    99                 ), 15);
     80/// AFFICHAGES_LATERAUX : RACCOURCIS
     81        $res[] = array('ressources_titre_liste_ressources', 'grille-24.png', array('ressources', "id=$id_ressource"), array('voir_ressources', 'association'));
     82        if ( (is_numeric($ressource['statut']) && $ressource['statut']>0) || $ressource['statut']=='ok' ) // ressource disponible a la/le location/pret
     83                $res [] = array('prets_nav_ajouter', 'creer-12.gif', array('edit_pret', "id_ressource=$id_ressource&id_pret=0"), array('editer_prets', 'association'));
     84        echo association_navigation_raccourcis($res, 15);
    10085        if ( autoriser('exporter_membres', 'association') ) { // etiquettes
    10186                echo association_form_etiquettes($where, ' LEFT JOIN spip_asso_prets AS p ON m.id_auteur=p.id_auteur ', $suffixe_pdf); //!\ reorganiser le code pour prendre en compte le statut/etat de restitution
    10287        }
    103 }
    104 
    105 function pret_corps($id_periode, $id_pret, $id_ressource, $where, $statut, $unite)
    106 {
     88/// AFFICHAGES_CENTRAUX (corps)
    10789        debut_cadre_association('pret-24.gif', 'prets_titre_liste_reservations');
    108         // FILTRES
     90/// AFFICHAGES_CENTRAUX : FILTRES
    10991        $filtre_statut = "<select name='statut' onchange='form.submit()'>\n";
    11092        $filtre_statut .= '<option value="">' ._T('asso:entete_tous') ."</option>\n";
     
    122104                'statut' => $filtre_statut,
    123105        ));
    124         // TABLEAU
     106/// AFFICHAGES_CENTRAUX : TABLEAU
    125107        switch ($statut) {
    126                         case 'retour' :
    127                                 $where .= " AND date_retour<NOW() AND date_retour<>'0000-00-00T00:00:00'";
    128                                 break;
    129                         case 'sortie' :
    130                                 $where .= " AND (date_retour>NOW() OR date_retour='0000-00-00T00:00:00')";
    131                                 break;
    132                         default :
    133                                 break;
     108                case 'retour' :
     109                        $where .= " AND date_retour<NOW() AND date_retour<>'0000-00-00T00:00:00'";
     110                        break;
     111                case 'sortie' :
     112                        $where .= " AND (date_retour>NOW() OR date_retour='0000-00-00T00:00:00')";
     113                        break;
     114                default :
     115                        break;
    134116        }
    135 
    136117        echo association_bloc_listehtml2('asso_prets',
    137                         sql_select("*, CASE WHEN date_retour='0000-00-00T00:00:00' THEN 1 WHEN date_retour>NOW() THEN 1 ELSE 0 END AS statut_sortie ", 'spip_asso_prets', $where, '', 'date_sortie DESC'), // requete
    138                         array(
    139                                 'id_pret' => array('asso:entete_id', 'entier'),
    140                                 'date_sortie' => array('asso:prets_entete_date_sortie', 'date', 'dtstart'),
    141                                 'id_auteur' => array('asso:entete_nom', 'idnom', array(), 'membre'),
    142                                 'duree' => array('asso:entete_duree', 'duree', intval($unite)),
    143                                 'date_retour' => array('asso:prets_entete_date_retour', 'date', 'dtend'),
    144                         ), // entetes et formats des donnees
    145                         autoriser('editer_prets', 'association') ? array(
    146                                 array('suppr', 'pret', 'id=$$'),
    147                                 array('edit', 'pret', 'id=$$'),
    148                         ) : array(), // boutons d'action
    149                         'id_pret', // champ portant la cle des lignes et des boutons
    150                         array('pair', 'impair'), 'statut_sortie', $id_pret
    151                 );
     118                sql_select("*, CASE WHEN date_retour='0000-00-00T00:00:00' THEN 1 WHEN date_retour>NOW() THEN 1 ELSE 0 END AS statut_sortie ", 'spip_asso_prets', $where, '', 'date_sortie DESC'), // requete
     119                array(
     120                        'id_pret' => array('asso:entete_id', 'entier'),
     121                        'date_sortie' => array('asso:prets_entete_date_sortie', 'date', 'dtstart'),
     122                        'id_auteur' => array('asso:entete_nom', 'idnom', array(), 'membre'),
     123                        'duree' => array('asso:entete_duree', 'duree', intval($unite)),
     124                        'date_retour' => array('asso:prets_entete_date_retour', 'date', 'dtend'),
     125                ), // entetes et formats des donnees
     126                autoriser('editer_prets', 'association') ? array(
     127                        array('suppr', 'pret', 'id=$$'),
     128                        array('edit', 'pret', 'id=$$'),
     129                ) : array(), // boutons d'action
     130                'id_pret', // champ portant la cle des lignes et des boutons
     131                array('pair', 'impair'), 'statut_sortie', $id_pret
     132        );
     133/// AFFICHAGES_CENTRAUX : PAGINATION
    152134        echo association_form_souspage(array('spip_asso_prets', $where), 'prets', "id=$id_ressource&".($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode".($statut?"&statut='$statut'":'') );
     135/// AFFICHAGES_CENTRAUX : FIN
     136        fin_page_association();
    153137}
    154138
  • _plugins_/Associaspip/trunk/exec/synchronis_activites.php

    r71725 r72883  
    1313
    1414function exec_synchronis_activites() {
    15         if (!autoriser('gerer_activites', 'association')) {
    16                         include_spip('inc/minipres');
    17                         echo minipres();
    18         } else {
    19                 include_spip('association_modules');
    20                 $id_evenement = association_passeparam_id('evenement');
    21                 echo association_navigation_onglets('synchroniser_asso_membres', 'activites');
    22                 // INTRO : Rappel Infos Evenement
    23                 $evenement = sql_fetsel('*', 'spip_evenements', "id_evenement=$id_evenement") ;
    24                 $format = 'association_formater_'. (($evenement['horaire']=='oui')?'heure':'date');
    25                 $infos['agenda:evenement_date_du'] = $format($evenement['date_debut'],'dtstart');
    26                 $infos['agenda:evenement_date_au'] = $format($evenement['date_fin'],'dtend');
    27                 $infos['agenda:evenement_lieu'] = '<span class="location">'.$evenement['lieu'].'</span>';
    28                 echo '<div class="vevent">'. association_tablinfos_intro('<span class="summary">'.$evenement['titre'].'</span>', 'evenement', $id_evenement, $infos, 'evenement') .'</div>';
    29                 $reponses = sql_allfetsel('reponse, COUNT(*) AS nombre', 'spip_evenements_participants', "id_evenement=$id_evenement", 'reponse', 'reponse DESC');
    30                 foreach ($reponses as $num=>$rep ) { // re-normaliser le tableau des reponses
    31                         switch ( $rep['reponse'] ) { // mettre la l'identifiant de la reponse en cle et rajouter au debut du tableau la chaine de langue
    32                                 case 'oui' :
    33                                         $reponses['oui'] = array('agenda:label_reponse_jyparticipe', $rep['nombre'], );
    34                                         break;
    35                                 case 'non' :
    36                                         $reponses['non'] = array('agenda:label_reponse_jyparticipe_pas', $rep['nombre'], );
    37                                         break;
    38                                 case '?' :
    39                                         $reponses['nsp'] = array('agenda:label_reponse_jyparticipe_peutetre', $rep['nombre'], );
    40                                         break;
    41                                 default : // autres (rajouts en dehors du plugin Agenda 2)
    42                                         $reponses['reponse_'.$rep['reponse']] = array('reponse_'.$rep['reponse'], $rep['nombre'], );
    43                                         break;
    44                         }
    45                         unset($reponses[$num]); // supprimer l'ancienne entree (le tableau final aura le meme nombre d'elements)
     15        sinon_interdire_acces(autoriser('gerer_activites', 'association'));
     16        include_spip('association_modules');
     17/// INITIALISATIONS
     18        $id_evenement = association_passeparam_id('evenement');
     19/// AFFICHAGES_LATERAUX (connexes)
     20        echo association_navigation_onglets('synchroniser_asso_membres', 'activites');
     21/// AFFICHAGES_LATERAUX : INTRO : Rappel Infos Evenement
     22        $evenement = sql_fetsel('*', 'spip_evenements', "id_evenement=$id_evenement") ;
     23        $format = 'association_formater_'. (($evenement['horaire']=='oui')?'heure':'date');
     24        $infos['agenda:evenement_date_du'] = $format($evenement['date_debut'],'dtstart');
     25        $infos['agenda:evenement_date_au'] = $format($evenement['date_fin'],'dtend');
     26        $infos['agenda:evenement_lieu'] = '<span class="location">'.$evenement['lieu'].'</span>';
     27        echo '<div class="vevent">'. association_tablinfos_intro('<span class="summary">'.$evenement['titre'].'</span>', 'evenement', $id_evenement, $infos, 'evenement') .'</div>';
     28        $reponses = sql_allfetsel('reponse, COUNT(*) AS nombre', 'spip_evenements_participants', "id_evenement=$id_evenement", 'reponse', 'reponse DESC');
     29        foreach ($reponses as $num=>$rep ) { // re-normaliser le tableau des reponses
     30                switch ( $rep['reponse'] ) { // mettre la l'identifiant de la reponse en cle et rajouter au debut du tableau la chaine de langue
     31                        case 'oui' :
     32                                $reponses['oui'] = array('agenda:label_reponse_jyparticipe', $rep['nombre'], );
     33                                break;
     34                        case 'non' :
     35                                $reponses['non'] = array('agenda:label_reponse_jyparticipe_pas', $rep['nombre'], );
     36                                break;
     37                        case '?' :
     38                                $reponses['nsp'] = array('agenda:label_reponse_jyparticipe_peutetre', $rep['nombre'], );
     39                                break;
     40                        default : // autres (rajouts en dehors du plugin Agenda 2)
     41                                $reponses['reponse_'.$rep['reponse']] = array('reponse_'.$rep['reponse'], $rep['nombre'], );
     42                                break;
    4643                }
    47                 // TOTAUX : nombres d'inscrits par reponse
    48                 echo association_tablinfos_effectifs('inscriptions',  $reponses);
    49                 // datation et raccourcis
    50                 echo association_navigation_raccourcis(array(
    51                         array('activite_titre_inscriptions_activites', 'grille-24.png', array('inscrits_activite', "id=$id_evenement"), array('voir_inscriptions', 'association') ),
    52                 ) );
    53                 debut_cadre_association('reload-32.png', 'options_synchronisation');
    54                 echo recuperer_fond('prive/editer/synchroniser_asso_activites', array (
    55                         'id_evenement' => $id_evenement,
    56                 ));
    57                 fin_page_association();
     44                unset($reponses[$num]); // supprimer l'ancienne entree (le tableau final aura le meme nombre d'elements)
    5845        }
     46/// AFFICHAGES_LATERAUX : TOTAUX : nombres d'inscrits par reponse
     47        echo association_tablinfos_effectifs('inscriptions',  $reponses);
     48/// AFFICHAGES_LATERAUX : RACCOURCIS
     49        echo association_navigation_raccourcis(array(
     50                array('activite_titre_inscriptions_activites', 'grille-24.png', array('inscrits_activite', "id=$id_evenement"), array('voir_inscriptions', 'association') ),
     51        ) );
     52/// AFFICHAGES_CENTRAUX (corps)
     53        debut_cadre_association('reload-32.png', 'options_synchronisation');
     54/// AFFICHAGES_CENTRAUX : FORMULAIRE
     55        echo recuperer_fond('prive/editer/synchroniser_asso_activites', array (
     56                'id_evenement' => $id_evenement,
     57        ));
     58/// AFFICHAGES_CENTRAUX : FIN
     59        fin_page_association();
    5960}
    6061
  • _plugins_/Associaspip/trunk/exec/ventes.php

    r71763 r72883  
    1313
    1414function exec_ventes() {
    15         if (!autoriser('voir_ventes', 'association')) {
    16                 include_spip('inc/minipres');
    17                 echo minipres();
    18         } else {
    19                 include_spip ('association_modules');
     15        sinon_interdire_acces(autoriser('voir_ventes', 'association'));
     16        include_spip('association_modules');
    2017/// INITIALISATIONS
    21                 $id_vente = association_passeparam_id('vente');
    22                 list($id_periode, $critere_periode) = association_passeparam_annee('vente', 'asso_ventes', $id_vente);
    23                 if ($id_vente) { // la presence de ce parametre interdit la prise en compte d'autres (a annuler donc si presents dans la requete)
    24                         $etat = '';
    25                         $suffixe_pdf = "vente$id_vente";
    26                 } else { // on peut prendre en compte les filtres ; on recupere les parametres de :
    27                         $etat = _request('etat'); // etat d'avancement de la commande
    28                         $suffixe_pdf = "ventes_$id_periode".'_'.($etat?$etat:'tous');
    29                 }
    30                 $q_where = $critere_periode;
    31                 switch ($etat) {
    32                         case 'encours' :
    33                                 $q_where .= ' AND date_envoi<date_vente';
    34                                 break;
    35                         case 'traites' :
    36                                 $q_where .= ' AND date_envoi>=date_vente';
    37                                 break;
    38                         default :
    39                                 break;
    40                 }
     18        $id_vente = association_passeparam_id('vente');
     19        list($id_periode, $critere_periode) = association_passeparam_annee('vente', 'asso_ventes', $id_vente);
     20        if ($id_vente) { // la presence de ce parametre interdit la prise en compte d'autres (a annuler donc si presents dans la requete)
     21                $etat = '';
     22                $suffixe_pdf = "vente$id_vente";
     23        } else { // on peut prendre en compte les filtres ; on recupere les parametres de :
     24                $etat = _request('etat'); // etat d'avancement de la commande
     25                $suffixe_pdf = "ventes_$id_periode".'_'.($etat?$etat:'tous');
     26        }
     27        $q_where = $critere_periode;
     28        switch ($etat) {
     29                case 'encours' :
     30                        $q_where .= ' AND date_envoi<date_vente';
     31                        break;
     32                case 'traites' :
     33                        $q_where .= ' AND date_envoi>=date_vente';
     34                        break;
     35                default :
     36                        break;
     37        }
    4138/// AFFICHAGES_LATERAUX (connexes)
    42                 echo association_navigation_onglets('titre_onglet_ventes', 'ventes');
     39        echo association_navigation_onglets('titre_onglet_ventes', 'ventes');
    4340/// AFFICHAGES_LATERAUX : TOTAUX : nombre de ventes selon etat de livraison
    44                 echo association_tablinfos_effectifs('ventes', array(
    45                         'pair' => array( 'ventes_enregistrees', sql_countsel('spip_asso_ventes', "date_envoi<date_vente AND  $critere_periode"), ),
    46                         'impair' => array( 'ventes_expediees', sql_countsel('spip_asso_ventes', "date_envoi>=date_vente AND  $critere_periode"), ),
    47                 ));
     41        echo association_tablinfos_effectifs('ventes', array(
     42                'pair' => array( 'ventes_enregistrees', sql_countsel('spip_asso_ventes', "date_envoi<date_vente AND  $critere_periode"), ),
     43                'impair' => array( 'ventes_expediees', sql_countsel('spip_asso_ventes', "date_envoi>=date_vente AND  $critere_periode"), ),
     44        ));
    4845/// AFFICHAGES_LATERAUX : STATS sur les paniers/achats/commandes
    49                 echo association_tablinfos_stats('paniers/commandes', 'ventes', array('entete_quantite'=>'quantite','entete_montant'=>'prix_unitaire*quantite',), $critere_periode);
     46        echo association_tablinfos_stats('paniers/commandes', 'ventes', array('entete_quantite'=>'quantite','entete_montant'=>'prix_unitaire*quantite',), $critere_periode);
    5047/// AFFICHAGES_LATERAUX : TOTAUX : montants des ventes et des frais de port
    51                 $data = sql_fetsel('SUM(prix_unitaire*quantite) AS somme_ventes, SUM(frais_envoi) AS somme_frais', 'spip_asso_ventes', $critere_periode);
    52                 echo association_tablinfos_montants($id_periode, $data['somme_ventes']+$data['somme_frais'], $data['somme_frais']); // les frais de port etant facturees a l'acheteur, ce sont bien des recettes... mais ces frais n'etant (normalement) pas refacturees (et devant meme etre transparents) ils n'entrent pas dans la marge (enfin, facon de dire car les couts d'acquisition ne sont pas pris en compte... le "solde" ici est le montant effectif des ventes.)
     48        $data = sql_fetsel('SUM(prix_unitaire*quantite) AS somme_ventes, SUM(frais_envoi) AS somme_frais', 'spip_asso_ventes', $critere_periode);
     49        echo association_tablinfos_montants($id_periode, $data['somme_ventes']+$data['somme_frais'], $data['somme_frais']); // les frais de port etant facturees a l'acheteur, ce sont bien des recettes... mais ces frais n'etant (normalement) pas refacturees (et devant meme etre transparents) ils n'entrent pas dans la marge (enfin, facon de dire car les couts d'acquisition ne sont pas pris en compte... le "solde" ici est le montant effectif des ventes.)
    5350/// AFFICHAGES_LATERAUX : RACCOURCIS
    54                 echo association_navigation_raccourcis(array(
    55                         array('ajouter_une_vente', 'ajout-24.png', array('edit_vente'), array('gerer_ventes', 'association') ),
    56                 ), 3);
     51        echo association_navigation_raccourcis(array(
     52                array('ajouter_une_vente', 'ajout-24.png', array('edit_vente'), array('gerer_ventes', 'association') ),
     53        ), 3);
    5754/// AFFICHAGES_LATERAUX : Forms-PDF
    58                 if ( autoriser('exporter_membres', 'association') ) { // etiquettes
    59                         echo association_form_etiquettes($q_where, ' LEFT JOIN spip_asso_ventes AS v ON m.id_auteur=v.id_auteur ', $suffixe_pdf);
    60                 }
     55        if ( autoriser('exporter_membres', 'association') ) { // etiquettes
     56                echo association_form_etiquettes($q_where, ' LEFT JOIN spip_asso_ventes AS v ON m.id_auteur=v.id_auteur ', $suffixe_pdf);
     57        }
    6158/// AFFICHAGES_CENTRAUX (corps)
    62                 debut_cadre_association('ventes.gif', 'toutes_les_ventes');
     59        debut_cadre_association('ventes.gif', 'toutes_les_ventes');
    6360/// AFFICHAGES_CENTRAUX : FILTRES
    64                 $filtre_statut = '<select name="etat" onchange="form.submit()">';
    65                 $filtre_statut .= '<option value="">' ._T('asso:entete_tous') .'</option>';
    66                 $filtre_statut .= '<option value="encours"';
    67                 $filtre_statut .= ($etat=='encours'?' selected="selected"':'');
    68                 $filtre_statut .= '>'. _T('asso:ventes_enregistrees') .'</option>';
    69                 $filtre_statut .= '<option value="traites"';
    70                 $filtre_statut .= ($etat=='traites'?' selected="selected"':'');
    71                 $filtre_statut .= '>'. _T('asso:ventes_expediees') .'</option>';
    72                 $filtre_statut .= '</select>';
    73                 echo association_form_filtres(array(
    74                         'periode' => array($id_periode, 'asso_ventes', 'vente'),
    75 #                       'id' => $id_vente,
    76                 ), 'ventes', array(
    77                         'etat' => $filtre_statut,
    78                 ));
     61        $filtre_statut = '<select name="etat" onchange="form.submit()">';
     62        $filtre_statut .= '<option value="">' ._T('asso:entete_tous') .'</option>';
     63        $filtre_statut .= '<option value="encours"';
     64        $filtre_statut .= ($etat=='encours'?' selected="selected"':'');
     65        $filtre_statut .= '>'. _T('asso:ventes_enregistrees') .'</option>';
     66        $filtre_statut .= '<option value="traites"';
     67        $filtre_statut .= ($etat=='traites'?' selected="selected"':'');
     68        $filtre_statut .= '>'. _T('asso:ventes_expediees') .'</option>';
     69        $filtre_statut .= '</select>';
     70        echo association_form_filtres(array(
     71                'periode' => array($id_periode, 'asso_ventes', 'vente'),
     72#               'id' => $id_vente,
     73        ), 'ventes', array(
     74                'etat' => $filtre_statut,
     75        ));
    7976/// AFFICHAGES_CENTRAUX : TABLEAU
    80                 echo association_bloc_listehtml2('asso_ventes',
    81                         sql_select('*, CASE WHEN date_envoi<date_vente THEN 0 ELSE 1 END AS statut_vente', 'spip_asso_ventes', $q_where, '',  'id_vente DESC'),
    82                         array(
    83                                 'id_vente' => array('asso:entete_id', 'entier'),
    84                                 'date_vente' => array('asso:ventes_entete_date_vente', 'date', 'dtstart'),
    85                                 'date_envoie' => array('asso:ventes_entete_date_envoi', 'date', 'dtend'),
    86                                 'article' => array('asso:entete_intitule', 'texte', 'propre', 'n'),
    87                                 'code' => array('asso:entete_code', 'code', 'x-spip_asso_ventes'),
    88                                 'id_auteur' => array('asso:entete_nom', 'idnom', array('spip_asso_ventes', 'nom', 'id_auteur'), 'membre'),
    89                                 'quantite' => array('asso:entete_quantite', 'nombre', 2, 'quantity'),
    90                                 'prix_unitaire' => array('asso:entete_montant', 'prix', 'purchase cost offer'),
    91 //                              'commentaire' => array('asso:entete_commentaire', 'texte', 'propre'),
    92                         ), // entetes et formats des donnees
    93                         autoriser('editer_ventes', 'association') ? array(
    94                                 array('suppr', 'vente', 'id=$$'),
    95                                 array('edit', 'vente', 'id=$$'),
    96                         ) : array(), // boutons d'action
    97                         'id_vente', // champ portant la cle des lignes et des boutons
    98                         array('pair hproduct', 'impair hproduct'), 'statut_vente', $id_vente // rel="purchase"
    99                 );
     77        echo association_bloc_listehtml2('asso_ventes',
     78                sql_select('*, CASE WHEN date_envoi<date_vente THEN 0 ELSE 1 END AS statut_vente', 'spip_asso_ventes', $q_where, '',  'id_vente DESC'),
     79                array(
     80                        'id_vente' => array('asso:entete_id', 'entier'),
     81                        'date_vente' => array('asso:ventes_entete_date_vente', 'date', 'dtstart'),
     82                        'date_envoie' => array('asso:ventes_entete_date_envoi', 'date', 'dtend'),
     83                        'article' => array('asso:entete_intitule', 'texte', 'propre', 'n'),
     84                        'code' => array('asso:entete_code', 'code', 'x-spip_asso_ventes'),
     85                        'id_auteur' => array('asso:entete_nom', 'idnom', array('spip_asso_ventes', 'nom', 'id_auteur'), 'membre'),
     86                        'quantite' => array('asso:entete_quantite', 'nombre', 2, 'quantity'),
     87                        'prix_unitaire' => array('asso:entete_montant', 'prix', 'purchase cost offer'),
     88//                      'commentaire' => array('asso:entete_commentaire', 'texte', 'propre'),
     89                ), // entetes et formats des donnees
     90                autoriser('editer_ventes', 'association') ? array(
     91                        array('suppr', 'vente', 'id=$$'),
     92                        array('edit', 'vente', 'id=$$'),
     93                ) : array(), // boutons d'action
     94                'id_vente', // champ portant la cle des lignes et des boutons
     95                array('pair hproduct', 'impair hproduct'), 'statut_vente', $id_vente // rel="purchase"
     96        );
    10097/// AFFICHAGES_CENTRAUX : PAGINATION
    101                 echo association_form_souspage(array('spip_asso_ventes', $q_where), 'ventes', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode".($etat?"&etat='$etat'":'') );
    102                 fin_page_association();
    103         }
     98        echo association_form_souspage(array('spip_asso_ventes', $q_where), 'ventes', ($GLOBALS['association_metas']['exercices']?'exercice':'annee')."=$id_periode".($etat?"&etat='$etat'":'') );
     99/// AFFICHAGES_CENTRAUX : FIN
     100        fin_page_association();
    104101}
    105102
Note: See TracChangeset for help on using the changeset viewer.