From 6b6a079440ac89d99fc47270ad197292d5131730 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 14 Sep 2022 17:01:18 -0700 Subject: [PATCH] fixes current value and monthly depreciation on reports and calculations --- .../Transformers/DepreciationsTransformer.php | 4 +++- app/Models/Depreciable.php | 23 ++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/Http/Transformers/DepreciationsTransformer.php b/app/Http/Transformers/DepreciationsTransformer.php index fe63aca69..717568f02 100644 --- a/app/Http/Transformers/DepreciationsTransformer.php +++ b/app/Http/Transformers/DepreciationsTransformer.php @@ -3,6 +3,7 @@ namespace App\Http\Transformers; use App\Helpers\Helper; +use App\Models\Depreciable; use App\Models\Depreciation; use Gate; use Illuminate\Database\Eloquent\Collection; @@ -19,13 +20,14 @@ class DepreciationsTransformer return (new DatatablesTransformer)->transformDatatables($array, $total); } - public function transformDepreciation(Depreciation $depreciation) + public function transformDepreciation(Depreciation $depreciation, Depreciable $monthly_depreciation) { $array = [ 'id' => (int) $depreciation->id, 'name' => e($depreciation->name), 'months' => $depreciation->months.' '.trans('general.months'), 'depreciation_min' => $depreciation->depreciation_min, + 'monthly_depreciation' => $monthly_depreciation->getMonthlyDepreciation(), 'created_at' => Helper::getFormattedDateObject($depreciation->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($depreciation->updated_at, 'datetime') ]; diff --git a/app/Models/Depreciable.php b/app/Models/Depreciable.php index 512e8dbff..20a28af40 100644 --- a/app/Models/Depreciable.php +++ b/app/Models/Depreciable.php @@ -70,20 +70,31 @@ class Depreciable extends SnipeModel { $months_passed = $this->purchase_date->diff(now())->m; - // The equation here is (Purchase_Cost-Floor_min)*(Months_passed/Months_til_depreciated) - $current_value= round((($this->purchase_cost-$this->get_depreciation()->depreciation_min)*($months_passed/$this->get_depreciation()->months)),2); + if($months_passed >= $this->get_depreciation()->months){ + //if there is a floor use it + if($this->get_depreciation()->deprecation_min->isNotEmpty()) { - if($this->get_depreciation()->depreciation_min > $current_value) { + $current_value = $this->get_depreciation()->depreciation_min; - $current_value=round($this->get_depreciation()->depreciation_min,2); + }else{ + $current_value = 0; + } } - if ($current_value < 0) { - $current_value = 0; + else { + // The equation here is (Purchase_Cost-Floor_min)*(Months_passed/Months_til_depreciated) + $current_value = round(($this->purchase_cost-($this->purchase_cost - ($this->get_depreciation()->depreciation_min)) * ($months_passed / $this->get_depreciation()->months)), 2); + } return $current_value; } + public function getMonthlyDepreciation(){ + + return ($this->purchase_cost-$this->get_depreciation()->depreciation_min)/$this->get_depreciation()->months; + + } + /** * @param onlyHalfFirstYear Boolean always applied only second half of the first year * @return float|int