2
0
forked from Wavyzz/dolibarr

Fix: add deleteObjectLinked function

This commit is contained in:
Regis Houssin
2012-02-07 16:47:46 +01:00
parent c9908bf2bd
commit 6a43a517f1
6 changed files with 52 additions and 45 deletions

View File

@@ -2320,38 +2320,26 @@ class Commande extends CommonObject
dol_syslog("Commande::delete sql=".$sql);
if (! $this->db->query($sql) )
{
dol_syslog("CustomerOrder::delete error", LOG_ERR);
dol_syslog(get_class($this)."::delete error", LOG_ERR);
$error++;
}
// Delete order
$sql = 'DELETE FROM '.MAIN_DB_PREFIX."commande WHERE rowid = ".$this->id;
dol_syslog("Commande::delete sql=".$sql);
dol_syslog(get_class($this)."::delete sql=".$sql, LOG_DEBUG);
if (! $this->db->query($sql) )
{
dol_syslog("CustomerOrder::delete error", LOG_ERR);
dol_syslog(get_class($this)."::delete error", LOG_ERR);
$error++;
}
// Delete linked object
// TODO deplacer dans le common
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element";
$sql.= " WHERE fk_target = ".$this->id;
$sql.= " AND targettype = '".$this->element."'";
dol_syslog("Commande::delete sql=".$sql);
if (! $this->db->query($sql) )
{
dol_syslog("CustomerOrder::delete error", LOG_ERR);
$error++;
}
$res = $this->deleteObjectLinked();
if ($res < 0) $error++;
// Delete linked contacts
$res = $this->delete_linked_contact();
if ($res < 0)
{
dol_syslog("CustomerOrder::delete error", LOG_ERR);
$error++;
}
if ($res < 0) $error++;
// On efface le repertoire de pdf provisoire
$comref = dol_sanitizeFileName($this->ref);
@@ -2381,7 +2369,7 @@ class Commande extends CommonObject
}
}
if ($error == 0)
if (! $error)
{
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");

View File

@@ -1130,12 +1130,12 @@ class Facture extends CommonObject
$error=0;
$this->db->begin();
// Delete linked object
$res = $this->deleteObjectLinked();
if ($res < 0) $error++;
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element";
$sql.= " WHERE fk_target = ".$rowid;
$sql.= " AND targettype = '".$this->element."'";
if ($this->db->query($sql))
if (! $error)
{
// If invoice was converted into a discount not yet consumed, we remove discount
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'societe_remise_except';

View File

@@ -294,7 +294,7 @@ abstract class CommonObject
$sql.= " WHERE element_id =".$this->id;
$sql.= " AND fk_c_type_contact IN (".$listId.")";
dol_syslog(get_class($this)."::delete_linked_contact sql=".$sql);
dol_syslog(get_class($this)."::delete_linked_contact sql=".$sql, LOG_DEBUG);
if ($this->db->query($sql))
{
return 1;
@@ -1629,6 +1629,30 @@ abstract class CommonObject
dol_print_error($this->db);
}
}
/**
* Delete all links between an object $this
*
* @return int >0 if OK, <0 if KO
*/
function deleteObjectLinked()
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element";
$sql.= " WHERE fk_target = ".$this->id;
$sql.= " AND targettype = '".$this->element."'";
dol_syslog(get_class($this)."::deleteObjectLinked sql=".$sql, LOG_DEBUG);
if ($this->db->query($sql))
{
return 1;
}
else
{
$this->error=$this->db->lasterror();
dol_syslog(get_class($this)."::deleteObjectLinked error=".$this->error, LOG_ERR);
return -1;
}
}
/**
* Set statut of an object

View File

@@ -761,16 +761,16 @@ class Expedition extends CommonObject
if ( $this->db->query($sql) )
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element";
$sql.= " WHERE fk_target = ".$this->id;
$sql.= " AND targettype = '".$this->element."'";
// Delete linked object
$res = $this->deleteObjectLinked();
if ($res < 0) $error++;
if ( $this->db->query($sql) )
if (! $error)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."expedition";
$sql.= " WHERE rowid = ".$this->id;
if ( $this->db->query($sql) )
if ($this->db->query($sql))
{
$this->db->commit();

View File

@@ -585,16 +585,8 @@ class Fichinter extends CommonObject
$this->db->begin();
// Delete linked object
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element";
$sql.= " WHERE fk_target = ".$this->id;
$sql.= " AND targettype = '".$this->element."'";
dol_syslog("Fichinter::delete sql=".$sql);
if (! $this->db->query($sql) )
{
dol_syslog("Fichinter::delete error", LOG_ERR);
$this->error=$this->db->lasterror();
$error++;
}
$res = $this->deleteObjectLinked();
if ($res < 0) $error++;
// Delete linked contacts
$res = $this->delete_linked_contact();

View File

@@ -549,15 +549,18 @@ class Livraison extends CommonObject
{
require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php");
$this->db->begin();
$error=0;
$sql = "DELETE FROM ".MAIN_DB_PREFIX."livraisondet";
$sql.= " WHERE fk_livraison = ".$this->id;
if ( $this->db->query($sql) )
if ($this->db->query($sql))
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element";
$sql.= " WHERE fk_target = ".$this->id;
$sql.= " AND targettype = '".$this->element."'";
if ( $this->db->query($sql) )
// Delete linked object
$res = $this->deleteObjectLinked();
if ($res < 0) $error++;
if (! $error)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."livraison";
$sql.= " WHERE rowid = ".$this->id;