diff --git a/htdocs/contrat/contrat.class.php b/htdocs/contrat/contrat.class.php index 46e22e63343..2dbdbfa3795 100644 --- a/htdocs/contrat/contrat.class.php +++ b/htdocs/contrat/contrat.class.php @@ -544,26 +544,47 @@ class Contrat extends CommonObject */ function delete($user,$langs='',$conf='') { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."contrat"; - $sql.= " WHERE rowid=".$this->id; - + $this->db->begin(); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."contratdet"; + $sql.= " WHERE fk_contrat=".$this->id; + + dolibarr_syslog("Contrat::delete contratdet sql=".$sql); $resql=$this->db->query($sql); if ($resql) { - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('CONTRACT_DELETE',$this,$user,$langs,$conf); - // Fin appel triggers - - return 1; - } - else - { - $this->error=$this->db->error(); - return -1; - } - } + $sql = "DELETE FROM ".MAIN_DB_PREFIX."contrat"; + $sql.= " WHERE rowid=".$this->id; + + dolibarr_syslog("Contrat::delete contrat sql=".$sql); + $resql=$this->db->query($sql); + if ($resql) + { + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('CONTRACT_DELETE',$this,$user,$langs,$conf); + // Fin appel triggers + + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->error(); + dolibarr_syslog("Contrat::delete ERROR ".$this->error); + $this->db->rollback(); + return -1; + } + } + else + { + $this->error=$this->db->error(); + dolibarr_syslog("Contrat::delete ERROR ".$this->error); + $this->db->rollback(); + return -2; + } + } /** diff --git a/htdocs/contrat/fiche.php b/htdocs/contrat/fiche.php index e1c62287ae8..31362a36428 100644 --- a/htdocs/contrat/fiche.php +++ b/htdocs/contrat/fiche.php @@ -285,9 +285,16 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes') { $contrat = new Contrat($db); $contrat->id = $_GET["id"]; - $contrat->delete($user,$langs,$conf); - Header("Location: index.php"); - return; + $result=$contrat->delete($user,$langs,$conf); + if ($result >= 0) + { + Header("Location: index.php"); + return; + } + else + { + $mesg='