From d236ca226804368162cd13b0f16fca606675be6f Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Sun, 16 Mar 2025 15:42:42 +0800 Subject: [PATCH] added delete autoserahan and change apporvalwithdraw --- app/ApprovalWithdrawal.php | 1 + .../Controllers/AutoSerahanController.php | 213 ++++++++++++++---- routes/web.php | 3 + 3 files changed, 172 insertions(+), 45 deletions(-) diff --git a/app/ApprovalWithdrawal.php b/app/ApprovalWithdrawal.php index b52e845..b62d08f 100644 --- a/app/ApprovalWithdrawal.php +++ b/app/ApprovalWithdrawal.php @@ -26,6 +26,7 @@ class ApprovalWithdrawal extends Model 'gldetail_id_v2', 'denopendser_id_v3', 'gldetail_id_v3', + 'action', 'approval_timestamp', ]; diff --git a/app/Http/Controllers/AutoSerahanController.php b/app/Http/Controllers/AutoSerahanController.php index 4c4cc54..e2fdb32 100644 --- a/app/Http/Controllers/AutoSerahanController.php +++ b/app/Http/Controllers/AutoSerahanController.php @@ -24,6 +24,48 @@ class AutoSerahanController extends Controller return response()->json($listapproval,200); } + public function deleteAutoSerahan(Request $request){ + $current = Carbon::now(); + + DB::connection('mysql7')->beginTransaction(); + + try{ + if($request->version == 'v3'){ + $listapproval = ApprovalWithdrawal::on('mysql7') + ->where('gldetail_id_v2',$request->recno) + ->where('approval_status',"APPROVED") + ->where('action','create') + ->where('updated_serahan_v2',1) + ->where('updated_pendahuluan_v3',1) + ->get(); + + $approval = ApprovalWithdrawal::on('mysql7')->create([ + 'kodcaw' => ($request->version == 'v3') ? $this->interchangeCawangan($request->kodcaw,$request->version) : $request->kodcaw, + 'action' => 'delete', + 'pc_name' => $request->teller, + 'operasi_name' => null, + 'amount' => $request->amaun, + 'approval_status' => 'PENDING', + 'approval_timestamp' => null, + 'gldetail_id_v3' => $listapproval['gldetail_id_v3'], + 'gldetail_id_v2' => isset($request->recno) ? $request->recno : 0, + 'denopendser_id_v3' => 0, + 'denopendser_id_v2' => 0, + 'updated_serahan_v2' => 0, + 'updated_pendahuluan_v3' => 0, + 'created_at' => $current, + 'updated_at' => $current, + ]); + DB::connection('mysql7')->commit(); + return response()->json(['status' => 'success','id' => $approval->id]); + } + + }catch(\Exception $e){ + DB::connection('mysql7')->rollBack(); + return response()->json(['status' => 'failed','message' => $e->getMessage()]); + } + } + public function createAutoSerahan(Request $request) { $current = Carbon::now(); @@ -64,6 +106,7 @@ class AutoSerahanController extends Controller if($request->version == 'v3'){ $approval = ApprovalWithdrawal::on('mysql7')->create([ 'kodcaw' => ($request->version == 'v3') ? $this->interchangeCawangan($request->kodcaw,$request->version) : $request->kodcaw, + 'action' => 'create', 'pc_name' => $request->teller, 'operasi_name' => null, 'amount' => $request->amaun, @@ -95,11 +138,11 @@ class AutoSerahanController extends Controller } } - private function autoSerahanEngine($jenis, $kodcaw,$teller,$amaun,$id,$denopendser_id){ + private function autoSerahanEngine($jenis, $kodcaw,$teller,$amaun,$id,$denopendser_id){ $current = Carbon::now(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault = Vault::on($cawangan['mysql'])->where('kodcaw','=',$kodcaw)->where('tarikh','=',$current->toDateString())->orderby('tarikh','desc')->first(); - + $bakiawal = $vault['bakiawal']; $keluar = $vault['keluar']; $masuk = $vault['masuk']; @@ -107,10 +150,10 @@ class AutoSerahanController extends Controller $pendahuluan = $vault['pendahuluan']; $serahan = $vault['serahan']; $totpanjaran = $vault['totpanjar']; - + DB::connection($cawangan['mysql'])->beginTransaction(); DB::connection('mysql7')->beginTransaction(); - + try{ $approval = ApprovalWithdrawal::on('mysql7')->where('id',$id)->first(); @@ -153,7 +196,7 @@ class AutoSerahanController extends Controller 'updated_pendahuluan_v3' => 1, 'gldetail_id_v3' => $gldetail->id )); - + }else if($jenis == 'serahan'){ $pendserid = empty($approval) ? $denopendser_id : $approval['denopendser_id_v2']; @@ -188,30 +231,25 @@ class AutoSerahanController extends Controller 'bakieod' => $bakiakhir )); - // ApprovalWithdrawal::on('mysql7')->where('id',$id)->update(array( - // 'updated_serahan_v2' => 1, - // 'gldetail_id_v2' => $gldetail->id - // )); + } + + // Commit transactions + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + return ['status' => 'success','gldetail_id' => $gldetail->id]; - } - - // Commit transactions - DB::connection($cawangan['mysql'])->commit(); - DB::connection('mysql7')->commit(); - return ['status' => 'success','gldetail_id' => $gldetail->id]; - }catch(\Exception $e){ - DB::connection($cawangan['mysql'])->rollBack(); - DB::connection('mysql7')->rollBack(); - throw $e; + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + throw $e; } - } - - public function autoSerahanApproval(Request $request){ + } + + public function autoSerahanApproval(Request $request){ $current = Carbon::now(); - + DB::connection('mysql7')->beginTransaction(); - + try{ $approval = ApprovalWithdrawal::on('mysql7')->where('id',$request->id)->first(); @@ -237,9 +275,9 @@ class AutoSerahanController extends Controller DB::connection('mysql7')->rollBack(); return response()->json(['status' => 'error','message' =>$e->getMessage(), 'line' => $e->getLine()]); } - } + } - private function updateDenominasi($kodcaw,$denopendser,$jenis){ + private function updateDenominasi($kodcaw,$denopendser,$jenis){ $current = Carbon::now(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); @@ -335,9 +373,9 @@ class AutoSerahanController extends Controller 'txtjumlah'=> $totalkeping, 'jumlahkeping' => $totalkeping )); - } + } - public function serahanAutoSerahan(Request $request){ + public function serahanAutoSerahan(Request $request){ $this->checkVault($request->kodcaw,'v2'); $this->checkDenominasi($request->kodcaw,'v2'); @@ -347,9 +385,9 @@ class AutoSerahanController extends Controller $updated_serahan = $this->autoSerahanEngine('serahan',$kodcaw,$request->teller,$request->amaun,$request->id,$request->denopendser_id); return response()->json(['status' => 'success','gldetail_id' => $updated_serahan['gldetail_id']],200); - } + } - public function pendahuluanAutoSerahan(Request $request){ + public function pendahuluanAutoSerahan(Request $request){ $this->checkVault($request->kodcaw,'v3'); $this->checkDenominasi($request->kodcaw,'v3'); @@ -358,28 +396,113 @@ class AutoSerahanController extends Controller $updated_pendahuluan = $this->autoSerahanEngine('pendahuluan',$kodcaw,$request->teller,$request->amaun,$request->id,$request->denopendser_id); - return response()->json(['status' => 'success','gldetail_id' => $updated_pendahuluan['gldetail_id']],200); + return response()->json(['status' => 'success','gldetail_id' => $updated_pendahuluan['gldetail_id']],200); } - public function SetApprovalWithdrawal(Request $request){ + public function removeAutoSerahan(Request $request){ + $this->checkVault($request->kodcaw,'v2'); + $this->checkDenominasi($request->kodcaw,'v2'); - if($request->jenis == 'create'){ - ApprovalWithdrawal::on('mysql7')->where('id', $request->id)->update([ - 'denopendser_id_v2' => $request->deno_id, - ]); + $kodcaw = $this->interchangeCawangan($request->kodcaw,'v2'); - return response()->json(['status' => 'success'],200); - }else{ - ApprovalWithdrawal::on('mysql7')->where('id', $request->id)->update([ - 'updated_serahan_v2' => 1, - 'gldetail_id_v2' => $request->gldetail_id - ]); - return response()->json(['status' => 'success'],200); + $updated_serahan = $this->autoSerahanRemove('pendahuluan',$kodcaw,$request->amaun,$request->id); + + return response()->json($updated_serahan); + + } + + public function removeAutoPendahuluan(Request $request){ + $this->checkVault($request->kodcaw,'v3'); + $this->checkDenominasi($request->kodcaw,'v3'); + + $kodcaw = $this->interchangeCawangan($request->kodcaw,'v3'); + + $updated_pendahuluan = $this->autoSerahanRemove('pendahuluan',$kodcaw,$request->amaun,$request->id); + + return response()->json($updated_pendahuluan); + } + + private function autoSerahanRemove($jenis,$kodcaw,$amaun,$id){ + $current = Carbon::now(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + $vault = Vault::on($cawangan['mysql'])->where('kodcaw','=',$kodcaw)->where('tarikh','=',$current->toDateString())->orderby('tarikh','desc')->first(); + + $bakiawal = $vault['bakiawal']; + $keluar = $vault['keluar']; + $masuk = $vault['masuk']; + $bakiakhir = $vault['bakiakhir']; + $pendahuluan = $vault['pendahuluan']; + $serahan = $vault['serahan']; + $totpanjaran = $vault['totpanjar']; + + DB::connection($cawangan['mysql'])->beginTransaction(); + DB::connection('mysql7')->beginTransaction(); + + try{ + $approval = ApprovalWithdrawal::on('mysql7')->where('id',$id)->first(); + + if($jenis == 'pendahuluan'){ + $totalpendahuluan = $pendahuluan - $amaun; + + $bakiakhir = $bakiawal - $keluar + $masuk + $totalpendahuluan - $serahan - $totpanjaran; + + Vault::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()],['kodcaw','=', $kodcaw]])->update(array( + 'pendahuluan' => $totalpendahuluan, + 'bakiakhir' => $bakiakhir, + 'bakieod' => $bakiakhir + )); + + DenoPendSer::where('no', $approval['denopendser_id_v2'])->delete(); + GlDetail::where('recno', $approval['gldetail_id_v3'])->delete(); + + ApprovalWithdrawal::on('mysql7')->where('id',$id)->update(array( + 'updated_pendahuluan_v3' => 1, + )); + }else{ + $totalserahan = $serahan - $amaun; + + $bakiakhir = $bakiawal - $keluar + $masuk + $pendahuluan - $totalserahan - $totpanjaran; + + Vault::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()],['kodcaw','=', $kodcaw]])->update(array( + 'serahan' => $totalserahan, + 'bakiakhir' => $bakiakhir, + 'bakieod' => $bakiakhir + )); + + DenoPendSer::where('no', $approval['denopendser_id_v2'])->delete(); + GlDetail::where('recno', $approval['gldetail_id_v2'])->delete(); + + ApprovalWithdrawal::on('mysql7')->where('id',$id)->update(array( + 'updated_serahan_v2' => 1, + )); + } + + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + throw $e; } + } - } + public function SetApprovalWithdrawal(Request $request){ - public function getAutoSerahanApproval(Request $request){ + if($request->jenis == 'create'){ + ApprovalWithdrawal::on('mysql7')->where('id', $request->id)->update([ + 'denopendser_id_v2' => $request->deno_id, + ]); + + return response()->json(['status' => 'success'],200); + }else{ + ApprovalWithdrawal::on('mysql7')->where('id', $request->id)->update([ + 'updated_serahan_v2' => 1, + 'gldetail_id_v2' => $request->gldetail_id + ]); + return response()->json(['status' => 'success'],200); + } + + } + + public function getAutoSerahanApproval(Request $request){ $query = ApprovalWithdrawal::on('mysql7')->where('kodcaw',$request->kodcaw)->where('id',$request->id)->first(); return response()->json($query,200); } diff --git a/routes/web.php b/routes/web.php index 575c39a..cf4ee3b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -682,8 +682,11 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('autoserahan/list',['uses'=>'AutoSerahanController@getAutoSerahan']); $router->put('autoserahan/approve',['uses'=>'AutoSerahanController@autoSerahanApproval']); $router->post('autoserahan/create',['uses'=>'AutoSerahanController@createAutoSerahan']); + $router->post('autoserahan/delete',['uses'=>'AutoSerahanController@deleteAutoSerahan']); $router->put('autoserahan/pendahuluan',['uses'=>'AutoSerahanController@pendahuluanAutoSerahan']); $router->put('autoserahan/serahan',['uses'=>'AutoSerahanController@serahanAutoSerahan']); + $router->put('autoserahan/delete/pendahuluan',['uses'=>'AutoSerahanController@pendahuluanAutoSerahan']); + $router->put('autoserahan/delete/serahan',['uses'=>'AutoSerahanController@serahanAutoSerahan']); $router->put('autoserahan/setapproval',['uses'=>'AutoSerahanController@SetApprovalWithdrawal']); $router->get('autoserahan/get',['uses'=>'AutoSerahanController@getAutoSerahanApproval']); $router->get('autoserahan/checkapproval',['uses'=>'AutoSerahanController@checkProsesApproval']);