Merge pull request #20311 from Easya-Solutions/14.0_fix_error_propagation_and_triggers_position_on_delete_propal_line

[FIX] errors propagation and trigger position on delete proposal line
This commit is contained in:
Laurent Destailleur 2022-03-17 02:35:30 +01:00 committed by GitHub
commit 62f6686ad0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 24 deletions

View File

@ -231,8 +231,11 @@ if (empty($reshook)) {
// Remove line // Remove line
$result = $object->deleteline($lineid); $result = $object->deleteline($lineid);
// reorder lines // reorder lines
if ($result) { if ($result > 0) {
$object->line_order(true); $object->line_order(true);
} else {
$langs->load("errors");
setEventMessages($object->error, $object->errors, 'errors');
} }
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {

View File

@ -980,6 +980,8 @@ class Propal extends CommonObject
$this->db->commit(); $this->db->commit();
return 1; return 1;
} else { } else {
$this->error = $line->error;
$this->errors = $line->errors;
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
@ -4166,36 +4168,40 @@ class PropaleLigne extends CommonObjectLine
$error = 0; $error = 0;
$this->db->begin(); $this->db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE rowid = ".((int) $this->rowid); if (!$notrigger) {
dol_syslog("PropaleLigne::delete", LOG_DEBUG); // Call trigger
if ($this->db->query($sql)) { $result = $this->call_trigger('LINEPROPAL_DELETE', $user);
// Remove extrafields if ($result < 0) {
if (!$error) { $error++;
$this->id = $this->rowid;
$result = $this->deleteExtraFields();
if ($result < 0) {
$error++;
dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR);
}
} }
}
// End call triggers
if (!$error && !$notrigger) { if (!$error) {
// Call trigger $sql = "DELETE FROM " . MAIN_DB_PREFIX . "propaldet WHERE rowid = " . ((int) $this->rowid);
$result = $this->call_trigger('LINEPROPAL_DELETE', $user); dol_syslog("PropaleLigne::delete", LOG_DEBUG);
if ($result < 0) { if ($this->db->query($sql)) {
$this->db->rollback(); // Remove extrafields
return -1; if (!$error) {
$this->id = $this->rowid;
$result = $this->deleteExtraFields();
if ($result < 0) {
$error++;
dol_syslog(get_class($this) . "::delete error -4 " . $this->error, LOG_ERR);
}
} }
} else {
$this->error = $this->db->error() . " sql=" . $sql;
$error++;
} }
// End call triggers }
$this->db->commit(); if ($error) {
return 1;
} else {
$this->error = $this->db->error()." sql=".$sql;
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} else {
$this->db->commit();
return 1;
} }
} }