From 4bbbff8d69cdab251c1e1770d0ee59c76c1aa76d Mon Sep 17 00:00:00 2001 From: frederic34 <frederic.france@free.fr> Date: Tue, 17 Feb 2015 17:37:32 +0100 Subject: [PATCH] Add BIC/SWIFT Validation --- htdocs/compta/bank/bankid_fr.php | 10 +++++++++- htdocs/core/lib/bank.lib.php | 23 ++++++++++++++++++----- htdocs/langs/en_US/banks.lang | 6 ++++-- htdocs/societe/rib.php | 10 +++++++++- 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/htdocs/compta/bank/bankid_fr.php b/htdocs/compta/bank/bankid_fr.php index 1b3d5b89d0d..f20d70ef14f 100644 --- a/htdocs/compta/bank/bankid_fr.php +++ b/htdocs/compta/bank/bankid_fr.php @@ -256,7 +256,15 @@ if (($_GET["id"] || $_GET["ref"]) && $action != 'edit') print '</td></tr>'; print '<tr><td valign="top">'.$langs->trans($bickey).'</td>'; - print '<td colspan="3">'.$account->bic.'</td></tr>'; + print '<td colspan="3">'.$account->bic.' '; + if (! empty($account->bic)) { + if (! checkSwiftForAccount($account)) { + print img_picto($langs->trans("SwiftNotValid"),'warning'); + } else { + print img_picto($langs->trans("SwiftValid"),'info'); + } + } + print '</td></tr>'; print '<tr><td valign="top">'.$langs->trans("BankAccountDomiciliation").'</td><td colspan="3">'; print nl2br($account->domiciliation); diff --git a/htdocs/core/lib/bank.lib.php b/htdocs/core/lib/bank.lib.php index 36626ffcc94..db6b9d5b8aa 100644 --- a/htdocs/core/lib/bank.lib.php +++ b/htdocs/core/lib/bank.lib.php @@ -121,7 +121,24 @@ function bank_admin_prepare_head($object) complete_head_from_modules($conf, $langs, $object, $head, $h, 'bank_admin', 'remove'); return $head; - } +} + +/** + * Check SWIFT informations for a bank account + * + * @param Account $account A bank account + * @return int True if informations are valid, false otherwise + */ +function checkSwiftForAccount($account) +{ + $swift = $account->bic; + if (eregi("^([a-zA-Z]){4}([a-zA-Z]){2}([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$", $swift)) { + return true; + } else { + return false; + } + +} /** * Check IBAN number informations for a bank account @@ -134,13 +151,9 @@ function checkIbanForAccount($account) require_once DOL_DOCUMENT_ROOT.'/includes/php-iban/oophp-iban.php'; $iban = new Iban($account->iban); $check = $iban->Verify(); - //print '<pre>'.print_r($iban, true).'</pre>'; if ($check) { - //print '<pre>OK</pre>'; return true; } else { - //$suggest = $iban->MistranscriptionSuggestions($account->iban); - //print '<pre>'.print_r($suggest, true).'</pre>'; return false; } diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index 7358f25e6f4..dfa0934ce70 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -33,9 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number -IbanValid=Valid IBAN -IbanNotValid=Not Valid IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php index ad3eea735fb..2a21f6cdc87 100644 --- a/htdocs/societe/rib.php +++ b/htdocs/societe/rib.php @@ -304,7 +304,15 @@ if ($socid && $action != 'edit' && $action != "create") print '</td></tr>'; print '<tr><td valign="top">'.$langs->trans("BIC").'</td>'; - print '<td colspan="4">'.$account->bic.'</td></tr>'; + print '<td colspan="4">'.$account->bic.' '; + if (! empty($account->bic)) { + if (! checkSwiftForAccount($account)) { + print img_picto($langs->trans("SwiftNotValid"),'warning'); + } else { + print img_picto($langs->trans("SwiftValid"),'info'); + } + } + print '</td></tr>'; print '<tr><td valign="top">'.$langs->trans("BankAccountDomiciliation").'</td><td colspan="4">'; print $account->domiciliation; -- GitLab