New: Support BSB code for bank account in australia

This commit is contained in:
Laurent Destailleur 2011-03-31 16:26:57 +00:00
parent 4536ff2cdc
commit b94ea03aa3
7 changed files with 52 additions and 101 deletions

View File

@ -5,6 +5,7 @@ $Id$
***** ChangeLog for 3.1 compared to 3.0 *****
For users:
- New: Support BSB code for bank account in australia.
- New: Can set date of payment for autocreate invoice/payment when
creating a foundation subscription.
- New: task #10969 : Add checkbox to close automatically invoice to "payed"

3
htdocs/langs/en_AU/bills.lang Executable file
View File

@ -0,0 +1,3 @@
# Dolibarr language file - en_AU - bills
CHARSET=UTF-8
BankCode=Bank code or BSB

View File

@ -0,0 +1,3 @@
# Dolibarr language file - en_AU - withdrawals
CHARSET=UTF-8
ThirdPartyBankCode=Third party bank code or BSB

View File

@ -81,13 +81,9 @@ function bank_prepare_head($obj)
/**
* \brief Check account number informations for a bank account
* \param code_banque code banque
* \param code_guichet code guichet
* \param num_compte numero de compte
* \param cle cle
* \param iban Ne sert pas pour le calcul de cle mais sert pour determiner le pays
* \return int true si les infos sont bonnes, false si erreur
* Check account number informations for a bank account
* @param account A bank account
* @return int True if informations are valid, false otherwise
*/
function checkBanForAccount($account)
{
@ -132,22 +128,25 @@ function checkBanForAccount($account)
if ($country_code == 'ES') // Spanish rules
{
$CCC = strtolower(trim($account->number));
$rib = strtolower(trim($account->code_banque).trim($account->code_guichet));
$cle_rib=strtolower(CheckES($rib,$CCC));
if ($cle_rib == strtolower($account->cle))
{
return true;
}
return false;
}
if ($country_code == 'AU') // Australian
{
if (strlen($account->code_banque) > 7) return false; // Sould be 6 but can be 123-456
else if (strlen($account->code_banque) < 6) return false; // Sould be 6
else return true;
}
// No particular rule
// If account is CompanyBankAccount class, we use number
// If account is Account class, we use num_compte
if (empty($account->num_compte) && empty($account->number))
if (empty($account->number))
{
return false;
}
@ -160,7 +159,7 @@ function checkBanForAccount($account)
* Returns the key for Spanish Banks Accounts
* @return string Key
*/
Function CheckES($IentOfi,$InumCta)
function CheckES($IentOfi,$InumCta)
{
$APesos = Array(1,2,4,8,5,10,9,7,3,6); // Array de "pesos"
$DC1=0;

View File

@ -341,8 +341,16 @@ function pdf_bank(&$pdf,$outputlangs,$curx,$cury,$account,$onlynumber=0)
if (empty($onlynumber)) $pdf->line($curx+1, $cury+1, $curx+1, $cury+8 );
$fieldstoshow=array('bank','desk','number','key');
if ($conf->global->BANK_SHOW_ORDER_OPTION==1) $fieldstoshow=array('bank','desk','key','number');
if ($usedetailedbban == 1)
{
$fieldstoshow=array('bank','desk','number','key');
if ($conf->global->BANK_SHOW_ORDER_OPTION==1) $fieldstoshow=array('bank','desk','key','number');
}
else if ($usedetailedbban == 2)
{
$fieldstoshow=array('bank','number');
}
else dol_print_error('','Value returned by function useDetailedBBAN not managed');
foreach ($fieldstoshow as $val)
{
@ -943,7 +951,7 @@ function pdf_getTotalQty($object,$type='',$outputlangs)
{
$total=0;
$nblignes=sizeof($object->lines);
// Loop on each lines
for ($i = 0 ; $i < $nblignes ; $i++)
{
@ -967,7 +975,7 @@ function pdf_getTotalQty($object,$type='',$outputlangs)
}
}
}
return $total;
}

View File

@ -20,14 +20,17 @@
/*
* \files htdocs/societe/class/companybankaccount.class.php
* \ingroup societe
* \brief File of class to manage bank accounts description
* \brief File of class to manage bank accounts description of third parties
* \version $Id$
*/
require_once(DOL_DOCUMENT_ROOT ."/compta/bank/class/account.class.php");
/**
* \brief Class to manage bank accounts description
* \brief Class to manage bank accounts description of third parties
*/
class CompanyBankAccount
class CompanyBankAccount extends Account
{
var $rowid;
var $socid;
@ -188,84 +191,6 @@ class CompanyBankAccount
return $this->error;
}
/**
*
*
*/
function verif()
{
require_once DOL_DOCUMENT_ROOT . '/lib/bank.lib.php';
// Call function to check BAN
if (! checkBanForAccount($this))
{
$this->error_number = 12;
$this->error_message = 'RIBControlError';
}
if ($this->error_number == 0)
{
return 1;
}
else
{
return 0;
}
}
/**
* Return account country code.
* Use this->iban and this->socid.
* @return String country code
*/
function getCountryCode()
{
if (! empty($this->iban))
{
// If IBAN defined, we can know country of account from it
if (preg_match("/^[a-z]{2}/i",$this->iban,$reg)) return $reg[1];
}
// We return country code
$company=new Societe($this->db);
$result=$company->fetch($this->socid);
if (! empty($company->pays_code)) return $company->pays_code;
return '';
}
/**
* Return if a bank account is defined with detailed information (bank code, desk code, number and key)
* @return boolean true or false
*/
function useDetailedBBAN()
{
if ($this->getCountryCode() == 'FR') return true;
if ($this->getCountryCode() == 'ES') return true;
return false;
}
/**
* Initialize properties with test values
*/
function initAsSpecimen()
{
$this->bank = 'MyBank';
$this->courant = 1;
$this->clos = 0;
$this->code_banque = '123';
$this->code_guichet = '456';
$this->number = 'ABC12345';
$this->cle_rib = 50;
$this->bic = 'AA12';
$this->iban = 'FR999999999';
$this->iban_prefix = 'FR'; // deprecated
$this->domiciliation = 'The bank addresse';
$this->proprio = 'Owner';
$this->adresse_proprio = 'Owner address';
}
}
?>

View File

@ -119,7 +119,7 @@ if ($_GET["socid"] && $_GET["action"] != 'edit')
print '<tr><td valign="top">'.$langs->trans("Bank").'</td>';
print '<td colspan="4">'.$account->bank.'</td></tr>';
if ($account->useDetailedBBAN())
if ($account->useDetailedBBAN() == 1)
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td colspan="3">'.$account->code_banque.'</td>';
@ -129,12 +129,18 @@ if ($_GET["socid"] && $_GET["action"] != 'edit')
print '<td colspan="3">'.$account->code_guichet.'</td>';
print '</tr>';
}
if ($account->useDetailedBBAN() == 2)
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td colspan="3">'.$account->code_banque.'</td>';
print '</tr>';
}
print '<tr><td>'.$langs->trans("BankAccountNumber").'</td>';
print '<td colspan="3">'.$account->number.'</td>';
print '</tr>';
if ($account->useDetailedBBAN())
if ($account->useDetailedBBAN() == 1)
{
print '<tr><td>'.$langs->trans("BankAccountNumberKey").'</td>';
print '<td colspan="3">'.$account->cle_rib.'</td>';
@ -204,7 +210,7 @@ if ($_GET["socid"] && $_GET["action"] == 'edit' && $user->rights->societe->creer
print '<td colspan="4"><input size="30" type="text" name="bank" value="'.$account->bank.'"></td></tr>';
// BBAN
if ($account->useDetailedBBAN())
if ($account->useDetailedBBAN() == 1)
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td><input size="8" type="text" class="flat" name="code_banque" value="'.$account->code_banque.'"></td>';
@ -214,12 +220,18 @@ if ($_GET["socid"] && $_GET["action"] == 'edit' && $user->rights->societe->creer
print '<td><input size="8" type="text" class="flat" name="code_guichet" value="'.$account->code_guichet.'"></td>';
print '</tr>';
}
if ($account->useDetailedBBAN() == 2)
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td><input size="8" type="text" class="flat" name="code_banque" value="'.$account->code_banque.'"></td>';
print '</tr>';
}
print '<td>'.$langs->trans("BankAccountNumber").'</td>';
print '<td><input size="15" type="text" class="flat" name="number" value="'.$account->number.'"></td>';
print '</tr>';
if ($account->useDetailedBBAN())
if ($account->useDetailedBBAN() == 1)
{
print '<td>'.$langs->trans("BankAccountNumberKey").'</td>';
print '<td><input size="3" type="text" class="flat" name="cle_rib" value="'.$account->cle_rib.'"></td>';