Add a common function to delete the linked contact

This commit is contained in:
Regis Houssin 2010-04-29 15:57:57 +00:00
parent 54f424eedf
commit fe62fdcf68
3 changed files with 47 additions and 63 deletions

View File

@ -1593,6 +1593,15 @@ class Propal extends CommonObject
$sql = "DELETE FROM ".MAIN_DB_PREFIX."propal WHERE rowid = ".$this->id;
if ( $this->db->query($sql) )
{
// Delete linked contacts
$res = $this->delete_linked_contact();
if ($res < 0)
{
$this->error='ErrorFailToDeleteLinkedContact';
$this->db->rollback();
return 0;
}
// We remove directory
$propalref = dol_sanitizeFileName($this->ref);
if ($conf->propale->dir_output)

View File

@ -1930,29 +1930,41 @@ class Commande extends CommonObject
$this->db->begin();
// Delete order details
$sql = 'DELETE FROM '.MAIN_DB_PREFIX."commandedet WHERE fk_commande = ".$this->id;
dol_syslog("Commande::delete sql=".$sql);
if (! $this->db->query($sql) )
{
dol_syslog("Commande::delete error", LOG_ERR);
dol_syslog("CustomerOrder::delete error", LOG_ERR);
$err++;
}
// Delete order
$sql = 'DELETE FROM '.MAIN_DB_PREFIX."commande WHERE rowid = ".$this->id;
dol_syslog("Commande::delete sql=".$sql);
if (! $this->db->query($sql) )
{
dol_syslog("Commande::delete error", LOG_ERR);
dol_syslog("CustomerOrder::delete error", LOG_ERR);
$err++;
}
// 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("Commande::delete error", LOG_ERR);
dol_syslog("CustomerOrder::delete error", LOG_ERR);
$err++;
}
// Delete linked contacts
$res = $this->delete_linked_contact();
if ($res < 0)
{
dol_syslog("CustomerOrder::delete error", LOG_ERR);
$err++;
}
@ -1963,25 +1975,25 @@ class Commande extends CommonObject
$dir = $conf->commande->dir_output . "/" . $comref ;
$file = $conf->commande->dir_output . "/" . $comref . "/" . $comref . ".pdf";
if (file_exists($file))
{
commande_delete_preview($this->db, $this->id, $this->ref);
if (!dol_delete_file($file))
{
$this->error=$langs->trans("ErrorCanNotDeleteFile",$file);
$this->db->rollback();
return 0;
}
}
if (file_exists($dir))
{
if (!dol_delete_dir($dir))
{
$this->error=$langs->trans("ErrorCanNotDeleteDir",$dir);
$this->db->rollback();
return 0;
}
}
{
commande_delete_preview($this->db, $this->id, $this->ref);
if (!dol_delete_file($file))
{
$this->error=$langs->trans("ErrorCanNotDeleteFile",$file);
$this->db->rollback();
return 0;
}
}
if (file_exists($dir))
{
if (!dol_delete_dir($dir))
{
$this->error=$langs->trans("ErrorCanNotDeleteDir",$dir);
$this->db->rollback();
return 0;
}
}
}
if ($err == 0)

View File

@ -625,50 +625,13 @@ class Contrat extends CommonObject
if (! $error)
{
// Delete element_contact
/*
$sql = "DELETE ec";
$sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc";
$sql.= " WHERE ec.fk_c_type_contact = tc.rowid";
$sql.= " AND tc.element='".$this->element."'";
$sql.= " AND ec.element_id=".$this->id;
*/
$sql = "SELECT ec.rowid as ecrowid";
$sql.= " FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc";
$sql.= " WHERE ec.fk_c_type_contact = tc.rowid";
$sql.= " AND tc.element='".$this->element."'";
$sql.= " AND ec.element_id=".$this->id;
dol_syslog("Contrat::delete element_contact sql=".$sql,LOG_DEBUG);
$resql=$this->db->query($sql);
if (! $resql)
// Delete linked contacts
$res = $this->delete_linked_contact();
if ($res < 0)
{
$this->error=$this->db->error();
dol_syslog("Contract::delete error", LOG_ERR);
$error++;
}
$numressql=$this->db->num_rows($resql);
if (! $error && $numressql )
{
$tab_resql=array();
for($i=0;$i<$numressql;$i++)
{
$objresql=$this->db->fetch_object($resql);
$tab_resql[]= $objresql->ecrowid;
}
$this->db->free($resql);
$sql= "DELETE FROM ".MAIN_DB_PREFIX."element_contact ";
$sql.= " WHERE ".MAIN_DB_PREFIX."element_contact.rowid IN (".implode(",",$tab_resql).")";
dol_syslog("Contrat::delete element_contact sql=".$sql,LOG_DEBUG);
$resql=$this->db->query($sql);
if (! $resql)
{
$this->error=$this->db->error();
$error++;
}
}
}
if (! $error)