Merged in hotfix/tunai-add-timestamp (pull request #241)
Hotfix/tunai add timestamp
This commit is contained in:
+1
-1
@@ -13,7 +13,7 @@ class AddTunai extends Model
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = ['tarikh','kodcaw','kodlaluan','tambah','kurang','nota'];
|
||||
protected $fillable = ['tarikh','kodcaw','kodlaluan','tambah','kurang','nota','created_at'];
|
||||
|
||||
public $timestamps = false;
|
||||
/**
|
||||
|
||||
@@ -5,12 +5,49 @@ namespace App\Http\Controllers;
|
||||
use App\CawanganDetail;
|
||||
use App\Cawangan;
|
||||
use App\Denominasi;
|
||||
use App\Services\CashFlow\TellerServices;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Services\Miscellaneous\PanjarServices;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class DenominasiController extends Controller
|
||||
{
|
||||
public function cashdeposit($kodcaw,Request $request){
|
||||
$teller = new TellerServices($kodcaw);
|
||||
$response = $teller->CashDeposit($request);
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function cashwithdraw($kodcaw,Request $request){
|
||||
$teller = new TellerServices($kodcaw);
|
||||
$response = $teller->CashWithdrawals($request);
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function createpanjar($kodcaw,Request $request){
|
||||
$teller = new PanjarServices($kodcaw);
|
||||
$response = $teller->create($request);
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function deletepanjar($kodcaw,Request $request){
|
||||
$teller = new PanjarServices($kodcaw);
|
||||
$response = $teller->delete($request);
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function getPerubatanAmount($kodcaw,Request $request){
|
||||
$teller = new PanjarServices($kodcaw);
|
||||
$response = $teller->getPerubatanAmount($request->tuntutoleh);
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function listdenominasi($kodcaw)
|
||||
{
|
||||
$current = Carbon::now();
|
||||
|
||||
@@ -11,7 +11,7 @@ use App\Denominasi;
|
||||
use App\Vault;
|
||||
use Illuminate\Http\Request;
|
||||
use Carbon\Carbon;
|
||||
|
||||
use Illuminate\Support\Facades\Log;
|
||||
class TunaiController extends Controller
|
||||
{
|
||||
|
||||
@@ -194,7 +194,28 @@ class TunaiController extends Controller
|
||||
$current = new Carbon();
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
||||
|
||||
//Same Note e.g P1 and S1
|
||||
$same_note = AddTunai::on($cawangan['mysql'])
|
||||
->where('kodlaluan', $request->kodlaluan)
|
||||
->where('nota',$request->nota)
|
||||
->where('tarikh',$current->toDateString())->first();
|
||||
|
||||
if($same_note){
|
||||
Log::error('Error: same-note :' . $kodcaw . ': Name :' . $request->kodlaluan);
|
||||
return 'same-note';
|
||||
}
|
||||
|
||||
//Time Interval
|
||||
$latestRecord = AddTunai::on($cawangan['mysql'])->where('kodlaluan', $request->kodlaluan)->latest()->first();
|
||||
if($latestRecord){
|
||||
$time = Carbon::parse($latestRecord->created_at);
|
||||
$time_end = $time->copy()->addMinutes(1);
|
||||
|
||||
if($current->between($time,$time_end)){
|
||||
Log::error('Error: within 1 minute :' . $kodcaw . ': Name :' . $request->kodlaluan);
|
||||
return 'within 1 minute';
|
||||
}
|
||||
}
|
||||
|
||||
$addtunai=AddTunai::on($cawangan['mysql'])->create([
|
||||
|
||||
@@ -203,7 +224,8 @@ class TunaiController extends Controller
|
||||
'kodlaluan'=>$request->kodlaluan,
|
||||
'tambah'=>$request->tambah,
|
||||
'kurang'=>$request->kurang,
|
||||
'nota'=>$request->nota
|
||||
'nota'=>$request->nota,
|
||||
'created_at'=>$current
|
||||
]);
|
||||
|
||||
return response()->json($addtunai,201);
|
||||
@@ -269,6 +291,33 @@ class TunaiController extends Controller
|
||||
return response()->json($addtunai);
|
||||
}
|
||||
|
||||
public function updateRequestTellerDeno($kodcaw,Request $request){
|
||||
|
||||
$requestteller = RequestTeller::on('mysql7')->where([['no','=',$request->no],['kodcaw','=',$kodcaw],['kodlaluan','=',$request->kodlaluan],['update','=',0]])->update(array(
|
||||
'update' => 1,
|
||||
'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,
|
||||
) );
|
||||
|
||||
return response()->json($requestteller);
|
||||
}
|
||||
|
||||
public function getRequestTeller($kodcaw)
|
||||
{
|
||||
|
||||
@@ -290,6 +339,15 @@ class TunaiController extends Controller
|
||||
return response()->json($requestteller);
|
||||
}
|
||||
|
||||
public function getRequestTellerByRecno($kodcaw,Request $request){
|
||||
$current = Carbon::now();
|
||||
$current = new Carbon();
|
||||
|
||||
$requestteller=RequestTeller::on('mysql7')->where([['kodcaw','=',$kodcaw],['update','=',1],['recno','=',$request->recno],['kodlaluan','=',$request->teller]])->get();
|
||||
|
||||
return response()->json($requestteller);
|
||||
}
|
||||
|
||||
public function getRequestTellerLaporanSerahanBerkala($kodcaw,Request $request)
|
||||
{
|
||||
|
||||
@@ -644,4 +702,12 @@ class TunaiController extends Controller
|
||||
|
||||
return response()->json($requestteller);
|
||||
}
|
||||
|
||||
public function getAccStatement($kodcaw, Request $request){
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
|
||||
|
||||
$addtunai = AddTunai::on($cawangan['mysql'])->where('tarikh',$request->tarikh)->where('kodlaluan',$request->teller)->get();
|
||||
|
||||
return $addtunai;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,434 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\CashFlow;
|
||||
|
||||
use App\AddTunai;
|
||||
use App\Audit;
|
||||
use App\Cawangan;
|
||||
use App\Denominasi;
|
||||
use App\DenoPanjar;
|
||||
use App\Panjar;
|
||||
use App\RequestTeller;
|
||||
use App\Tunai;
|
||||
use App\Vault;
|
||||
use Carbon\Carbon;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class TellerServices
|
||||
{
|
||||
protected $cawangan;
|
||||
|
||||
public function __construct($kodcaw){
|
||||
$this->cawangan = $kodcaw;
|
||||
}
|
||||
|
||||
private function CheckTunai(Request $request){
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->cawangan)->first();
|
||||
$current = Carbon::now();
|
||||
$current = new Carbon();
|
||||
|
||||
try{
|
||||
/* Checking Status Data include Tunai */
|
||||
$tunai = Tunai::on($cawangan['mysql'])
|
||||
->where([['kodcaw','=',$this->cawangan],['tarikh','=',$current->toDateString()],['kodlaluan','=',$request->teller]]);
|
||||
$tunai = optional($tunai->first())->toArray();
|
||||
|
||||
if(empty($tunai)){
|
||||
// Create transaction of cash in teller
|
||||
$tunai = Tunai::on($cawangan['mysql'])->create([
|
||||
'tarikh' => $current->toDateString(),
|
||||
'kodcaw'=> $this->cawangan,
|
||||
'kodlaluan'=>$request->teller,
|
||||
'bakiawal'=>$request->bakiawal,
|
||||
'masuk'=>$request->masuk,
|
||||
'yuran'=>$request->yuran,
|
||||
'keluar'=>$request->keluar,
|
||||
'baki'=>$request->baki,
|
||||
'tambah'=>$request->amt,
|
||||
'kurang'=>$request->kurang
|
||||
]);
|
||||
}
|
||||
|
||||
} catch (\Exception $e) {
|
||||
DB::connection($cawangan['mysql'])->rollBack();
|
||||
|
||||
// Handle the exception or re-throw
|
||||
throw $e;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private function checkAddTunai(Request $request){
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->cawangan)->first();
|
||||
$current = Carbon::now();
|
||||
$current = new Carbon();
|
||||
|
||||
/* Checking AddTunai */
|
||||
|
||||
//Same Note e.g P1 and S1
|
||||
$same_note = AddTunai::on($cawangan['mysql'])
|
||||
->where('kodlaluan', $request->teller)
|
||||
->where('nota',$request->nota)
|
||||
->where('tarikh',$current->toDateString())->first();
|
||||
|
||||
if($same_note){
|
||||
//Throw this
|
||||
Log::error('Error: same-note :' . $this->cawangan . ': Name :' . $request->teller);
|
||||
return 'same-note';
|
||||
}
|
||||
|
||||
//Time Interval
|
||||
$latestRecord = AddTunai::on($cawangan['mysql'])->where('kodlaluan', $request->teller)->latest()->first();
|
||||
if($latestRecord){
|
||||
$time = Carbon::parse($latestRecord->created_at);
|
||||
$time_end = $time->copy()->addMinutes(1);
|
||||
|
||||
if($current->between($time,$time_end)){
|
||||
//Throw this
|
||||
Log::error('Error: within 1 minute :' . $this->cawangan . ': Name :' . $request->teller);
|
||||
return 'within 1 minute';
|
||||
}
|
||||
}
|
||||
|
||||
return 'success';
|
||||
}
|
||||
|
||||
private function getDenoTotal(Request $request,$operator){
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->cawangan)->first();
|
||||
$current = Carbon::now();
|
||||
$current = new Carbon();
|
||||
|
||||
$deno = Denominasi::on($cawangan['mysql'])->where('tarikh','=',$current->toDateString());
|
||||
$deno = optional($deno->first())->toArray();
|
||||
|
||||
if(empty($deno)){
|
||||
return "empty";
|
||||
Log::error("Empty Denominasi Data");
|
||||
}
|
||||
|
||||
$deno['txtsen1'] += ($operator == 'add') ? intval($request->ambilansen1) : -intval($request->ambilansen1);
|
||||
$deno['txtsen5'] += ($operator == 'add') ? intval($request->ambilansen5) : -intval($request->ambilansen5);
|
||||
$deno['txtsen10'] += ($operator == 'add') ? intval($request->ambilansen10) : -intval($request->ambilansen10);
|
||||
$deno['txtsen20'] += ($operator == 'add') ? intval($request->ambilansen20) : -intval($request->ambilansen20);
|
||||
$deno['txtsen50'] += ($operator == 'add') ? intval($request->ambilansen50) : -intval($request->ambilansen50);
|
||||
|
||||
$deno['txtring1'] += ($operator == 'add') ? intval($request->ambilanring1) : -intval($request->ambilanring1);
|
||||
$deno['txtring5'] += ($operator == 'add') ? intval($request->ambilanring5) : -intval($request->ambilanring5);
|
||||
$deno['txtring10'] += ($operator == 'add') ? intval($request->ambilanring10) : -intval($request->ambilanring10);
|
||||
$deno['txtring20'] += ($operator == 'add') ? intval($request->ambilanring20) : -intval($request->ambilanring20);
|
||||
$deno['txtring50'] += ($operator == 'add') ? intval($request->ambilanring50) : -intval($request->ambilanring50);
|
||||
$deno['txtring100'] += ($operator == 'add') ? intval($request->ambilanring100) : -intval($request->ambilanring100);
|
||||
|
||||
$k01 = ($deno['txtsen1'] * 0.01);
|
||||
$k05 = ($deno['txtsen5'] * 0.05);
|
||||
$k010 = ($deno['txtsen10'] * 0.10);
|
||||
$k020 = ($deno['txtsen20'] * 0.20);
|
||||
$k050 = ($deno['txtsen50'] * 0.50);
|
||||
$k1 = ($deno['txtring1'] * 1);
|
||||
$k5 = ($deno['txtring5'] * 5);
|
||||
$k10 = ($deno['txtring10'] * 10);
|
||||
$k20 = ($deno['txtring20'] * 20);
|
||||
$k50 = ($deno['txtring50'] * 50);
|
||||
$k100 = ($deno['txtring100'] * 100);
|
||||
|
||||
$totalkeping = $k01 + $k05 + $k010 + $k020 +
|
||||
$k050 + $k1 + $k5 + $k10 + $k20 +
|
||||
$k50 + $k100;
|
||||
|
||||
$array_total_cash = [
|
||||
'syiling1' => $k01,
|
||||
'syiling5' => $k05,
|
||||
'syiling10' => $k010,
|
||||
'syiling20' => $k020,
|
||||
'syiling50' => $k050,
|
||||
'kertas1' => $k1,
|
||||
'kertas5' => $k5,
|
||||
'kertas10' => $k10,
|
||||
'kertas20' => $k20,
|
||||
'kertas50' => $k50,
|
||||
'kertas100' => $k100,
|
||||
];
|
||||
|
||||
return ['deno' => $deno,'total' => $totalkeping,'cash' => $array_total_cash];
|
||||
}
|
||||
|
||||
|
||||
public function CashDeposit(Request $request){
|
||||
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->cawangan)->first();
|
||||
$current = Carbon::now();
|
||||
$current = new Carbon();
|
||||
|
||||
try {
|
||||
// Start transaction
|
||||
DB::connection($cawangan['mysql'])->beginTransaction();
|
||||
DB::connection('mysql7')->beginTransaction();
|
||||
|
||||
/* Addtunai Transaction */
|
||||
$response_addtunai = $this->checkAddTunai($request);
|
||||
|
||||
if($response_addtunai !== 'success'){
|
||||
// Log::error("Unsuccessful Tunai");
|
||||
Log::debug($response_addtunai);
|
||||
throw new Exception('Unsuccessful Tunai');
|
||||
}
|
||||
|
||||
$addtunai = AddTunai::on($cawangan['mysql'])->create([
|
||||
'tarikh' => $current->toDateString(),
|
||||
'kodcaw'=> $this->cawangan,
|
||||
'kodlaluan'=>$request->teller,
|
||||
'tambah'=>$request->amt,
|
||||
'kurang'=> 0,
|
||||
'nota'=>$request->nota,
|
||||
'created_at'=>$current
|
||||
]);
|
||||
|
||||
/* Tunai Transaction */
|
||||
$tunai = Tunai::on($cawangan['mysql'])
|
||||
->where([['kodcaw','=',$this->cawangan],['tarikh','=',$current->toDateString()],['kodlaluan','=',$request->teller]]);
|
||||
$tunai = optional($tunai->first())->toArray();
|
||||
|
||||
if(empty($tunai)){
|
||||
Log::debug($this->cawangan);
|
||||
Log::debug($current->toDateString());
|
||||
Log::debug($request->teller);
|
||||
throw new Exception("Empty Tunai Data");
|
||||
}
|
||||
|
||||
$total_teller_deposit = $tunai['tambah'] + $request->amt;
|
||||
$remaining_teller_cashflow = $tunai['baki'] + $request->amt;
|
||||
|
||||
Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->teller] ])->
|
||||
update(array(
|
||||
'tambah' => $total_teller_deposit,
|
||||
'baki' => $remaining_teller_cashflow
|
||||
));
|
||||
|
||||
/* Vault Transaction */
|
||||
$vault = Vault::on($cawangan['mysql'])
|
||||
->where('kodcaw','=',$this->cawangan)
|
||||
->where('tarikh','=',$current->toDateString());
|
||||
$vault = optional($vault->first())->toArray();
|
||||
|
||||
if(empty($vault)){
|
||||
throw new Exception("Empty Vault Data");
|
||||
}
|
||||
|
||||
$total_vault_deposit = $vault['keluar'] + $request->amt;
|
||||
$remaining_vault = $vault['bakiawal'] - $total_vault_deposit + $vault['masuk'] + $vault['pendahuluan'] - $vault['serahan'] - $vault['totpanjar'];
|
||||
|
||||
Vault::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()],['kodcaw','=', $this->cawangan]])->update(array(
|
||||
'keluar' => $total_vault_deposit,
|
||||
'bakiakhir' => $remaining_vault,
|
||||
'bakieod' => $remaining_vault
|
||||
));
|
||||
|
||||
/* Denominasi Transaction */
|
||||
|
||||
$response_deno = $this->getDenoTotal($request,'subtract');
|
||||
|
||||
if($response_deno == 'empty')
|
||||
throw new Exception("Empty Denominasi Data");
|
||||
|
||||
$deno = $response_deno['deno'];
|
||||
$total = $response_deno['total'];
|
||||
$cash = $response_deno['cash'];
|
||||
|
||||
Denominasi::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()]])->update(array(
|
||||
'txtring1'=> $deno['txtring1'],
|
||||
'k1'=> $cash['kertas1'],
|
||||
'txtring5'=> $deno['txtring5'],
|
||||
'k5'=> $cash['kertas5'],
|
||||
'txtsen1'=> $deno['txtsen1'],
|
||||
'k01'=> $cash['syiling1'],
|
||||
'txtsen5'=> $deno['txtsen5'],
|
||||
'k05'=> $cash['syiling5'],
|
||||
'txtsen10'=> $deno['txtsen10'],
|
||||
'k010'=> $cash['syiling10'],
|
||||
'txtsen20'=> $deno['txtsen20'],
|
||||
'k020'=> $cash['syiling20'],
|
||||
'txtsen50'=> $deno['txtsen50'],
|
||||
'k050'=> $cash['syiling50'],
|
||||
'txtring10'=> $deno['txtring10'],
|
||||
'k10'=> $cash['kertas10'],
|
||||
'txtring20'=> $deno['txtring20'],
|
||||
'k20'=> $cash['kertas20'],
|
||||
'txtring50'=> $deno['txtring50'],
|
||||
'k50'=> $cash['kertas50'],
|
||||
'txtring100'=> $deno['txtring100'],
|
||||
'k100'=> $cash['kertas100'],
|
||||
'txtjumlah'=> $total,
|
||||
'jumlahkeping' => $total
|
||||
) );
|
||||
|
||||
/* RequestTeller Transaction */
|
||||
$requestteller = RequestTeller::on('mysql7')->where([['no','=',$request->no],['kodcaw','=',$this->cawangan],['kodlaluan','=',$request->teller],['update','=',0]])->update(array(
|
||||
'update' => 1,
|
||||
'bd1' => 0,
|
||||
'bd5' => 0,
|
||||
'bd10' => 0,
|
||||
'bd20' => 0,
|
||||
'bd50' => 0,
|
||||
'bd100' => 0,
|
||||
'txtring1' => ($request->ambilanring1) ? $request->ambilanring1 : 0,
|
||||
'txtring5' => ($request->ambilanring5) ? $request->ambilanring5 : 0,
|
||||
'txtring10' => ($request->ambilanring10) ? $request->ambilanring10 : 0,
|
||||
'txtring20' => ($request->ambilanring20) ? $request->ambilanring20 : 0,
|
||||
'txtring50' => ($request->ambilanring50) ? $request->ambilanring50 : 0,
|
||||
'txtring100' => ($request->ambilanring100) ? $request->ambilanring100 : 0,
|
||||
'txtring1000' => 0,
|
||||
'txtsen1' => ($request->ambilansen1) ? $request->ambilansen1 : 0,
|
||||
'txtsen5' => ($request->ambilansen5) ? $request->ambilansen5 : 0,
|
||||
'txtsen10' => ($request->ambilansen10) ? $request->ambilansen10 : 0,
|
||||
'txtsen20' => ($request->ambilansen20) ? $request->ambilansen20 : 0,
|
||||
'txtsen50' => ($request->ambilansen50) ? $request->ambilansen50 : 0,
|
||||
'recno' => $addtunai['id']
|
||||
) );
|
||||
|
||||
// Commit transactions
|
||||
DB::connection($cawangan['mysql'])->commit();
|
||||
DB::connection('mysql7')->commit();
|
||||
|
||||
return 'success';
|
||||
|
||||
} catch (\Exception $e) {
|
||||
DB::connection($cawangan['mysql'])->rollBack();
|
||||
DB::connection('mysql7')->rollBack();
|
||||
Log::error("Transaction failed: " . $e->getMessage());
|
||||
|
||||
return 'error';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function CashWithdrawals(Request $request){
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$this->cawangan)->first();
|
||||
$current = Carbon::now();
|
||||
$current = new Carbon();
|
||||
|
||||
try {
|
||||
|
||||
// Start transaction
|
||||
DB::connection($cawangan['mysql'])->beginTransaction();
|
||||
DB::connection('mysql7')->beginTransaction();
|
||||
|
||||
/* Addtunai Transaction */
|
||||
$response_addtunai = $this->checkAddTunai($request);
|
||||
|
||||
if($response_addtunai !== 'success'){
|
||||
// Log::error("Unsuccessful Tunai");
|
||||
Log::debug($response_addtunai);
|
||||
throw new Exception('Unsuccessful Tunai');
|
||||
}
|
||||
|
||||
$addtunai = AddTunai::on($cawangan['mysql'])->create([
|
||||
'tarikh' => $current->toDateString(),
|
||||
'kodcaw'=> $this->cawangan,
|
||||
'kodlaluan'=>$request->teller,
|
||||
'tambah'=>0,
|
||||
'kurang'=> $request->amt,
|
||||
'nota'=>$request->nota,
|
||||
'created_at'=>$current
|
||||
]);
|
||||
|
||||
/* Tunai Transaction */
|
||||
$tunai = Tunai::on($cawangan['mysql'])
|
||||
->where([['kodcaw','=',$this->cawangan],['tarikh','=',$current->toDateString()],['kodlaluan','=',$request->teller]]);
|
||||
$tunai = optional($tunai->first())->toArray();
|
||||
|
||||
if(empty($tunai)){
|
||||
Log::debug($this->cawangan);
|
||||
Log::debug($current->toDateString());
|
||||
Log::debug($request->teller);
|
||||
throw new Exception("Empty Tunai Data");
|
||||
}
|
||||
|
||||
$total_teller_deposit = $tunai['kurang'] + $request->amt;
|
||||
$remaining_teller_cashflow = $tunai['baki'] - $request->amt;
|
||||
|
||||
Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->teller] ])->
|
||||
update(array(
|
||||
'kurang' => $total_teller_deposit,
|
||||
'baki' => $remaining_teller_cashflow
|
||||
));
|
||||
|
||||
/* Vault Transaction */
|
||||
$vault = Vault::on($cawangan['mysql'])
|
||||
->where('kodcaw','=',$this->cawangan)
|
||||
->where('tarikh','=',$current->toDateString());
|
||||
$vault = optional($vault->first())->toArray();
|
||||
|
||||
if(empty($vault)){
|
||||
throw new Exception("Empty Vault Data");
|
||||
}
|
||||
|
||||
$total_vault_deposit = $vault['masuk'] + $request->amt;
|
||||
$remaining_vault = $vault['bakiawal'] - $vault['keluar'] + $total_vault_deposit + $vault['pendahuluan'] - $vault['serahan'] - $vault['totpanjar'];
|
||||
|
||||
Vault::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()],['kodcaw','=', $this->cawangan]])->update(array(
|
||||
'masuk' => $total_vault_deposit,
|
||||
'bakiakhir' => $remaining_vault,
|
||||
'bakieod' => $remaining_vault
|
||||
));
|
||||
|
||||
/* Denominasi Transaction */
|
||||
$response_deno = $this->getDenoTotal($request,'add');
|
||||
|
||||
if($response_deno == 'empty')
|
||||
throw new Exception("Empty Denominasi Data");
|
||||
|
||||
$deno = $response_deno['deno'];
|
||||
$total = $response_deno['total'];
|
||||
$cash = $response_deno['cash'];
|
||||
|
||||
Denominasi::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()]])->update(array(
|
||||
'txtring1'=> $deno['txtring1'],
|
||||
'k1'=> $cash['kertas1'],
|
||||
'txtring5'=> $deno['txtring5'],
|
||||
'k5'=> $cash['kertas5'],
|
||||
'txtsen1'=> $deno['txtsen1'],
|
||||
'k01'=> $cash['syiling1'],
|
||||
'txtsen5'=> $deno['txtsen5'],
|
||||
'k05'=> $cash['syiling5'],
|
||||
'txtsen10'=> $deno['txtsen10'],
|
||||
'k010'=> $cash['syiling10'],
|
||||
'txtsen20'=> $deno['txtsen20'],
|
||||
'k020'=> $cash['syiling20'],
|
||||
'txtsen50'=> $deno['txtsen50'],
|
||||
'k050'=> $cash['syiling50'],
|
||||
'txtring10'=> $deno['txtring10'],
|
||||
'k10'=> $cash['kertas10'],
|
||||
'txtring20'=> $deno['txtring20'],
|
||||
'k20'=> $cash['kertas20'],
|
||||
'txtring50'=> $deno['txtring50'],
|
||||
'k50'=> $cash['kertas50'],
|
||||
'txtring100'=> $deno['txtring100'],
|
||||
'k100'=> $cash['kertas100'],
|
||||
'txtjumlah'=> $total,
|
||||
'jumlahkeping' => $total
|
||||
) );
|
||||
|
||||
/* RequestTeller Transaction */
|
||||
$requestteller = RequestTeller::on('mysql7')->where([['no','=',$request->no],['kodcaw','=',$this->cawangan],['kodlaluan','=',$request->teller],['update','=',0]])->update(array(
|
||||
'update' => 1,
|
||||
'recno' => $addtunai['id']
|
||||
) );
|
||||
|
||||
// Commit transactions
|
||||
DB::connection($cawangan['mysql'])->commit();
|
||||
DB::connection('mysql7')->commit();
|
||||
|
||||
return 'success';
|
||||
}catch(\Exception $e){
|
||||
DB::connection($cawangan['mysql'])->rollBack();
|
||||
DB::connection('mysql7')->rollBack();
|
||||
Log::error("Transaction failed: " . $e->getMessage());
|
||||
|
||||
return 'error';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,6 +9,7 @@ use App\DenoPanjar;
|
||||
use App\Panjar;
|
||||
use App\Vault;
|
||||
use Carbon\Carbon;
|
||||
use DateTime;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -40,11 +41,12 @@ class PanjarServices
|
||||
|
||||
private function calculation_denominasi($array_deno = [],$denominasi = [],$jenis_panjar){
|
||||
|
||||
if(isset($array_deno) <= 0 || isset($denominasi) <= 0){
|
||||
if(empty($array_deno) && empty($denominasi)){
|
||||
return empty($array_deno);
|
||||
return 'no data';
|
||||
}
|
||||
|
||||
if($jenis_panjar != 'masuk' || $jenis_panjar != 'keluar') return 'no data';
|
||||
if($jenis_panjar != 'masuk' && $jenis_panjar != 'keluar') return 'no data';
|
||||
|
||||
$records = [];
|
||||
foreach($this->namelist_deno as $deno => $value){
|
||||
@@ -80,6 +82,37 @@ class PanjarServices
|
||||
];
|
||||
}
|
||||
|
||||
private function checkModal($jenismodal){
|
||||
switch ($jenismodal) {
|
||||
case "selenggara":
|
||||
$kategori = "Baiki dan Selenggara";
|
||||
$tag = 2;
|
||||
break;
|
||||
case "keraian":
|
||||
$kategori = "Keraian & Promosi";
|
||||
$tag = 3;
|
||||
break;
|
||||
case "belanjaam":
|
||||
$kategori = "Belanja AM";
|
||||
$tag = 1;
|
||||
break;
|
||||
case "perubatan":
|
||||
$kategori = "Belanja AM - Perubatan";
|
||||
$tag = 1;
|
||||
break;
|
||||
case "dapur":
|
||||
$kategori = "Belanja AM - Barangan Dapur";
|
||||
$tag = 1;
|
||||
break;
|
||||
case "pos":
|
||||
$kategori = "Belanja AM - Postage";
|
||||
$tag = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return ['kategori' => $kategori, 'tag' => $tag];
|
||||
}
|
||||
|
||||
public function delete(Request $request){
|
||||
$current = Carbon::now();
|
||||
$current = new Carbon();
|
||||
@@ -89,14 +122,13 @@ class PanjarServices
|
||||
$panjar = Panjar::on($cawangan['mysql'])->latest('tarikh')->where('nobaucer', $request->nobaucer)->first();
|
||||
$vault = Vault::on($cawangan['mysql'])->latest('tarikh')->first();
|
||||
$deno_panjar = DenoPanjar::on('mysql7')->where('kodcaw', $this->cawangan)->where('recno', $request->recno)->latest('tarikh','masa')->first();
|
||||
|
||||
try{
|
||||
if (!$panjar) throw new \Exception('Custom Exception: Panjar Does Not Exist!');
|
||||
if (!$denominasi) throw new \Exception('Custom Exception: Denominasi Does Not Exist!');
|
||||
if (!$vault) throw new \Exception('Custom Exception: Vault Does Not Exist!');
|
||||
if (!$deno_panjar) throw new \Exception('Custom Exception: Denominasi Panjar Does Not Exist!');
|
||||
|
||||
DB::transaction(function () use ($cawangan,$deno_panjar,$panjar,$denominasi,$current,$vault,$request) {
|
||||
return DB::transaction(function () use ($cawangan,$deno_panjar,$panjar,$denominasi,$current,$vault) {
|
||||
|
||||
$return_data = $this->calculation_denominasi($deno_panjar,$denominasi,'masuk');
|
||||
if($return_data == 'no data') throw new \Exception('Custom Exception: Denominasi Panjar Not Return Data');
|
||||
@@ -155,11 +187,8 @@ class PanjarServices
|
||||
'bakieod'=>$bakiakhir
|
||||
));
|
||||
|
||||
DenoPanjar::on('mysql7')->where('kodcaw', $this->cawangan)->where('recno', $panjar['recno'])->latest('tarikh','masa')->delete();
|
||||
Panjar::on($cawangan['mysql'])->where('recno',$panjar['recno'])->delete();
|
||||
|
||||
$audit = new Audit();
|
||||
$audit->users = $request->tuntutoleh;
|
||||
$audit->users = $panjar['tuntutoleh'];
|
||||
$audit->actions = "Keluarkan Perbelanjaan";
|
||||
$audit->new_data = $panjar;
|
||||
$audit->kodcaw = $this->cawangan;
|
||||
@@ -167,10 +196,27 @@ class PanjarServices
|
||||
$audit->updated_at = $current;
|
||||
$audit->save();
|
||||
|
||||
DenoPanjar::on('mysql7')->where('kodcaw', $this->cawangan)->where('recno', $panjar['recno'])->latest('tarikh','masa')->delete();
|
||||
Panjar::on($cawangan['mysql'])->where('recno',$panjar['recno'])->delete();
|
||||
|
||||
$totalperubatan = floatval($this->getPerubatanAmount($panjar['tuntutoleh']));
|
||||
|
||||
return $array_response = [
|
||||
'result' => 'success',
|
||||
'data' => 1,
|
||||
'totalperubatan' => $totalperubatan,
|
||||
'tuntutoleh' => $panjar['tuntutoleh'],
|
||||
'jenis' => ($panjar['kategori'] == 'Belanja AM - Perubatan') ? 'perubatan' : 'none'
|
||||
];
|
||||
|
||||
});
|
||||
}catch(\Exception $e){
|
||||
dd($e->getMessage());
|
||||
Log::error('Exception: ' , $e->getMessage());
|
||||
$array_response = [
|
||||
'result' => 'error',
|
||||
'data' => $e->getMessage()
|
||||
];
|
||||
Log::error('Exception: ' . $e->getMessage());
|
||||
return $array_response;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,25 +227,27 @@ class PanjarServices
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $this->cawangan)->first();
|
||||
$denominasi = Denominasi::on($cawangan['mysql'])->latest('tarikh')->first();
|
||||
$vault = Vault::on($cawangan['mysql'])->latest('tarikh')->first();
|
||||
|
||||
try{
|
||||
if (!$denominasi) throw new \Exception('Custom Exception: Denominasi Does Not Exist!');
|
||||
if (!$vault) throw new \Exception('Custom Exception: Vault Does Not Exist!');
|
||||
|
||||
DB::transaction(function () use ($cawangan,$denominasi,$current,$vault,$request) {
|
||||
return $response = DB::transaction(function () use ($cawangan,$denominasi,$current,$vault,$request) {
|
||||
|
||||
$myDateTime = DateTime::createFromFormat('Y-m-d', $request->tarikhbil);
|
||||
$tarikhbil = $myDateTime->format('dmY');
|
||||
$tagmodal = $this->checkModal($request->jenismodal);
|
||||
$panjar = Panjar::on($cawangan['mysql'])
|
||||
->create([
|
||||
'tarikh'=> $current->toDateString(),
|
||||
'deskripsi'=> $request->deskripsi,
|
||||
'bayaran' => $request->bayaran,
|
||||
'tag' => $request->tag,
|
||||
'kategori' => $request->kategori,
|
||||
'id' => $request->id,
|
||||
'bakiperubatan' => $request->bakiperubatan,
|
||||
'nobaucer' => $request->nobaucer,
|
||||
'nobil' => $request->nobil,
|
||||
'tuntutoleh' => $request->tuntutoleh
|
||||
'tag' => $tagmodal['tag'],
|
||||
'kategori' => $tagmodal['kategori'],
|
||||
'id' => $request->kodlaluan,
|
||||
'bakiperubatan' => 0,
|
||||
'nobaucer' => $request->baucer,
|
||||
'nobil' => $tarikhbil,
|
||||
'tuntutoleh' => $request->tuntutan
|
||||
]);
|
||||
|
||||
$denopanjar = DenoPanjar::on('mysql7')->create([
|
||||
@@ -207,31 +255,31 @@ class PanjarServices
|
||||
'masa' => $current->toTimeString(),
|
||||
'kodcaw' => $this->cawangan,
|
||||
'kodlaluan' => $request->kodlaluan,
|
||||
'serahan' => $request->serahan,
|
||||
'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' =>$panjar['recno'],
|
||||
'serahan' => $request->bayaran,
|
||||
'bd1' => 0,
|
||||
'bd5' => 0,
|
||||
'bd10' => 0,
|
||||
'bd20' => 0,
|
||||
'bd50' => 0,
|
||||
'bd100' => 0,
|
||||
'txtring1' => $request->ambilanring1,
|
||||
'txtring5' => $request->ambilanring5,
|
||||
'txtring10' => $request->ambilanring10,
|
||||
'txtring20' => $request->ambilanring20,
|
||||
'txtring50' => $request->ambilanring50,
|
||||
'txtring100' => $request->ambilanring100,
|
||||
'txtring1000' => 0,
|
||||
'txtsen1' => $request->ambilansen1,
|
||||
'txtsen5' => $request->ambilansen5,
|
||||
'txtsen10' => $request->ambilansen10,
|
||||
'txtsen20' => $request->ambilansen20,
|
||||
'txtsen50' => $request->ambilansen50,
|
||||
'jenis' =>$request->jenismodal,
|
||||
'recno' =>$panjar['id'],
|
||||
'update' => '0'
|
||||
]);
|
||||
|
||||
$return_data = $this->calculation_denominasi($denopanjar,$denominasi,'masuk');
|
||||
$return_data = $this->calculation_denominasi($denopanjar,$denominasi,'keluar');
|
||||
if($return_data == 'no data') throw new \Exception('Custom Exception: Denominasi Panjar Not Return Data');
|
||||
|
||||
Denominasi::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()]])->update(array(
|
||||
@@ -297,21 +345,34 @@ class PanjarServices
|
||||
$audit->updated_at = $current;
|
||||
$audit->save();
|
||||
|
||||
$totalperubatan = $this->getPerubatanAmount($request->tuntutan);
|
||||
|
||||
$array_response = [
|
||||
'result' => 'success',
|
||||
'data' => 1
|
||||
'data' => 1,
|
||||
'totalperubatan' => $totalperubatan,
|
||||
];
|
||||
return response()->json($array_response);
|
||||
return $array_response;
|
||||
|
||||
});
|
||||
}catch(\Exception $e){
|
||||
dd($e->getMessage());
|
||||
$array_response = [
|
||||
'result' => 'error',
|
||||
'data' => $e->getMessage()
|
||||
];
|
||||
return response()->json($array_response);
|
||||
Log::error('Exception: ' , $e->getMessage());
|
||||
Log::error('Exception: ' . $e->getMessage());
|
||||
return $array_response;
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function getPerubatanAmount($tuntutanoleh){
|
||||
$current = Carbon::now();
|
||||
|
||||
$cawangan = Cawangan::on('mysql7')->where('kodcaw', $this->cawangan)->first();
|
||||
$panjar = Panjar::on($cawangan['mysql'])->whereYear('tarikh',$current->year)->where('kategori','Belanja AM - Perubatan')->where('tuntutoleh',$tuntutanoleh)->sum('bayaran');
|
||||
|
||||
return $panjar;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddColumnTimestampToAddtunaiTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
protected $db_connection;
|
||||
public function getActiveDB(){
|
||||
$config_db = array_keys(config("database.connections"));
|
||||
|
||||
$db_connection = array_filter($config_db,function($connection){
|
||||
try{
|
||||
if($connection == 'mysql7')
|
||||
return false;
|
||||
|
||||
$db = DB::connection($connection)->getPdo();
|
||||
return true;
|
||||
} catch(\Exception $e){
|
||||
return false;
|
||||
}
|
||||
});
|
||||
return $db_connection;
|
||||
}
|
||||
|
||||
public function up()
|
||||
{
|
||||
$this->db_connection = $this->getActiveDB();
|
||||
|
||||
foreach($this->db_connection as $dbase){
|
||||
Schema::connection($dbase)->table('addtunai', function (Blueprint $table) use($dbase) {
|
||||
|
||||
$isCreatedAt = Schema::connection($dbase)->hasColumn('addtunai', 'created_at');
|
||||
|
||||
if (! $isCreatedAt) {
|
||||
$table->timestamp('created_at');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
$this->db_connection = $this->getActiveDB();
|
||||
|
||||
foreach($this->db_connection as $dbase){
|
||||
$columns = ['created_at'];
|
||||
|
||||
$columns_exist = array_filter($columns,function($column) use($dbase){
|
||||
return Schema::connection($dbase)->hasColumn('addtunai', $column);
|
||||
});
|
||||
|
||||
Schema::connection($dbase)->table('addtunai', function(Blueprint $table) use($columns_exist){
|
||||
foreach($columns_exist as $column){
|
||||
$table->dropColumn($column);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddRecnoToRequestTellerTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
$columns = ['recno'];
|
||||
|
||||
$columns_not_exist = array_filter($columns, function ($column) {
|
||||
return !Schema::connection('mysql7')->hasColumn('requestteller', $column);
|
||||
});
|
||||
|
||||
Schema::connection('mysql7')->table('requestteller', function (Blueprint $table) use ($columns_not_exist) {
|
||||
array_walk($columns_not_exist, function ($column) use ($table) {
|
||||
$table->integer($column);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -382,9 +382,11 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
||||
$router->post('requestTeller/{kodcaw}',['uses' => 'TunaiController@createRequestTeller']);
|
||||
$router->get('requestTeller/get/{kodcaw}',['uses' => 'TunaiController@getRequestTeller']);
|
||||
$router->get('requestTeller/getlaporan/{kodcaw}',['uses' => 'TunaiController@getRequestTellerLaporanSerahan']);
|
||||
$router->get('requestTeller/getrekod/{kodcaw}',['uses' => 'TunaiController@getRequestTellerByRecno']);
|
||||
$router->get('requestTeller/getlaporanberkala/{kodcaw}',['uses' => 'TunaiController@getRequestTellerLaporanSerahanBerkala']);
|
||||
$router->get('requestTeller/get/{kodcaw}/date',['uses' => 'TunaiController@getRequestTellerByDate']);
|
||||
$router->put('requestTeller/update/{kodcaw}',['uses' => 'TunaiController@updateRequestTeller']);
|
||||
$router->put('requestTeller/updatedeno/{kodcaw}',['uses' => 'TunaiController@updateRequestTellerDeno']);
|
||||
$router->put('requestTeller/batal/{kodcaw}',['uses' => 'TunaiController@batalRequestTeller']);
|
||||
$router->get('requestTeller/checkproses',['uses'=>'TunaiController@CheckProsesReqTeller']);
|
||||
|
||||
@@ -649,6 +651,14 @@ $router->group(['prefix'=>'api'], function () use ($router){
|
||||
$router->get('/cawangan/getcawnotisall/{kodcaw}',['uses'=>'CawanganCallCenterController@getcawnotisall']);
|
||||
$router->get('/cawangan/bycawnotisperingatan/{kodcaw}/{notisid}',['uses'=>'CawanganCallCenterController@bycawnotisperingatan']);
|
||||
|
||||
$router->post('panjar/updatetunai/{kodcaw}',['uses'=>'DenominasiController@cashdeposit']);
|
||||
$router->post('panjar/serahantunai/{kodcaw}',['uses'=>'DenominasiController@cashwithdraw']);
|
||||
$router->post('panjar/createpanjar/{kodcaw}',['uses'=>'DenominasiController@createpanjar']);
|
||||
$router->post('panjar/deletepanjar/{kodcaw}',['uses'=>'DenominasiController@deletepanjar']);
|
||||
$router->get('panjar/getperubatan/{kodcaw}',['uses'=>'DenominasiController@getPerubatanAmount']);
|
||||
|
||||
/* Endpoint for Account Statements */
|
||||
$router->get('record/accountstatement/{kodcaw}',['uses'=>'TunaiController@getAccStatement']);
|
||||
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user