Browse Source

cascade delete, delete report, update status

pull/3/head
wahyu 1 year ago
parent
commit
4b8df65f44
  1. 436
      app/Http/Controllers/AssignMaterialController.php
  2. 18
      app/Http/Controllers/ReportActivityMaterialController.php
  3. 146
      app/Models/ReportActivityMaterial.php

436
app/Http/Controllers/AssignMaterialController.php

@ -1,215 +1,221 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\AssignMaterial; use App\Models\AssignMaterial;
use App\Models\RequestMaterial; use App\Models\RequestMaterial;
use App\Models\Activity; use App\Models\Activity;
use App\Models\ReportActivityMaterial; use App\Models\ReportActivityMaterial;
use Datatables; use Datatables;
class AssignMaterialController extends Controller class AssignMaterialController extends Controller
{ {
private function sanitizeDecimal($number) { private function sanitizeDecimal($number) {
$number = str_replace(".","",$number); $number = str_replace(".","",$number);
$number = str_replace(",",".",$number); $number = str_replace(",",".",$number);
return $number; return $number;
} }
public function add(Request $request){ public function add(Request $request){
$this->validate($request, [ $this->validate($request, [
'activity_id' => 'required', 'activity_id' => 'required',
'material_id' => 'required', 'material_id' => 'required',
'qty_planning' => 'required' 'qty_planning' => 'required'
]); ]);
$activity = Activity::where('id', $request->activity_id)->first(); $activity = Activity::where('id', $request->activity_id)->first();
$checkStock = RequestMaterial::where("id", $request->material_id)->first(); $checkStock = RequestMaterial::where("id", $request->material_id)->first();
$currentStock = $checkStock->qty; $currentStock = $checkStock->qty;
if((int)$currentStock < (int)$request->qty_planning){ if((int)$currentStock < (int)$request->qty_planning){
return response()->json(['status'=>'failed','message'=>'Stock is not enough!','code'=> 500]); return response()->json(['status'=>'failed','message'=>'Stock is not enough!','code'=> 500]);
} }
$start_date = $activity->start_date; $start_date = $activity->start_date;
$start_date = substr($start_date, 0, 19); // remove the timezone offset $start_date = substr($start_date, 0, 19); // remove the timezone offset
$startDate = new \DateTime(date("Y-m-d", strtotime($start_date))); $startDate = new \DateTime(date("Y-m-d", strtotime($start_date)));
$planDate = new \DateTime(date("Y-m-d", strtotime($request->plan_date))); $planDate = new \DateTime(date("Y-m-d", strtotime($request->plan_date)));
$data = $request->all(); $data = $request->all();
$data['created_by'] = $this->currentName; $data['created_by'] = $this->currentName;
$data['budget'] = $checkStock->price; $data['budget'] = $checkStock->price;
$data['qty_planning'] = $this->sanitizeDecimal($data['qty_planning']); $data['qty_planning'] = $this->sanitizeDecimal($data['qty_planning']);
if ($planDate >= $startDate) { if ($planDate >= $startDate) {
$result = AssignMaterial::create($data); $result = AssignMaterial::create($data);
return response()->json(['status'=>'success','message'=>'Data added!', 'code'=>200], 200); return response()->json(['status'=>'success','message'=>'Data added!', 'code'=>200], 200);
}else{ }else{
return response()->json(['status'=>'failed','message'=>'Failed to add data!','code'=> 400], 400); return response()->json(['status'=>'failed','message'=>'Failed to add data!','code'=> 400], 400);
} }
} }
public function update(Request $request, $id){ public function update(Request $request, $id){
if(empty($id) || !is_int((int)$id)) if(empty($id) || !is_int((int)$id))
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400);
$data = AssignMaterial::find($id); $data = AssignMaterial::find($id);
if(!$data) if(!$data)
return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404); return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404);
$result = $data->update($request->all()); $result = $data->update($request->all());
if($result) if($result)
return response()->json(['status'=>'success','message'=> 'Data updated!','code'=> 200], 200); return response()->json(['status'=>'success','message'=> 'Data updated!','code'=> 200], 200);
return response()->json(['status'=>'failed','message'=>'Failed to update!','code'=> 500], 500); return response()->json(['status'=>'failed','message'=>'Failed to update!','code'=> 500], 500);
} }
public function delete($id) public function delete($id)
{ {
$data = AssignMaterial::where('id', $id)->first(); $data = AssignMaterial::where('id', $id)->first();
$reports = ReportActivityMaterial::where('assign_material_id', $data->id)->get();
if($data->delete()) if (isset($reports)) {
return response()->json(['status'=>'success','message'=>'Data deleted!','code'=> 200], 200); foreach ($reports as $report) {
$report->delete();
return response()->json(['status'=>'failed','message'=>'Failed to delete!','code'=> 500], 500); }
} }
public function edit($id){ if($data->delete())
if(empty($id) || !is_int((int)$id)) return response()->json(['status'=>'success','message'=>'Data deleted!','code'=> 200], 200);
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400);
return response()->json(['status'=>'failed','message'=>'Failed to delete!','code'=> 500], 500);
$result = AssignMaterial::find($id); }
if($result) public function edit($id){
return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); if(empty($id) || !is_int((int)$id))
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400);
return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404);
} $result = AssignMaterial::find($id);
public function search(Request $request) if($result)
{ return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200);
$payload = $request->all();
$dataBuilder = $this->setUpPayload($payload, 'assign_material_to_activity'); return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404);
$builder = $dataBuilder['builder']; }
$countBuilder = $dataBuilder['count'];
$dataGet = $builder->get(); public function search(Request $request)
$totalRecord = $countBuilder->count(); {
return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet, 'totalRecord'=>$totalRecord], 200); $payload = $request->all();
} $dataBuilder = $this->setUpPayload($payload, 'assign_material_to_activity');
$builder = $dataBuilder['builder'];
public function list() $countBuilder = $dataBuilder['count'];
{ $dataGet = $builder->get();
$data = AssignMaterial::all(); $totalRecord = $countBuilder->count();
$countData = $data->count(); return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet, 'totalRecord'=>$totalRecord], 200);
}
if($data)
return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); public function list()
{
return response()->json(['status'=>'failed','message'=>'Failed to get the data!','code'=> 500], 500); $data = AssignMaterial::all();
} $countData = $data->count();
public function datatables(Request $request){ if($data)
$id_activity = $request->query('idact'); return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200);
$type = $request->query('type') ?? "material";
$data = AssignMaterial::select( return response()->json(['status'=>'failed','message'=>'Failed to get the data!','code'=> 500], 500);
"assign_material_to_activity.*","m.description as material_name", "m.uom as uom" }
)
->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id") public function datatables(Request $request){
->where('assign_material_to_activity.activity_id', $id_activity) $id_activity = $request->query('idact');
->where('assign_material_to_activity.type', $type) $type = $request->query('type') ?? "material";
->orderBy('plan_date', 'desc') $data = AssignMaterial::select(
->get(); "assign_material_to_activity.*","m.description as material_name", "m.uom as uom"
return Datatables::of($data) )
->addIndexColumn() ->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id")
->addColumn('action', function($row){ ->where('assign_material_to_activity.activity_id', $id_activity)
$actionBtn = '<a href="javascript:void(0)" data-id="'.$row->id.'" class="delete btn btn-danger btn-sm btn-material-delete"><i class="fa fa-trash"></i></a>'; ->where('assign_material_to_activity.type', $type)
return $actionBtn; ->orderBy('plan_date', 'desc')
}) ->get();
->rawColumns(['action'])->make(true); return Datatables::of($data)
} ->addIndexColumn()
->addColumn('action', function($row){
public function datatablesForReportActivity(Request $request){ $actionBtn = '<a href="javascript:void(0)" data-id="'.$row->id.'" class="delete btn btn-danger btn-sm btn-material-delete"><i class="fa fa-trash"></i></a>';
$id_activity = $request->query('idact'); return $actionBtn;
$data = })
AssignMaterial::select( ->rawColumns(['action'])->make(true);
AssignMaterial::raw('SUM(qty_planning) as qty_planning'), }
"m.description as material_name",
"assign_material_to_activity.activity_id", public function datatablesForReportActivity(Request $request){
"assign_material_to_activity.type" $id_activity = $request->query('idact');
// "assign_material_to_activity.material_id", $data =
) AssignMaterial::select(
->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id") AssignMaterial::raw('SUM(qty_planning) as qty_planning'),
->groupBy("m.description") "m.description as material_name",
->groupBy("assign_material_to_activity.activity_id") "assign_material_to_activity.activity_id",
->groupBy("assign_material_to_activity.type") "assign_material_to_activity.type"
->where("assign_material_to_activity.activity_id", $id_activity)->get(); // "assign_material_to_activity.material_id",
return Datatables::of($data) )
->addIndexColumn() ->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id")
->addColumn('qty_sum', function($row){ ->groupBy("m.description")
$val_qty_act = AssignMaterial::select(ReportActivityMaterial::raw('SUM(ram.qty) as qty_sum'),"m.description as material_name1") ->groupBy("assign_material_to_activity.activity_id")
->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id") ->groupBy("assign_material_to_activity.type")
->join("report_activity_material as ram", "ram.assign_material_id", "=", "assign_material_to_activity.id") ->where("assign_material_to_activity.activity_id", $id_activity)->get();
->groupBy("m.description") return Datatables::of($data)
->where("m.description", strval($row->material_name)) ->addIndexColumn()
->where("ram.activity_id", $row->activity_id)->first(); ->addColumn('qty_sum', function($row){
return $val_qty_act ? $val_qty_act->qty_sum : '-'; $val_qty_act = AssignMaterial::select(ReportActivityMaterial::raw('SUM(ram.qty) as qty_sum'),"m.description as material_name1")
}) ->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id")
->addColumn('status_activity', function($row){ ->join("report_activity_material as ram", "ram.assign_material_id", "=", "assign_material_to_activity.id")
$val_status = AssignMaterial::select("status_activity") ->groupBy("m.description")
->join('m_req_material as m', 'm.id', '=', 'assign_material_to_activity.material_id') ->where("m.description", strval($row->material_name))
->where('m.description', '=', $row->material_name) ->where("ram.activity_id", $row->activity_id)->first();
->where("assign_material_to_activity.activity_id", $row->activity_id)->first(); return $val_qty_act ? $val_qty_act->qty_sum : '-';
return $val_status ? $val_status->status_activity : null; })
}) ->addColumn('status_activity', function($row){
->addColumn('start_activity', function($row){ $val_status = AssignMaterial::select("status_activity")
$val_start = AssignMaterial::select("start_activity") ->join('m_req_material as m', 'm.id', '=', 'assign_material_to_activity.material_id')
->join('m_req_material as m', 'm.id', '=', 'assign_material_to_activity.material_id') ->where('m.description', '=', $row->material_name)
->where('m.description', '=', $row->material_name) ->where("assign_material_to_activity.activity_id", $row->activity_id)->first();
->where("assign_material_to_activity.activity_id", $row->activity_id)->first(); return $val_status ? $val_status->status_activity : null;
return $val_start ? $val_start->start_activity : null; })
}) ->addColumn('start_activity', function($row){
->addColumn('finish_activity', function($row){ $val_start = AssignMaterial::select("start_activity")
$val_finish = AssignMaterial::select("finish_activity") ->join('m_req_material as m', 'm.id', '=', 'assign_material_to_activity.material_id')
->join('m_req_material as m', 'm.id', '=', 'assign_material_to_activity.material_id') ->where('m.description', '=', $row->material_name)
->where('m.description', '=', $row->material_name) ->where("assign_material_to_activity.activity_id", $row->activity_id)->first();
->where("assign_material_to_activity.activity_id", $row->activity_id)->first(); return $val_start ? $val_start->start_activity : null;
return $val_finish ? $val_finish->finish_activity : null; })
}) ->addColumn('finish_activity', function($row){
->addColumn('uom', function($row){ $val_finish = AssignMaterial::select("finish_activity")
$val_uom = RequestMaterial::select("uom") ->join('m_req_material as m', 'm.id', '=', 'assign_material_to_activity.material_id')
->where('description', '=', $row->material_name)->first(); ->where('m.description', '=', $row->material_name)
return $val_uom ? $val_uom->uom : null; ->where("assign_material_to_activity.activity_id", $row->activity_id)->first();
}) return $val_finish ? $val_finish->finish_activity : null;
->addColumn('assign_material_id', function($row){ })
$assignMaterial =AssignMaterial::select('assign_material_to_activity.id')->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id") ->addColumn('uom', function($row){
->where('activity_id', $row->activity_id)->where('m.description', $row->material_name)->first(); $val_uom = RequestMaterial::select("uom")
return $assignMaterial ? $assignMaterial->id : null; ->where('description', '=', $row->material_name)->first();
}) return $val_uom ? $val_uom->uom : null;
->addColumn('action', function($row){ })
$dataPlan = AssignMaterial::select('assign_material_to_activity.id')->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id") ->addColumn('assign_material_id', function($row){
->where('activity_id', $row->activity_id)->where('m.description', $row->material_name)->first(); $assignMaterial =AssignMaterial::select('assign_material_to_activity.id')->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id")
$actionBtn = '<a href="javascript:void(0)" data-id="'.$dataPlan->id.'" data-activity_id="'.$row->activity_id.'" data-material-name="'.$row->material_name.'" class="primary btn btn-primary btn-sm btn-lihat-plan" data-toggle="tooltip" title="Lihat Plan" data-placement="top"><i class="fa fa-align-justify"></i></a>'; ->where('activity_id', $row->activity_id)->where('m.description', $row->material_name)->first();
$actionBtn .= '<a href="javascript:void(0)" data-id="'.$dataPlan->id.'" data-activity_id="'.$row->activity_id.'" data-material-name="'.$row->material_name.'" class="warning btn btn-warning btn-sm btn-lihat-actual" data-toggle="tooltip" title="Input Progress" data-placement="top"><i class="fa fa-edit" aria-hidden="true"></i></a>'; return $assignMaterial ? $assignMaterial->id : null;
return $actionBtn; })
}) ->addColumn('action', function($row){
->rawColumns(['action'])->make(true); $dataPlan = AssignMaterial::select('assign_material_to_activity.id')->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id")
} ->where('activity_id', $row->activity_id)->where('m.description', $row->material_name)->first();
$actionBtn = '<a href="javascript:void(0)" data-id="'.$dataPlan->id.'" data-activity_id="'.$row->activity_id.'" data-material-name="'.$row->material_name.'" class="primary btn btn-primary btn-sm btn-lihat-plan" data-toggle="tooltip" title="Lihat Plan" data-placement="top"><i class="fa fa-align-justify"></i></a>';
public function ForReportActivityByMaterial(Request $request){ $actionBtn .= '<a href="javascript:void(0)" data-id="'.$dataPlan->id.'" data-activity_id="'.$row->activity_id.'" data-material-name="'.$row->material_name.'" class="warning btn btn-warning btn-sm btn-lihat-actual" data-toggle="tooltip" title="Input Progress" data-placement="top"><i class="fa fa-edit" aria-hidden="true"></i></a>';
$id_activity = $request->idact; return $actionBtn;
$data = AssignMaterial::select("assign_material_to_activity.*","m.description as material_name", "m.uom as uom") })
->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id") ->rawColumns(['action'])->make(true);
->where('assign_material_to_activity.activity_id', $id_activity)->get(); }
foreach ($data as $key) {
$val_qty_sum = ReportActivityMaterial::where('assign_material_id', '=', $key->id)->sum("qty"); public function ForReportActivityByMaterial(Request $request){
} $id_activity = $request->idact;
$countData = $data->count(); $data = AssignMaterial::select("assign_material_to_activity.*","m.description as material_name", "m.uom as uom")
if($data){ ->join("m_req_material as m", "m.id", "=", "assign_material_to_activity.material_id")
return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); ->where('assign_material_to_activity.activity_id', $id_activity)->get();
}else{ foreach ($data as $key) {
return response()->json(['status'=>'failed','message'=>'failed get Assign material, please try again later!','code'=>400], 400); $val_qty_sum = ReportActivityMaterial::where('assign_material_id', '=', $key->id)->sum("qty");
} }
} $countData = $data->count();
} if($data){
return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200);
}else{
return response()->json(['status'=>'failed','message'=>'failed get Assign material, please try again later!','code'=>400], 400);
}
}
}

18
app/Http/Controllers/ReportActivityMaterialController.php

@ -59,6 +59,14 @@ class ReportActivityMaterialController extends Controller
"updated_by" => $this->currentName "updated_by" => $this->currentName
); );
Activity::where('id', $request->activity_id)->update($dataUpdate); Activity::where('id', $request->activity_id)->update($dataUpdate);
} else {
$sumAssignMaterial = AssignMaterial::where('activity_id', $request->activity_id)->sum('qty_planning');
$sumReportActivityMaterial = ReportActivityMaterial::where('activity_id', $request->activity_id)->sum('qty');
$dataUpdate = array(
"persentase_progress" => $sumReportActivityMaterial/$sumAssignMaterial*100,
"updated_by" => $this->currentName
);
Activity::where('id', $request->activity_id)->update($dataUpdate);
} }
return response()->json(['status'=>'success','message'=>'Update data status successfully ', 'code'=>200]); return response()->json(['status'=>'success','message'=>'Update data status successfully ', 'code'=>200]);
@ -114,12 +122,14 @@ class ReportActivityMaterialController extends Controller
->addIndexColumn() ->addIndexColumn()
->addColumn('action', function($row){ ->addColumn('action', function($row){
$actionBtn = '<a href="javascript:void(0)" data-id="'.$row->id.'" class="info btn btn-info btn-sm btn-ram-image" data-toggle="tooltip" title="Lihat Foto Report" data-placement="top"><i class="fa fa-image"></i></a>'; $actionBtn = '<a href="javascript:void(0)" data-id="'.$row->id.'" class="info btn btn-info btn-sm btn-ram-image" data-toggle="tooltip" title="Lihat Foto Report" data-placement="top"><i class="fa fa-image"></i></a>';
$actionBtn .= '<a href="javascript:void(0)" data-id="'.$row->id.'" class="delete btn btn-danger btn-sm btn-ram-delete" data-toggle="tooltip" title="Hapus Report" data-placement="top"><i class="fa fa-trash"></i></a>'; if ($row->status_activity != 'done') {
$actionBtn .= '<a href="javascript:void(0)" data-id="'.$row->id.'" class="delete btn btn-danger btn-sm btn-ram-delete" data-toggle="tooltip" title="Hapus Report" data-placement="top"><i class="fa fa-trash"></i></a>';
}
return $actionBtn; return $actionBtn;
}) })
->rawColumns(['action'])->make(true); ->rawColumns(['action'])->make(true);
}else{ }else{
$data = ReportActivityMaterial::select("report_activity_material.*", "u.name as human_resource") $data = ReportActivityMaterial::select("report_activity_material.*", "u.name as human_resource", "amta.status_activity")
->join("assign_material_to_activity as amta", "amta.id", "=", "report_activity_material.assign_material_id") ->join("assign_material_to_activity as amta", "amta.id", "=", "report_activity_material.assign_material_id")
->join("m_req_material as m", "m.id", "=", "amta.material_id") ->join("m_req_material as m", "m.id", "=", "amta.material_id")
->join("m_users as u", "u.id", "=", "report_activity_material.user_id") ->join("m_users as u", "u.id", "=", "report_activity_material.user_id")
@ -131,7 +141,9 @@ class ReportActivityMaterialController extends Controller
->addIndexColumn() ->addIndexColumn()
->addColumn('action', function($row){ ->addColumn('action', function($row){
$actionBtn = '<a href="javascript:void(0)" data-id="'.$row->id.'" class="info btn btn-info btn-sm btn-ram-image" data-toggle="tooltip" title="Lihat Foto Report" data-placement="top"><i class="fa fa-image"></i></a>'; $actionBtn = '<a href="javascript:void(0)" data-id="'.$row->id.'" class="info btn btn-info btn-sm btn-ram-image" data-toggle="tooltip" title="Lihat Foto Report" data-placement="top"><i class="fa fa-image"></i></a>';
$actionBtn .= '<a href="javascript:void(0)" data-id="'.$row->id.'" class="delete btn btn-danger btn-sm btn-ram-delete" data-toggle="tooltip" title="Hapus Report" data-placement="top"><i class="fa fa-trash"></i></a>'; if ($row->status_activity != 'done') {
$actionBtn .= '<a href="javascript:void(0)" data-id="'.$row->id.'" class="delete btn btn-danger btn-sm btn-ram-delete" data-toggle="tooltip" title="Hapus Report" data-placement="top"><i class="fa fa-trash"></i></a>';
}
return $actionBtn; return $actionBtn;
}) })
->rawColumns(['action'])->make(true); ->rawColumns(['action'])->make(true);

146
app/Models/ReportActivityMaterial.php

@ -1,73 +1,73 @@
<?php <?php
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use App\Models\Activity; use App\Models\Activity;
use App\Models\AssignMaterial; use App\Models\AssignMaterial;
use Carbon\Carbon; use Carbon\Carbon;
class ReportActivityMaterial extends Model class ReportActivityMaterial extends Model
{ {
protected $table = 'report_activity_material'; protected $table = 'report_activity_material';
const CREATED_AT = 'created_at'; const CREATED_AT = 'created_at';
const UPDATED_AT = 'updated_at'; const UPDATED_AT = 'updated_at';
protected $fillable = [ protected $fillable = [
'activity_id', 'user_id', 'qty', 'lat', 'lon','assign_material_id', 'activity_id', 'user_id', 'qty', 'lat', 'lon','assign_material_id',
'report_date', 'description', 'created_at', 'created_by', 'updated_at', 'updated_by' 'report_date', 'description', 'created_at', 'created_by', 'updated_at', 'updated_by'
]; ];
public function getReportDateAttribute($value) public function getReportDateAttribute($value)
{ {
return Carbon::createFromTimestamp(strtotime($value)) return Carbon::createFromTimestamp(strtotime($value))
->timezone(env('APP_TIMEZONE')) ->timezone(env('APP_TIMEZONE'))
->toDateTimeString(); ->toDateTimeString();
} }
public static function boot() { public static function boot() {
parent::boot(); parent::boot();
static::created(function($data) { static::created(function($data) {
$activity = Activity::find($data->activity_id); $activity = Activity::find($data->activity_id);
$assignedMaterial = AssignMaterial::find($data->assign_material_id); $assignedMaterial = AssignMaterial::find($data->assign_material_id);
$biayaActual = $activity->biaya_actual + floatval($assignedMaterial->budget) * floatval($data->qty); $biayaActual = $activity->biaya_actual + floatval($assignedMaterial->budget) * floatval($data->qty);
$dataPlan = AssignMaterial::where('activity_id', $activity->id)->get(); $dataPlan = AssignMaterial::where('activity_id', $activity->id)->get();
if($dataPlan[0]->status_activity == 'done'){ if($dataPlan[0]->status_activity == 'done'){
$percentage = 100; $percentage = 100;
} else { } else {
$totalPlan = $dataPlan->sum('qty_planning'); $totalPlan = $dataPlan->sum('qty_planning');
$totalVolumeActual = ReportActivityMaterial::where('activity_id', '=', $activity->id)->sum("qty"); $totalVolumeActual = ReportActivityMaterial::where('activity_id', '=', $activity->id)->sum("qty");
$percentage = ($totalVolumeActual * 100) / $totalPlan; $percentage = ($totalVolumeActual * 100) / $totalPlan;
$percentage = $percentage >= config('app.max_percentage_not_done') ? config('app.max_percentage_not_done') : $percentage; $percentage = $percentage >= config('app.max_percentage_not_done') ? config('app.max_percentage_not_done') : $percentage;
} }
$activity->update([ $activity->update([
"persentase_progress" => $percentage, "persentase_progress" => $percentage,
"biaya_actual" => $biayaActual, "biaya_actual" => $biayaActual,
]); ]);
$activity->save(); $activity->save();
}); });
static::deleted(function($data) { static::deleted(function($data) {
$activity = Activity::find($data->activity_id); $activity = Activity::find($data->activity_id);
$assignedMaterial = AssignMaterial::find($data->assign_material_id); $assignedMaterial = AssignMaterial::find($data->assign_material_id);
$activity->biaya_actual -= floatval($assignedMaterial->budget) * floatval($data->qty); $activity->biaya_actual -= floatval($assignedMaterial->budget) * floatval($data->qty);
$dataPlan = AssignMaterial::where('activity_id', $activity->id)->get(); $dataPlan = AssignMaterial::where('activity_id', $activity->id)->get();
$totalPlan = $dataPlan->sum('qty_planning'); $totalPlan = $dataPlan->sum('qty_planning');
$totalVolumeActual = ReportActivityMaterial::where('activity_id', '=', $activity->id)->sum("qty"); $totalVolumeActual = ReportActivityMaterial::where('activity_id', '=', $activity->id)->sum("qty");
$percentage = ($totalVolumeActual * 100) / $totalPlan; $percentage = ($totalVolumeActual * 100) / $totalPlan;
$activity->persentase_progress = $percentage >= config('app.max_percentage_not_done') ? config('app.max_percentage_not_done') : $percentage; $activity->persentase_progress = $percentage >= config('app.max_percentage_not_done') ? config('app.max_percentage_not_done') : $percentage;
$activity->save(); $activity->save();
}); });
} }
} }

Loading…
Cancel
Save