Fixes for bug 1449, 1450 and 1451 #1654

This commit is contained in:
Laurent Destailleur 2014-06-14 12:30:48 +02:00
commit cf948065f4
3 changed files with 107 additions and 28 deletions

View File

@ -12,6 +12,9 @@ Fix: [ bug #1443 ] Payment conditions is erased after editing supplier invoice l
Fix: Filter on status was not visible when selected from url. Fix: Filter on status was not visible when selected from url.
Fix: Filtering on status was last when asking to sort. Fix: Filtering on status was last when asking to sort.
Fix: [ bug #1432 ] Trigger SHIPPING_CREATE ignores interception on error Fix: [ bug #1432 ] Trigger SHIPPING_CREATE ignores interception on error
Fix: [ bug #1449 ] Trigger ORDER_CREATE, LINEORDER_DELETE, LINEORDER_UPDATE and LINEORDER_INSERT ignore interception on error
Fix: [ bug #1450 ] Several Customer order's triggers do not report the error from the trigger handler
Fix: [ bug #1451 ] Interrupted order clone through trigger, loads nonexistent order
***** ChangeLog for 3.5.3 compared to 3.5.2 ***** ***** ChangeLog for 3.5.3 compared to 3.5.2 *****
Fix: Error on field accountancy code for export profile of invoices. Fix: Error on field accountancy code for export profile of invoices.

View File

@ -452,8 +452,13 @@ class Commande extends CommonOrder
} }
else else
{ {
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::set_reopen ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback(); $this->db->rollback();
return -1; return -1*$error;
} }
} }
@ -579,8 +584,14 @@ class Commande extends CommonOrder
else else
{ {
$this->error=$mouvP->error; $this->error=$mouvP->error;
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::cancel ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback(); $this->db->rollback();
return -1; return -1*$error;
} }
} }
else else
@ -795,9 +806,20 @@ class Commande extends CommonOrder
// Fin appel triggers // Fin appel triggers
} }
if (!$error) {
$this->db->commit(); $this->db->commit();
return $this->id; return $this->id;
} }
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else else
{ {
$this->db->rollback(); $this->db->rollback();
@ -1770,7 +1792,7 @@ class Commande extends CommonOrder
else else
{ {
$this->db->rollback(); $this->db->rollback();
$this->error=$this->db->lasterror(); $this->error=$line->error;
return -1; return -1;
} }
} }
@ -2204,9 +2226,14 @@ class Commande extends CommonOrder
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();
dol_syslog(get_class($this)."::classifyBilled ".$this->error, LOG_ERR);
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::classifyBilled ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback(); $this->db->rollback();
return -2; return -1*$error;
} }
} }
else else
@ -2372,10 +2399,9 @@ class Commande extends CommonOrder
} }
else else
{ {
$this->error=$this->db->lasterror(); $this->error=$this->line->error;
$this->errors=array($this->db->lasterror());
$this->db->rollback(); $this->db->rollback();
dol_syslog(get_class($this)."::updateline Error=".$this->error, LOG_ERR);
return -1; return -1;
} }
} }
@ -2494,9 +2520,13 @@ class Commande extends CommonOrder
else else
{ {
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR); foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback(); $this->db->rollback();
return -1; return -1*$error;
} }
} }
@ -3129,6 +3159,8 @@ class OrderLine extends CommonOrderLine
$error=0; $error=0;
$this->db->begin();
$sql = 'DELETE FROM '.MAIN_DB_PREFIX."commandedet WHERE rowid='".$this->rowid."';"; $sql = 'DELETE FROM '.MAIN_DB_PREFIX."commandedet WHERE rowid='".$this->rowid."';";
dol_syslog("OrderLine::delete sql=".$sql); dol_syslog("OrderLine::delete sql=".$sql);
@ -3154,8 +3186,19 @@ class OrderLine extends CommonOrderLine
if ($result < 0) { $error++; $this->errors=$interface->errors; } if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers // Fin appel triggers
if (!$error) {
$this->db->commit();
return 1; return 1;
} }
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else else
{ {
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
@ -3270,9 +3313,19 @@ class OrderLine extends CommonOrderLine
// Fin appel triggers // Fin appel triggers
} }
if (!$error) {
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();
@ -3378,9 +3431,19 @@ class OrderLine extends CommonOrderLine
// Fin appel triggers // Fin appel triggers
} }
if (!$error) {
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();

View File

@ -112,6 +112,9 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && $user->rights->commande->
{ {
if ($object->id > 0) if ($object->id > 0)
{ {
//Because createFromClone modifies the object, we must clone it so that we can restore it later
$orig = clone $object;
$result=$object->createFromClone($socid); $result=$object->createFromClone($socid);
if ($result > 0) if ($result > 0)
{ {
@ -120,7 +123,8 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && $user->rights->commande->
} }
else else
{ {
$mesg='<div class="error">'.$object->error.'</div>'; setEventMessage($object->error, 'errors');
$object = $orig;
$action=''; $action='';
} }
} }
@ -140,7 +144,7 @@ else if ($action == 'reopen' && $user->rights->commande->creer)
} }
else else
{ {
$mesg='<div class="error">'.$object->error.'</div>'; setEventMessage($object->error, 'errors');
} }
} }
} }
@ -154,9 +158,8 @@ else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->comm
header('Location: index.php'); header('Location: index.php');
exit; exit;
} }
else else {
{ setEventMessage($object->error, 'errors');
$mesg='<div class="error">'.$object->error.'</div>';
} }
} }
@ -187,7 +190,7 @@ else if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->
} }
else else
{ {
$mesg='<div class="error">'.$object->error.'</div>'; setEventMessage($object->error, 'errors');
} }
} }
@ -445,6 +448,10 @@ else if ($action == 'add' && $user->rights->commande->creer)
else if ($action == 'classifybilled' && $user->rights->commande->creer) else if ($action == 'classifybilled' && $user->rights->commande->creer)
{ {
$ret=$object->classifyBilled(); $ret=$object->classifyBilled();
if ($ret < 0) {
setEventMessage($object->error, 'errors');
}
} }
// Positionne ref commande client // Positionne ref commande client
@ -1076,7 +1083,9 @@ else if ($action == 'confirm_modif' && $user->rights->commande->creer)
else if ($action == 'confirm_shipped' && $confirm == 'yes' && $user->rights->commande->cloturer) else if ($action == 'confirm_shipped' && $confirm == 'yes' && $user->rights->commande->cloturer)
{ {
$result = $object->cloture($user); $result = $object->cloture($user);
if ($result < 0) $mesgs=$object->errors; if ($result < 0) {
setEventMessage($object->error, 'errors');
}
} }
else if ($action == 'confirm_cancel' && $confirm == 'yes' && $user->rights->commande->valider) else if ($action == 'confirm_cancel' && $confirm == 'yes' && $user->rights->commande->valider)
@ -1097,6 +1106,10 @@ else if ($action == 'confirm_cancel' && $confirm == 'yes' && $user->rights->comm
if (! $error) if (! $error)
{ {
$result = $object->cancel($idwarehouse); $result = $object->cancel($idwarehouse);
if ($result < 0) {
setEventMessage($object->error, 'errors');
}
} }
} }