Changeset 53976 in spip-zone


Ignore:
Timestamp:
Nov 2, 2011, 7:48:52 PM (8 years ago)
Author:
marcel@…
Message:

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

Location:
_plugins_/Association/Associaspip
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/Association/Associaspip/action/editer_asso_comptes.php

    r46893 r53976  
    33 *  Associaspip, extension de SPIP pour gestion d'associations             *
    44 *                                                                         *
    5  *  Copyright (c) 2007 Bernard Blazin & François de Montlivault (V1)       *
     5 *  Copyright (c) 2007 Bernard Blazin & Franois de Montlivault (V1)       *
    66 *  Copyright (c) 2010-2011 Emmanuel Saint-James & Jeannot Lapin (V2)       *
    77 *                                                                         *
     
    2929        $journal= _request('journal');
    3030
     31        $type_operation = _request('type_operation');
     32        /* dans le cas ou c'est un virement on va generer 2 ecritures
     33         * Supposons un virement de 400€ du compte 5171 (Caisse d'epargne) vers le compte 531 (caisse)
     34         * depense = 400   imputation = 531  journal = 5171
     35         *
     36         * 1ere ecriture : depense 400€ de 5171 vers 581 (virement interne)
     37         * depense = 400   imputation = 581  journal = 5171
     38         *
     39         * 2eme ecriture : recette 400€ de 581 vers 531
     40         * recette = 400   imputation = 581  journal = 531
     41         *
     42         * Dans Bilan et Compte de résultat, le compte 581 doit avoir un solde = 0 !!!!
     43         */
    3144
    32         if (!$id_compte) { /* pas d'id_compte, c'est un ajout */
    33                 $id_compte = association_ajouter_operation_comptable($date, $recette, $depense, $justification, $imputation, $journal, 0);
     45        if ($type_operation == $GLOBALS['association_metas']['classe_banques']) {
     46                if(!$justification) $justification=_T('asso:virement_interne');
     47                /* si le compte 58xx n'existe pas on le cree dans le plan comptable */
     48                $compte_virement = association_creer_compte_virement_interne();
     49                /* c'est forcément un ajout car pour l'instant l'edition d'un virement est "desactive" */
     50                /* la modification d'un virement interne n'est pas encore implementee et donc pour modifier */
     51                /* un virement on le supprime et on le recree .... C'est pas beau mais ça fonctionne !!!*/
     52                /* TODO : decommenter les lignes si edition/modification d'un virement possible ! */
     53                //if (!$id_compte) { /* pas d'id_compte, c'est un ajout */
     54                        // 1ere ecriture
     55                        $old_imputation = $imputation;
     56                        $imputation = $compte_virement;
     57                        $id_compte = association_ajouter_operation_comptable($date, $recette, $depense, $justification, $imputation, $journal, 0);
     58                        // 2eme ecriture
     59                        $recette = $depense;
     60                        $depense = 0;
     61                        $journal = $old_imputation;
     62                        $id_compte = association_ajouter_operation_comptable($date, $recette, $depense, $justification, $imputation, $journal, 0);
     63                //}
     64                //else {
     65                        /* c'est une modif, ........ */
     66                //      association_modifier_compte_virement_interne($id_compte);
     67                //}
     68        }
     69        else {
     70                if (!$id_compte) { /* pas d'id_compte, c'est un ajout */
     71                        $id_compte = association_ajouter_operation_comptable($date, $recette, $depense, $justification, $imputation, $journal, 0);
    3472        }else { /* c'est une modif, la parametre id_journal de la fonction modifier operation comptable est mis a '' afin de ne pas le modifier dans la base */
    35                 association_modifier_operation_comptable($date, $recette, $depense, $justification, $imputation, $journal, '', $id_compte);
     73                        association_modifier_operation_comptable($date, $recette, $depense, $justification, $imputation, $journal, '', $id_compte);
     74                }
     75
    3676        }
    37 
    3877        return array($id_compte, '');
    3978}
  • _plugins_/Association/Associaspip/formulaires/editer_asso_comptes.html

    r50519 r53976  
    1 <div class="formulaire_spip formulaire_demo">
    2 [<span class='erreur'>(#ENV*{message_erreur})</span>]
    3 <form method="post" action="#ENV{action}"><div>
    4         #ACTION_FORMULAIRE{#ENV{action}}
    5         <ul>
    6                 <h3 class="legend"><:asso:modification_des_comptes:></h3>
    7                 #SET{erreurs,#ENV**{erreurs}|table_valeur{imputation}}
    8                 <li class="editer_imputation">
    9                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    10                         <label for="imputation"><strong><:asso:imputation:></strong></label>
    11                         <B_imputation>
    12                         <select name="imputation" id="imputation" class="formo" >
    13                         <BOUCLE_imputation(ASSO_PLAN){par classe}{par code}{classe!=#ENV{classe_banques}}{active=1}>
    14                         <option value="#CODE" [(#ENV{imputation}|=={#CODE}|?{selected="selected"})]>#CODE - #INTITULE[(#TYPE_OP|!={multi}|oui)&nbsp;-&nbsp;[(#TYPE_OP|=={credit}|?{<:asso:crediteur:>,<:asso:debiteur:>})]][&nbsp;-&nbsp;(#ENV{classe_banques}|=={#CLASSE}|oui)<:asso:compte_financier:>]</option>
    15                         </BOUCLE_imputation>
    16                         </select>
    17                         </B_imputation>
    18                         <span class="erreur_message"><:asso:erreur_pas_de_classe_financiere:></span>
    19                         <//B_imputation>
    20                 </li>
     1<div class="formulaire_spip formulaire_#FORM">
     2    [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
     3    [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
     4    <form name="formulaire_#FORM" method="post" action="#ENV{action}">
     5                <div>
     6                        #ACTION_FORMULAIRE{#ENV{action}}
     7                        <ul>
     8                                <li class="fieldset">
     9                                        <fieldset>
     10                                                <h3 class="legend"><:asso:modification_des_comptes:></h3>
     11                                                #BOUTON_TYPE_OPERATION
     12                                                <ul>
     13                                                       
     14                                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{imputation}}
     15                                                        <li class="editer_imputation">
     16                                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     17                                                                #SELECTEUR_IMPUTATION
     18                                                        </li>
     19                       
     20                                                        #SET{erreurs,#ENV**{erreurs}|table_valeur{date}}
     21                                                        <li class="editer_date[ (#GET{erreurs}|oui)erreur]">
     22                                                                [<span class='erreur_message'>(#GET{erreurs})</span>]
     23                                                                <label for="date"><strong><:asso:date_aaaa_mm_jj:></strong></label>
     24                                                                <input type="text" name="date" [value="(#ENV{date}|affdate{Y-m-d})"] id="date"  class='formo'/>
     25                                                        </li>
    2126
    22                 #SET{erreurs,#ENV**{erreurs}|table_valeur{date}}
    23                 <li class="editer_date">
    24                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    25                         <label for="date"><strong><:asso:date_aaaa_mm_jj:></strong></label>
    26                         <input type="text" name="date" [value="(#ENV{date}|affdate{Y-m-d})"] id="date"  class='formo'/>
    27                 </li>
     27                                                        <div id='saisie_depense' name='saisie_depense' class='[(#ENV{type_operation}|affichage_div{charges-banques-contributions_volontaires})]'>
     28                                                                #SET{erreurs,#ENV**{erreurs}|table_valeur{depense}}
     29                                                                <li class="editer_depense[ (#GET{erreurs}|oui)erreur]">
     30                                                                        [<span class='erreur_message'>(#GET{erreurs})</span>]
     31                                                                        <label for="depense"><strong><:asso:depense:></strong></label>
     32                                                                        <input type="text" name="depense" value="[(#ENV{depense})]" id="depense"  class='formo'/>
     33                                                                </li>
     34                                                        </div>
     35                                                       
     36                                                        <div id='saisie_recette' name='saisie_recette' class='[(#ENV{type_operation}|affichage_div{produits-contributions_volontaires})]'>
     37                                                                #SET{erreurs,#ENV**{erreurs}|table_valeur{recette}}
     38                                                                <li class="editer_recette[ (#GET{erreurs}|oui)erreur]">
     39                                                                        [<span class='erreur_message'>(#GET{erreurs})</span>]
     40                                                                        <label for="recette"><strong><:asso:recette:></strong></label>
     41                                                                        <input type="text" name="recette" value="[(#ENV{recette})]" id="recette" class='formo' />
     42                                                                </li>
     43                                                        </div>
    2844
    29                 #SET{erreurs,#ENV**{erreurs}|table_valeur{montant}}
    30                 <li class="editer_recette[ (#GET{erreurs}|oui)erreur]">
    31                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    32                         <label for="recette"><strong><:asso:recette:></strong></label>
    33                         <input type="text" name="recette" value="[(#ENV{recette})]" id="recette"  class='formo'/>
    34                
    35                 </li>
    36                 <li class="editer_depense[ (#GET{erreurs}|oui)erreur]">
    37                         <label for="depense"><strong><:asso:depense:></strong></label>
    38                         <input type="text" name="depense" value="[(#ENV{depense})]" id="depense"  class='formo'/>
    39                 </li>
     45                                                        [(#ENV{classe_banques}|oui) <!-- si il n'a pas de classe banques definie, on ne propose pas de mode de paiement !!!!!!! BIGRE !!!! OUPS !!!!! -->
     46                                                        <li class="editer_journal">
     47                                                                <INCLURE{fond=inc/mode_de_paiement, journal, classe_banques}>
     48                                                        </li>
     49                                                        ]
    4050
    41                 [(#ENV{classe_banques}|oui) <!-- si il n'a pas de classe banques definie, on ne propose pas de mode de paiement -->
    42                 <li class="editer_journal">
    43                         <INCLURE{fond=inc/mode_de_paiement, journal, classe_banques}>
    44                 </li>
    45                 ]
     51                                                        <div id='saisie_justification' name='saisie_justification' class='[(#ENV{type_operation}|affichage_div{charges-produits-banques-contributions_volontaires})]'>
     52                                                                <li class="editer_justification">
     53                                                                        <label for="justification"><strong><:asso:justification:></strong></label>
     54                                                                        <input type="text" name="justification" [value="(#ENV{justification})"] id="justification"  class='formo'/>
     55                                                                </li>
     56                                                        </div>
     57                                                       
     58                                                        <div id='saisie_destination' name='saisie_destination' class='[(#ENV{type_operation}|affichage_div{charges-produits-contributions_volontaires})]'>
     59                                                                <!-- si la variable destinations est assignee, on insere l'editeur de destinations -->
     60                                                                #SET{erreurs,#ENV**{erreurs}|table_valeur{destinations}}
     61                                                                [<li [ class="(#GET{erreurs}|oui)erreur"]>
     62                                                                        [<span class='erreur_message'>(#GET{erreurs})</span>]
     63                                                                        (#ENV{destinations_on}|oui)#EDITEUR_DESTINATIONS
     64                                                                </li>]
     65                                                        </div>                                                 
     66                                                </ul>
     67                                               
     68                                                <p class="boutons"><input type="submit" value="<:pass_ok:>" class="submit" /></p>
    4669
    47                 <li class="editer_justification">
    48                         <label for="justification"><strong><:asso:justification:></strong></label>
    49                         <input type="text" name="justification" [value="(#ENV{justification})"] id="justification"  class='formo'/>
    50                 </li>
    51 
    52                 <!-- si la variable destinations est assignee, on insere l'editeur de destinations -->
    53                 #SET{erreurs,#ENV**{erreurs}|table_valeur{destinations}}
    54                 [<li [ class="(#GET{erreurs}|oui)erreur"]>
    55                         [<span class='erreur_message'>(#GET{erreurs})</span>]
    56                         (#ENV{destinations_on}|oui)#EDITEUR_DESTINATIONS
    57                 </li>]
    58                
    59         </ul>
    60 
    61 <p class="boutons"><input type="submit" value="<:pass_ok:>" class="submit" /></p>
    62 
     70                                        </fieldset>
     71                                </li>
     72                        </ul>
     73                </div>
     74        </form>
    6375</div>
    64 </form>
    65 </div>
  • _plugins_/Association/Associaspip/formulaires/editer_asso_comptes.php

    r46893 r53976  
    1818        $contexte = formulaires_editer_objet_charger('asso_comptes', $id_compte, '', '',  generer_url_ecrire('comptes'), '');
    1919
    20         /* si c'est une nouvelle operation, on charge la date d'aujourd'hui */
    21         if (!$id_compte) $contexte['date'] = date('Y-m-d');
     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        }
    2232
     33        include_spip('inc/association_comptabilite');
     34       
    2335        // on ajoute les metas de classe_banques, destinations
    2436        $contexte['classe_banques'] = $GLOBALS['association_metas']['classe_banques'];
    2537        if ($GLOBALS['association_metas']['destinations']) {
    26                 include_spip('inc/association_comptabilite');
     38               
    2739                $contexte['destinations_on'] = true;
    2840                $dest_id_montant = association_liste_destinations_associees($id_compte);
     
    4254        $contexte['depense'] = association_nbrefr($contexte['depense']);
    4355        $contexte['recette'] = association_nbrefr($contexte['recette']);
    44        
     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
    4562        return $contexte;
    4663}
     
    6582                }
    6683        }
    67 
     84       
    6885        /* 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 */
    6986        if (($GLOBALS['association_metas']['destinations']) && !array_key_exists("montant",$erreurs))
     
    83100        $erreurs['message_erreur'] = _T('asso:erreur_titre');
    84101        }
     102       
    85103
    86        
    87104        return $erreurs;
    88105}
  • _plugins_/Association/Associaspip/inc/association_comptabilite.php

    r50952 r53976  
    5858
    5959        $res = '';
    60 
     60       
    6161        if ($liste_destination) {
    6262                $res = "<script type='text/javascript' src='".find_in_path("javascript/jquery.destinations_form.js")."'></script>";
     
    289289        return true;
    290290}
     291/* retourne un tableau $code => $intitule trie sur $code et de classe $val */
     292function association_liste_plan_comptable($val) {
     293        $res = array();
     294        /* recupere le code et l'intitule de tous les comptes de classe $val */
     295        $query = sql_select("code, intitule", "spip_asso_plan", "classe='".$val."'", "", "code");
     296        while ($data = sql_fetch($query)) {
     297                $code = $data['code'];
     298                $intitule = $data['intitule'];
     299                $res[$code] = $intitule;
     300        }
     301        return $res;
     302}
     303
     304/* si il existe un compte 58x on le retourne sinon on cree le compte 581 et on le retourne */
     305function association_creer_compte_virement_interne() {
     306        /* on recupere tous les comptes de la classe "financier" (classe 5) */
     307        $res = association_liste_plan_comptable($GLOBALS['association_metas']['classe_banques']);
     308        /* existe-t-il le compte 58x */
     309        foreach($res as $code => $libelle) {
     310                if (substr($code,0,2)=='58') {
     311                        /* j'ai trouve un code qui commence par 58 */
     312                        $trouve = TRUE;
     313                }
     314        }
     315        /* j'ai rien trouve, je cree le compte 581 et je retourne */
     316        if(!$trouve) {
     317                $code = '581';
     318                $id_plan = sql_insertq('spip_asso_plan', array(
     319                        'code' => $code,
     320                        'intitule' => _T('asso:virement_interne'),
     321                        'classe' => '5',
     322                        'type_op' => 'multi',
     323                        'solde_anterieur' => '0',
     324                        'date_anterieure' => date('Y-m-d'),
     325                        'commentaire' => _T('asso:compte_cree_automatiquement'),
     326                        'active' => '1',
     327                        'maj' => date('Y-m-d')
     328                ));
     329        }
     330
     331        return $code;
     332}
     333
    291334?>
Note: See TracChangeset for help on using the changeset viewer.