source: spip-zone/_plugins_/Association/Associaspip/formulaires/editer_asso_comptes.php @ 53976

Last change on this file since 53976 was 53976, checked in by marcel@…, 9 years ago

barre de saisie rapide : Dépense, Recette, Virement et Contibution Solidaire avec positionnement des comptes correspondants.

File size: 4.8 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4include_spip('inc/actions');
5include_spip('inc/editer');
6include_spip('inc/autoriser');
7/***************************************************************************\
8 *  Associaspip, extension de SPIP pour gestion d'associations             *
9 *                                                                         *
10 *  Copyright (c) 2007 Bernard Blazin & Francois de Montlivault (V1)       *
11 *  Copyright (c) 2010-2011 Emmanuel Saint-James & Jeannot Lapin (V2)       *
12 *                                                                         *
13 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
14 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
15\***************************************************************************/
16function formulaires_editer_asso_comptes_charger_dist($id_compte='new') {
17        /* cet appel va charger dans $contexte tous les champs de la table spip_asso_compte associes a l'id_compte passe en param */
18        $contexte = formulaires_editer_objet_charger('asso_comptes', $id_compte, '', '',  generer_url_ecrire('comptes'), '');
19
20        /* si c'est une nouvelle operation */
21        if (!$id_compte) {
22            $contexte['date'] = date('Y-m-d'); # on charge la date d'aujourd'hui
23            $contexte['type_operation']=$GLOBALS['association_metas']['classe_charges']; # on fixe par defaut une depense
24        }
25        else {
26            /* le type d'operation est fonction du compte (de l'imputation dans le cas present) : c'est le 1er caractere du code (la classe)
27             * TODO : dans une version suivante il faut mettre cette information dans le champ "type_op" du type enum dans lequel il faut
28                 * ajouter 'financier' (pour un virement interne) et 'contribution_volontaire' en plus de 'credit', 'debit' et 'multi'
29             */
30            $contexte['type_operation']=substr($contexte['imputation'],0,1);
31        }
32
33        include_spip('inc/association_comptabilite');
34       
35        // on ajoute les metas de classe_banques, destinations
36        $contexte['classe_banques'] = $GLOBALS['association_metas']['classe_banques'];
37        if ($GLOBALS['association_metas']['destinations']) {
38               
39                $contexte['destinations_on'] = true;
40                $dest_id_montant = association_liste_destinations_associees($id_compte);
41                if (is_array($dest_id_montant)) {
42                        $contexte['id_dest'] = array_keys($dest_id_montant);
43                        $contexte['montant_dest'] = array_values($dest_id_montant);
44                } else {
45                        $contexte['id_dest'] = '';
46                        $contexte['montant_dest'] = ''; 
47                }
48                $contexte['unique_dest'] = '';
49                $contexte['defaut_dest'] = ''; /* ces variables sont recuperees par la balise dynamique directement dans l'environnement */
50
51        }
52
53        /* meilleure presentation des montants */
54        $contexte['depense'] = association_nbrefr($contexte['depense']);
55        $contexte['recette'] = association_nbrefr($contexte['recette']);
56
57        /* Recuperation du plan comptable sous forme de tableaux javascript correspondants aux classes utilisees.
58         * Ces tableaux sont ensuite utilises pour initialiser le selecteur d'imputation (javascript)
59         */
60        include_spip('inc/generer_plan_js');
61
62        return $contexte;
63}
64
65function formulaires_editer_asso_comptes_verifier_dist($id_compte) {
66        $erreurs = array();
67        /* on verifie que l'on a bien soit depense soit recette different de 0 et qu'aucun n'est negatif */
68        $recette = association_recupere_montant(_request('recette'));
69        $depense = association_recupere_montant(_request('depense'));
70
71        if (($recette<0) || ($depense<0) || ($recette>0 && $depense>0) || ($recette==0 && $depense==0)) {
72                $erreurs['montant'] = _T('asso:erreur_recette_depense');
73        }
74
75        /* on verifie que le type d'operation est bien permise sur ce compte */
76        $code=_request('imputation');
77        if (!array_key_exists("montant",$erreurs)) {
78                $type_op = sql_getfetsel('type_op', 'spip_asso_plan', 'code='.sql_quote($code));
79               
80                if ((($type_op=='credit') && ($depense>0)) || (($type_op=='debit') && ($recette>0))) {
81                        $erreurs['imputation'] = _T('asso:erreur_operation_non_permise_sur_ce_compte');
82                }
83        }
84       
85        /* verifier si besoin que le montant des destinations correspond bien au montant de l'opération, sauf si on a deja une erreur de montant */
86        if (($GLOBALS['association_metas']['destinations']) && !array_key_exists("montant",$erreurs))
87        {
88                include_spip('inc/association_comptabilite');
89                if ($err_dest = association_verifier_montant_destinations($recette+$depense)) {
90                        $erreurs['destinations'] = $err_dest;
91                }
92        }
93
94        /* verifier la validite de la date */
95        if ($erreur_date = association_verifier_date(_request('date'))) {
96                $erreurs['date'] = _request('date')."&nbsp;:&nbsp;".$erreur_date;
97        }
98
99        if (count($erreurs)) {
100        $erreurs['message_erreur'] = _T('asso:erreur_titre');
101        }
102       
103
104        return $erreurs;
105}
106
107function formulaires_editer_asso_comptes_traiter($id_compte) {
108        return formulaires_editer_objet_traiter('asso_comptes', $id_compte, '', '',  generer_url_ecrire('comptes'), '');
109}
110?>
Note: See TracBrowser for help on using the repository browser.