Fix: trigger for delete must be before delete of element

This commit is contained in:
Laurent Destailleur 2017-03-28 12:55:20 +02:00
parent 75a86cd8e5
commit 41063e7cf2
2 changed files with 37 additions and 37 deletions

View File

@ -3102,6 +3102,8 @@ class Commande extends CommonOrder
$error = 0; $error = 0;
dol_syslog(get_class($this) . "::delete ".$this->id, LOG_DEBUG);
$this->db->begin(); $this->db->begin();
if (! $error && ! $notrigger) if (! $error && ! $notrigger)
@ -3117,7 +3119,6 @@ class Commande extends CommonOrder
{ {
// Delete order details // Delete order details
$sql = 'DELETE FROM '.MAIN_DB_PREFIX."commandedet WHERE fk_commande = ".$this->id; $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) ) if (! $this->db->query($sql) )
{ {
$error++; $error++;
@ -3126,7 +3127,6 @@ class Commande extends CommonOrder
// 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(get_class($this)."::delete", LOG_DEBUG);
if (! $this->db->query($sql) ) if (! $this->db->query($sql) )
{ {
$error++; $error++;
@ -3184,7 +3184,6 @@ class Commande extends CommonOrder
if (! $error) if (! $error)
{ {
dol_syslog(get_class($this)."::delete $this->id by $user->id", LOG_DEBUG);
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
@ -3192,7 +3191,6 @@ class Commande extends CommonOrder
{ {
foreach($this->errors as $errmsg) foreach($this->errors as $errmsg)
{ {
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg); $this->error.=($this->error?', '.$errmsg:$errmsg);
} }
$this->db->rollback(); $this->db->rollback();

View File

@ -242,40 +242,42 @@ class CompanyBankAccount extends Account
function delete(User $user = null, $notrigger=0) function delete(User $user = null, $notrigger=0)
{ {
global $conf; 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)
{
if (! $notrigger) $error = 0;
dol_syslog(get_class($this) . "::delete ".$this->id, LOG_DEBUG);
$this->db->begin();
if (! $error && ! $notrigger)
{ {
// Call trigger // Call trigger
$result=$this->call_trigger('COMPANY_RIB_CREATE',$user); $result=$this->call_trigger('COMAPNY_RIB_DELETE',$user);
if ($result < 0) $error++; if ($result < 0) $error++;
// End call triggers // End call triggers
}
if (! $error) if (! $error)
{ {
return 1; $sql = "DELETE FROM " . MAIN_DB_PREFIX . "societe_rib";
} $sql .= " WHERE rowid = " . $this->id;
else
if (! $this->db->query($sql))
{ {
return -1; $error++;
$this->errors[]=$this->db->lasterror();
} }
} }
else
{
return 1;
}
if (! $error)
{
$this->db->commit();
return 1;
} }
else else
{ {
dol_print_error($this->db); $this->db->rollback();
return -1; return -1*$error;
} }
} }