Ajout du lien dans bank_url entre les 2 ecritures d'un virement

This commit is contained in:
Laurent Destailleur 2007-10-29 23:11:42 +00:00
parent 3f9e9a212d
commit 5d9b8cef9d
8 changed files with 111 additions and 30 deletions

View File

@ -101,7 +101,7 @@ class Account
* \param type Type de lien (payment, company, member, ...)
* \return int <0 si ko, id line si ok
*/
function add_url_line($line_id, $url_id, $url, $label, $type='')
function add_url_line($line_id, $url_id, $url, $label, $type)
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_url (fk_bank, url_id, url, label, type)";
$sql .= " VALUES ('".$line_id."', '".$url_id."', '".$url."', '".addslashes($label)."', '".$type."')";

View File

@ -376,6 +376,12 @@ if ($result)
print $links[$key]['label'];
print '</a>';
}
else if ($links[$key]['type']=='banktransfert') {
print '<a href="'.DOL_URL_ROOT.'/compta/bank/ligne.php?rowid='.$links[$key]['url_id'].'">';
print img_object($langs->trans('ShowTransaction'),'payment').' ';
print $langs->trans("TransactionOnTheOtherAccount");
print '</a>';
}
else {
print '<a href="'.$links[$key]['url'].$links[$key]['url_id'].'">';
print $links[$key]['label'];

View File

@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -17,7 +17,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
@ -44,7 +43,7 @@ if (!$user->rights->banque->modifier)
if ($_POST["action"] == 'add')
{
$mesg='';
$dateo = $_POST["reyear"]."-".$_POST["remonth"]."-".$_POST["reday"];
$dateo = dolibarr_mktime(12,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]);
$label = $_POST["label"];
$amount= $_POST["amount"];
@ -60,37 +59,31 @@ if ($_POST["action"] == 'add')
}
if (! $error)
{
require_once(DOL_DOCUMENT_ROOT.'/compta/bank/account.class.php');
$db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank (datec, datev, dateo, label, amount, fk_user_author,fk_account, fk_type)";
$sql .= " VALUES (now(), '$dateo', '$dateo', '".addslashes($label)."', '".price2num(-1*price2num($amount))."', $user->id, ".$_POST["account_from"].", 'VIR')";
$accountfrom=new Account($db);
$accountfrom->fetch($_POST["account_from"]);
dolibarr_syslog("Virement insert bank sql=".$sql);
$result = $db->query($sql);
if (!$result)
$bank_line_id_from = $accountfrom->addline($dateo, 'VIR', $label, -1*price2num($amount), '', '', $user);
$accountto=new Account($db);
$accountto->fetch($_POST["account_to"]);
$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)
{
$db->rollback();
dolibarr_print_error($db);
}
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank (datec, datev, dateo, label, amount, fk_user_author,fk_account, fk_type)";
$sql .= " VALUES (now(), '$dateo', '$dateo', '".addslashes($label)."', '".price2num($amount)."',$user->id, ".$_POST["account_to"].", 'VIR')";
dolibarr_syslog("Virement insert bank sql=".$sql);
$result = $db->query($sql);
if ($result)
{
$accountfrom=new Account($db);
$accountfrom->fetch($_POST["account_from"]);
$accountto=new Account($db);
$accountto->fetch($_POST["account_to"]);
$mesg.="<div class=\"ok\">Le virement depuis «&nbsp;<a href=\"account.php?account=".$accountfrom->id."\">".$accountfrom->label."</a>&nbsp;» vers «&nbsp;<a href=\"account.php?account=".$accountto->id."\">".$accountto->label."</a>&nbsp;» de ".$amount." ".$langs->trans("Currency".$conf->monnaie)." a été créé.</div>";
$db->commit();
}
else
{
$mesg.="<div class=\"error\">".$db->lasterror()."</div>";
$mesg.="<div class=\"error\">".$accountfrom->error.' '.$accountto->error."</div>";
$db->rollback();
}
}

View File

@ -174,6 +174,8 @@ if (isset($_POST['action']) && $_POST['action'] == 'upgrade')
migrate_paiements_orphelins_1($db,$langs,$conf);
migrate_paiements_orphelins_2($db,$langs,$conf);
migrate_links_transfert($db,$langs,$conf);
// On commit dans tous les cas.
// La procédure etant conçue pour pouvoir passer plusieurs fois quelquesoit la situation.
@ -595,6 +597,83 @@ function migrate_contracts_det($db,$langs,$conf)
}
function migrate_links_transfert($db,$langs,$conf)
{
print '<tr><td colspan="4">';
$nberr=0;
print '<br>';
print '<b>'.$langs->trans('MigrationBankTransfertsUpdate')."</b><br>\n";
$sql = "SELECT ba.rowid as barowid, bb.rowid as bbrowid";
$sql.= " FROM ".MAIN_DB_PREFIX."bank as bb, ".MAIN_DB_PREFIX."bank as ba";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = ba.rowid";
$sql.= " WHERE ba.amount = -bb.amount AND ba.fk_account <> bb.fk_account";
$sql.= " AND ba.datev = bb.datev AND ba.datec = bb.datec";
$sql.= " AND bu.fk_bank IS NULL";
$resql = $db->query($sql);
dolibarr_install_syslog("migrate_links_transfert sql=".$sql);
if ($resql)
{
$i = 0;
$row = array();
$num = $db->num_rows($resql);
if ($num)
{
print $langs->trans('MigrationBankTransfertsToUpdate', $num)."<br>\n";
$db->begin();
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_url (";
$sql.= "fk_bank, url_id, url, label, type";
$sql.= ")";
$sql.= " VALUES (";
$sql.= $obj->barowid.",".$obj->bbrowid.", '/compta/bank/ligne.php?rowid=', '(banktransfert)', 'banktransfert'";
$sql.= ")";
print $sql.'<br>';
dolibarr_install_syslog("migrate_links_transfert sql=".$sql);
if (! $db->query($sql))
{
dolibarr_print_error($db);
$nberr++;
}
$i++;
}
if (! $nberr)
{
// $db->rollback();
$db->commit();
print $langs->trans('MigrationSuccessfullUpdate')."<br>";
}
else
{
$db->rollback();
print $langs->trans('MigrationUpdateFailed').'<br>';
}
}
else {
print $langs->trans('MigrationBankTransfertsNothingToUpdate')."<br>\n";
}
}
else
{
dolibarr_print_error($db);
}
print '</td></tr>';
}
/*
* Mise a jour des date de contrats non renseignées
*/

View File

@ -110,3 +110,4 @@ ThisWillAlsoDeleteBankRecord=This will also delete generated bank transactions
BankMovements=Movements
CashBudget=Cash budget
ExportDataset_banque_1=Bank transactions and account statement
TransactionOnTheOtherAccount=Transaction on the other account

View File

@ -109,4 +109,5 @@ ConfirmDeleteTransaction=Etes-vous sur de vouloir supprimer cette transaction ?
ThisWillAlsoDeleteBankRecord=Ceci supprimera aussi les écritures banquaires générées
BankMovements=Mouvements
CashBudget=Budget de trésorerie
ExportDataset_banque_1=Transaction bancaire et relevé
ExportDataset_banque_1=Transaction bancaire et relevé
TransactionOnTheOtherAccount=Transaction sur l'autre compte

View File

@ -21,10 +21,11 @@ update llx_bank_account set currency_code='EUR' where (currency_code IS NULL or
-- Sequence de requete pour nettoyage et correction champ type table llx_bank_url
update llx_bank_url set type='company' where (type is null or type = '') and url like '%compta/fiche.php?socid=%';
alter table llx_bank_url modify `type` enum("","?","company","payment","payment_supplier","member","subscription","donation","sc","payment_sc");
alter table llx_bank_url modify `type` varchar(20);
update llx_bank_url set type='?' where (type is null or type = '') and url like '%compta/facture.php?facid=%';
update llx_bank_url set type='payment_supplier' where (type='' or type is null) and url like '%fourn/paiement/fiche.php?id=%';
alter table llx_bank_url modify `type` enum("?","company","payment","payment_supplier","member","subscription","donation","sc","payment_sc") NOT NULL;
update llx_bank_url set type='?' where (type is null or type = '');
alter table llx_bank_url modify `type` varchar(20) NOT NULL;
insert into llx_rights_def (id, libelle, module, type, bydefault, subperms, perms) values (114,'Rapprocher transactions','banque','w',0,null,'consolidate');

View File

@ -28,5 +28,5 @@ create table llx_bank_url
url_id integer,
url varchar(255),
label varchar(255),
type enum("?","company","payment","payment_supplier","member","subscription","donation","sc","payment_sc") NOT NULL
type varchar(20) NOT NULL
)type=innodb;