From bb06e850f11e78ee60a424757eb830ae59bd6cb3 Mon Sep 17 00:00:00 2001 From: lippoliv Date: Thu, 4 Dec 2025 09:29:35 +0100 Subject: [PATCH] do not create accelerated deprecation lines if disabled --- .../class/assetdepreciationoptions.class.php | 25 +++++++++++-------- htdocs/asset/depreciation.php | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/htdocs/asset/class/assetdepreciationoptions.class.php b/htdocs/asset/class/assetdepreciationoptions.class.php index fed82c6b3c9..5210c0f6e4d 100644 --- a/htdocs/asset/class/assetdepreciationoptions.class.php +++ b/htdocs/asset/class/assetdepreciationoptions.class.php @@ -316,8 +316,8 @@ class AssetDepreciationOptions extends CommonObject foreach ($this->deprecation_options_fields as $mode_key => $mode_info) { if (!empty($mode_info['enabled_field'])) { $info = explode(':', $mode_info['enabled_field']); - if (!empty($this->deprecation_options[$info[0]][$info[1]]) && $deprecation_options[$info[0]][$info[1]] != $info[2]) { - unset($deprecation_options[$info[0]][$info[1]]); + if (isset($deprecation_options[$info[0]][$info[1]]) && $deprecation_options[$info[0]][$info[1]] != $info[2]) { + unset($deprecation_options[$mode_key]); } } } @@ -389,8 +389,8 @@ class AssetDepreciationOptions extends CommonObject foreach ($this->deprecation_options_fields as $mode_key => $mode_info) { if (!empty($mode_info['enabled_field'])) { $info = explode(':', $mode_info['enabled_field']); - if (isset($deprecation_options[$info[0]][$info[1]]) && $deprecation_options[$info[0]][$info[1]] != $info[2]) { - unset($deprecation_options[$info[0]][$info[1]]); + if (!empty($deprecation_options[$info[0]][$info[1]]) && $deprecation_options[$info[0]][$info[1]] != $info[2]) { + unset($deprecation_options[$mode_key]); } } } @@ -431,10 +431,14 @@ class AssetDepreciationOptions extends CommonObject $duration_type_list = $this->deprecation_options_fields[$mode]['fields']['duration_type']['arrayofkeyval']; - return array( - 'base_depreciation_ht' => $this->deprecation_options[$mode]['amount_base_depreciation_ht'], - 'duration' => $this->deprecation_options[$mode]['duration'], - 'duration_type' => $duration_type_list[$this->deprecation_options[$mode]['duration_type']], + $mode_opts = $this->deprecation_options[$mode] ?? array(); + $duration_type_idx = $mode_opts['duration_type'] ?? null; + $duration_type_label = $duration_type_list[$duration_type_idx] ?? ''; + + return array( + 'base_depreciation_ht' => $mode_opts['amount_base_depreciation_ht'] ?? 0, + 'duration' => $mode_opts['duration'] ?? 0, + 'duration_type' => $duration_type_label, 'rate' => $this->getRate($mode), ); } @@ -501,8 +505,9 @@ class AssetDepreciationOptions extends CommonObject if (!$error && !empty($this->deprecation_options[$mode_key])) { if (!empty($mode_info['enabled_field'])) { - $info = explode(':', $mode_info['enabled_field']); - if (!empty($this->deprecation_options[$info[0]][$info[1]]) && $this->deprecation_options[$info[0]][$info[1]] != $info[2]) { + list($ref_mode, $ref_field, $required) = explode(':', $mode_info['enabled_field']); + $flag = $this->deprecation_options[$ref_mode][$ref_field] ?? null; + if ((string) $flag !== (string) $required) { continue; } } diff --git a/htdocs/asset/depreciation.php b/htdocs/asset/depreciation.php index 6979867b920..3323853bd63 100644 --- a/htdocs/asset/depreciation.php +++ b/htdocs/asset/depreciation.php @@ -142,7 +142,7 @@ if ($id > 0 || !empty($ref)) { $now = dol_now(); foreach ($assetdepreciationoptions->deprecation_options_fields as $mode_key => $fields) { - $lines = $object->depreciation_lines[$mode_key]; + $lines = $object->depreciation_lines[$mode_key] ?? array(); if (!empty($lines)) { $mode_info = $assetdepreciationoptions->deprecation_options_fields[$mode_key]; $depreciation_info = $assetdepreciationoptions->getGeneralDepreciationInfoForMode($mode_key);