diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index cefe1a4..742db50 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -250,21 +250,4 @@ class Controller extends BaseController $totalCost = AssignMaterial::selectRaw("ISNULL(qty_planning,0)*ISNULL(budget,0) as totalCost")->where("proyek_id", $proyek_id)->where("activity_id", $activity_id)->sum("totalCost"); return $totalCost; } - - protected function updatedCostPlanning($id) - { - $sumBiaya = Activity::select(DB::raw('sum(cast(rencana_biaya as double precision))'))->where("parent_id", $id)->first(); - $dataActivity = Activity::find($id); - $dataUpdate = array( - "rencana_biaya" => $sumBiaya->sum, - "updated_by" => $this->currentName - ); - $dataActivity->update($dataUpdate); - if($dataActivity){ - $parent = $dataActivity->parent_id; - if($parent && (int)$parent > 0){ - $this->updateCostPlanning($parent); - } - } - } } diff --git a/app/Models/Activity.php b/app/Models/Activity.php index f7dc9a8..01957ed 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -38,39 +38,7 @@ class Activity extends Model parent::boot(); static::updated(function($data) { - - // update bobot - if(Activity::where('version_gantt_id', $data->version_gantt_id)->where("proyek_id", $data->proyek_id)->where('type_activity', 'header')->count() == 0) - $totalCost = Activity::select( - DB::raw('sum(cast(rencana_biaya as double precision))') - ) - ->where("proyek_id", $data->proyek_id) - ->where("version_gantt_id", $data->version_gantt_id) - ->whereNull("parent_id") - ->first(); - - $rootActivity = Activity::where('version_gantt_id', $data->version_gantt_id) - ->where("proyek_id", $data->proyek_id) - ->where('type_activity', 'header') - ->first(); - - $totalCost = Activity::select(DB::raw('sum(cast(rencana_biaya as double precision))')) - ->where("proyek_id", $data->proyek_id) - ->where("version_gantt_id", $data->version_gantt_id) - ->where("parent_id", $rootActivity->id) - ->first(); - - if($totalCost->sum > 0){ - $activities = Activity::where("proyek_id", $data->proyek_id)->where("version_gantt_id", $data->version_gantt_id)->get(); - foreach ($activities as $activity) { - $activity->update([ - "bobot_planning" => ( (int)$activity->rencana_biaya / $totalCost->sum ) * 100, - "updated_by" => auth()->user() ? auth()->user()->name : "system", - ]); - $activity->save(); - } - } - + $data->updateBobot(); $data->updateCostPlanning(); $data->updatePersentaseProgress(); $data->updateCostActual(); @@ -87,6 +55,40 @@ class Activity extends Model } + private function updateBobot() + { + if(Activity::where('version_gantt_id', $this->version_gantt_id)->where("proyek_id", $this->proyek_id)->where('type_activity', 'header')->count() == 0) + $totalCost = Activity::select( + DB::raw('sum(cast(rencana_biaya as double precision))') + ) + ->where("proyek_id", $this->proyek_id) + ->where("version_gantt_id", $this->version_gantt_id) + ->whereNull("parent_id") + ->first(); + + $rootActivity = Activity::where('version_gantt_id', $this->version_gantt_id) + ->where("proyek_id", $this->proyek_id) + ->where('type_activity', 'header') + ->first(); + + $totalCost = Activity::select(DB::raw('sum(cast(rencana_biaya as double precision))')) + ->where("proyek_id", $this->proyek_id) + ->where("version_gantt_id", $this->version_gantt_id) + ->where("parent_id", $rootActivity->id) + ->first(); + + if($totalCost->sum > 0){ + $activities = Activity::where("proyek_id", $this->proyek_id)->where("version_gantt_id", $this->version_gantt_id)->get(); + foreach ($activities as $activity) { + $activity->update([ + "bobot_planning" => ( (int)$activity->rencana_biaya / $totalCost->sum ) * 100, + "updated_by" => auth()->user() ? auth()->user()->name : "system", + ]); + $activity->save(); + } + } + } + private function updateCostActual() { $actualCost = Activity::where("parent_id", $this->parent_id)->sum("biaya_actual"); diff --git a/config/decimal.php b/config/decimal.php new file mode 100644 index 0000000..9a4cb27 --- /dev/null +++ b/config/decimal.php @@ -0,0 +1,5 @@ + 5, + ]; +?>