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 '';
print '
| '.$langs->trans($bickey).' | ';
- print ''.$account->bic.' |
';
+ print ''.$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 ' | ';
print '| '.$langs->trans("BankAccountDomiciliation").' | ';
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 ''.print_r($iban, true).' ';
if ($check) {
- //print 'OK ';
return true;
} else {
- //$suggest = $iban->MistranscriptionSuggestions($account->iban);
- //print ''.print_r($suggest, true).' ';
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 ' |
';
print '| '.$langs->trans("BIC").' | ';
- print ''.$account->bic.' |
';
+ print ''.$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 ' | ';
print '| '.$langs->trans("BankAccountDomiciliation").' | ';
print $account->domiciliation;
|