Add a common function to delete the linked contact

This commit is contained in:
Regis Houssin 2010-04-29 15:35:52 +00:00
parent ed9144957a
commit 54f424eedf
2 changed files with 37 additions and 5 deletions

View File

@ -989,7 +989,7 @@ class Facture extends CommonObject
{ {
$sql = 'UPDATE '.MAIN_DB_PREFIX.'societe_remise_except'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'societe_remise_except';
$sql.= ' SET fk_facture = NULL'; $sql.= ' SET fk_facture = NULL';
$sql.= ' WHERE fk_facture in ('.join(',',$list_rowid_det).')'; $sql.= ' WHERE fk_facture IN ('.join(',',$list_rowid_det).')';
dol_syslog("Facture.class::delete sql=".$sql); dol_syslog("Facture.class::delete sql=".$sql);
if (! $this->db->query($sql)) if (! $this->db->query($sql))
@ -1002,7 +1002,7 @@ class Facture extends CommonObject
} }
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facturedet WHERE fk_facture = '.$rowid; $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facturedet WHERE fk_facture = '.$rowid;
if ($this->db->query($sql)) if ($this->db->query($sql) && $this->delete_linked_contact())
{ {
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture WHERE rowid = '.$rowid; $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture WHERE rowid = '.$rowid;
$resql=$this->db->query($sql); $resql=$this->db->query($sql);

View File

@ -160,6 +160,38 @@ class CommonObject
return -1; return -1;
} }
} }
/**
* \brief Supprime une ligne de contact
* \return statur >0 si ok, <0 si ko
*/
function delete_linked_contact()
{
$temp = array();
$typeContact = $this->liste_type_contact(0);
foreach($typeContact as $key => $value)
{
array_push($temp,$key);
}
$listId = implode(",", $temp);
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact";
$sql.= " WHERE element_id =".$this->id;
$sql.= " AND fk_c_type_contact IN (".$listId.")";
dol_syslog("CommonObject::delete_linked_contact sql=".$sql);
if ($this->db->query($sql))
{
return 1;
}
else
{
$this->error=$this->db->lasterror();
dol_syslog("CommonObject::delete_linked_contact error=".$this->error, LOG_ERR);
return -1;
}
}
/** /**
* \brief Get array of all contacts for an object * \brief Get array of all contacts for an object
@ -249,11 +281,11 @@ class CommonObject
/** /**
* \brief La liste des valeurs possibles de type de contacts * \brief La liste des valeurs possibles de type de contacts
* \param source internal ou external * \param source internal, external or all if not defined
* \param order Sort order by : code or rowid * \param order Sort order by : code or rowid
* \return array La liste des natures * \return array La liste des natures
*/ */
function liste_type_contact($source, $order='code') function liste_type_contact($source='internal', $order='code')
{ {
global $langs; global $langs;
@ -262,7 +294,7 @@ class CommonObject
$sql = "SELECT DISTINCT tc.rowid, tc.code, tc.libelle"; $sql = "SELECT DISTINCT tc.rowid, tc.code, tc.libelle";
$sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; $sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc";
$sql.= " WHERE tc.element='".$this->element."'"; $sql.= " WHERE tc.element='".$this->element."'";
$sql.= " AND tc.source='".$source."'"; if (!empty($source)) $sql.= " AND tc.source='".$source."'";
$sql.= " ORDER by tc.".$order; $sql.= " ORDER by tc.".$order;
$resql=$this->db->query($sql); $resql=$this->db->query($sql);