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

View File

@@ -1131,11 +1131,11 @@ class Facture extends CommonObject
$error=0; $error=0;
$this->db->begin(); $this->db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element"; // Delete linked object
$sql.= " WHERE fk_target = ".$rowid; $res = $this->deleteObjectLinked();
$sql.= " AND targettype = '".$this->element."'"; if ($res < 0) $error++;
if ($this->db->query($sql)) if (! $error)
{ {
// If invoice was converted into a discount not yet consumed, we remove discount // If invoice was converted into a discount not yet consumed, we remove discount
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'societe_remise_except'; $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.= " WHERE element_id =".$this->id;
$sql.= " AND fk_c_type_contact IN (".$listId.")"; $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)) if ($this->db->query($sql))
{ {
return 1; return 1;
@@ -1630,6 +1630,30 @@ abstract class CommonObject
} }
} }
/**
* 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 * Set statut of an object
* *

View File

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

View File

@@ -585,16 +585,8 @@ class Fichinter extends CommonObject
$this->db->begin(); $this->db->begin();
// Delete linked object // Delete linked object
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element"; $res = $this->deleteObjectLinked();
$sql.= " WHERE fk_target = ".$this->id; if ($res < 0) $error++;
$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++;
}
// Delete linked contacts // Delete linked contacts
$res = $this->delete_linked_contact(); $res = $this->delete_linked_contact();

View File

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