288 lines
11 KiB
PHP
288 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\ApprovalWithdrawal;
|
|
use App\Bank;
|
|
use App\Cawangan;
|
|
use App\Denominasi;
|
|
use App\DenoPendSer;
|
|
use App\GlDetail;
|
|
use App\Vault;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class AutoSerahanController extends Controller
|
|
{
|
|
public function getAutoSerahan(Request $request){
|
|
$query = ApprovalWithdrawal::on('mysql7')->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
|
|
));
|
|
}
|
|
} |