From 41063e7cf2756a1c850b7c0094fa4fe7cf95930a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 28 Mar 2017 12:55:20 +0200 Subject: [PATCH] Fix: trigger for delete must be before delete of element --- htdocs/commande/class/commande.class.php | 6 +- .../class/companybankaccount.class.php | 68 ++++++++++--------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 13a3dab037d..e87923beb8c 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3102,6 +3102,8 @@ class Commande extends CommonOrder $error = 0; + dol_syslog(get_class($this) . "::delete ".$this->id, LOG_DEBUG); + $this->db->begin(); if (! $error && ! $notrigger) @@ -3117,7 +3119,6 @@ class Commande extends CommonOrder { // Delete order details $sql = 'DELETE FROM '.MAIN_DB_PREFIX."commandedet WHERE fk_commande = ".$this->id; - dol_syslog(get_class($this)."::delete", LOG_DEBUG); if (! $this->db->query($sql) ) { $error++; @@ -3126,7 +3127,6 @@ class Commande extends CommonOrder // Delete order $sql = 'DELETE FROM '.MAIN_DB_PREFIX."commande WHERE rowid = ".$this->id; - dol_syslog(get_class($this)."::delete", LOG_DEBUG); if (! $this->db->query($sql) ) { $error++; @@ -3184,7 +3184,6 @@ class Commande extends CommonOrder if (! $error) { - dol_syslog(get_class($this)."::delete $this->id by $user->id", LOG_DEBUG); $this->db->commit(); return 1; } @@ -3192,7 +3191,6 @@ class Commande extends CommonOrder { foreach($this->errors as $errmsg) { - dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); $this->error.=($this->error?', '.$errmsg:$errmsg); } $this->db->rollback(); diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index 64205c62363..72f237999f8 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -235,47 +235,49 @@ class CompanyBankAccount extends Account /** * Delete a rib from database * - * @param User $user User deleting + * @param User $user User deleting * @param int $notrigger 1=Disable triggers - * @return int <0 if KO, >0 if OK + * @return int <0 if KO, >0 if OK */ function delete(User $user = null, $notrigger=0) { global $conf; - $error = 0; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."societe_rib"; - $sql.= " WHERE rowid = ".$this->id; - dol_syslog(get_class($this)."::delete", LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) - { + + $error = 0; + + dol_syslog(get_class($this) . "::delete ".$this->id, LOG_DEBUG); + + $this->db->begin(); + + if (! $error && ! $notrigger) + { + // Call trigger + $result=$this->call_trigger('COMAPNY_RIB_DELETE',$user); + if ($result < 0) $error++; + // End call triggers + } - if (! $notrigger) - { - // Call trigger - $result=$this->call_trigger('COMPANY_RIB_CREATE',$user); - if ($result < 0) $error++; - // End call triggers - - if(! $error ) - { - return 1; - } - else - { - return -1; - } - } - else - { - return 1; - } - + if (! $error) + { + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "societe_rib"; + $sql .= " WHERE rowid = " . $this->id; + + if (! $this->db->query($sql)) + { + $error++; + $this->errors[]=$this->db->lasterror(); + } + } + + if (! $error) + { + $this->db->commit(); + return 1; } else - { - dol_print_error($this->db); - return -1; + { + $this->db->rollback(); + return -1*$error; } } -- GitLab