diff --git a/app/Http/Controllers/AutoSerahanController.php b/app/Http/Controllers/AutoSerahanController.php new file mode 100644 index 0000000..a5208a1 --- /dev/null +++ b/app/Http/Controllers/AutoSerahanController.php @@ -0,0 +1,288 @@ +where('approval_status', 'PENDING'); + if (isset($request->kodcaw)) $query->where('kodcaw', '=', $request->kodcaw); + $listapproval = $query->get(); + + return response()->json($listapproval,200); + } + + public function createAutoSerahan(Request $request) + { + $current = Carbon::now(); + + DB::connection('mysql7')->beginTransaction(); + + try{ + + $deno_pendser = DenoPendSer::on('mysql7')->create([ + 'tarikh' => $current->toDateString(), + 'masa' => $current->toTimeString(), + 'kodcaw' => $request->kodcaw, + 'kodlaluan' => $request->teller, + 'amaun' => $request->amaun, + 'bd1' => $request->bd1, + 'bd5' => $request->bd5, + 'bd10' => $request->bd10, + 'bd20' => $request->bd20, + 'bd50' => $request->bd50, + 'bd100' => $request->bd100, + 'txtring1' => $request->txtring1, + 'txtring5' => $request->txtring5, + 'txtring10' => $request->txtring10, + 'txtring20' => $request->txtring20, + 'txtring50' => $request->txtring50, + 'txtring100' => $request->txtring100, + 'txtring1000' => $request->txtring1000, + 'txtsen1' => $request->txtsen1, + 'txtsen5' => $request->txtsen5, + 'txtsen10' => $request->txtsen10, + 'txtsen20' => $request->txtsen20, + 'txtsen50' => $request->txtsen50, + 'jenis' =>$request->jenis, + 'recno' =>$request->recno, + 'update' => '0' + ]); + + ApprovalWithdrawal::on('mysql7')->create([ + 'kodcaw' => $request->kodcaw, + 'pc_name' => $request->username, + 'operasi_name' => null, + 'amount' => $request->amount, + 'approval_status' => 'PENDING', + 'approval_timestamp' => null, + 'gldetail_id' => 0, + 'denopendser_id' => $deno_pendser->id, + 'updated_serahan_v2' => 0, + 'updated_pendahuluan_v3' => 0, + 'created_at' => $current, + 'updated_at' => $current, + ]); + + DB::connection('mysql7')->commit(); + return response()->json('success'); + }catch(\Exception $e){ + DB::connection('mysql7')->rollBack(); + return response()->json($e->getMessage()); + } + } + + private function autoSerahanEngine($jenis, $request){ + $current = Carbon::now(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); + $vault = Vault::on($cawangan['mysql'])->where('kodcaw','=',$request->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',$request->id)->first(); + + if($jenis == 'pendahuluan'){ + + $totalpendahuluan = $request->amaun + $pendahuluan; + + $bakiakhir = $bakiawal - $keluar + $masuk + $totalpendahuluan - $serahan - $totpanjaran; + + $denopendser = DenoPendSer::on('mysql7')->where('id',$approval['denopendser_id'])->first(); + + $this->updateDenominasi($request->kodcaw,$denopendser); + + $gldetail = GlDetail::on($cawangan['mysql'])->create([ + 'kodcaw' => $request->kodcaw, + 'tarikh' => $current->toDateString(), + 'dtacct' => $request->dtacct, + 'ktacct' => $request->ktacct, + 'descpt' => $request->keterangan, + 'pendahuluan' => $request->amaun, + 'teller' => $request->teller . ' (AUTO V3)', + 'date_created' => $current + ]); + + Vault::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()],['kodcaw','=', $kodcaw]])->update(array( + 'pendahuluan' => $totalpendahuluan, + 'bakiakhir' => $bakiakhir, + 'bakieod' => $bakiakhir + )); + + ApprovalWithdrawal::on('mysql7')->where('id',$request->id)->update(array( + 'updated_pendahuluan_v3' => 1, + 'gldetail_id' => $gldetail->id + )); + + }else if($jenis == 'serahan'){ + + $totalserahan = $request->amaun + $serahan; + + $bakiakhir = $bakiawal - $keluar + $masuk + $pendahuluan - $totalserahan - $totpanjaran; + + $denopendser = DenoPendSer::on('mysql7')->where('id',$approval['denopendser_id'])->first(); + + $this->updateDenominasi($request->kodcaw,$denopendser); + + $gldetail = GlDetail::on($cawangan['mysql'])->create([ + 'kodcaw' => $request->kodcaw, + 'tarikh' => $current->toDateString(), + 'dtacct' => $request->dtacct, + 'ktacct' => $request->ktacct, + 'descpt' => $request->keterangan, + 'serahan' => $request->amaun, + 'teller' => $request->teller . ' (AUTO V3)', + 'date_created' => $current + ]); + + Vault::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()],['kodcaw','=', $kodcaw]])->update(array( + 'serahan' => $totalserahan, + 'bakiakhir' => $bakiakhir, + 'bakieod' => $bakiakhir + )); + + ApprovalWithdrawal::on('mysql7')->where('id',$request->id)->update(array( + 'updated_serahan_v2' => 1, + 'gldetail_id' => $gldetail->id + )); + + } + + // Commit transactions + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + + }catch(\Exception $e){ + DB::connection($cawangan['mysql'])->rollBack(); + DB::connection('mysql7')->rollBack(); + throw $e; + } + } + + public function autoSerahanApproval(Request $request){ + $current = Carbon::now(); + + DB::connection('mysql7')->beginTransaction(); + + try{ + $approval = ApprovalWithdrawal::on('mysql7')->where('id',$request->id)->first(); + + if($approval->approval_status == 'PENDING' && $request->sendApproval == 'ACCEPTED'){ + $approval->operasi_name = $request->operasi_name; + $approval->approval_status = 'APPROVED'; + $approval->approval_timestamp = $current; + $approval->save(); + + $updated_serahan = $this->autoSerahanEngine('serahan',$request); + $updated_pendahuluan = $this->autoSerahanEngine('pendahuluan',$request); + + DB::connection('mysql7')->commit(); + return response()->json('success',200); + }else{ + $approval->operasi_name = $request->operasi_name; + $approval->approval_status = 'REJECTED'; + $approval->approval_timestamp = $current; + $approval->save(); + + DB::connection('mysql7')->commit(); + return response()->json('rejected',200); + } + + }catch(\Exception $e){ + DB::connection('mysql7')->rollBack(); + return response()->json($e->getMessage()); + } + } + + private function updateDenominasi($kodcaw,$denopendser){ + $current = Carbon::now(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + $k1 = $denopendser['k1']; + $txtring1 = $denopendser['k1'] * 1; + $k5 = $denopendser['k5']; + $txtring5 = $denopendser['k5'] * 5; + $k01 = $denopendser['k01']; + $txtsen1 = $denopendser['k01'] * 0.01; + $k05 = $denopendser['k05']; + $txtsen5 = $denopendser['k05'] * 0.05; + $k010 = $denopendser['k010']; + $txtsen10 = $denopendser['k010'] * 0.10; + $k020 = $denopendser['k020']; + $txtsen20 = $denopendser['k020'] * 0.20; + $k050 = $denopendser['k050']; + $txtsen50 = $denopendser['k050'] * 0.50; + $k10 = $denopendser['k10']; + $txtring10 = $denopendser['k10'] * 10; + $k20 = $denopendser['k20']; + $txtring20 = $denopendser['k20'] * 20; + $k50 = $denopendser['k50']; + $txtring50 = $denopendser['k50'] * 50; + $k100 = $denopendser['k100']; + $txtring100 = $denopendser['k100'] * 100; + + $totalkeping = $k01 + $k05 + $k010 + $k020 + $k050 + $k1 + $k5 + $k10 + $k20 + $k50 + $k100; + + Denominasi::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()]])->update(array( + 'bd1' => 0, + 'b1'=> 0, + 'bd5'=> 0, + 'b5'=> 0, + 'bd10'=> 0, + 'b10'=> 0, + 'bd20'=> 0, + 'b20'=> 0, + 'bd50'=> 0, + 'b50'=> 0, + 'bd100'=> 0, + 'b100'=> 0, + 'txtring1'=> $request->txtring1, + 'k1'=> $k1, + 'txtring5'=> $request->txtring5, + 'k5'=> $k5, + 'txtsen1'=> $request->txtsen1, + 'k01'=> $k01, + 'txtsen5'=> $request->txtsen5, + 'k05'=> $k05, + 'txtsen10'=> $request->txtsen10, + 'k010'=> $k010, + 'txtsen20'=> $request->txtsen20, + 'k020'=> $k020, + 'txtsen50'=> $request->txtsen50, + 'k050'=> $k050, + 'txtring10'=> $request->txtring10, + 'k10'=> $k10, + 'txtring20'=> $request->txtring20, + 'k20'=> $k20, + 'txtring50'=> $request->txtring50, + 'k50'=> $k50, + 'txtring100'=> $request->txtring100, + 'k100'=> $k100, + 'txtring1000'=> $request->txtring1000, + 'k1000'=> $request->k1000, + 'jumlahbundle'=> 0, + 'txtjumlah'=> $totalkeping, + 'jumlahkeping' => $totalkeping + )); + } +} \ No newline at end of file