From c75c0d6ea83a4ab7c93aab7a83b4341f56d73814 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 13 May 2008 23:21:28 +0000 Subject: [PATCH] Fix: Error for transfert between a cash account --- htdocs/compta/bank/account.class.php | 6 ++--- htdocs/compta/bank/virement.php | 33 ++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/htdocs/compta/bank/account.class.php b/htdocs/compta/bank/account.class.php index 5b47c933ae6..b2a7bd7d569 100644 --- a/htdocs/compta/bank/account.class.php +++ b/htdocs/compta/bank/account.class.php @@ -163,7 +163,7 @@ class Account extends CommonObject /** \brief Ajoute une entree dans la table ".MAIN_DB_PREFIX."bank \param $date Date operation - \param $oper 1,2,3,4... + \param $oper 1,2,3,4... or TYP,VIR,PRE,LIQ,VAD,CB,CHQ... \param $label Descripton \param $amount Montant \param $num_chq Numero cheque ou virement @@ -175,7 +175,7 @@ class Account extends CommonObject */ function addline($date, $oper, $label, $amount, $num_chq='', $categorie='', $user, $emetteur='',$banque='') { - // Nettoyage parametres + // Clean parameters $emetteur=trim($emetteur); $banque=trim($banque); switch ($oper) @@ -203,7 +203,7 @@ class Account extends CommonObject break; } - // Verification parametres + // Check parameters if (! $oper) { $this->error="Account::addline oper not defined"; diff --git a/htdocs/compta/bank/virement.php b/htdocs/compta/bank/virement.php index 7574569de55..71dc23996f2 100644 --- a/htdocs/compta/bank/virement.php +++ b/htdocs/compta/bank/virement.php @@ -79,13 +79,32 @@ if ($_POST["action"] == 'add') { $db->begin(); - $bank_line_id_from = $accountfrom->addline($dateo, 'VIR', $label, -1*price2num($amount), '', '', $user); - $bank_line_id_to = $accountto->addline($dateo, 'VIR', $label, price2num($amount), '', '', $user); - - $result1=$accountfrom->add_url_line($bank_line_id_from, $bank_line_id_to, DOL_URL_ROOT.'/compta/bank/ligne.php?rowid=', '(banktransfert)', 'banktransfert'); - $result2=$accountto->add_url_line($bank_line_id_to, $bank_line_id_from, DOL_URL_ROOT.'/compta/bank/ligne.php?rowid=', '(banktransfert)', 'banktransfert'); - - if ($result1 > 0 && $result2 > 0) + $error=0; + $bank_line_id_from=0; + $bank_line_id_to=0; + $result=0; + + // By default, electronic transfert from bank to bank + $typefrom='PRE'; + $typeto='VIR'; + if ($accountto->courant == 2 || $accountfrom->courant == 2) + { + // This is transfert of change + $typefrom='LIQ'; + $typeto='LIQ'; + } + + if (! $error) $bank_line_id_from = $accountfrom->addline($dateo, $typefrom, $label, -1*price2num($amount), '', '', $user); + if (! ($bank_line_id_from > 0)) $error++; + if (! $error) $bank_line_id_to = $accountto->addline($dateo, $typeto, $label, price2num($amount), '', '', $user); + if (! ($bank_line_id_to > 0)) $error++; + + if (! $error) $result=$accountfrom->add_url_line($bank_line_id_from, $bank_line_id_to, DOL_URL_ROOT.'/compta/bank/ligne.php?rowid=', '(banktransfert)', 'banktransfert'); + if (! ($result > 0)) $error++; + if (! $error) $result=$accountto->add_url_line($bank_line_id_to, $bank_line_id_from, DOL_URL_ROOT.'/compta/bank/ligne.php?rowid=', '(banktransfert)', 'banktransfert'); + if (! ($result > 0)) $error++; + + if (! $error) { $mesg.="
"; $mesg.=$langs->trans("TransferFromToDone","id."\">".$accountfrom->label."","id."\">".$accountto->label."",$amount,$langs->transnoentities("Currency".$conf->monnaie));