Browse Source

WIP: implement decimal

pull/3/head
Muhammad Sulaiman Yusuf 2 years ago
parent
commit
a746f821c3
  1. 17
      app/Http/Controllers/Controller.php
  2. 68
      app/Models/Activity.php
  3. 5
      config/decimal.php

17
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);
}
}
}
}

68
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");

5
config/decimal.php

@ -0,0 +1,5 @@
<?php
return [
'precision' => 5,
];
?>
Loading…
Cancel
Save