Overview
Comment:Modernisation : comptes bancaires
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: ddb9d065194b62cd31c50fb767e9802631edea30
User & Date: bohwaz on 2017-08-17 01:34:58
Other Links: branch diff | manifest | tags
Context
2017-08-17
04:45
Correction bugs CSS et date check-in: 021d913259 user: bohwaz tags: dev
01:34
Modernisation : comptes bancaires check-in: ddb9d06519 user: bohwaz tags: dev
00:49
Modernisation catégories compta check-in: ba738d8d9a user: bohwaz tags: dev
Changes

Modified src/include/lib/Garradin/Compta/Rapprochement.php from [dde3f8b132] to [0ca57367ca].

    41     41               'debut'     =>  $debut,
    42     42               'fin'       =>  $fin,
    43     43               'exercice'  =>  $exercice
    44     44           ]);
    45     45   
    46     46           foreach ($result as &$row)
    47     47           {
    48         -            $solde += $row['solde'];
    49         -            $row['solde'] = $solde;
           48  +            $solde += $row->solde;
           49  +            $row->solde = $solde;
    50     50           }
    51     51   
    52     52           $solde_final = $solde;
    53     53   
    54     54           return $result;
    55     55       }
    56     56   
................................................................................
    72     72           // Synchro des trucs cochés
    73     73           $st = $db->prepare('INSERT OR REPLACE INTO compta_rapprochement (id_operation, id_auteur) 
    74     74               VALUES (:operation, :auteur);');
    75     75           $st->bindValue(':auteur', (int)$auteur, \SQLITE3_INTEGER);
    76     76   
    77     77           foreach ($journal as $row)
    78     78           {
    79         -            if (!array_key_exists($row['id'], $cases))
           79  +            if (!array_key_exists($row->id, $cases))
    80     80                   continue;
    81     81   
    82         -            $st->bindValue(':operation', (int)$row['id'], \SQLITE3_INTEGER);
           82  +            $st->bindValue(':operation', (int)$row->id, \SQLITE3_INTEGER);
    83     83               $st->execute();
    84     84           }
    85     85   
    86     86           // Synchro des trucs NON cochés
    87     87           $st = $db->prepare('DELETE FROM compta_rapprochement WHERE id_operation = :id;');
    88     88   
    89     89           foreach ($journal as $row)
    90     90           {
    91         -            if (array_key_exists($row['id'], $cases))
           91  +            if (array_key_exists($row->id, $cases))
    92     92                   continue;
    93     93   
    94         -            $st->bindValue(':id', (int)$row['id'], \SQLITE3_INTEGER);
           94  +            $st->bindValue(':id', (int)$row->id, \SQLITE3_INTEGER);
    95     95               $st->execute();
    96     96           }
    97     97   
    98     98           $db->commit();
    99     99           return true;
   100    100       }
   101    101   }

Modified src/include/lib/Garradin/Utils.php from [07575ef06e] to [38a24e8737].

   507    507       }
   508    508   
   509    509       static public function suggestPassword()
   510    510       {
   511    511           return Security::getRandomPassphrase(ROOT . '/include/data/dictionary.fr');
   512    512       }
   513    513   
   514         -    static public function checkIBAN($iban)
          514  +    static public function checkIBAN($value)
   515    515       {
   516         -        $iban = substr($iban, 4) . substr($iban, 0, 4);
   517         -        $iban = str_replace(range('A', 'Z'), range(10, 35), $iban);
   518         -        return (bcmod($iban, 97) == 1);
          516  +        // Enlever les caractères indésirables (espaces, tirets),
          517  +        $value = preg_replace('/[^A-Z0-9]/', '', strtoupper($value));
          518  +        
          519  +        // Supprimer les 4 premiers caractères et les replacer à la fin du compte
          520  +        $value = substr($value, 4) . substr($value, 0, 4);
          521  +
          522  +        // Remplacer les lettres par des chiffres au moyen d'une table de conversion (A=10, B=11, C=12 etc.)
          523  +        $value = str_replace(range('A', 'Z'), range(10, 35), $value);
          524  +
          525  +        // Diviser le nombre ainsi obtenu par 97
          526  +        // Si le reste n'est pas égal à 1 l'IBAN est incorrect : Modulo de 97 égal à 1.
          527  +        return (bcmod($value, 97) == 1);
   519    528       }
   520    529       
   521    530       static public function checkBIC($bic)
   522    531       {
   523    532           return preg_match('!^[A-Z]{4}[A-Z]{2}[1-9A-Z]{2}(?:[A-Z\d]{3})?$!', $bic);
   524    533       }
   525    534   

Modified src/templates/admin/compta/banques/modifier.tpl from [9e2a94ee6b] to [46b56f033b].

     1      1   {include file="admin/_head.tpl" title="Modifier un compte" current="compta/banques"}
     2      2   
     3         -{if $error}
     4         -    <p class="error">
     5         -        {$error}
     6         -    </p>
     7         -{/if}
            3  +{form_errors}
     8      4   
     9      5   <form method="post" action="{$self_url}">
    10      6   
    11      7       <fieldset>
    12      8           <legend>Modifier un compte bancaire</legend>
    13      9           <dl>
    14     10               <dt><label for="f_libelle">Libellé</label> <b title="(Champ obligatoire)">obligatoire</b></dt>

Modified src/templates/admin/compta/banques/rapprocher.tpl from [c0b0802567] to [a6ece77d56].

    27     27               <input type="date" name="fin" id="f_fin" value="{form_field name='fin' default=$fin}" />
    28     28               <input type="hidden" name="id" value="{$compte.id}" />
    29     29               <input type="submit" value="Afficher" />
    30     30           </p>
    31     31       </fieldset>
    32     32   </form>
    33     33   
    34         -{if $error}
    35         -    <p class="error">{$error}</p>
    36         -{/if}
           34  +{form_errors}
    37     35   
    38     36   <form method="post" action="{$self_url}">
    39     37       <table class="list">
    40     38           <colgroup>
    41     39               <col width="3%" />
    42     40               <col width="3%" />
    43     41               <col width="3%" />

Modified src/templates/admin/compta/banques/supprimer.tpl from [aca4962b79] to [f2f4e5378b].

     1      1   {include file="admin/_head.tpl" title="Supprimer un compte" current="compta/banques"}
     2      2   
     3         -{if $error}
     4         -    <p class="error">
     5         -        {$error}
     6         -    </p>
     7         -{/if}
            3  +{form_errors}
     8      4   
     9      5   <form method="post" action="{$self_url}">
    10      6   
    11      7       <fieldset>
    12      8           <legend>Supprimer le compte ?</legend>
    13      9           <h3 class="warning">
    14     10               Êtes-vous sûr de vouloir supprimer le compte «&nbsp;{$compte.id} - {$compte.libelle}&nbsp;» ?

Modified src/www/admin/compta/banques/index.php from [ebe60d3b59] to [eb4af51836].

     2      2   namespace Garradin;
     3      3   
     4      4   require_once __DIR__ . '/../_inc.php';
     5      5   
     6      6   $banques = new Compta\Comptes_Bancaires;
     7      7   $journal = new Compta\Journal;
     8      8   
     9         -$error = false;
    10         -
    11         -if (Utils::post('add'))
            9  +if (f('add') && $form->check('compta_ajout_banque'))
    12     10   {
    13     11   	$session->requireAccess('compta', Membres::DROIT_ADMIN);
    14     12   
    15         -    if (!Utils::CSRF_check('compta_ajout_banque'))
           13  +    try
    16     14       {
    17         -        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
    18         -    }
    19         -    else
    20         -    {
    21         -        try
           15  +        $id = $banques->add([
           16  +            'libelle' => f('libelle'),
           17  +            'banque'  => f('banque'),
           18  +            'iban'    => f('iban'),
           19  +            'bic'     => f('bic'),
           20  +        ]);
           21  +
           22  +        if (f('solde') > 0)
    22     23           {
    23         -            $id = $banques->add([
    24         -                'libelle'       =>  Utils::post('libelle'),
    25         -                'banque'        =>  Utils::post('banque'),
    26         -                'iban'          =>  Utils::post('iban'),
    27         -                'bic'           =>  Utils::post('bic'),
    28         -            ]);
           24  +        	$exercices = new Compta\Exercices;
           25  +        	$exercice = $exercices->getCurrent();
           26  +        	$solde = f('solde');
    29     27   
    30         -            if (Utils::post('solde') > 0)
    31         -            {
    32         -            	$exercices = new Compta\Exercices;
    33         -            	$exercice = $exercices->getCurrent();
    34         -            	$solde = Utils::post('solde');
           28  +        	$journal->add([
           29  +                'libelle'       =>  'Solde initial',
           30  +                'montant'       =>  abs($solde),
           31  +                'date'          =>  gmdate('Y-m-d', $exercice->debut),
           32  +                'compte_credit' =>  $solde > 0 ? null : $id,
           33  +                'compte_debit'  =>  $solde < 0 ? null : $id,
           34  +                'numero_piece'  =>  null,
           35  +                'remarques'     =>  'Opération automatique à l\'ajout du compte dans la liste des comptes bancaires',
           36  +                'id_auteur'     =>  $user->id,
           37  +            ]);
           38  +        }
    35     39   
    36         -            	$journal->add([
    37         -                    'libelle'       =>  'Solde initial',
    38         -                    'montant'       =>  abs($solde),
    39         -                    'date'          =>  gmdate('Y-m-d', $exercice->debut),
    40         -                    'compte_credit' =>  $solde > 0 ? null : $id,
    41         -                    'compte_debit'  =>  $solde < 0 ? null : $id,
    42         -                    'numero_piece'  =>  null,
    43         -                    'remarques'     =>  'Opération automatique à l\'ajout du compte dans la liste des comptes bancaires',
    44         -                    'id_auteur'     =>  $user->id,
    45         -                ]);
    46         -            }
    47         -
    48         -            Utils::redirect('/admin/compta/banques/');
    49         -        }
    50         -        catch (UserException $e)
    51         -        {
    52         -            $error = $e->getMessage();
    53         -        }
    54         -	}
           40  +        Utils::redirect('/admin/compta/banques/');
           41  +    }
           42  +    catch (UserException $e)
           43  +    {
           44  +        $form->addError($e->getMessage());
           45  +    }
    55     46   }
    56     47   
    57     48   $liste = $banques->getList();
    58     49   
    59     50   foreach ($liste as &$banque)
    60     51   {
    61     52       $banque->solde = $journal->getSolde($banque->id);
    62     53   }
    63     54   
    64     55   $tpl->assign('liste', $liste);
    65     56   
    66         -function tpl_format_iban($iban)
    67         -{
           57  +$tpl->register_modifier('format_iban', function ($iban) {
    68     58       return implode(' ', str_split($iban, 4));
    69         -}
    70         -
    71         -$tpl->register_modifier('format_iban', 'Garradin\tpl_format_iban');
    72         -$tpl->assign('error', $error);
           59  +});
    73     60   
    74     61   $tpl->display('admin/compta/banques/index.tpl');

Modified src/www/admin/compta/banques/modifier.php from [b80a5da1e9] to [9a9183f85e].

    10     10   $compte = $banque->get(qg('id'));
    11     11   
    12     12   if (!$compte)
    13     13   {
    14     14       throw new UserException('Le compte demandé n\'existe pas.');
    15     15   }
    16     16   
    17         -$error = false;
    18         -
    19         -if (!empty($_POST['save']))
           17  +if (f('save') && $form->check('compta_edit_banque_' . $compte->id))
    20     18   {
    21         -    if (!Utils::CSRF_check('compta_edit_banque_'.$compte['id']))
           19  +    try
    22     20       {
    23         -        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
           21  +        $id = $banque->edit($compte->id, [
           22  +            'libelle' => f('libelle'),
           23  +            'banque'  => f('banque'),
           24  +            'iban'    => f('iban'),
           25  +            'bic'     =>  f('bic'),
           26  +        ]);
           27  +
           28  +        Utils::redirect('/admin/compta/banques/');
    24     29       }
    25         -    else
           30  +    catch (UserException $e)
    26     31       {
    27         -        try
    28         -        {
    29         -            $id = $banque->edit($compte['id'], [
    30         -                'libelle'       =>  Utils::post('libelle'),
    31         -                'banque'        =>  Utils::post('banque'),
    32         -                'iban'          =>  Utils::post('iban'),
    33         -                'bic'           =>  Utils::post('bic'),
    34         -            ]);
    35         -
    36         -            Utils::redirect('/admin/compta/banques/');
    37         -        }
    38         -        catch (UserException $e)
    39         -        {
    40         -            $error = $e->getMessage();
    41         -        }
           32  +        $form->addError($e->getMessage());
    42     33       }
    43     34   }
    44     35   
    45         -$tpl->assign('error', $error);
    46         -
    47     36   $tpl->assign('compte', $compte);
    48     37   
    49     38   $tpl->display('admin/compta/banques/modifier.tpl');

Modified src/www/admin/compta/banques/rapprocher.php from [697914e32f] to [143cff1a1c].

    13     13   $compte = $banques->get(qg('id'));
    14     14   
    15     15   if (!$compte)
    16     16   {
    17     17       throw new UserException("Le compte demandé n'existe pas.");
    18     18   }
    19     19   
    20         -$error = false;
    21         -
    22     20   $solde_initial = $solde_final = 0;
    23     21   
    24     22   $debut = qg('debut');
    25     23   $fin = qg('fin');
    26     24   
    27     25   if ($debut && $fin)
    28     26   {
    29     27       if (!Utils::checkDate($debut) || !Utils::checkDate($fin))
    30     28       {
    31         -        $error = 'La date donnée est invalide.';
           29  +        $form->addError('La date donnée est invalide.');
    32     30           $debut = $fin = false;
    33     31       }
    34         -    else if (strtotime($debut) < $exercice['debut'])
           32  +    else if (strtotime($debut) < $exercice->debut)
    35     33       {
    36         -        $debut = date('Y-m-d', $exercice['debut']);
           34  +        $debut = date('Y-m-d', $exercice->debut);
    37     35       }
    38         -    else if (strtotime($fin) > $exercice['fin'])
           36  +    else if (strtotime($fin) > $exercice->fin)
    39     37       {
    40         -        $fin = date('Y-m-d', $exercice['fin']);
           38  +        $fin = date('Y-m-d', $exercice->fin);
    41     39       }
    42     40   }
    43     41   
    44     42   if (!$debut || !$fin)
    45     43   {
    46         -    $date = $exercice['fin'];
           44  +    $date = $exercice->fin;
    47     45       $debut = date('Y-m-01', $date);
    48     46       $fin = date('Y-m-t', $date);
    49     47   }
    50     48   
    51         -$journal = $rapprochement->getJournal($compte['id'], $debut, $fin, $solde_initial, $solde_final);
           49  +$journal = $rapprochement->getJournal($compte->id, $debut, $fin, $solde_initial, $solde_final);
    52     50   
    53     51   // Enregistrement des cases cochées
    54         -if (Utils::post('save'))
           52  +if (f('save') && $form->check('compta_rapprocher_' . $compte->id))
    55     53   {
    56         -    if (!Utils::CSRF_check('compta_rapprocher_' . $compte['id']))
           54  +    try
    57     55       {
    58         -        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
           56  +        $rapprochement->record($compte->id, $journal, f('rapprocher'), $user->id);
           57  +        Utils::redirect(Utils::getSelfURL());
    59     58       }
    60         -    else
           59  +    catch (UserException $e)
    61     60       {
    62         -        try
    63         -        {
    64         -            $rapprochement->record($compte['id'], $journal, Utils::post('rapprocher'), $user['id']);
    65         -            Utils::redirect(Utils::getSelfURL());
    66         -        }
    67         -        catch (UserException $e)
    68         -        {
    69         -            $error = $e->getMessage();
    70         -        }
    71         -	}
           61  +        $form->addError($e->getMessage());
           62  +    }
    72     63   }
    73     64   
    74     65   if (substr($debut, 0, 7) == substr($fin, 0, 7))
    75     66   {
    76     67       $tpl->assign('prev', Utils::modifyDate($debut, '-1 month', true));
    77     68       $tpl->assign('next', Utils::modifyDate($fin, '+1 month', true));
    78     69   }
................................................................................
    82     73   $tpl->assign('fin', $fin);
    83     74   
    84     75   $tpl->assign('journal', $journal);
    85     76   
    86     77   $tpl->assign('solde_initial', $solde_initial);
    87     78   $tpl->assign('solde_final', $solde_final);
    88     79   
    89         -$tpl->assign('error', $error);
    90         -
    91     80   $tpl->display('admin/compta/banques/rapprocher.tpl');

Modified src/www/admin/compta/banques/supprimer.php from [7a7915257e] to [c38863ebf9].

     1      1   <?php
            2  +
     2      3   namespace Garradin;
     3      4   
     4      5   require_once __DIR__ . '/../_inc.php';
     5      6   
     6      7   $session->requireAccess('compta', Membres::DROIT_ADMIN);
     7      8   
     8      9   $banque = new Compta\Comptes_Bancaires;
     9     10   
    10     11   $compte = $banque->get(qg('id'));
    11     12   
    12     13   if (!$compte)
    13     14   {
    14         -    throw new UserException('Le compte demandé n\'existe pas.');
           15  +	throw new UserException('Le compte demandé n\'existe pas.');
    15     16   }
    16     17   
    17         -$error = false;
    18         -
    19         -if (!empty($_POST['delete']))
           18  +if (f('delete') && $form->check('compta_delete_banque_' . $compte->id))
    20     19   {
    21         -    if (!Utils::CSRF_check('compta_delete_banque_'.$compte['id']))
    22         -    {
    23         -        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
    24         -    }
    25         -    else
    26         -    {
    27         -        try
    28         -        {
    29         -            $banque->delete($compte['id']);
    30         -            Utils::redirect('/admin/compta/banques/');
    31         -        }
    32         -        catch (UserException $e)
    33         -        {
    34         -            $error = $e->getMessage();
    35         -        }
    36         -    }
           20  +	try
           21  +	{
           22  +		$banque->delete($compte->id);
           23  +		Utils::redirect('/admin/compta/banques/');
           24  +	}
           25  +	catch (UserException $e)
           26  +	{
           27  +		$form->addError($e->getMessage());
           28  +	}
    37     29   }
    38     30   
    39         -$tpl->assign('error', $error);
    40         -
    41     31   $tpl->assign('compte', $compte);
    42     32   
    43     33   $tpl->display('admin/compta/banques/supprimer.tpl');