Changeset 73400 in spip-zone


Ignore:
Timestamp:
Jun 9, 2013, 2:30:48 PM (7 years ago)
Author:
gildas.cotomale@…
Message:

revue de la compta : introduction du contrôle de la direction des comptes

Location:
_plugins_/Associaspip/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/Associaspip/trunk/formulaires/editer_asso_plan.php

    r73251 r73400  
    4646                $erreurs['classe'] = $erreur;
    4747        $code = _request('code');
    48         if ($erreur = comptabilite_verifier_code($code, $classe) )
     48        if ($erreur = comptabilite_verifier_code($code, _request('type_op'), $classe) )
    4949                $erreurs['code'] = $erreur;
    5050        if ($erreur = association_verifier_montant('solde_anterieur') )
  • _plugins_/Associaspip/trunk/inc/association_comptabilite.php

    r73361 r73400  
    9696        $id = $GLOBALS['association']['plan_comptable'];
    9797    if (!$id)
    98         return array('[0-9]', '[0-9]');
     98        return array('[0-9]', '[0-9]', 'C'=>$GLOBALS['association_metas']['classe_produits'], 'D'=>$GLOBALS['association_metas']['classe_charges']);
    9999    $trads = array_keys(find_all_in_path('lang/', "pcg2$id", FALSE) );
    100100#    include_spip('lang/'. substr($trads[0], 0, -4)  ); // charger le premier fichier de langue SPIP
     
    424424 *   Caractere de la classe si on souhaite s'assurer que c'est l'initial du code
    425425 * @param string $sens
    426  *   credit|debit|multi : on s'assurera sommairement que le type de compte est bon
    427  * Pour l'instant on ne prend en compte que 2 classes Associaspip mais y d'autres
    428  * http://www.mesexercices.com/recherche_information/comptabilite-les-comptes-de-classe-6-charges-sont-normalement_6_38694.htm
    429  * Par ailleurs, on ne peut pas fonctionner par classe caril y a des exceptions !
    430  *  http://dz.viadeo.com/fr/questions/repondre/?questionId=0021aox4cgt6v70a
    431  * Peut-etre faudrat-il rajouter des regles pour une meilleure validation ?
    432  */
    433 function comptabilite_verifier_code($code, $classe='', $sens='multi', $plan='') {
     426 *   credit|debit|multi : on s'assurera que la direction d'operation est bonnne
     427 * Cela est precise par les regles C (pour credit) et D (pour debit) du plan comptable
     428 * et dans tous les cas multi passe toujours...
     429 */
     430function comptabilite_verifier_code($code, $sens='multi', $classe='', $plan='') {
    434431    $regles = comptabilite_liste_planregles($plan);
     432    $ruleC = $regles['C']; unset($regles['C']);
     433    $ruleD = $regles['D']; unset($regles['D']);
    435434    if ( !preg_match('/^'. implode('', $regles) .'\w*$/', $code) ) // champ de longueur insuffisante ou ne commencant pas de facon adequate
    436435        return _T('compta:erreur_plan_code_format', array('nombre'=>count($regles),) );
    437 #    elseif ( strlen($code)<count($regles) ) // champ de longueur insuffisante
    438 #       return _T('compta:erreur_code_longueur', array('nombre'=>count($regles),) );
    439436    if (sql_countsel('spip_asso_plan', "code='$code'")>1) // occurences multiples d'une meme reference
    440437        return _T('compta:erreur_plan_code_doublon');
    441438    if ( $classe!==FALSE AND $classe!=='' AND $code[0]!=$classe ) // discordance avec la classe
    442439        return _T('compta:erreur_code_classe', array('nombre'=>$classe,) );
    443 #    if ( $code[0]==$GLOBALS['association_metas']['classe_produits'] AND $sens=='debit' ) // ce sont tous des comptes essentiellement créditeurs...
    444 #       return _T('compta:erreur_classe_type', array('numero'=$code[0], 'interdit'=>_T('compta:item_direction_debit'),) );
    445 #    elseif ( $code[0]==$GLOBALS['association_metas']['classe_charges'] AND $sens=='credit' ) // ce sont tous des comptes essentiellement débiteurs...
    446 #       return _T('compta:erreur_classe_type', array('numero'=$code[0], 'interdit'=>_T('compta:item_direction_credit'),) );
     440    if ( $ruleC AND preg_match('/^('.$ruleC.')\w*$/', $code) AND $sens=='debit' ) // comptes uniquement créditeurs...
     441        return _T('compta:erreur_code_type', array('code'=>$code, 'interdit'=>_T('compta:item_direction_debit'),) );
     442    if ( $ruleD AND preg_match('/^('.$ruleD.')\w*$/', $code) AND $sens=='credit' ) // comptes uniquement débiteurs...
     443        return _T('compta:erreur_code_type', array('code'=>$code, 'interdit'=>_T('compta:item_direction_credit'),) );
    447444     return '';
    448445}
     
    468465            return _T('compta:erreur_plan_code_doublon', array('code'=>$r['code'],) ); // ...on arrete sur cette erreur...
    469466        else { // c'est la 1ere occurence
    470             $codes[$r['code']] = comptabilite_verifier_code($r['code'], $r['classe'], 0, $lang); // verifier qu'il est bien forme
     467            $codes[$r['code']] = comptabilite_verifier_code($r['code'], $r['type_op'], $r['classe'], $lang); // verifier qu'il est bien forme
    471468            if ($codes[$r['code']]) // mauvais format...
    472469                return $codes[$r['code']]; // ...on arrete sur cette erreur...
  • _plugins_/Associaspip/trunk/lang/compta_fr.php

    r73361 r73400  
    1616// E
    1717        'erreur_classe_longueur' => 'Une classe comptable est un seul caractère !',
    18         'erreur_classe_plage' => 'Les classes comptables doivent être comprise dans la plage @intervalle@ !',
    19         'erreur_classe_type' => 'Un compte de la classe <em>@numero@</em> ne peut etre de type <em>@interdit@</em> !',
    20         'erreur_code_classe' => 'Une référence comptable de cette classe doit commencer par @nombre@ !',
    21         'erreur_code_longueur' => 'Une référence comptable doit avoir au moins @nombre@ caractères !',
    22         'erreur_destination_aucune' => 'Pas de destination comptable définie !',
    23         'erreur_plan_code_doublon' => 'Référence comptable définie plusieurs fois : <em>@code@</em> !',
    24         'erreur_plan_code_format' => 'Une référence comptable est composée uniquement de caractères non accentuées et doit comporter @nombre@ caractères dont le premier est la classe du compte !',
    25         'erreur_plan_comptes_actifs' => 'Pas de référence active définie dans le plan comptable !',
    26         'erreur_plan_nombre_classes' => 'Pour etre valide, le plan comptable doit comporter @nombre@ classes !',
     18        'erreur_classe_plage' => 'Les classes comptables doivent être comprise dans la plage <em>@intervalle@</em> !', //:asso:erreur_plan_classe
     19        'erreur_code_classe' => 'Une référence comptable de cette classe doit commencer par <em>@nombre@</em> !',
     20        'erreur_code_type' => 'La référence comptable <em>@code@</em> ne peut etre de type <em>@interdit@</em> !',
     21        'erreur_destination_aucune' => 'Pas de destination comptable définie !', //:asso:erreur_pas_de_destination
     22        'erreur_plan_code_doublon' => 'Référence comptable définie plusieurs fois : <em>@code@</em> !', //:asso:erreur_plan_code_duplique
     23        'erreur_plan_code_format' => 'Une référence comptable doit comporter au moins <em>@nombre@ caractères</em> non accentuées dont le premier est la classe du compte et les suivants conformes au plan comptable choisi !', //:asso:erreur_plan_code
     24        'erreur_plan_comptes_actifs' => 'Pas de référence active définie dans le plan comptable !', //:asso:erreur_pas_de_compte
     25        'erreur_plan_nombre_classes' => 'Pour etre valide, le plan comptable doit comporter <em>@nombre@ classes</em> !',
    2726
    2827// I
    29         'item_no_classe' => '-- Classe comptable indéterminée',
    30         'item_no_code' => '-- Choisir une référence comptable',
    31         'item_no_destination' => '-- Choisir une destination par défaut',
     28        'item_no_classe' => '-- Classe comptable indéterminée', //:asso:choisir_classe_compte
     29        'item_no_code' => '-- Choisir une référence comptable', //:asso:choisir_ref_compte
     30        'item_no_destination' => '-- Choisir une destination par défaut', //:asso:choisir_dest_compte
    3231        'item_direction_credit' => 'Crédit',
    3332        'item_direction_debit' => 'Débit',
     
    3534
    3635// L
    37         'label_classe' => 'Classe',
    38         'label_code' => 'Code',
    39         'label_compte_active' => 'Compte activé',
    40         'label_date_report' => 'Date de report (AAAA-MM-JJ)',
    41         'label_destination' => 'Dest. comptable',
    42         'label_direction_plan' => 'Type d\'opérations',
    43         'label_intitule' => 'Intitulé',
    44         'label_reference' => 'Réf. comptable',
    45         'label_solde_reporte' => 'Solde reporté (en euros)',
     36        'label_classe' => 'Classe', //:asso:classe
     37        'label_code' => 'Code', //:asso:code
     38        'label_compte_active' => 'Compte activé', //:asso:compte_active
     39        'label_date_report' => 'Date de report (AAAA-MM-JJ)', //:asso:date_report_aaaa_mm_jj
     40        'label_destination' => 'Dest. comptable', //:asso:config_libelle_num_dc
     41        'label_direction_plan' => 'Type d\'opérations', //:asso:direction_plan
     42        'label_intitule' => 'Intitulé', //:asso:intitule
     43        'label_reference' => 'Réf. comptable', //:asso:config_libelle_num_pc
     44        'label_solde_reporte' => 'Solde reporté (en euros)', //:asso:solde_reporte_en_euros
    4645
    4746);
  • _plugins_/Associaspip/trunk/lang/pcg2fr_fr.php

    r73226 r73400  
    1616        '[0-9]', //1: sections (mais pas de : 24 30 55 56 57 73 81 82 83 84 85 !)
    1717        '[0-9]', //2: groupes (mais pas de : 100 111 112 113 114 116 117 118 121 122 123 124 125 126 127 128 130 131 132 133 134 135 136 137 140 149 150 152 154 159 160 170 172 173 175 176 177 179 180 182 183 184 189 190 191 192 196 200 202 204 209 210 216 217 219 220 222 224 225 226 227 230 233 234 235 236 239 240 250 251 252 253 254 255 256 257 258 259 260 263 264 265 270 278 280 282 283 284 285 286 287 288 289 294 295 298 299 300 301 302 303 304 305 306 307 308 309 310 313 314 315 316 318 319 320 324 325 327 328 329 330 332 333 334 336 337 338 339 340 342 343 344 346 347 348 349 350 352 353 354 356 357 359 360 361 362 363 364 365 366 367 368 369 370 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 396 398 399 400 402 406 407 412 414 415 417 420 430 431 432 433 434 435 436 439 440 450 452 453 454 459 460 461 462 463 464 465 466 469 470 473 474 479 480 482 483 484 485 490 492 493 494 497 498 499 500 510 520 521 522 523 524 525 526 527 528 529 530 535 536 537 538 539 540 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 591 592 593 594 595 596 597 598 599 600 610 620 630 636 638 639 640 642 643 649 650 652  656 659 660 662 663 664 668 669 670 673 674 676 677 679 680 682 683 684 685 688 690 692 693 694 700 710 711 712 714 715 716 717 718 719 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 743 744 745 746 747 748 749 750 759 760 769 770 773 774 776 779 780 782 783 784 785 788 790 791 792 793 794 795 798 799 800 803 804 805 806 807 808 863 865 866 867 867 868 869 872 873 874 876 877 878 879 892 893 894 895 896 897 898 899 81x 82x 83x 84x 85x)
     18        'C' => '(7[0-9][0-8])|(6[0-9]9)|1018|(1[12]0)|(16[1236])|187|802',
     19        'D' => '(6[0-9][0-8])|(7[0-9]9)|(1[12]9)|186|801',
    1820); // NB : Les associations peuvent limiter l’utilisation des comptes comptables aux trois premières racines de chaque classe. Ex : le compte 613 correspondant aux locations peut s’avérer suffisant pour y inclure toutes les locations. Il n’est pas forcément obligatoire pour les toutes petites associations de créer des sous-comptes.
    1921
     
    3032// http://www.expertisecomptable-foucher.com/sup/download2.php?file_id=4124
    3133// http://lump.pagesperso-orange.fr/compta.htm
     34// http://www.mesexercices.com/recherche_information/comptabilite-les-comptes-de-classe-6-charges-sont-normalement_6_38694.htm
     35//  http://dz.viadeo.com/fr/questions/repondre/?questionId=0021aox4cgt6v70a
    3236//
    3337$GLOBALS[$GLOBALS['idx_lang']] = $pc_liste = array(
  • _plugins_/Associaspip/trunk/lang/pcg2ohada_fr.php

    r73226 r73400  
    2323// http://fr.wikipedia.org/wiki/Plan_comptable_%28OHADA%29
    2424// http://www.droit-afrique.com/images/textes/Ohada/Ohada%20-%20Acte%20uniforme%202000%20(Plan%20des%20comptes).pdf
     25// http://www.ohada.org/documentation.html
    2526//
    2627$GLOBALS[$GLOBALS['idx_lang']] = $pc_liste = array(
Note: See TracChangeset for help on using the changeset viewer.