Changeset 53976 in spip-zone
- Timestamp:
- Nov 2, 2011, 7:48:52 PM (9 years ago)
- Location:
- _plugins_/Association/Associaspip
- Files:
-
- 3 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/Association/Associaspip/action/editer_asso_comptes.php
r46893 r53976 3 3 * Associaspip, extension de SPIP pour gestion d'associations * 4 4 * * 5 * Copyright (c) 2007 Bernard Blazin & Fran çois de Montlivault (V1) *5 * Copyright (c) 2007 Bernard Blazin & Fran�ois de Montlivault (V1) * 6 6 * Copyright (c) 2010-2011 Emmanuel Saint-James & Jeannot Lapin (V2) * 7 7 * * … … 29 29 $journal= _request('journal'); 30 30 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 */ 31 44 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); 34 72 }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 36 76 } 37 38 77 return array($id_compte, ''); 39 78 } -
_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) - [(#TYPE_OP|=={credit}|?{<:asso:crediteur:>,<:asso:debiteur:>})]][ - (#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> 21 26 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> 28 44 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 ] 40 50 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> 46 69 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> 63 75 </div> 64 </form>65 </div> -
_plugins_/Association/Associaspip/formulaires/editer_asso_comptes.php
r46893 r53976 18 18 $contexte = formulaires_editer_objet_charger('asso_comptes', $id_compte, '', '', generer_url_ecrire('comptes'), ''); 19 19 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 } 22 32 33 include_spip('inc/association_comptabilite'); 34 23 35 // on ajoute les metas de classe_banques, destinations 24 36 $contexte['classe_banques'] = $GLOBALS['association_metas']['classe_banques']; 25 37 if ($GLOBALS['association_metas']['destinations']) { 26 include_spip('inc/association_comptabilite');38 27 39 $contexte['destinations_on'] = true; 28 40 $dest_id_montant = association_liste_destinations_associees($id_compte); … … 42 54 $contexte['depense'] = association_nbrefr($contexte['depense']); 43 55 $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 45 62 return $contexte; 46 63 } … … 65 82 } 66 83 } 67 84 68 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 */ 69 86 if (($GLOBALS['association_metas']['destinations']) && !array_key_exists("montant",$erreurs)) … … 83 100 $erreurs['message_erreur'] = _T('asso:erreur_titre'); 84 101 } 102 85 103 86 87 104 return $erreurs; 88 105 } -
_plugins_/Association/Associaspip/inc/association_comptabilite.php
r50952 r53976 58 58 59 59 $res = ''; 60 60 61 61 if ($liste_destination) { 62 62 $res = "<script type='text/javascript' src='".find_in_path("javascript/jquery.destinations_form.js")."'></script>"; … … 289 289 return true; 290 290 } 291 /* retourne un tableau $code => $intitule trie sur $code et de classe $val */ 292 function 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 */ 305 function 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 291 334 ?>
Note: See TracChangeset
for help on using the changeset viewer.