FIX amount of payment deleted in unalterable log (for old record must

look the log of creation to know amount).
This commit is contained in:
Laurent Destailleur 2021-07-13 14:48:05 +02:00
parent b12aae4a99
commit ba8d60f4d4

View File

@ -549,110 +549,111 @@ class BlockedLog
$totalamount = 0; $totalamount = 0;
if (!is_array($object->amounts) && $object->amount) { // Loop on each invoice payment amount
$object->amounts = array($object->id => $object->amount); if (is_array($object->amounts) && !empty($object->amounts)) {
} $paymentpartnumber = 0;
foreach ($object->amounts as $objid => $amount) {
if (empty($amount)) {
continue;
}
$paymentpartnumber = 0; $totalamount += $amount;
foreach ($object->amounts as $objid => $amount) {
if (empty($amount)) {
continue;
}
$totalamount += $amount; $tmpobject = null;
if ($this->element == 'payment_supplier') {
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
$tmpobject = new FactureFournisseur($this->db);
} elseif ($this->element == 'payment') {
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$tmpobject = new Facture($this->db);
} elseif ($this->element == 'payment_donation') {
include_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
$tmpobject = new Don($this->db);
} elseif ($this->element == 'payment_various') {
include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php';
$tmpobject = new PaymentVarious($this->db);
}
$tmpobject = null; if (!is_object($tmpobject)) {
if ($this->element == 'payment_supplier') { continue;
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; }
$tmpobject = new FactureFournisseur($this->db);
} elseif ($this->element == 'payment') {
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$tmpobject = new Facture($this->db);
} elseif ($this->element == 'payment_donation') {
include_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
$tmpobject = new Don($this->db);
} elseif ($this->element == 'payment_various') {
include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php';
$tmpobject = new PaymentVarious($this->db);
}
if (!is_object($tmpobject)) { $result = $tmpobject->fetch($objid);
continue;
}
$result = $tmpobject->fetch($objid); if ($result <= 0) {
if ($result <= 0) {
$this->error = $tmpobject->error;
$this->errors = $tmpobject->errors;
dol_syslog("Failed to fetch object with id ".$objid, LOG_ERR);
return -1;
}
$paymentpart = new stdClass();
$paymentpart->amount = $amount;
if (!in_array($this->element, array('payment_donation', 'payment_various'))) {
$result = $tmpobject->fetch_thirdparty();
if ($result == 0) {
$this->error = 'Failed to fetch thirdparty for object with id '.$tmpobject->id;
$this->errors[] = $this->error;
dol_syslog("Failed to fetch thirdparty for object with id ".$tmpobject->id, LOG_ERR);
return -1;
} elseif ($result < 0) {
$this->error = $tmpobject->error; $this->error = $tmpobject->error;
$this->errors = $tmpobject->errors; $this->errors = $tmpobject->errors;
dol_syslog("Failed to fetch object with id ".$objid, LOG_ERR);
return -1; return -1;
} }
$paymentpart->thirdparty = new stdClass(); $paymentpart = new stdClass();
foreach ($tmpobject->thirdparty as $key => $value) { $paymentpart->amount = $amount;
if (in_array($key, $arrayoffieldstoexclude)) {
continue; // Discard some properties
}
if (!in_array($key, array(
'name', 'name_alias', 'ref_ext', 'address', 'zip', 'town', 'state_code', 'country_code', 'idprof1', 'idprof2', 'idprof3', 'idprof4', 'idprof5', 'idprof6', 'phone', 'fax', 'email', 'barcode',
'tva_intra', 'localtax1_assuj', 'localtax1_value', 'localtax2_assuj', 'localtax2_value', 'managers', 'capital', 'typent_code', 'forme_juridique_code', 'code_client', 'code_fournisseur'
))) {
continue; // Discard if not into a dedicated list
}
if (!is_object($value) && !is_null($value) && $value !== '') {
$paymentpart->thirdparty->{$key} = $value;
}
}
}
// Init object to avoid warnings if (!in_array($this->element, array('payment_donation', 'payment_various'))) {
if ($this->element == 'payment_donation') { $result = $tmpobject->fetch_thirdparty();
$paymentpart->donation = new stdClass(); if ($result == 0) {
} else { $this->error = 'Failed to fetch thirdparty for object with id '.$tmpobject->id;
$paymentpart->invoice = new stdClass(); $this->errors[] = $this->error;
} dol_syslog("Failed to fetch thirdparty for object with id ".$tmpobject->id, LOG_ERR);
return -1;
} elseif ($result < 0) {
$this->error = $tmpobject->error;
$this->errors = $tmpobject->errors;
return -1;
}
if ($this->element != 'payment_various') { $paymentpart->thirdparty = new stdClass();
foreach ($tmpobject as $key => $value) { foreach ($tmpobject->thirdparty as $key => $value) {
if (in_array($key, $arrayoffieldstoexclude)) { if (in_array($key, $arrayoffieldstoexclude)) {
continue; // Discard some properties continue; // Discard some properties
} }
if (!in_array($key, array( if (!in_array($key, array(
'ref', 'ref_client', 'ref_supplier', 'date', 'datef', 'type', 'total_ht', 'total_tva', 'total_ttc', 'localtax1', 'localtax2', 'revenuestamp', 'datepointoftax', 'note_public' 'name', 'name_alias', 'ref_ext', 'address', 'zip', 'town', 'state_code', 'country_code', 'idprof1', 'idprof2', 'idprof3', 'idprof4', 'idprof5', 'idprof6', 'phone', 'fax', 'email', 'barcode',
))) { 'tva_intra', 'localtax1_assuj', 'localtax1_value', 'localtax2_assuj', 'localtax2_value', 'managers', 'capital', 'typent_code', 'forme_juridique_code', 'code_client', 'code_fournisseur'
continue; // Discard if not into a dedicated list ))) {
} continue; // Discard if not into a dedicated list
if (!is_object($value) && !is_null($value) && $value !== '') { }
if ($this->element == 'payment_donation') { if (!is_object($value) && !is_null($value) && $value !== '') {
$paymentpart->donation->{$key} = $value; $paymentpart->thirdparty->{$key} = $value;
} elseif ($this->element == 'payment_various') {
$paymentpart->various->{$key} = $value;
} else {
$paymentpart->invoice->{$key} = $value;
} }
} }
} }
$paymentpartnumber++; // first payment will be 1 // Init object to avoid warnings
$this->object_data->payment_part[$paymentpartnumber] = $paymentpart; if ($this->element == 'payment_donation') {
$paymentpart->donation = new stdClass();
} else {
$paymentpart->invoice = new stdClass();
}
if ($this->element != 'payment_various') {
foreach ($tmpobject as $key => $value) {
if (in_array($key, $arrayoffieldstoexclude)) {
continue; // Discard some properties
}
if (!in_array($key, array(
'ref', 'ref_client', 'ref_supplier', 'date', 'datef', 'type', 'total_ht', 'total_tva', 'total_ttc', 'localtax1', 'localtax2', 'revenuestamp', 'datepointoftax', 'note_public'
))) {
continue; // Discard if not into a dedicated list
}
if (!is_object($value) && !is_null($value) && $value !== '') {
if ($this->element == 'payment_donation') {
$paymentpart->donation->{$key} = $value;
} elseif ($this->element == 'payment_various') {
$paymentpart->various->{$key} = $value;
} else {
$paymentpart->invoice->{$key} = $value;
}
}
}
$paymentpartnumber++; // first payment will be 1
$this->object_data->payment_part[$paymentpartnumber] = $paymentpart;
}
} }
} elseif (!empty($object->amount)) {
$totalamount = $object->amount;
} }
$this->object_data->amount = $totalamount; $this->object_data->amount = $totalamount;