diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php
index 57bd8c9f8e3..c219d69f79b 100644
--- a/htdocs/compta/bank/class/account.class.php
+++ b/htdocs/compta/bank/class/account.class.php
@@ -23,7 +23,7 @@
* \file htdocs/compta/bank/class/account.class.php
* \ingroup banque
* \brief File of class to manage bank accounts
- * \version $Id: account.class.php,v 1.33 2011/07/31 22:23:30 eldy Exp $
+ * \version $Id: account.class.php,v 1.34 2011/08/05 21:05:19 eldy Exp $
*/
require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php");
@@ -146,7 +146,7 @@ class Account extends CommonObject
$sql.= ", '".$type."'";
$sql.= ")";
- dol_syslog("Account::add_url_line sql=".$sql);
+ dol_syslog(get_class($this)."::add_url_line sql=".$sql);
if ($this->db->query($sql))
{
$rowid = $this->db->last_insert_id(MAIN_DB_PREFIX."bank_url");
@@ -155,25 +155,37 @@ class Account extends CommonObject
else
{
$this->error=$this->db->lasterror();
- dol_syslog("Account:add_url_line ".$this->error, LOG_ERR);
+ dol_syslog(get_class($this)."::add_url_line ".$this->error, LOG_ERR);
return -1;
}
}
/**
- * Return array with links
- * @param line_id Id transaction line
+ * TODO Move this into AccountLine
+ * Return array with links from llx_bank_url
+ * @param fk_bank To search using bank transaction id
+ * @param url_id To search using link to
+ * @param type To search using type
* @return array Array of links
*/
- function get_url($line_id)
+ function get_url($fk_bank='', $url_id='', $type='')
{
$lines = array();
- $sql = "SELECT url_id, url, label, type";
+ // Check parameters
+ if (! empty($fk_bank) && (! empty($url_id) || ! empty($type)))
+ {
+ $this->error="ErrorBadParameter";
+ return -1;
+ }
+
+ $sql = "SELECT fk_bank, url_id, url, label, type";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_url";
- $sql.= " WHERE fk_bank = ".$line_id;
+ if ($fk_bank > 0) { $sql.= " WHERE fk_bank = ".$fk_bank; }
+ else { $sql.= " WHERE url_id = ".$url_id." AND type = '".$type."'"; }
$sql.= " ORDER BY type, label";
+ dol_syslog(get_class($this)."::get_url sql=".$sql);
$result = $this->db->query($sql);
if ($result)
{
@@ -192,10 +204,13 @@ class Account extends CommonObject
$lines[$i]['url_id'] = $obj->url_id;
$lines[$i]['label'] = $obj->label;
$lines[$i]['type'] = $obj->type;
+ $lines[$i]['fk_bank'] = $obj->fk_bank;
$i++;
}
- return $lines;
}
+ else dol_print_error($this->db);
+
+ return $lines;
}
/**
@@ -779,11 +794,11 @@ class Account extends CommonObject
{
$obj=$this->db->fetch_object($resql);
$newdate=$this->db->jdate($obj->datev)+(3600*24*$sign);
-
+
$sql = "UPDATE ".MAIN_DB_PREFIX."bank SET ";
$sql.= " datev = '".$this->db->idate($newdate)."'";
$sql.= " WHERE rowid = ".$rowid;
-
+
$result = $this->db->query($sql);
if ($result)
{
@@ -801,7 +816,7 @@ class Account extends CommonObject
else dol_print_error($this->db);
return 0;
}
-
+
/**
* @param rowid
*/
@@ -997,7 +1012,7 @@ class Account extends CommonObject
/**
* \class AccountLine
- * \brief Classto manage bank transaction lines
+ * \brief Class to manage bank transaction lines
*/
class AccountLine extends CommonObject
{
@@ -1112,7 +1127,7 @@ class AccountLine extends CommonObject
/**
- * Delete bank line record
+ * Delete transaction bank line record
* @param user User object that delete
* @return int <0 if KO, >0 if OK
*/
@@ -1129,12 +1144,14 @@ class AccountLine extends CommonObject
$this->db->begin();
- $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid=".$this->rowid;
- dol_syslog("AccountLine::delete sql=".$sql);
- $result = $this->db->query($sql);
- if (! $result) $nbko++;
+ // Delete urls
+ $result=$this->delete_urls();
+ if ($result < 0)
+ {
+ $nbko++;
+ }
- $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url WHERE fk_bank=".$this->rowid;
+ $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid=".$this->rowid;
dol_syslog("AccountLine::delete sql=".$sql);
$result = $this->db->query($sql);
if (! $result) $nbko++;
@@ -1157,6 +1174,42 @@ class AccountLine extends CommonObject
}
+ /**
+ * Delete bank line records
+ * @param user User object that delete
+ * @return int <0 if KO, >0 if OK
+ */
+ function delete_urls($user=0)
+ {
+ $nbko=0;
+
+ if ($this->rappro)
+ {
+ // Protection to avoid any delete of consolidated lines
+ $this->error="ErrorDeleteNotPossibleLineIsConsolidated";
+ return -1;
+ }
+
+ $this->db->begin();
+
+ $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url WHERE fk_bank=".$this->rowid;
+ dol_syslog("AccountLine::delete_urls sql=".$sql);
+ $result = $this->db->query($sql);
+ if (! $result) $nbko++;
+
+ if (! $nbko)
+ {
+ $this->db->commit();
+ return 1;
+ }
+ else
+ {
+ $this->db->rollback();
+ return -$nbko;
+ }
+ }
+
+
/**
* Update bank account record in database
* @param user Object user making update
diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php
index d64a522c6b4..a95a0431c28 100644
--- a/htdocs/compta/paiement/class/paiement.class.php
+++ b/htdocs/compta/paiement/class/paiement.class.php
@@ -21,7 +21,7 @@
* \file htdocs/compta/paiement/class/paiement.class.php
* \ingroup facture
* \brief File of class to manage payments of customers invoices
- * \version $Id: paiement.class.php,v 1.22 2011/08/03 00:46:39 eldy Exp $
+ * \version $Id: paiement.class.php,v 1.23 2011/08/05 21:06:55 eldy Exp $
*/
require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php");
@@ -259,9 +259,9 @@ class Paiement extends CommonObject
function delete($notrigger=0)
{
global $conf, $user, $langs;
-
+
$error=0;
-
+
$bank_line_id = $this->bank_line;
$this->db->begin();
@@ -273,7 +273,7 @@ class Paiement extends CommonObject
{
if (sizeof($billsarray))
{
- $this->error="Impossible de supprimer un paiement portant sur au moins une facture fermee";
+ $this->error="ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible";
$this->db->rollback();
return -1;
}
@@ -284,18 +284,18 @@ class Paiement extends CommonObject
return -2;
}
- // Verifier si paiement ne porte pas sur ecriture bancaire rapprochee
- // Si c'est le cas, on refuse le paiement
+ // Delete bank urls. If payment if on a conciliated line, return error.
if ($bank_line_id)
{
- $accline = new AccountLine($this->db,$bank_line_id);
+ $accline = new AccountLine($this->db);
$accline->fetch($bank_line_id);
- if ($accline->rappro)
- {
- $this->error="Impossible de supprimer un paiement qui a genere une ecriture qui a ete rapprochee";
+ $result=$accline->delete_urls($user);
+ if ($result < 0)
+ {
+ $this->error=$accline->error;
$this->db->rollback();
return -3;
- }
+ }
}
// Delete payment (into paiement_facture and paiement)
@@ -309,7 +309,7 @@ class Paiement extends CommonObject
$result = $this->db->query($sql);
if (! $result)
{
- $this->error=$this->db->error();
+ $this->error=$this->db->lasterror();
$this->db->rollback();
return -3;
}
@@ -327,7 +327,7 @@ class Paiement extends CommonObject
return -4;
}
}
-
+
if (! $notrigger)
{
// Appel des triggers
diff --git a/htdocs/compta/paiement/fiche.php b/htdocs/compta/paiement/fiche.php
index 1d19d4cb218..1d150faa926 100644
--- a/htdocs/compta/paiement/fiche.php
+++ b/htdocs/compta/paiement/fiche.php
@@ -23,7 +23,7 @@
* \ingroup facture
* \brief Page of a customer payment
* \remarks Nearly same file than fournisseur/paiement/fiche.php
- * \version $Id: fiche.php,v 1.76 2011/08/03 00:46:35 eldy Exp $
+ * \version $Id: fiche.php,v 1.77 2011/08/05 21:06:55 eldy Exp $
*/
require("../../main.inc.php");
@@ -84,7 +84,8 @@ if ($action == 'confirm_delete' && GETPOST('confirm') == 'yes' && $user->rights-
}
else
{
- $mesg='
'.$paiement->error.'
';
+ $langs->load("errors");
+ $mesg=''.$langs->trans($paiement->error).'
';
$db->rollback();
}
}
@@ -120,7 +121,8 @@ if ($action == 'confirm_valide' && GETPOST('confirm') == 'yes' && $user->rights-
}
else
{
- $mesg=''.$paiement->error.'
';
+ $langs->load("errors");
+ $mesg=''.$langs->trans($paiement->error).'
';
$db->rollback();
}
}
@@ -178,7 +180,7 @@ if ($action == 'valide')
}
-if ($mesg) print $mesg.'
';
+dol_htmloutput_mesg($mesg);
print '';
@@ -356,5 +358,5 @@ print '';
$db->close();
-llxFooter('$Date: 2011/08/03 00:46:35 $ - $Revision: 1.76 $');
+llxFooter('$Date: 2011/08/05 21:06:55 $ - $Revision: 1.77 $');
?>
diff --git a/htdocs/compta/sociales/charges.php b/htdocs/compta/sociales/charges.php
index 41be40078f9..eae69e4692e 100644
--- a/htdocs/compta/sociales/charges.php
+++ b/htdocs/compta/sociales/charges.php
@@ -1,5 +1,5 @@
+/* Copyright (C) 2004-2011 Laurent Destailleur
* Copyright (C) 2005-2009 Regis Houssin
*
* This program is free software; you can redistribute it and/or modify
@@ -20,7 +20,7 @@
* \file htdocs/compta/sociales/charges.php
* \ingroup tax
* \brief Social contribution car page
- * \version $Id: charges.php,v 1.65 2011/07/31 22:23:20 eldy Exp $
+ * \version $Id: charges.php,v 1.66 2011/08/05 21:11:50 eldy Exp $
*/
require('../../main.inc.php');
@@ -29,10 +29,10 @@ require(DOL_DOCUMENT_ROOT."/compta/sociales/class/chargesociales.class.php");
$langs->load("compta");
$langs->load("bills");
-$chid=isset($_GET["id"])?$_GET["id"]:$_POST["id"];
+$chid=GETPOST("id");
// Security check
-$socid = isset($_GET["socid"])?$_GET["socid"]:'';
+$socid = GETPOST("socid");
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'tax', '', '', 'charges');
@@ -62,7 +62,7 @@ if ($_REQUEST["action"] == 'confirm_paid' && $_REQUEST["confirm"] == 'yes')
if ($_REQUEST["action"] == 'confirm_delete' && $_REQUEST["confirm"] == 'yes')
{
$chargesociales=new ChargeSociales($db);
- $chargesociales->id=$_GET["id"];
+ $chargesociales->fetch($chid);
$result=$chargesociales->delete($user);
if ($result > 0)
{
@@ -129,8 +129,8 @@ if ($_POST["action"] == 'add' && $user->rights->tax->charges->creer)
if ($_GET["action"] == 'update' && ! $_POST["cancel"] && $user->rights->tax->charges->creer)
{
- $dateech=@dol_mktime($_POST["echhour"],$_POST["echmin"],$_POST["echsec"],$_POST["echmonth"],$_POST["echday"],$_POST["echyear"]);
- $dateperiod=@dol_mktime($_POST["periodhour"],$_POST["periodmin"],$_POST["periodsec"],$_POST["periodmonth"],$_POST["periodday"],$_POST["periodyear"]);
+ $dateech=dol_mktime($_POST["echhour"],$_POST["echmin"],$_POST["echsec"],$_POST["echmonth"],$_POST["echday"],$_POST["echyear"]);
+ $dateperiod=dol_mktime($_POST["periodhour"],$_POST["periodmin"],$_POST["periodsec"],$_POST["periodmonth"],$_POST["periodday"],$_POST["periodyear"]);
if (! $dateech)
{
$mesg=''.$langs->trans("ErrorFieldRequired",$langs->transnoentities("DateDue")).'
';
@@ -172,10 +172,7 @@ llxHeader('',$langs->trans("SocialContribution"));
$html = new Form($db);
-/*
- * Mode creation
- *
- */
+// Mode creation
if ($_GET["action"] == 'create')
{
print_fiche_titre($langs->trans("NewSocialContribution"));
@@ -251,7 +248,7 @@ if ($chid > 0)
if ($result > 0)
{
- if ($mesg) print $mesg.'
';
+ dol_htmloutput_mesg($mesg);
$h = 0;
$head[$h][0] = DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$cha->id;
@@ -268,15 +265,13 @@ if ($chid > 0)
if ($_GET["action"] == 'paid')
{
$text=$langs->trans('ConfirmPaySocialContribution');
- $ret=$html->form_confirm($_SERVER["PHP_SELF"]."?id=$cha->id&action=confirm_paid",$langs->trans('PaySocialContribution'),$text,"confirm_paid");
- if ($ret == 'html') print '
';
+ print $html->formconfirm($_SERVER["PHP_SELF"]."?id=".$cha->id,$langs->trans('PaySocialContribution'),$text,"confirm_paid",'','',2);
}
if ($_GET['action'] == 'delete')
{
$text=$langs->trans('ConfirmDeleteSocialContribution');
- $ret=$html->form_confirm($_SERVER['PHP_SELF'].'?id='.$cha->id,$langs->trans('DeleteSocialContribution'),$text,'confirm_delete');
- if ($ret == 'html') print '
';
+ print $html->formconfirm($_SERVER['PHP_SELF'].'?id='.$cha->id,$langs->trans('DeleteSocialContribution'),$text,'confirm_delete','','',2);
}
if ($_GET['action'] == 'edit')
@@ -353,9 +348,9 @@ if ($chid > 0)
{
$objp = $db->fetch_object($resql);
$var=!$var;
- print "| ";
+ print " |
| ";
print ''.img_object($langs->trans("Payment"),"payment").' ';
- print dol_print_date($db->jdate($objp->dp))." | \n";
+ print dol_print_date($db->jdate($objp->dp),'day')."\n";
print "".$objp->paiement_type.' '.$objp->num_paiement." | \n";
print ''.price($objp->amount)." | ".$langs->trans("Currency".$conf->monnaie)." | \n";
print "
";
@@ -445,7 +440,7 @@ if ($chid > 0)
}
// Delete
- if ($cha->paye == 0 && $totalpaye <=0 && $user->rights->tax->charges->supprimer)
+ if ($user->rights->tax->charges->supprimer)
{
print "id&action=delete\">".$langs->trans("Delete")."";
}
@@ -462,5 +457,5 @@ if ($chid > 0)
$db->close();
-llxFooter('$Date: 2011/07/31 22:23:20 $ - $Revision: 1.65 $');
+llxFooter('$Date: 2011/08/05 21:11:50 $ - $Revision: 1.66 $');
?>
diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php
index d5d07793475..bcc16077389 100644
--- a/htdocs/compta/sociales/class/chargesociales.class.php
+++ b/htdocs/compta/sociales/class/chargesociales.class.php
@@ -20,7 +20,7 @@
* \file htdocs/compta/sociales/class/chargesociales.class.php
* \ingroup facture
* \brief Fichier de la classe des charges sociales
- * \version $Id: chargesociales.class.php,v 1.14 2011/08/03 00:46:38 eldy Exp $
+ * \version $Id: chargesociales.class.php,v 1.15 2011/08/05 21:11:50 eldy Exp $
*/
require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php");
@@ -147,25 +147,72 @@ class ChargeSociales extends CommonObject
/**
- * \brief Efface un charge sociale
- * \param user Utilisateur qui cree le paiement
- * \return int <0 si erreur, >0 si ok
+ * Delete a social contribution
+ * @param user Object user making delete
+ * @return int <0 if KO, >0 if OK
*/
function delete($user)
{
- $sql = "DELETE FROM ".MAIN_DB_PREFIX."chargesociales where rowid='".$this->id."'";
+ $error=0;
- dol_syslog("ChargesSociales::delete sql=".$sql);
- $resql=$this->db->query($sql);
- if ($resql)
+ $this->db->begin();
+
+ // Get bank transaction lines for this social contributions
+ include_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php");
+ $account=new Account($this->db);
+ $lines_url=$account->get_url('',$this->id,'sc');
+
+ // Delete bank urls
+ foreach ($lines_url as $line_url)
+ {
+ if (! $error)
+ {
+ $accountline=new AccountLine($this->db);
+ $accountline->fetch($line_url['fk_bank']);
+ $result=$accountline->delete_urls($user);
+ if ($result < 0)
+ {
+ $error++;
+ }
+ }
+ }
+
+ // Delete payments
+ if (! $error)
+ {
+ $sql = "DELETE FROM ".MAIN_DB_PREFIX."paiementcharge where fk_charge='".$this->id."'";
+ dol_syslog(get_class($this)."::delete sql=".$sql);
+ $resql=$this->db->query($sql);
+ if (! $resql)
+ {
+ $error++;
+ $this->error=$this->db->lasterror();
+ }
+ }
+
+ if (! $error)
+ {
+ $sql = "DELETE FROM ".MAIN_DB_PREFIX."chargesociales where rowid='".$this->id."'";
+ dol_syslog(get_class($this)."::delete sql=".$sql);
+ $resql=$this->db->query($sql);
+ if (! $resql)
+ {
+ $error++;
+ $this->error=$this->db->lasterror();
+ }
+ }
+
+ if (! $error)
{
+ $this->db->commit();
return 1;
}
else
{
- $this->error=$this->db->error();
+ $this->db->rollback();
return -1;
}
+
}
diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang
index 5ee2091dcd8..b75f10c59d5 100644
--- a/htdocs/langs/en_US/errors.lang
+++ b/htdocs/langs/en_US/errors.lang
@@ -81,4 +81,5 @@ ErrorBadMask=Error on mask
ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number
ErrorBadMaskBadRazMonth=Error, bad reset value
ErrorSelectAtLeastOne=Error. Select at least one entry.
-ErrorProductWithRefNotExist=Product with reference '%s' don't exist
\ No newline at end of file
+ErrorProductWithRefNotExist=Product with reference '%s' don't exist
+ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated
\ No newline at end of file
diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang
index 13fd2cef975..116dfd9af5f 100644
--- a/htdocs/langs/fr_FR/errors.lang
+++ b/htdocs/langs/fr_FR/errors.lang
@@ -82,4 +82,5 @@ ErrorBadMask=Erreur sur le masque
ErrorBadMaskFailedToLocatePosOfSequence=Erreur, masque sans numéro de séquence
ErrorBadMaskBadRazMonth=Erreur, mauvais valeur de remise à zéro
ErrorSelectAtLeastOne=Erreur. Sélectionnez au moins une entrée.
-ErrorProductWithRefNotExist=La référence produit '%s' n'existe pas
\ No newline at end of file
+ErrorProductWithRefNotExist=La référence produit '%s' n'existe pas
+ErrorDeleteNotPossibleLineIsConsolidated=Suppression impossible car l'enregistrement porte sur au moins une transaction bancaire rapprochée
\ No newline at end of file