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;
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();

View File

@ -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;
}
}