Merge branch 'production' of https://bitbucket.org/arrahn-pkb/api_arrahn into annur-rebate

This commit is contained in:
nurafrinaalimi16
2025-01-26 12:56:45 +08:00
41 changed files with 2928 additions and 531 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ class AddTunai extends Model
* *
* @var array * @var array
*/ */
protected $fillable = ['tarikh','kodcaw','kodlaluan','tambah','kurang','nota']; protected $fillable = ['tarikh','kodcaw','kodlaluan','tambah','kurang','nota','created_at'];
public $timestamps = false; public $timestamps = false;
/** /**
+2
View File
@@ -14,6 +14,8 @@ class AuditCustomer extends Model
'username', 'username',
'old_data', 'old_data',
'new_data', 'new_data',
'kodkerja',
'nota_pekerjaan',
'kodcaw', 'kodcaw',
'created_at', 'created_at',
'updated_at', 'updated_at',
-1
View File
@@ -1,4 +1,3 @@
<?php <?php
namespace App; namespace App;
+1
View File
@@ -60,6 +60,7 @@ class Customer extends Model
'tagperingatan', 'tagperingatan',
'kumpulan', 'kumpulan',
'telefon2', 'telefon2',
'nota_pekerjaan',
'tagpelanggan' 'tagpelanggan'
]; ];
+2 -1
View File
@@ -72,7 +72,8 @@ class Gadai extends Model
'upah12', 'upah12',
'tagkomuditi', 'tagkomuditi',
'tempohbayar', 'tempohbayar',
'lelong_tawarruq' 'lelong_tawarruq',
'tag_tebus'
]; ];
/** /**
+38 -5
View File
@@ -17,6 +17,7 @@ use App\AddTunai;
use App\TuntutBaki; use App\TuntutBaki;
use App\Advansur; use App\Advansur;
use App\AkruNet; use App\AkruNet;
use App\AkruNetPecahan;
use App\TransaksiKeuntungan; use App\TransaksiKeuntungan;
use App\Bajet; use App\Bajet;
use App\BajetTahunan; use App\BajetTahunan;
@@ -3184,7 +3185,10 @@ class AdminPageController extends Controller
$lastDayPreviousMonth = $tarikh->subMonthsNoOverflow()->endOfMonth()->toDateString(); $lastDayPreviousMonth = $tarikh->subMonthsNoOverflow()->endOfMonth()->toDateString();
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray(); if(Carbon::parse($lastDayPreviousMonth)->year == Carbon::now()->year){
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first();
$get_imbangduga = optional($get_imbangduga)->toArray() ?? [];
}
$collection_trans = Transaction::on('mysql7') $collection_trans = Transaction::on('mysql7')
->leftJoin('transaksi_keuntungan as trans', function ($join) { ->leftJoin('transaksi_keuntungan as trans', function ($join) {
@@ -3224,7 +3228,9 @@ class AdminPageController extends Controller
return $transaction->trans_type !== 'A'; return $transaction->trans_type !== 'A';
})->sum('keuntungan_rebet'); })->sum('keuntungan_rebet');
$total = $total_ansuran + $total_tebus + $get_imbangduga['keun_sebenar'];
$backdate_keun_sebenar = isset($get_imbangduga['keun_sebenar']) ? $get_imbangduga['keun_sebenar'] : 0;
$total = $total_ansuran + $total_tebus + $backdate_keun_sebenar;
return response()->json($total); return response()->json($total);
} }
@@ -3673,11 +3679,11 @@ class AdminPageController extends Controller
$keuntungansebenar = ($keuntungan + $keuntunganreducing + $ansuran + $bukanansuran); $keuntungansebenar = ($keuntungan + $keuntunganreducing + $ansuran + $bukanansuran);
$previousYear = Carbon::now()->subYears(1); $previousYear = Carbon::parse($request->tarikh)->subYears();
$get_norujukan = Gadai::on($cawangan['mysql']) $get_norujukan = Gadai::on($cawangan['mysql'])
->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result") ->selectRaw("norujukan,CASE WHEN (YEAR(t_gadai) = YEAR(t_update) and MONTH(t_gadai) = MONTH(t_update)) THEN '1' ELSE '0' END AS result")
->whereNotNull('hargajualan')->having('result','=',1)->whereYear('t_gadai','>=','2022')->whereYear('t_gadai','<=',$previousYear)->where('sttebus','<>','')->pluck('norujukan'); ->whereNotNull('hargajualan')->having('result','=',1)->whereYear('t_gadai','>=','2022')->whereYear('t_gadai','<=','2023')->where('sttebus','<>','')->pluck('norujukan');
$sum_keun = Transaction::on('mysql7') $sum_keun = Transaction::on('mysql7')
->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran") ->selectRaw("trans.norujukan,SUM(CASE WHEN (transaction.trans_type) <> 'A' THEN (trans.keuntungan_rebet) ELSE 0 END) AS sum_keun,SUM(CASE WHEN (transaction.trans_type) = 'A' THEN (trans.bayaran_keuntungan) ELSE 0 END) AS sum_bayaran")
@@ -3693,11 +3699,38 @@ class AdminPageController extends Controller
$total_keuntungan_sebenar = $sum_keuntungan + $sum_bayaran; $total_keuntungan_sebenar = $sum_keuntungan + $sum_bayaran;
$backdate_keun_sebenar = 0;
$recentDate = Carbon::now()->subYear();
while ($recentDate->year > 2023) {
$exception_case = 0;
$lastDayOfYear = $recentDate->endOfYear()->toDateString();
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh', $lastDayOfYear)->first();
$get_imbangduga = optional($get_imbangduga)->toArray() ?? [];
if(empty($get_imbangduga)){
$requestData = new Request([
'tarikh' => $request->tarikh,
'kodcaw' => $kodcaw,
]);
$exception_case = $this->AkruKeuntunganSebenar($requestData);
}
$backdate_keun_sebenar += isset($get_imbangduga['keun_sebenar']) ? $get_imbangduga['keun_sebenar'] : 0;
$backdate_keun_sebenar += $exception_case;
$recentDate->subYear()->startOfYear();
}
$total_keuntungan_sebenar = $sum_keuntungan + $sum_bayaran + $backdate_keun_sebenar;
$available_akru = AkruNet::on($cawangan['mysql']) $available_akru = AkruNet::on($cawangan['mysql'])
->where('tahun','<=',$previousYear->year) ->where('tahun','<=',$previousYear->year)
->sum('jumlah'); ->sum('jumlah');
$total = ($utgrugilama + $lelong + $upahsimpantebus + $upahsimpanlelong + $upahsimpanansur + $gstcajlelong + $keuntungansebenar + $upahsimpankeuntungansebelumtawarruq + $available_akru + $total_keuntungan_sebenar) + $parameter; $akru_ujrah = AkruNetPecahan::on($cawangan['mysql'])->where('tahun','<=',$previousYear->year)->sum('pend_akru_ujrah');
$akru_1percent = AkruNetPecahan::on($cawangan['mysql'])->where('tahun','<=',$previousYear->year)->sum('pend_akru_1persen');
$total = ($utgrugilama + $lelong + $upahsimpantebus + $upahsimpanlelong + $upahsimpanansur + $gstcajlelong + $keuntungansebenar + $upahsimpankeuntungansebelumtawarruq + $available_akru + $total_keuntungan_sebenar + $akru_ujrah + $akru_1percent) + $parameter;
if($kodcaw == '011229') if($kodcaw == '011229')
$total -= 45390.37; $total -= 45390.37;
+90 -2
View File
@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Audit;
use App\Marhun; use App\Marhun;
use App\BankMaster; use App\BankMaster;
use App\Customer; use App\Customer;
@@ -344,6 +345,7 @@ class CustomerController extends Controller
'nosiri'=>$request->nosiri, 'nosiri'=>$request->nosiri,
'nota'=>$request->nota, 'nota'=>$request->nota,
'kodkerja'=>$request->kodkerja, 'kodkerja'=>$request->kodkerja,
'nota_pekerjaan'=>$request->nota_pekerjaan,
'tujuangadai'=>$request->tujuangadai 'tujuangadai'=>$request->tujuangadai
]); ]);
@@ -361,6 +363,8 @@ class CustomerController extends Controller
'poskod' => $request->poskod, 'poskod' => $request->poskod,
'koddaerah' => $poskod['koddaerah'], 'koddaerah' => $poskod['koddaerah'],
'kodnegeri' => $poskod['kodnegeri'], 'kodnegeri' => $poskod['kodnegeri'],
'kodkerja'=>$request->kodkerja,
'nota_pekerjaan'=>$request->nota_pekerjaan,
'telefon' => $request->telefon1, 'telefon' => $request->telefon1,
'telefon2' => $request->telefon2 'telefon2' => $request->telefon2
)); ));
@@ -376,7 +380,7 @@ class CustomerController extends Controller
$poskod = Poskod::on('mysql7')->where('poskod','=',$request->poskod)->first(); $poskod = Poskod::on('mysql7')->where('poskod','=',$request->poskod)->first();
$customer_info = DB::connection('mysql7')->table('customer') $customer_info = DB::connection('mysql7')->table('customer')
->select('kodcaw','tarikhdaftar','nopelanggan','kpbaru','kplama','nama','t_lahir','jantina','alamat1','poskod','telefon','telefon2') ->select('kodcaw','kodkerja','nota_pekerjaan','tarikhdaftar','nopelanggan','kpbaru','kplama','nama','t_lahir','jantina','alamat1','poskod','telefon','telefon2')
->where('kplama','=',$nokp) ->where('kplama','=',$nokp)
->orWhere('kpbaru','=',$nokp) ->orWhere('kpbaru','=',$nokp)
->get()->toArray(); ->get()->toArray();
@@ -391,6 +395,9 @@ class CustomerController extends Controller
'telefon' => $request->telefon1, 'telefon' => $request->telefon1,
'telefon2' => $request->telefon2, 'telefon2' => $request->telefon2,
'kodbank' => $request->kodbank, 'kodbank' => $request->kodbank,
'kodkerja' => $request->kodkerja,
// 'nota_pekerjaan' => $request->nota_pekerjaan,
'nota_pekerjaan' => $request->kodkerja === '6' ? $request->nota_pekerjaan : null,
'noakaun' => $request->noakaun, 'noakaun' => $request->noakaun,
'nota' => $request->nota, 'nota' => $request->nota,
'alamat1' => $request->alamat, 'alamat1' => $request->alamat,
@@ -402,7 +409,7 @@ class CustomerController extends Controller
if($customer_update) if($customer_update)
{ {
$customer_info_new = DB::connection('mysql7')->table('customer') $customer_info_new = DB::connection('mysql7')->table('customer')
->select('kodcaw','tarikhdaftar','nopelanggan','kpbaru','kplama','nama','t_lahir','jantina','alamat1','poskod','telefon','telefon2') ->select('kodcaw','kodkerja','nota_pekerjaan','tarikhdaftar','nopelanggan','kpbaru','kplama','nama','t_lahir','jantina','alamat1','poskod','telefon','telefon2')
->where('kplama','=',$nokp) ->where('kplama','=',$nokp)
->orWhere('kpbaru','=',$nokp) ->orWhere('kpbaru','=',$nokp)
->get()->toArray(); ->get()->toArray();
@@ -457,6 +464,8 @@ class CustomerController extends Controller
'telefon' => $request->telefon1, 'telefon' => $request->telefon1,
'telefon2' => $request->telefon2, 'telefon2' => $request->telefon2,
'kodbank' => $request->kodbank, 'kodbank' => $request->kodbank,
'kodkerja' => $request->kodkerja,
'nota_pekerjaan' => $request->nota_pekerjaan,
'noakaun' => $request->noakaun, 'noakaun' => $request->noakaun,
'nota' => $request->nota, 'nota' => $request->nota,
'nama' => $request->nama, 'nama' => $request->nama,
@@ -845,4 +854,83 @@ class CustomerController extends Controller
return response()->json($customer); return response()->json($customer);
} }
public function changepassword(Request $request, $kodcaw, $id) {
$current = Carbon::now();
// log::info ($request->name);
$audit = new Audit();
$audit->users = $request->nama;
$audit->actions = "Tukar Kata Laluan";
// $audit->new_data = json_encode($request->new_password);
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
}
public function TukarCawangan(Request $request, $kodcaw)
{
$current = Carbon::now();
$current = new Carbon();
// Log::info('dalam tukar taraf');
$audit = new Audit();
$audit->users = $request->namaoperasi;
$audit->actions = "Tukar Cawangan";
$audit->old_data = json_encode($request->old_data);
$audit->new_data = json_encode($request->new_data);
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return json_encode(['status'=> 'success']);
}
public function kakitangan(Request $request, $kodcaw)
{
$current = Carbon::now();
// Log::info('pegesahan kakitangan');
$audit = new Audit();
$audit->users = $request->namaoperasi;
$audit->actions = "pengesahan kakitangan";
$audit->old_data = json_encode($request->old_data);
$audit->new_data = json_encode($request->new_data);
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return json_encode(['status'=> 'success']);
}
public function TukarTaraf(Request $request, $kodcaw)
{
// return json_encode(['test'=> 'taraf']);
//setiap request perlu htr something
$current = Carbon::now();
$current = new Carbon();
// Log::info('dalam tukar taraf');
$audit = new Audit();
$audit->users = $request->namaoperasi;
$audit->actions = "Tukar Taraf";
$audit->old_data = json_encode($request->old_data);
$audit->new_data = json_encode($request->new_data);
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return json_encode(['status'=> 'success']);
}
} }
+38 -1
View File
@@ -5,12 +5,49 @@ namespace App\Http\Controllers;
use App\CawanganDetail; use App\CawanganDetail;
use App\Cawangan; use App\Cawangan;
use App\Denominasi; use App\Denominasi;
use App\Services\CashFlow\TellerServices;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Services\Miscellaneous\PanjarServices;
use Log;
use Carbon\Carbon; use Carbon\Carbon;
class DenominasiController extends Controller 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) public function listdenominasi($kodcaw)
{ {
$current = Carbon::now(); $current = Carbon::now();
+124 -4
View File
@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
use App\Services\MasterServices; use App\Services\MasterServices;
use App\Support\OnePercent; use App\Support\OnePercent;
use App\Services\Transaction\AnsuranServices as AnsServ; use App\Services\Transaction\AnsuranServices as AnsServ;
use Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@@ -49,10 +49,16 @@ class GadaiController extends Controller
} }
public function gadaiTransactionByCawanganAndDay($cawangan_code,$date){ public function gadaiTransactionByCawanganAndDay($cawangan_code,$date){
try{
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$cawangan_code)->first(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$cawangan_code)->first();
$gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$date)->orderBy('sirig', 'desc')->first(); $gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$date)->orderBy('sirig', 'desc')->first();
}catch(\Exception $e){
Log::debug($e);
Log::debug($cawangan_code);
return response()->json('error');
}
return response()->json($gadaiTransaction); return response()->json($gadaiTransaction);
} }
@@ -392,6 +398,8 @@ class GadaiController extends Controller
} }
public function cetakSAG($kodcaw,$norujukan,Request $request){ public function cetakSAG($kodcaw,$norujukan,Request $request){
$harini = Carbon::now();
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$gadai = Gadai::on($cawangan['mysql']) $gadai = Gadai::on($cawangan['mysql'])
->where('norujukan','=',$norujukan) ->where('norujukan','=',$norujukan)
@@ -400,6 +408,16 @@ class GadaiController extends Controller
'penilai' => $request->penilai 'penilai' => $request->penilai
)); ));
$audit = new Audit();
$audit->users = isset($request->penilai) ? $request->penilai : '';
$audit->actions = "Cetak SAG";
$audit->norujukan = $request->norujukan;
// $audit->new_data = $request->norujukan;
$audit->kodcaw = $kodcaw;
$audit->created_at = $harini;
$audit->updated_at = $harini;
$audit->save();
return response()->json($gadai,200); return response()->json($gadai,200);
} }
@@ -2017,6 +2035,9 @@ class GadaiController extends Controller
$audit->updated_at = $current; $audit->updated_at = $current;
$audit->save(); $audit->save();
try{
DB::connection($cawangan['mysql'])->beginTransaction();
DB::connection('mysql7')->beginTransaction();
if($gadai[0]['historygadaian'] != "0" && $gadai[0]['historygadaian'] != '') if($gadai[0]['historygadaian'] != "0" && $gadai[0]['historygadaian'] != '')
{ {
@@ -2131,7 +2152,7 @@ class GadaiController extends Controller
} }
return response('Deleted Successfully', 200); // return response('Deleted Successfully', 200);
} }
else else
{ {
@@ -2169,7 +2190,33 @@ class GadaiController extends Controller
TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete();
Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete(); Transaction::on('mysql7')->where('norujukan','=',$norujukan)->orderBy('id', 'desc')->limit(1)->delete();
return response('Deleted Successfully', 200); // return response('Deleted Successfully', 200);
}
$array_response = [
'result' => 'success',
'data' => 1
];
DB::connection($cawangan['mysql'])->commit();
DB::connection('mysql7')->commit();
return response()->json($array_response);
}catch(\Exception $e){
DB::connection($cawangan['mysql'])->rollBack();
DB::connection('mysql7')->rollBack();
$array_response = [
'result' => 'error',
'data' => $e->getMessage()
];
Log::error('Transaction failed', [
'exception' => $e->getMessage(),
'line' => $e->getLine(),
'file' => $e->getFile(),
]);
return response()->json($array_response);
} }
} }
@@ -2202,6 +2249,7 @@ class GadaiController extends Controller
$transaksi_asal = KomuditiTransaksi::on('mysql7')->whereIn('norujukan','=',$gadaiDouble)->sum('unit_komuditi'); $transaksi_asal = KomuditiTransaksi::on('mysql7')->whereIn('norujukan','=',$gadaiDouble)->sum('unit_komuditi');
$unit_current = $komuditi_current['unit_komuditi'];
$update_unit = $unit_current + $transaksi_asal['unit_komuditi']; $update_unit = $unit_current + $transaksi_asal['unit_komuditi'];
@@ -2239,9 +2287,12 @@ class GadaiController extends Controller
$bakiakhir = $baki; $bakiakhir = $baki;
$totalkeluar = 0; $totalkeluar = 0;
try{
if($gadai){ if($gadai){
return response('Bukan-Tebus', 200); return response('Bukan-Tebus', 200);
}else{ }else{
DB::connection($cawangan['mysql'])->beginTransaction();
DB::connection('mysql7')->beginTransaction();
$audit = new Audit(); $audit = new Audit();
$audit->users = $request->kodlaluan; $audit->users = $request->kodlaluan;
@@ -2279,6 +2330,9 @@ class GadaiController extends Controller
Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']);
DB::connection($cawangan['mysql'])->commit();
DB::connection('mysql7')->commit();
return response('Deleted Successfully', 200); return response('Deleted Successfully', 200);
} }
else else
@@ -2309,12 +2363,33 @@ class GadaiController extends Controller
Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']);
DB::connection($cawangan['mysql'])->commit();
DB::connection('mysql7')->commit();
return response('Deleted Successfully', 200); return response('Deleted Successfully', 200);
} }
else else
return response('Bukan-Tebus', 200); return response('Bukan-Tebus', 200);
} }
} }
return response()->json($array_response);
}catch(\Exception $e){
DB::connection($cawangan['mysql'])->rollBack();
DB::connection('mysql7')->rollBack();
$array_response = [
'result' => 'error',
'data' => $e->getMessage()
];
Log::error('Transaction failed', [
'exception' => $e->getMessage(),
'line' => $e->getLine(),
'file' => $e->getFile(),
]);
return response()->json($array_response);
}
} }
public function senaraiLelong($kodcaw,Request $request){ public function senaraiLelong($kodcaw,Request $request){
@@ -3083,6 +3158,51 @@ class GadaiController extends Controller
$current = Carbon::now(); $current = Carbon::now();
$current = new Carbon(); $current = new Carbon();
if($request->kodcaw == 'GC'){
$transaksi_data = [];
TransaksiKeuntungan::on('mysql7')
->where('tarikh_bayaran', '<=', $daterequest)
->where('kodcaw', $request->kodcaw)
->chunk(1000, function ($transactions) use (&$transaksi_data) {
$transaksi_data = array_merge($transaksi_data, $transactions->pluck('norujukan')->toArray());
});
$gadaiData = [];
$chunkedTransaksiData = array_chunk($transaksi_data, 1000);
foreach ($chunkedTransaksiData as $chunk) {
Gadai::on($cawangan['mysql'])
->whereIn('norujukan', $chunk)
->where(function ($query) use ($request) {
$query->where([
['sttebus', '=', ''],
['hargajualan', '<>', null]
])
->orWhere([
['sttebus', '!=', ''],
['t_update', '>', $request->tarikh],
['hargajualan', '<>', null]
]);
})
->orderBy('norujukan')
->chunk(1000, function ($gadaiChunk) use (&$gadaiData) {
$gadaiData = array_merge($gadaiData, $gadaiChunk->pluck('norujukan')->toArray());
});
}
$totalPembiayaan = 0;
$chunkedGadaiData = array_chunk($gadaiData, 1000);
foreach ($chunkedGadaiData as $chunk) {
$totalPembiayaan += TransaksiKeuntungan::on('mysql7')
->whereIn('norujukan', $chunk)
->where('tarikh_bayaran', '<=', $daterequest)
->sum('bayaran_pembiayaan');
}
return response($totalPembiayaan);
}
$transaksi_data = TransaksiKeuntungan::on('mysql7') $transaksi_data = TransaksiKeuntungan::on('mysql7')
->where('tarikh_bayaran' ,'<=', $daterequest) ->where('tarikh_bayaran' ,'<=', $daterequest)
->where('kodcaw',$request->kodcaw) ->where('kodcaw',$request->kodcaw)
+36 -1
View File
@@ -1,6 +1,8 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Audit;
use App\Mohon; use App\Mohon;
use App\Cawangan; use App\Cawangan;
use App\Mohonid; use App\Mohonid;
@@ -41,6 +43,15 @@ class KelulusanController extends Controller
->where('masalulus','<>','') ->where('masalulus','<>','')
->get(); ->get();
// $audit = new Audit();
// $audit->users = $request->teller;
// $audit->actions = "test";
// $audit->new_data = $kelulusan;
// $audit->kodcaw = $kodcaw;
// $audit->created_at = $harini;
// $audit->updated_at = $harini;
// $audit->save();
return response()->json($kelulusan); return response()->json($kelulusan);
} }
@@ -145,6 +156,15 @@ class KelulusanController extends Controller
'khazanah' => $request->namakhazanah 'khazanah' => $request->namakhazanah
)); ));
} }
$audit = new Audit();
$audit->users = (isset($request->namaoperasi) ? $request->namaoperasi : '');
$audit->actions = "pengesahan kelulusan 75%";
$audit->new_data = json_encode($kelulusan);
$audit->kodcaw = $kodcaw;
$audit->created_at = $harini;
$audit->updated_at = $harini;
$audit->save();
} }
if($request->sahkan === 1) if($request->sahkan === 1)
@@ -170,6 +190,14 @@ class KelulusanController extends Controller
)); ));
} }
$audit = new Audit();
$audit->users = (isset($request->namakhazanah) ? $request->namakhazanah : '');
$audit->actions = "Pengesahan Kelulusan 75%";
$audit->kodcaw = $kodcaw;
$audit->created_at = $harini;
$audit->updated_at = $harini;
$audit->save();
return response()->json($kelulusan,201); return response()->json($kelulusan,201);
} }
@@ -195,7 +223,6 @@ class KelulusanController extends Controller
public function create(REQUEST $request,$kodcaw,$norujukan,$roles) public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
{ {
$harini = Carbon::now(); $harini = Carbon::now();
$harini = new Carbon;
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
@@ -245,6 +272,14 @@ class KelulusanController extends Controller
]); ]);
} }
$audit = new Audit();
$audit->users = (isset($request->teller) ? $request->teller : '');
$audit->actions = "Minta Pengesahan kelulusan 75%";
$audit->new_data = json_encode($kelulusan);
$audit->kodcaw = $kodcaw;
$audit->created_at = $harini;
$audit->updated_at = $harini;
$audit->save();
return response()->json($kelulusan); return response()->json($kelulusan);
} }
+19 -2
View File
@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Audit;
use App\Komuditi; use App\Komuditi;
use App\KomuditiPurchase; use App\KomuditiPurchase;
use App\KomuditiTransaksi; use App\KomuditiTransaksi;
@@ -41,7 +42,6 @@ class KomuditiController extends Controller
public function beliKomuditi(Request $request){ public function beliKomuditi(Request $request){
$current = Carbon::now(); $current = Carbon::now();
$current = new Carbon();
$komuditi_purchase = KomuditiPurchase::on('mysql7')->create([ $komuditi_purchase = KomuditiPurchase::on('mysql7')->create([
'unit_komuditi' => $request->unit_komuditi, 'unit_komuditi' => $request->unit_komuditi,
@@ -64,12 +64,20 @@ class KomuditiController extends Controller
'harga'=> $request->nilai 'harga'=> $request->nilai
]); ]);
$audit = new Audit();
$audit->users = $request->purchased_by;
$audit->actions = "pembelian komuditi";
$audit->new_data = $komuditi_purchase;
$audit->kodcaw = $request->kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json($komuditi_purchase); return response()->json($komuditi_purchase);
} }
public function jualKomuditi(Request $request){ public function jualKomuditi(Request $request){
$current = Carbon::now(); $current = Carbon::now();
$current = new Carbon();
$komuditi_asal = KomuditiPurchase::on('mysql7')->where('no_sijil','=',$request->nosijil)->latest()->first(); $komuditi_asal = KomuditiPurchase::on('mysql7')->where('no_sijil','=',$request->nosijil)->latest()->first();
@@ -86,6 +94,15 @@ class KomuditiController extends Controller
'harga'=> $komuditi_asal['nilai'] 'harga'=> $komuditi_asal['nilai']
]); ]);
$audit = new Audit();
$audit->users = $request->purchased_by;
$audit->actions = "penjualan komuditi";
$audit->new_data = $komuditi_asal;
$audit->kodcaw = $request->kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json('berjaya'); return response()->json('berjaya');
} }
+29 -13
View File
@@ -27,6 +27,7 @@ use App\imbangdugalama;
use App\Services\Reports\ImbangDugaService; use App\Services\Reports\ImbangDugaService;
use App\Services\Reports\Account\GeneralLedger; use App\Services\Reports\Account\GeneralLedger;
use Illuminate\Support\Facades\Log;
use DateTime; use DateTime;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@@ -246,7 +247,6 @@ class LaporanController extends Controller
$keuntungan_kaunter = $keuntungan_kaunter_query->sum('bayaran_keuntungan'); $keuntungan_kaunter = $keuntungan_kaunter_query->sum('bayaran_keuntungan');
$bil_keuntungan_kaunter = $keuntungan_kaunter_query->count(); $bil_keuntungan_kaunter = $keuntungan_kaunter_query->count();
// $keuntungan = 0; // $keuntungan = 0;
// if($keuntungan_data){ // if($keuntungan_data){
@@ -498,20 +498,36 @@ class LaporanController extends Controller
$daterequest = new Carbon($request->tarikh); $daterequest = new Carbon($request->tarikh);
$daterequest->addDays(1); $daterequest->addDays(1);
$bayaranpendahuluan_data = TransaksiKeuntungan::on('mysql7') // $bayaranpendahuluan_data = TransaksiKeuntungan::on('mysql7')
->where('tarikh_bayaran' ,'<=', $daterequest) // ->where('tarikh_bayaran' ,'<=', $daterequest)
->where('kodcaw',$request->kodcaw) // ->where('kodcaw',$request->kodcaw)
->pluck('norujukan'); // ->pluck('norujukan');
// $gadaiData = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$bayaranpendahuluan_data)
// ->where([['sttebus',''],['hargajualan','<>','null']])
// ->orWhere([['sttebus','!=',''],['t_update','>',$request->tarikh],['hargajualan','<>','null']])
// ->pluck('norujukan');
//$bayaranpendahuluan = TransaksiKeuntungan::on('mysql7')
// ->whereIn('norujukan',$gadaiData)
// ->where('tarikh_bayaran' ,'<=', $daterequest)
// ->sum('bayaran_pembiayaan');
$date = new Carbon($request->tarikh);
$lastDayPreviousMonth = $date->subMonthsNoOverflow()->endOfMonth()->toDateString();
$get_imbangduga = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayPreviousMonth)->first()->toArray();
$start = new Carbon($request->tarikh);
$start_date = $start->startOfMonth()->toDateString();
//$general_ledger = new GeneralLedger($request->kodcaw,$start_date,$request->tarikh);
//$bayaran_pendahuluan = $general_ledger->getBayaranPendahuluan();
//$total_bayaran_current = $bayaran_pendahuluan['keluar'] - $bayaran_pendahuluan['masuk'];
// Log::info($bayaran_pendahuluan);
// $bayaranpendahuluan = $get_imbangduga['bayaranpendahuluan'] + $total_bayaran_current;
$bayaranpendahuluan = 0;
//$bayaranpendahuluan = 0;
$gadaiData = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$bayaranpendahuluan_data)
->where([['sttebus',''],['hargajualan','<>','null']])
->orWhere([['sttebus','!=',''],['t_update','>',$request->tarikh],['hargajualan','<>','null']])
->pluck('norujukan');
$bayaranpendahuluan = TransaksiKeuntungan::on('mysql7')
->whereIn('norujukan',$gadaiData)
->where('tarikh_bayaran' ,'<=', $daterequest)
->sum('bayaran_pembiayaan');
// $bayaranpendahuluan = 0; // $bayaranpendahuluan = 0;
+20 -2
View File
@@ -71,11 +71,14 @@ class LelongController extends Controller
return response()->json($lelong); return response()->json($lelong);
} }
public function showBakiLelong($noic,$jenislelong) public function showBakiLelong($noic,$jenislelong, $kodcaw, Request $request)
{ {
$cawangan_all = Cawangan::on('mysql7')->get(); $cawangan_all = Cawangan::on('mysql7')->get();
$bakilelongtotal = 0; $bakilelongtotal = 0;
$rugilelongtotal = 0; $rugilelongtotal = 0;
$current = Carbon::now();
$current = new Carbon();
if($jenislelong == 'baki') if($jenislelong == 'baki')
{ {
@@ -91,6 +94,20 @@ class LelongController extends Controller
} }
} }
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = "test2";
// $audit->new_data = $bakilelongtotal;
$audit->new_data = json_encode([
'bakilelongtotal' => $bakilelongtotal,
'rugilelongtotal' => $rugilelongtotal,
]);
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json($bakilelongtotal, 200); return response()->json($bakilelongtotal, 200);
} }
@@ -259,6 +276,7 @@ class LelongController extends Controller
if($kodcaw == 'GC'){ if($kodcaw == 'GC'){
$bakilelong += 2135.75; $bakilelong += 2135.75;
$bakilelong -= 3; //added 15/10/2024 sebab ada kemusykilan 3 ringgit daripada rugi lelong
} }
$arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => $rugitotal]; $arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => $rugitotal];
@@ -598,7 +616,7 @@ class LelongController extends Controller
if($cawangan['tagarrahnbid'] == 1){ if($cawangan['tagarrahnbid'] == 1){
if(env('APP_ENV') != 'production'){ if(env('APP_ENV') != 'production'){
$link = 'https://niklah.arrahn.com.my/api/portalApi'; $link = 'http://niklah.arrahn.com.my/api/portalApi';
}else{ }else{
$link = 'http://adminbid.arrahn/api/portalApi'; $link = 'http://adminbid.arrahn/api/portalApi';
} }
+46 -1
View File
@@ -10,6 +10,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Carbon\Carbon; use Carbon\Carbon;
use App\Audit;
class LogController extends Controller class LogController extends Controller
{ {
@@ -20,7 +21,8 @@ class LogController extends Controller
public function logSession($kodcaw, Request $request) public function logSession($kodcaw, Request $request)
{ {
// dd($request->all()); $current = Carbon::now();
$current = new Carbon();
$logsession = Logsession::on('mysql7')->where('kodcaw', '=', $kodcaw) $logsession = Logsession::on('mysql7')->where('kodcaw', '=', $kodcaw)
->create([ ->create([
@@ -32,6 +34,18 @@ class LogController extends Controller
]); ]);
$audit = new Audit();
$audit->users = $request->nama;
$audit->actions = "Log Masuk";
// $audit->norujukan = $norujukan;
// $audit->old_data = $old_data;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json($logsession); return response()->json($logsession);
} }
@@ -55,5 +69,36 @@ class LogController extends Controller
return response()->json($newnokp); return response()->json($newnokp);
} }
public function logoutSession($kodcaw, Request $request)
{
$current = Carbon::now();
$current = new Carbon();
$logoutsession = Logsession::on('mysql7')->where('kodcaw', '=', $kodcaw)
->create([
'nama' => $request->nama,
'nokp' => $request->nokp,
'kodcaw' => $request->kodcaw,
'email' => $request->email,
'taraf' => $request->taraf,
]);
$audit = new Audit();
$audit->users = $request->nama;
$audit->actions = "Log Keluar";
// $audit->norujukan = $norujukan;
// $audit->old_data = $old_data;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json($logoutsession);
}
} }
+11 -1
View File
@@ -108,11 +108,21 @@ class PolisController extends Controller
return response()->json(['error' => 'Invalid kodcaw'], 403); return response()->json(['error' => 'Invalid kodcaw'], 403);
} }
if($request->alasan == 'all'){
$polis = Polis::on($cawangan['mysql']) $polis = Polis::on($cawangan['mysql'])
->select('gadai.sttebus','gadai.t_update','gadai.norujukan','gadai.nokp','polis.komen1','polis.komen2','polis.tarikh','polis.teller','polis.caj','polis.kodnegeri','polis.koddaerah','polis.tebus')
->join('gadai','gadai.norujukan','=','polis.norujukan')
->whereBetween('polis.tarikh', [$request->tarikh_mula, $request->tarikh_akhir])
->get();
}else{
$polis = Polis::on($cawangan['mysql'])
->select('gadai.sttebus','gadai.t_update','gadai.norujukan','gadai.nokp','polis.komen1','polis.komen2','polis.tarikh','polis.teller','polis.caj','polis.kodnegeri','polis.koddaerah','polis.tebus')
->join('gadai','gadai.norujukan','=','polis.norujukan')
->where('komen1','=',$request->alasan) ->where('komen1','=',$request->alasan)
// ->where('tarikh','=',$request->tarikh) // ->where('tarikh','=',$request->tarikh)
->whereBetween('tarikh', [$request->tarikh_mula, $request->tarikh_akhir]) ->whereBetween('polis.tarikh', [$request->tarikh_mula, $request->tarikh_akhir])
->get(); ->get();
}
return response()->json($polis); return response()->json($polis);
} }
@@ -31,8 +31,8 @@ class BalanceSheetsController extends Controller
} }
public function updateIGBalanceSheets(Request $request){ public function updateIGBalanceSheets(Request $request){
$cawangan = Cawangan::on('mysql7')->where('zone','<>',1)->get(); $cawangan = Cawangan::on('mysql7')->where('version','v2')->get();
$date = Carbon::now()->month($request->month); $date = Carbon::create($request->year)->month($request->month);
$lastDay = (clone $date)->endOfMonth(); $lastDay = (clone $date)->endOfMonth();
try{ try{
@@ -16,9 +16,12 @@ class RingkasanHarianController extends Controller
$reportRingkasanHarianService = new ReportRingkasanHarianService($kod_cawangan, $request); $reportRingkasanHarianService = new ReportRingkasanHarianService($kod_cawangan, $request);
$reportKawalanStokService = new KawalanStokService($kod_cawangan, $request); $reportKawalanStokService = new KawalanStokService($kod_cawangan, $request);
$ringkasan_report = $reportRingkasanHarianService->getLaporanCawangan()->getContent();
$ringkasan_kawalan = $reportKawalanStokService->getLaporanCawangan()->getContent();
$reports = [ $reports = [
'reportRingkasanHarian' => $reportRingkasanHarianService->getLaporanCawangan(), 'reportRingkasanHarian' => json_decode($ringkasan_report),
'reportKawalanStok' => $reportKawalanStokService->getLaporanCawangan(), 'reportKawalanStok' => json_decode($ringkasan_kawalan),
]; ];
return response()->json($reports); return response()->json($reports);
+20 -2
View File
@@ -182,6 +182,13 @@ class TebusController extends Controller
return $response; return $response;
} }
public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,Request $request){
$master = new MasterServices($kodcaw);
$response = $master->tebusUpdateTambahPinjaman($kodcaw,$norujukan,$request);
return $response;
}
public function getLaporanTebus($kodcaw,$tarikh){ public function getLaporanTebus($kodcaw,$tarikh){
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
@@ -479,7 +486,9 @@ class TebusController extends Controller
} }
public function tagterimaupdate($kodcaw,$norujukan){ public function tagterimaupdate($kodcaw,$norujukan,Request $request){
$current = Carbon::now();
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$dahscan = Tebus::on($cawangan['mysql'])->where([['norujukan','=',$norujukan],['tagterima',1]])->first(); $dahscan = Tebus::on($cawangan['mysql'])->where([['norujukan','=',$norujukan],['tagterima',1]])->first();
@@ -493,6 +502,15 @@ class TebusController extends Controller
'tagterima' => 1 'tagterima' => 1
)); ));
$audit = new Audit();
$audit->users = $request->nama;
$audit->actions = "Khazanah Scan Barcode Tebus";
$audit->norujukan = $norujukan;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json('success'); return response()->json('success');
}else{ }else{
return response()->json('unavailable'); return response()->json('unavailable');
@@ -1970,7 +1988,7 @@ class TebusController extends Controller
/* Keuntungan Lelong */ /* Keuntungan Lelong */
$upahlelong = Lelong::on($cawangan['mysql']) $upahlelong = Lelong::on($cawangan['mysql'])
->where([['t_jual', '>=', $firstMonth], ['t_jual', '<=', $lastMonth], ['t_jual', '>', '2022-07-24']]) ->where([['tagujrah','0'],['t_jual', '>=', $firstMonth], ['t_jual', '<=', $lastMonth], ['t_jual', '>', '2022-07-24']])
->whereYear('t_jual', '=', $currentDate->year) ->whereYear('t_jual', '=', $currentDate->year)
->sum('bakiupah'); ->sum('bakiupah');
@@ -438,7 +438,7 @@ class TransactionOnlineController extends Controller
} else { } else {
$onepercent = new OnePercentServices(); $onepercent = new OnePercentServices();
$keuntungan = $onepercent->kiraanKeuntunganSebenar($gadai['bakipjm'], $gadai['nilaimarhun'], $gadai['kadarupah'], $margin_semasa); $keuntungan = $onepercent->kiraanKeuntunganRebet($gadai['bakipjm'], $gadai['nilaimarhun'], $gadai['kadarupah'], $gadai['margin_semasa']);
$ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'], $gadai['kadarupah'], $gadai['percentpinj']); $ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'], $gadai['kadarupah'], $gadai['percentpinj']);
$onepercentasal = $gadai['pinjaman'] * (1 / 100); $onepercentasal = $gadai['pinjaman'] * (1 / 100);
+102 -2
View File
@@ -6,12 +6,14 @@ use App\Cawangan;
use App\Tunai; use App\Tunai;
use App\Gadai; use App\Gadai;
use App\AddTunai; use App\AddTunai;
use App\Audit;
use App\RequestTeller; use App\RequestTeller;
use App\Denominasi; use App\Denominasi;
use App\Vault; use App\Vault;
use Auth0\SDK\API\Management\Users;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
class TunaiController extends Controller class TunaiController extends Controller
{ {
@@ -150,6 +152,17 @@ class TunaiController extends Controller
'Expires' => 'Mon, 01 Jan 1990 00:00:00 GMT', 'Expires' => 'Mon, 01 Jan 1990 00:00:00 GMT',
]); ]);
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = "test";
$audit->new_data = $tunai;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json();
} }
public function getTunaiPast($kodcaw,Request $request) public function getTunaiPast($kodcaw,Request $request)
@@ -194,7 +207,28 @@ class TunaiController extends Controller
$current = new Carbon(); $current = new Carbon();
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $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([ $addtunai=AddTunai::on($cawangan['mysql'])->create([
@@ -203,7 +237,8 @@ class TunaiController extends Controller
'kodlaluan'=>$request->kodlaluan, 'kodlaluan'=>$request->kodlaluan,
'tambah'=>$request->tambah, 'tambah'=>$request->tambah,
'kurang'=>$request->kurang, 'kurang'=>$request->kurang,
'nota'=>$request->nota 'nota'=>$request->nota,
'created_at'=>$current
]); ]);
return response()->json($addtunai,201); return response()->json($addtunai,201);
@@ -269,6 +304,33 @@ class TunaiController extends Controller
return response()->json($addtunai); 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) public function getRequestTeller($kodcaw)
{ {
@@ -290,6 +352,15 @@ class TunaiController extends Controller
return response()->json($requestteller); 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) public function getRequestTellerLaporanSerahanBerkala($kodcaw,Request $request)
{ {
@@ -316,6 +387,17 @@ class TunaiController extends Controller
public function updateRequestTeller($kodcaw,Request $request) public function updateRequestTeller($kodcaw,Request $request)
{ {
$harini = Carbon::now();
$audit = new Audit();
$audit->users = isset($request->khazanah) ? $request->khazanah : '' ;
$audit->norujukan = null;
$audit->actions = ($request->jenis == 'pendahuluan') ? "Pendahuluan Peti Besi" : "Serahan Peti Besi";
$audit->kodcaw = $kodcaw;
$audit->created_at = $harini;
$audit->updated_at = $harini;
$audit->save();
$requestteller = RequestTeller::on('mysql7')->where([['no','=',$request->no],['kodcaw','=',$kodcaw],['kodlaluan','=',$request->kodlaluan],['update','=',0]])->update(array( $requestteller = RequestTeller::on('mysql7')->where([['no','=',$request->no],['kodcaw','=',$kodcaw],['kodlaluan','=',$request->kodlaluan],['update','=',0]])->update(array(
'update' => 1 'update' => 1
@@ -370,6 +452,16 @@ class TunaiController extends Controller
'update' => '0' 'update' => '0'
]); ]);
$audit = new Audit();
$audit->users = $request->kodlaluan;
$audit->actions = ($request->modal == 0) ? "Serahan Modal" : "Pendahuluan Modal";
$audit->new_data = $reqteller;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json($reqteller,200); return response()->json($reqteller,200);
} }
@@ -644,4 +736,12 @@ class TunaiController extends Controller
return response()->json($requestteller); 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;
}
} }
+12
View File
@@ -5,6 +5,7 @@ use App\Vault;
use App\Cawangan; use App\Cawangan;
use App\Tunai; use App\Tunai;
use App\AddTunai; use App\AddTunai;
use App\Audit;
use App\GlDetail; use App\GlDetail;
use App\imbangdugalama; use App\imbangdugalama;
use App\GlCode; use App\GlCode;
@@ -326,11 +327,22 @@ class VaultController extends Controller
public function listgldetail($kodcaw,Request $request) public function listgldetail($kodcaw,Request $request)
{ {
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$current = Carbon::now();
$current = new Carbon();
$gldetail=GlDetail::on($cawangan['mysql']) $gldetail=GlDetail::on($cawangan['mysql'])
->where('kodcaw','=',$kodcaw) ->where('kodcaw','=',$kodcaw)
->orderby('tarikh','desc')->get(); ->orderby('tarikh','desc')->get();
$audit = new Audit();
$audit->users = $request->teller;
$audit->actions = "test3";
$audit->new_data = $gldetail;
$audit->kodcaw = $kodcaw;
$audit->created_at = $current;
$audit->updated_at = $current;
$audit->save();
return response()->json($gldetail,200); return response()->json($gldetail,200);
} }
+12
View File
@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Audit;
use App\WakilSurat; use App\WakilSurat;
use App\Cawangan; use App\Cawangan;
@@ -44,6 +45,7 @@ class WakilController extends Controller
public function createSuratWakil($kodcaw, Request $request) public function createSuratWakil($kodcaw, Request $request)
{ {
$harini = Carbon::now();
$cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first(); $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first();
@@ -55,6 +57,16 @@ class WakilController extends Controller
]); ]);
$audit = new Audit();
$audit->users = $request->nama;
$audit->actions = "Cetak Surat Wakil";
$audit->norujukan = $request->norujukan;
$audit->new_data = $wakil;
$audit->kodcaw = $kodcaw;
$audit->created_at = $harini;
$audit->updated_at = $harini;
$audit->save();
return response()->json($wakil); return response()->json($wakil);
} }
+434
View File
@@ -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';
}
}
}
+7 -1
View File
@@ -7,7 +7,7 @@ use App\KadarUpah;
use Illuminate\Http\Request as HttpRequest; use Illuminate\Http\Request as HttpRequest;
use App\Support\OnePercent as OnePercentEngine; use App\Support\OnePercent as OnePercentEngine;
use App\Support\Tawarruq as TawarruqEngine; use App\Support\Tawarruq as TawarruqEngine;
use Illuminate\Support\Facades\Log;
class MasterServices class MasterServices
{ {
protected $cawangan; protected $cawangan;
@@ -223,6 +223,12 @@ class MasterServices
return $response; return $response;
} }
public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,HttpRequest $request){
$onepercent = new OnePercentEngine($this->cawangan);
$response = $onepercent->tebusUpdateAutoTawarruq($kodcaw,$norujukan,$request);
return $response;
}
public function kiraupahUjrahOnePercent($kodcaw,$norujukan){ public function kiraupahUjrahOnePercent($kodcaw,$norujukan){
$response = $this->engine->kiraupahUjrahOnePercent($kodcaw,$norujukan); $response = $this->engine->kiraupahUjrahOnePercent($kodcaw,$norujukan);
+110 -49
View File
@@ -9,6 +9,7 @@ use App\DenoPanjar;
use App\Panjar; use App\Panjar;
use App\Vault; use App\Vault;
use Carbon\Carbon; use Carbon\Carbon;
use DateTime;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@@ -40,11 +41,12 @@ class PanjarServices
private function calculation_denominasi($array_deno = [],$denominasi = [],$jenis_panjar){ 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'; return 'no data';
} }
if($jenis_panjar != 'masuk' || $jenis_panjar != 'keluar') return 'no data'; if($jenis_panjar != 'masuk' && $jenis_panjar != 'keluar') return 'no data';
$records = []; $records = [];
foreach($this->namelist_deno as $deno => $value){ 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){ public function delete(Request $request){
$current = Carbon::now(); $current = Carbon::now();
$current = new Carbon(); $current = new Carbon();
@@ -89,14 +122,13 @@ class PanjarServices
$panjar = Panjar::on($cawangan['mysql'])->latest('tarikh')->where('nobaucer', $request->nobaucer)->first(); $panjar = Panjar::on($cawangan['mysql'])->latest('tarikh')->where('nobaucer', $request->nobaucer)->first();
$vault = Vault::on($cawangan['mysql'])->latest('tarikh')->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(); $deno_panjar = DenoPanjar::on('mysql7')->where('kodcaw', $this->cawangan)->where('recno', $request->recno)->latest('tarikh','masa')->first();
try{ try{
if (!$panjar) throw new \Exception('Custom Exception: Panjar Does Not Exist!'); if (!$panjar) throw new \Exception('Custom Exception: Panjar Does Not Exist!');
if (!$denominasi) throw new \Exception('Custom Exception: Denominasi 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 (!$vault) throw new \Exception('Custom Exception: Vault Does Not Exist!');
if (!$deno_panjar) throw new \Exception('Custom Exception: Denominasi Panjar 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'); $return_data = $this->calculation_denominasi($deno_panjar,$denominasi,'masuk');
if($return_data == 'no data') throw new \Exception('Custom Exception: Denominasi Panjar Not Return Data'); if($return_data == 'no data') throw new \Exception('Custom Exception: Denominasi Panjar Not Return Data');
@@ -149,17 +181,14 @@ class PanjarServices
if($bakiakhir <= 0) throw new \Exception('Custom Exception: Amaun Baki Akhir Cannot Be Zero'); if($bakiakhir <= 0) throw new \Exception('Custom Exception: Amaun Baki Akhir Cannot Be Zero');
if($totalpanjar < 0) throw new \Exception('Custom Exception: Amaun Panjar Cannot Be Zero'); if($totalpanjar < 0) throw new \Exception('Custom Exception: Amaun Panjar Cannot Be Zero');
Vault::on($cawangan['mysql'])->where('kodcaw','=', $cawangan['kodcaw'])->latest('tarikh')->update(array( Vault::on($cawangan['mysql'])->where('kodcaw','=', $cawangan['kodcaw'])->where('tarikh','=',$current->toDateString())->update(array(
'totpanjar' => $totalpanjar, 'totpanjar' => $totalpanjar,
'bakiakhir'=>$bakiakhir, 'bakiakhir'=>$bakiakhir,
'bakieod'=>$bakiakhir '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 = new Audit();
$audit->users = $request->tuntutoleh; $audit->users = $panjar['tuntutoleh'];
$audit->actions = "Keluarkan Perbelanjaan"; $audit->actions = "Keluarkan Perbelanjaan";
$audit->new_data = $panjar; $audit->new_data = $panjar;
$audit->kodcaw = $this->cawangan; $audit->kodcaw = $this->cawangan;
@@ -167,10 +196,27 @@ class PanjarServices
$audit->updated_at = $current; $audit->updated_at = $current;
$audit->save(); $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){ }catch(\Exception $e){
dd($e->getMessage()); $array_response = [
Log::error('Exception: ' , $e->getMessage()); '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(); $cawangan = Cawangan::on('mysql7')->where('kodcaw', $this->cawangan)->first();
$denominasi = Denominasi::on($cawangan['mysql'])->latest('tarikh')->first(); $denominasi = Denominasi::on($cawangan['mysql'])->latest('tarikh')->first();
$vault = Vault::on($cawangan['mysql'])->latest('tarikh')->first(); $vault = Vault::on($cawangan['mysql'])->latest('tarikh')->first();
try{ try{
if (!$denominasi) throw new \Exception('Custom Exception: Denominasi 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 (!$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']) $panjar = Panjar::on($cawangan['mysql'])
->create([ ->create([
'tarikh'=> $current->toDateString(), 'tarikh'=> $current->toDateString(),
'deskripsi'=> $request->deskripsi, 'deskripsi'=> $request->deskripsi,
'bayaran' => $request->bayaran, 'bayaran' => $request->bayaran,
'tag' => $request->tag, 'tag' => $tagmodal['tag'],
'kategori' => $request->kategori, 'kategori' => $tagmodal['kategori'],
'id' => $request->id, 'id' => $request->kodlaluan,
'bakiperubatan' => $request->bakiperubatan, 'bakiperubatan' => 0,
'nobaucer' => $request->nobaucer, 'nobaucer' => $request->baucer,
'nobil' => $request->nobil, 'nobil' => $tarikhbil,
'tuntutoleh' => $request->tuntutoleh 'tuntutoleh' => $request->tuntutan
]); ]);
$denopanjar = DenoPanjar::on('mysql7')->create([ $denopanjar = DenoPanjar::on('mysql7')->create([
@@ -207,31 +255,31 @@ class PanjarServices
'masa' => $current->toTimeString(), 'masa' => $current->toTimeString(),
'kodcaw' => $this->cawangan, 'kodcaw' => $this->cawangan,
'kodlaluan' => $request->kodlaluan, 'kodlaluan' => $request->kodlaluan,
'serahan' => $request->serahan, 'serahan' => $request->bayaran,
'bd1' => $request->bd1, 'bd1' => 0,
'bd5' => $request->bd5, 'bd5' => 0,
'bd10' => $request->bd10, 'bd10' => 0,
'bd20' => $request->bd20, 'bd20' => 0,
'bd50' => $request->bd50, 'bd50' => 0,
'bd100' => $request->bd100, 'bd100' => 0,
'txtring1' => $request->txtring1, 'txtring1' => $request->ambilanring1,
'txtring5' => $request->txtring5, 'txtring5' => $request->ambilanring5,
'txtring10' => $request->txtring10, 'txtring10' => $request->ambilanring10,
'txtring20' => $request->txtring20, 'txtring20' => $request->ambilanring20,
'txtring50' => $request->txtring50, 'txtring50' => $request->ambilanring50,
'txtring100' => $request->txtring100, 'txtring100' => $request->ambilanring100,
'txtring1000' => $request->txtring1000, 'txtring1000' => 0,
'txtsen1' => $request->txtsen1, 'txtsen1' => $request->ambilansen1,
'txtsen5' => $request->txtsen5, 'txtsen5' => $request->ambilansen5,
'txtsen10' => $request->txtsen10, 'txtsen10' => $request->ambilansen10,
'txtsen20' => $request->txtsen20, 'txtsen20' => $request->ambilansen20,
'txtsen50' => $request->txtsen50, 'txtsen50' => $request->ambilansen50,
'jenis' =>$request->jenis, 'jenis' =>$request->jenismodal,
'recno' =>$panjar['recno'], 'recno' =>$panjar['id'],
'update' => '0' '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'); 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( Denominasi::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()]])->update(array(
@@ -282,7 +330,7 @@ class PanjarServices
if($bakiakhir <= 0) throw new \Exception('Custom Exception: Amaun Baki Akhir Cannot Be Zero'); if($bakiakhir <= 0) throw new \Exception('Custom Exception: Amaun Baki Akhir Cannot Be Zero');
if($totalpanjar < 0) throw new \Exception('Custom Exception: Amaun Panjar Cannot Be Zero'); if($totalpanjar < 0) throw new \Exception('Custom Exception: Amaun Panjar Cannot Be Zero');
Vault::on($cawangan['mysql'])->where('kodcaw','=', $cawangan['kodcaw'])->latest('tarikh')->update(array( Vault::on($cawangan['mysql'])->where('kodcaw','=', $cawangan['kodcaw'])->where('tarikh','=',$current->toDateString())->update(array(
'totpanjar' => $totalpanjar, 'totpanjar' => $totalpanjar,
'bakiakhir'=>$bakiakhir, 'bakiakhir'=>$bakiakhir,
'bakieod'=>$bakiakhir 'bakieod'=>$bakiakhir
@@ -297,21 +345,34 @@ class PanjarServices
$audit->updated_at = $current; $audit->updated_at = $current;
$audit->save(); $audit->save();
$totalperubatan = $this->getPerubatanAmount($request->tuntutan);
$array_response = [ $array_response = [
'result' => 'success', 'result' => 'success',
'data' => 1 'data' => 1,
'totalperubatan' => $totalperubatan,
]; ];
return response()->json($array_response); return $array_response;
}); });
}catch(\Exception $e){ }catch(\Exception $e){
dd($e->getMessage());
$array_response = [ $array_response = [
'result' => 'error', 'result' => 'error',
'data' => $e->getMessage() '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;
} }
} }
@@ -14,6 +14,7 @@ use App\Tebus;
use App\Transaction; use App\Transaction;
use App\TransaksiKeuntungan; use App\TransaksiKeuntungan;
use App\WTD; use App\WTD;
use App\AkruNet;
use Carbon\Carbon; use Carbon\Carbon;
class GeneralLedger class GeneralLedger
@@ -517,6 +518,43 @@ class GeneralLedger
$mulaCarbon = new Carbon($this->mula); $mulaCarbon = new Carbon($this->mula);
$hinggaCarbon = new Carbon($this->hingga); $hinggaCarbon = new Carbon($this->hingga);
if($this->isFullMonth($this->mula,$this->hingga) && $mulaCarbon->month < 10){
$lastDayOfPreviousMonth = $mulaCarbon->subMonth()->endOfMonth();
$balancesheet_previousmonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$lastDayOfPreviousMonth->toDateString())->first()->toArray();
$balancesheet_currentmonth = imbangdugabackup::on($cawangan['mysql'])->where('tarikh',$this->hingga)->first()->toArray();
// dd($lastDayOfPreviousMonth->toDateString(),$this->hingga,$balancesheet_previousmonth['keun_sebenar'],$balancesheet_currentmonth['keun_sebenar']);
$realprofit_previousmonth = ($lastDayOfPreviousMonth->year == $hinggaCarbon->year) ? $balancesheet_previousmonth['keun_sebenar'] : 0;
$realprofit_currentmonth = $balancesheet_currentmonth['keun_sebenar'];
$total_keuntungan_sebenar = $realprofit_currentmonth - $realprofit_previousmonth;
$month = $lastDayOfPreviousMonth->month;
$className_previous = "App\StokAudit{$month}";
$month_current = $hinggaCarbon->month;
$className_current = "App\StokAudit{$month_current}";
$stokaudit_previous = $className_previous::on($cawangan['mysql'])->where('tahun',$lastDayOfPreviousMonth->year);
$stokaudit_current = $className_current::on($cawangan['mysql'])->where('tahun',$hinggaCarbon->year);
$akrunet = AkruNet::on($cawangan['mysql'])->where('bulan',$month_current)->where('tahun',$hinggaCarbon->year)->first()->toArray();
$stokaudit_previous = $stokaudit_previous->sum('upahblmbyar');
$stokaudit_current = $stokaudit_current->sum('upahblmbyar');
// $pend_terakru = $balancesheet_currentmonth['pend_terakru'];
$total = $akrunet['jumlah'] - $stokaudit_current;
$total_keuntungan_semasa = abs($total) - $stokaudit_previous;
$array_keuntungan = ['keuntungan_sebenar' => abs($total_keuntungan_sebenar), 'keuntungan_semasa' => abs($total_keuntungan_semasa)];
return $array_keuntungan;
}
/* Start Keuntungan Sebenar Calculation */ /* Start Keuntungan Sebenar Calculation */
$collection_trans = Transaction::on('mysql7') $collection_trans = Transaction::on('mysql7')
->leftJoin('transaksi_keuntungan as trans', function ($join) { ->leftJoin('transaksi_keuntungan as trans', function ($join) {
@@ -718,6 +756,24 @@ class GeneralLedger
})->sum($sumtype); })->sum($sumtype);
} }
private function isFullMonth($startDate,$endDate){
// Parse the dates to Carbon instances
$start = Carbon::parse($startDate);
$end = Carbon::parse($endDate);
// Check if the start date is the first day of the month
$isFirstDay = $start->isSameDay($start->copy()->startOfMonth());
// Check if the end date is the last day of the month
$isLastDay = $end->isSameDay($end->copy()->endOfMonth());
// Check if both dates are in the same month and year
$isSameMonth = $start->isSameMonth($end) && $start->isSameYear($end);
// Return true only if all conditions are met
return $isFirstDay && $isLastDay && $isSameMonth;
}
} }
+3 -1
View File
@@ -302,7 +302,9 @@ class OnePercentService
$ujrah_current = $result_audit_current->sum('ujrah'); $ujrah_current = $result_audit_current->sum('ujrah');
} }
/* B */ /* B */
$result_audit_previous = $this->StokAuditGenerateTerakru($month_sebelum,$cawangan,$year_generate); $year_sebelum = $date_sebelum->format('Y');
$year_publish = ($month_sekarang == 1) ? $year_sebelum : $year_generate;
$result_audit_previous = $this->StokAuditGenerateTerakru($month_sebelum,$cawangan,$year_publish);
$onepercent_previous = $result_audit_previous->sum('utgonepercent'); $onepercent_previous = $result_audit_previous->sum('utgonepercent');
$ujrah_previous = $result_audit_previous->sum('ujrah'); $ujrah_previous = $result_audit_previous->sum('ujrah');
@@ -821,7 +821,8 @@ class RingkasanHarianService
'011233' => '2021-06-28', '011233' => '2021-06-28',
]; ];
return $tarikhTawarruq[Str::upper($this->kodCawangan)]; $defaultDate = '2021-01-01';
return $tarikhTawarruq[Str::upper($this->kodCawangan)] ?? $defaultDate;
} }
private function getOutstandingImbangDuga() private function getOutstandingImbangDuga()
+15 -1
View File
@@ -181,7 +181,14 @@ class OnePercent extends MasterServices
public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info); $tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); $response = $tebus->transaksiPembiayaanSemula($this->kodcaw,$norujukan,$request);
return $response;
}
public function tebusUpdateTambahPinjaman($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->transaksiTambahPembiayaan($this->kodcaw,$norujukan,$request);
return $response; return $response;
} }
@@ -207,6 +214,13 @@ class OnePercent extends MasterServices
return $response; return $response;
} }
public function tebusTransaksiUpdate($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusTransaksiUpdate($this->kodcaw,$norujukan,$request);
return $response;
}
/* End Penebusan */ /* End Penebusan */
public function test(){ public function test(){
+2 -1
View File
@@ -8,6 +8,7 @@ use App\Support\v1\GadaiV1 as Version1Gadai;
use App\Services\MasterServices; use App\Services\MasterServices;
use App\Support\v1\Penebusan; use App\Support\v1\Penebusan;
use Illuminate\Http\Request as HttpRequest; use Illuminate\Http\Request as HttpRequest;
use Illuminate\Support\Facades\Log;
class Tawarruq extends MasterServices class Tawarruq extends MasterServices
{ {
@@ -165,7 +166,7 @@ class Tawarruq extends MasterServices
public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){
$tebus = new Penebusan($this->kodcaw,$this->cawangan_info); $tebus = new Penebusan($this->kodcaw,$this->cawangan_info);
$response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); $response = $tebus->transaksiPembiayaanSemula($this->kodcaw,$norujukan,$request);
return $response; return $response;
} }
+329 -3
View File
@@ -9,7 +9,10 @@ use App\KadarUpah;
use App\Support\v2\Calculation; use App\Support\v2\Calculation;
use Carbon\Carbon; use Carbon\Carbon;
use App\Gadai; use App\Gadai;
use App\HargaEmas;
use App\InOutMar; use App\InOutMar;
use App\KomuditiPurchase;
use App\KomuditiTransaksi;
use App\Marhun; use App\Marhun;
use App\Moratorium; use App\Moratorium;
use App\Support\OnePercent; use App\Support\OnePercent;
@@ -188,7 +191,8 @@ class Penebusan
$bilang_bln = $tempoh - $gadai_data['tempohbayar']; $bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$tawarruqservices = new V1Calculation(); $tawarruqservices = new V1Calculation();
$keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']); //$keuntungan = $tawarruqservices->kiraanTawarruq($gadai_data['pinjaman'],$gadai_data['kadarupah']);
$keuntungan = $tawarruqservices->kiraanTawarruq(($gadai_data['pinjaman'] !== null) ? $gadai_data['pinjaman'] : 0,($gadai_data['kadarupah'] !== null) ? $gadai_data['kadarupah'] : 0);
$upahsemasa_raw = $bilang_bln * $keuntungan; $upahsemasa_raw = $bilang_bln * $keuntungan;
$upah_semasa_round = number_format($upahsemasa_raw,2); $upah_semasa_round = number_format($upahsemasa_raw,2);
@@ -458,7 +462,7 @@ class Penebusan
//check duplicate //check duplicate
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','T')->first(); $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','T')->first();
if(!empty($data)){ if(!empty($data)){
return 'duplicate'; return response()->json('duplicate');
} }
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
@@ -601,7 +605,7 @@ class Penebusan
//check duplicate //check duplicate
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first();
if(!empty($data)){ if(!empty($data)){
return 'duplicate'; return response()->json('duplicate');
} }
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
@@ -771,4 +775,326 @@ class Penebusan
return $tempoh_gadai; return $tempoh_gadai;
} }
public function transaksiPembiayaanSemula($kodcaw,$norujukan,HttpRequest $request){
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$gadai = optional($gadai)->toArray();
//check duplicate
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first();
if(!empty($data)){
return 'duplicate';
}
if(!$gadai){
return 'gadai no-data';
}
$array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller','bakipinjaman','bakiupah']);
$array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','pinjamanbaru','marhun','teller','jenistebus']);
$array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']);
$array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']);
try{
DB::connection($cawangan['mysql'])->beginTransaction();
$this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus);
$this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans);
DB::connection('mysql7')->beginTransaction();
$this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base);
$this->createTransactionBase($norujukan,$kodcaw,$array_trans_base);
$array_response = [
'result' => 'success',
'data' => 1
];
DB::connection($cawangan['mysql'])->commit();
DB::connection('mysql7')->commit();
return response()->json($array_response);
}catch(\Exception $e){
DB::connection($cawangan['mysql'])->rollBack();
DB::connection('mysql7')->rollBack();
$array_response = [
'result' => 'error',
'data' => $e->getMessage()
];
Log::error('Transaction failed', [
'exception' => $e->getMessage(),
'line' => $e->getLine(),
'file' => $e->getFile(),
]);
return response()->json($array_response);
}
}
private function saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus){
$current = Carbon::now();
$rebet = 0;
$rebet = $this->rebetselepastawarruq($kodcaw,$norujukan);
$upah_rebet = $this->kiraUpahRebet($norujukan);
try{
Tebus::on($cawangan['mysql'])->create([
'kodcaw'=> $kodcaw,
'norujukan'=> $norujukan,
'nopelanggan' => $array_tebus['nopelanggan'],
'jenisbyr' => "TN",
'jenistebus' => $array_tebus['jenistebus'],
'glcode' => "0",
't_tebus' => $current->toDateString(),
'jbg' => $gadai['tempoh'],
'kadarupah' => $gadai['kadarupah'],
'nilaimarhun' => $gadai['nilaimarhun'],
'pinjaman' => $gadai['pinjaman'],
'ansuran' => 0.00,
'addpinjaman' => $array_tebus['addpinjaman'],
'bakipjm' => $array_tebus['bakipinjaman'],
'bakiupah' => $array_tebus['bakiupah'],
'terima' => "*",
'kodgl' => "0",
'nowakil' => $array_tebus['nowakil'],
'rebate' => $rebet,
'marhuntebus' => $array_tebus['marhun'],
'historygadaian' => $norujukan,
'tarikhbyrn' => $current->toDateString(),
'teller' => $array_tebus['teller'],
]);
}catch(\Exception $e){
throw new \Exception("Error in Tebus: " . $e->getMessage());
}
}
private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){
$current = Carbon::now();
if($array_tebus_base['jenistebus'] == 'AT'){
$bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah'];
}else{
$bayaran_pembiayaan = $array_tebus_base['bakipinjaman'];
}
$margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100;
$harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus_base['jeniskeuntungan']);
$upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan);
$bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah'];
$upah_rebet_sebenar = $harga_tebus - $gadai['bakipjm'];
try{
TransaksiKeuntungan::on('mysql7')->create([
'norujukan' => $norujukan,
'bayaran_keuntungan' => $array_tebus_base['bakiupah'],
'bayaran_pembiayaan' => $bayaran_pembiayaan,
'keuntungan_rebet' => $array_tebus_base['bakiupah'],
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw
]);
if($array_tebus_base['jenistebus'] == 'P'){
$duit_masuk = $array_tebus_base['bakiupah'];
}else if($array_tebus_base['jenistebus'] == 'AT'){
$duit_masuk = $array_tebus_base['totalbayaran'];
}else{
$duit_masuk = $harga_tebus['harga'];
}
$baki_hargajualan = ($array_tebus_base['jenistebus'] == 'P') ? $gadai['bakihargajualan'] = $array_tebus_base['bakiupah'] : $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman'];
Transaction::on('mysql7')->create([
'trans_type' => $array_tebus_base['jenistebus'],
'norujukan' => $norujukan,
'nokp' => $gadai['nokp'],
'teller' => $array_tebus_base['teller'],
'kodcaw' => $kodcaw,
'duit_masuk' => $array_tebus_base['totalbayaran'],
'created_at' => $current,
'bakiharga' => 0,
'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0,
'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0
]);
}catch(\Exception $e){
throw new \Exception("Error in TebusBase: " . $e->getMessage());
}
}
private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){
$current = Carbon::now();
/* Create Gadai */
$gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first();
$gadaiTransaction = optional($gadaiTransaction)->toArray();
$new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1;
$curent_year = substr($current->year,2,2);
$curent_month = sprintf("%02d", $current->month);
$current_day = sprintf("%02d", $current->day);
$new_transaction = sprintf("%04d",$new_sirig);
$new_sag_number = strtoupper($cawangan['kodcaw']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction;
try{
Gadai::on($cawangan['mysql'])->create([
'kodcaw'=>$kodcaw,
'norujukan' => $new_sag_number,
'nopelanggan' => $array_trans['nopelanggan'],
'nokp' => $array_trans['noic'],
'sirig' => $new_sirig,
't_gadai' => $current->toDateString(),
'sttebus' => '',
'masa' =>$current->toTimeString(),
'tagbaru' => 1
]);
$marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get();
foreach($marhun as $marhunloop){
$karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat'];
$karatbaru = $marhunloop['karat'];
$harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first();
if(isset($array_trans['jenisAT'])){
$harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga'];
}else{
$harga = $harga_emas['harga'];
}
$nilai_marhun = (floatval($harga) * floatval($marhunloop['berat']));
$marhunToCreate = [
'kodcaw'=> $kodcaw,
'norujukan'=> $new_sag_number,
't_gadai' => $current->toDateString(),
'bil' => $marhunloop['kuantiti'],
'marhun' => $marhunloop['marhun'],
'nota' => $marhunloop['nota'],
'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0,
'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '',
'karat' => $marhunloop['karat'],
'berat' => $marhunloop['berat'],
'harga' => $harga,
'n_marhun' => $nilai_marhun
];
if($marhunToCreate['berat_batu_permata'] == '') {
$marhunToCreate['berat_batu_permata'] = null;
};
Marhun::on($cawangan['mysql'])->create($marhunToCreate);
}
$total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun');
$total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil');
$total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat');
$margin_pinjaman = ($array_trans['pinjamanbaru'] / $total_nilai_marhun);
$t_matang = Carbon::now();
$t_matang = $t_matang->addMonths(6)->subDays(1);
$t_kontrak = Carbon::now();
$t_kontrak = $t_kontrak->addMonths(12)->subDays(1);
$kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first();
$onepercentservices = new Calculation();
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjamanbaru'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman);
$upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']);
$upah6 = $onepercentservices->getRoundedMethod($upah1 * 6);
$upah12 = $onepercentservices->getRoundedMethod($upah1 * 12);
$ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']);
$onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']);
$akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5);
$akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5);
$hargajualan = $array_trans['pinjaman'] + $upah12;
Gadai::on($cawangan['mysql'])
->where('norujukan','=',$new_sag_number)
->update(array(
'nilaimarhun' => $total_nilai_marhun,
'berat'=> $total_berat_marhun,
'pinjaman' => $array_trans['pinjamanbaru'],
'kadarupah' => $kadar_raw['kadarujrah'],
'marhun' => $array_trans['marhun'],
'percentpinj' => $margin_pinjaman,
'teller' => $array_trans['teller'],
'bakipjm' => $array_trans['pinjamanbaru'],
'bakiupah' => $upah6,
'jbg' => 0.5,
't_update' => $current->toDateString(),
'cetak' => 0,
'upah12' => $upah12,
'hargajualan' => $hargajualan,
'bakihargajualan' => $hargajualan,
'tagserah' => 0,
't_matang' => $t_matang,
't_matang1' => $t_kontrak,
'tempoh' => 0.5,
'kuantiti' => $total_bil_marhun,
'tagkomuditi' => 0,
'upahdibayar' => 0.00,
'tempohbayar' => 0.00,
'lelong_tawarruq' => 1,
'kadarujrah' => $kadar_raw['kadarujrah'],
'ujrah' => $ujrah,
'onepercent' => $onepercent,
'margin_semasa' => $margin_pinjaman,
'tagbaru' => 1,
'tunggakanujrah' => $akrual_ujrah,
'tunggakanonepercent' => $akrual_onepercent,
'historygadaian' => $norujukan,
'tag_tebus' => $array_trans['jenistebus'],
));
Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
'sttebus' => "T",
't_update' => $current->toDateString(),
));
}catch(\Exception $e){
throw new \Exception("Error in Transaction: " . $e->getMessage());
}
}
private function createTransactionBase($norujukan,$kodcaw,$array_trans_base){
$current = Carbon::now();
$komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first();
$unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0;
try{
$update_unit = $unit_current - $array_trans_base['pinjamanbaru'];
KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([
'unit_komuditi' => $update_unit
]);
KomuditiTransaksi::on('mysql7')->create([
'unit_komuditi' => $update_unit,
'nosijil'=>$komuditi_current['no_sijil'],
'norujukan' => $norujukan,
'kodcaw' => $kodcaw,
'teller' => $array_trans_base['teller'],
'masa' => $current->toTimeString(),
'tarikh' => $current->toDateString()
]);
}catch(\Exception $e){
throw new \Exception("Error in TransactionBase: " . $e->getMessage());
}
}
} }
+9 -3
View File
@@ -177,7 +177,10 @@ class GadaiV2
$bilang_bln = $tempoh - $gadai_data['tempohbayar']; $bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']);
$upahsemasa_raw = $bilang_bln * $upah['keuntungan']; //$upahsemasa_raw = $bilang_bln * $upah['keuntungan'];
$onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$upahsemasa_raw = $onepercent + $ujrah;
$upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw); $upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw);
return $upahsemasa_raw; return $upahsemasa_raw;
@@ -203,7 +206,10 @@ class GadaiV2
$upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); $upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']);
$upahrebet_raw = $bilang_bln * $upah['keuntungan']; //$upahrebet_raw = $bilang_bln * $upah['keuntungan'];
$onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$upahrebet_raw = $onepercent + $ujrah;
$upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw); $upahrebet_raw = $onepercentservices->getRoundedMethod($upahrebet_raw);
return $upahrebet_raw; return $upahrebet_raw;
@@ -240,7 +246,7 @@ class GadaiV2
$margin_semasa = ($gadai['bakipjm'] / $gadai['nilaimarhun']) * 100; $margin_semasa = ($gadai['bakipjm'] / $gadai['nilaimarhun']) * 100;
$keuntungan = $onepercent->kiraanKeuntunganSebenar($gadai['bakipjm'],$gadai['nilaimarhun'],$gadai['kadarupah'],$margin_semasa); $keuntungan = $onepercent->kiraanKeuntunganRebet($gadai['bakipjm'],$gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['margin_semasa']);
$ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['percentpinj']); $ujrahasal = $onepercent->kiraanUjrahSebenar($gadai['nilaimarhun'],$gadai['kadarupah'],$gadai['percentpinj']);
$onepercentasal = $gadai['pinjaman'] * (1/100); $onepercentasal = $gadai['pinjaman'] * (1/100);
+434 -4
View File
@@ -9,8 +9,13 @@ use App\KadarUpah;
use App\Support\v2\Calculation; use App\Support\v2\Calculation;
use Carbon\Carbon; use Carbon\Carbon;
use App\Gadai; use App\Gadai;
use App\HargaEmas;
use App\InOutMar; use App\InOutMar;
use App\KomuditiPurchase;
use App\KomuditiTransaksi;
use App\Marhun; use App\Marhun;
use App\FailoverTransaction;
use App\FailoverTransactionFailed;
use App\Moratorium; use App\Moratorium;
use App\Support\OnePercent; use App\Support\OnePercent;
use App\Tebus; use App\Tebus;
@@ -200,8 +205,9 @@ class Penebusan
$bilang_bln = $tempoh - $gadai_data['tempohbayar']; $bilang_bln = $tempoh - $gadai_data['tempohbayar'];
$upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']);
$upahsemasa_raw = $bilang_bln * $upah['keuntungan']; $onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']);
$upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw); $ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']);
$upahsemasa_raw = $onepercentservices->getRoundedMethod($onepercent + $ujrah);
return $upahsemasa_raw; return $upahsemasa_raw;
} }
@@ -483,7 +489,7 @@ class Penebusan
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->whereIn('trans_type', ['P', 'T', 'S'])->first(); $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->whereIn('trans_type', ['P', 'T', 'S'])->first();
if(!empty($data)){ if(!empty($data)){
return 'duplicate'; return response()->json('duplicate');
} }
$ujrah=0;$onepercent=0;$rounded=0; $ujrah=0;$onepercent=0;$rounded=0;
@@ -649,7 +655,7 @@ class Penebusan
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first();
if(!empty($data)){ if(!empty($data)){
return 'duplicate'; return response()->json('duplicate');
} }
$ujrah=0;$onepercent=0;$rounded=0; $ujrah=0;$onepercent=0;$rounded=0;
@@ -917,4 +923,428 @@ class Penebusan
} }
public function transaksiPembiayaanSemula($kodcaw,$norujukan,HttpRequest $request){
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$gadai = optional($gadai)->toArray();
//check duplicate
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first();
if(!empty($data)){
return 'duplicate';
}
if(!$gadai){
return 'gadai no-data';
}
$array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']);
$array_trans = $request->only(['nopelanggan', 'noic','jenisAT','pinjaman','pinjamanbaru','marhun','teller','jenistebus']);
$array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']);
$array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']);
try{
DB::connection($cawangan['mysql'])->beginTransaction();
$this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus);
$this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans);
DB::connection('mysql7')->beginTransaction();
$this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base);
$this->createTransactionBase($norujukan,$kodcaw,$array_trans_base);
$array_response = [
'result' => 'success',
'data' => 1
];
DB::connection($cawangan['mysql'])->commit();
DB::connection('mysql7')->commit();
return response()->json($array_response);
}catch(\Exception $e){
DB::connection($cawangan['mysql'])->rollBack();
DB::connection('mysql7')->rollBack();
$array_response = [
'result' => 'error',
'data' => $e->getMessage()
];
Log::error('Transaction failed', [
'exception' => $e->getMessage(),
'line' => $e->getLine(),
'file' => $e->getFile(),
]);
return response()->json($array_response);
}
}
public function transaksiTambahPembiayaan($kodcaw,$norujukan,HttpRequest $request){
$current = Carbon::now();
$current = new Carbon();
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
$gadai = optional($gadai)->toArray();
//check duplicate
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first();
if(!empty($data)){
return 'duplicate';
}
$array_tebus = $request->only(['jeniskeuntungan', 'nopelanggan','jenistebus','addpinjaman','nowakil','marhun','teller']);
$array_trans = $request->only(['nopelanggan', 'noic','pinjaman','pinjamanbaru','marhun','teller','jenistebus']);
$array_tebus_base = $request->only(['totalbayaran', 'bakiupah','jeniskeuntungan','bakipinjaman','jenistebus','teller','nowakil','duitpelanggan']);
$array_trans_base = $request->only(['pinjaman','teller','pinjamanbaru']);
try{
DB::connection($cawangan['mysql'])->beginTransaction();
$this->saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus);
$this->createTransaction($cawangan,$kodcaw,$norujukan,$array_trans);
DB::connection('mysql7')->beginTransaction();
$this->saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base);
$this->createTransactionBase($norujukan,$kodcaw,$array_trans_base);
$array_response = [
'result' => 'success',
'data' => 1
];
DB::connection($cawangan['mysql'])->commit();
DB::connection('mysql7')->commit();
return response()->json($array_response);
}catch(\Exception $e){
DB::connection($cawangan['mysql'])->rollBack();
DB::connection('mysql7')->rollBack();
$array_response = [
'result' => 'error',
'data' => $e->getMessage()
];
Log::error('Transaction failed', [
'exception' => $e->getMessage(),
'line' => $e->getLine(),
'file' => $e->getFile(),
]);
return response()->json($array_response);
}
}
private function transaksiPenyelesaianSebahagian($kodcaw,$norujukan,HttpRequest $request){
$current = Carbon::now();
$current = new Carbon();
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first();
try{
//check duplicate
$data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first();
if(!empty($data)){
return 'duplicate';
}
}catch(\Exception $e){
}
}
private function saveTebus($kodcaw,$norujukan,$gadai,$cawangan,$array_tebus){
$current = Carbon::now();
/*
Rebet Still looking for the calculation
*/
$rebet = 0;
$harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus['jeniskeuntungan']);
$upah_tebus = $this->kiraupahTawarruq($norujukan);
$upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan);
$array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan);
try{
$onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent'];
$ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah'];
Tebus::on($cawangan['mysql'])->create([
'kodcaw'=> $kodcaw,
'norujukan'=> $norujukan,
'nopelanggan' => $array_tebus['nopelanggan'],
'jenisbyr' => "TN",
'jenistebus' => $array_tebus['jenistebus'],
'glcode' => "0",
't_tebus' => $current->toDateString(),
'jbg' => $gadai['tempoh'],
'kadarupah' => $gadai['kadarupah'],
'nilaimarhun' => $gadai['nilaimarhun'],
'pinjaman' => $gadai['pinjaman'],
'ansuran' => 0.00,
'addpinjaman' => $array_tebus['addpinjaman'],
'bakipjm' => $harga_tebus['harga'],
'bakiupah' => $upah_tebus,
'terima' => "*",
'kodgl' => "0",
'nowakil' => $array_tebus['nowakil'],
'rebate' => $rebet,
'marhuntebus' => $array_tebus['marhun'],
'historygadaian' => $norujukan,
'tarikhbyrn' => $current->toDateString(),
'teller' => $array_tebus['teller'],
'ujrah' => $ujrah_rebet,
'onepercent' => $onepercent_rebet,
]);
}catch(\Exception $e){
throw new \Exception("Error in Tebus: " . $e->getMessage());
}
}
private function saveTebusBase($kodcaw,$norujukan,$gadai,$array_tebus_base){
$current = Carbon::now();
if($array_tebus_base['jenistebus'] == 'AT'){
$bayaran_pembiayaan = $array_tebus_base['totalbayaran'] - $array_tebus_base['bakiupah'];
}else{
$bayaran_pembiayaan = $array_tebus_base['bakipinjaman'];
}
$margin_semasa = ($gadai['bakipjm']/$gadai['nilaimarhun']) * 100;
$harga_tebus = $this->hargaTebusTawarruq($kodcaw,$norujukan,$array_tebus_base['jeniskeuntungan']);
$upah_tebus = $this->kiraupahTawarruq($norujukan);
$array_onepercent = $this->kiraupahUjrahOnePercent($kodcaw,$norujukan);
$array_onepercent_rebet = $this->kiraupahUjrahOnePercentRebate($kodcaw,$norujukan);
$upah_rebet = $this->kiraUpahRebetSebenar($kodcaw,$norujukan);
$ujrah = $array_onepercent['ujrah'];
$onepercent = $array_onepercent['onepercent'];
$onepercent_rebet = $array_onepercent_rebet['onepercent'] - $upah_rebet['onepercent'];
$ujrah_rebet = $array_onepercent_rebet['ujrah'] - $upah_rebet['ujrah'];
$upah_rebet_sebenar = $harga_tebus['harga'] - $gadai['bakipjm'];
try{
TransaksiKeuntungan::on('mysql7')->create([
'norujukan' => $norujukan,
'bayaran_keuntungan' => $upah_tebus,
'bayaran_pembiayaan' => $bayaran_pembiayaan,
'keuntungan_rebet' => $upah_rebet_sebenar,
'tarikh_bayaran'=> $current,
'kodcaw'=> $kodcaw,
'ujrah' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah : 0,
'ujrah_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $ujrah_rebet : 0,
'onepercent' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent : 0,
'onepercent_rebet' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $onepercent_rebet : 0,
'margin_semasa' => ($array_tebus_base['jeniskeuntungan'] == 'onepercent') ? $margin_semasa : 0,
'tempoh' => $gadai['tempoh'],
'beza_tempoh' => ($gadai['tempoh'] - $gadai['tempohbayar']),
]);
if($array_tebus_base['jenistebus'] == 'P'){
$duit_masuk = $array_tebus_base['bakiupah'];
}else if($array_tebus_base['jenistebus'] == 'AT'){
$duit_masuk = $array_tebus_base['totalbayaran'];
}else{
$duit_masuk = $harga_tebus['harga'];
}
$baki_hargajualan = ($array_tebus_base['jenistebus'] == 'P') ? $gadai['bakihargajualan'] = $array_tebus_base['bakiupah'] : $gadai['bakihargajualan'] - $array_tebus_base['bakipinjaman'];
Transaction::on('mysql7')->create([
'trans_type' => $array_tebus_base['jenistebus'],
'norujukan' => $norujukan,
'nokp' => $gadai['nokp'],
'teller' => $array_tebus_base['teller'],
'kodcaw' => $kodcaw,
'duit_masuk' => $duit_masuk,
'created_at' => $current,
'bakiharga' => $baki_hargajualan,
'nowakil' => (int)$array_tebus_base['nowakil'],
'duitpelanggan' => isset($array_tebus_base['duitpelanggan']) ? $array_tebus_base['duitpelanggan'] : 0,
'bakipelanggan' => isset($array_tebus_base['bakipelanggan']) ? $array_tebus_base['bakipelanggan'] : 0
]);
}catch(\Exception $e){
throw new \Exception("Error in TebusBase: " . $e->getMessage());
}
}
private function createTransaction($cawangan,$kodcaw,$norujukan,$array_trans){
$current = Carbon::now();
/* Create Gadai */
$gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first();
$gadaiTransaction = optional($gadaiTransaction)->toArray();
$new_sirig = ($gadaiTransaction) ? $gadaiTransaction['sirig'] + 1 : 1;
$curent_year = substr($current->year,2,2);
$curent_month = sprintf("%02d", $current->month);
$current_day = sprintf("%02d", $current->day);
$new_transaction = sprintf("%04d",$new_sirig);
$new_sag_number = strtoupper($cawangan['kodcaw']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction;
try{
Gadai::on($cawangan['mysql'])->create([
'kodcaw'=>$kodcaw,
'norujukan' => $new_sag_number,
'nopelanggan' => $array_trans['nopelanggan'],
'nokp' => $array_trans['noic'],
'sirig' => $new_sirig,
't_gadai' => $current->toDateString(),
'sttebus' => '',
'masa' =>$current->toTimeString(),
'tagbaru' => 1
]);
$marhun = Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->get();
foreach($marhun as $marhunloop){
$karatbaru = (strpos($marhunloop['karat'], '.') !== false) ? str_replace('-','.',$marhunloop['karat']) : $marhunloop['karat'];
$karatbaru = $marhunloop['karat'];
$harga_emas = HargaEmas::on('mysql7')->select('harga')->where('karat','=',$karatbaru)->first();
if(isset($array_trans['jenisAT'])){
$harga = ($array_trans['jenisAT'] == 'hargalama') ? $marhunloop['harga'] : $harga_emas['harga'];
}else{
$harga = $harga_emas['harga'];
}
$nilai_marhun = (floatval($harga) * floatval($marhunloop['berat']));
$marhunToCreate = [
'kodcaw'=> $kodcaw,
'norujukan'=> $new_sag_number,
't_gadai' => $current->toDateString(),
'bil' => $marhunloop['kuantiti'],
'marhun' => $marhunloop['marhun'],
'nota' => $marhunloop['nota'],
'tag_permata' => $marhunloop['tag_permata'] != null ? $marhunloop['tag_permata'] : 0,
'berat_batu_permata' => $marhunloop['berat_batu_permata'] != null ? $marhunloop['berat_batu_permata'] : '',
'karat' => $marhunloop['karat'],
'berat' => $marhunloop['berat'],
'harga' => $harga,
'n_marhun' => $nilai_marhun
];
if($marhunToCreate['berat_batu_permata'] == '') {
$marhunToCreate['berat_batu_permata'] = null;
};
Marhun::on($cawangan['mysql'])->create($marhunToCreate);
}
$total_nilai_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('n_marhun');
$total_bil_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('bil');
$total_berat_marhun = Marhun::on($cawangan['mysql'])->where('norujukan',$new_sag_number)->sum('berat');
$margin_pinjaman = ($array_trans['pinjamanbaru'] / $total_nilai_marhun);
$t_matang = Carbon::now();
$t_matang = $t_matang->addMonths(6)->subDays(1);
$t_kontrak = Carbon::now();
$t_kontrak = $t_kontrak->addMonths(12)->subDays(1);
$kadar_raw = KadarUpah::where('min','<=',$total_nilai_marhun)->where('max','>=',$total_nilai_marhun)->where('group_id',$cawangan['group_id'])->first();
$onepercentservices = new Calculation();
$keuntungan = $onepercentservices->kiraanKeuntunganSebenar($array_trans['pinjamanbaru'],$total_nilai_marhun,$kadar_raw['kadarujrah'],$margin_pinjaman);
$upah1 = $onepercentservices->getRoundedMethod($keuntungan['keuntungan']);
$upah6 = $onepercentservices->getRoundedMethod($upah1 * 6);
$upah12 = $onepercentservices->getRoundedMethod($upah1 * 12);
$ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah']);
$onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent']);
$akrual_ujrah = $onepercentservices->getRoundedMethod($keuntungan['ujrah'] * 0.5);
$akrual_onepercent = $onepercentservices->getRoundedMethod($keuntungan['onepercent'] * 0.5);
$hargajualan = $array_trans['pinjamanbaru'] + $upah12;
Gadai::on($cawangan['mysql'])
->where('norujukan','=',$new_sag_number)
->update(array(
'nilaimarhun' => $total_nilai_marhun,
'berat'=> $total_berat_marhun,
'pinjaman' => $array_trans['pinjamanbaru'],
'kadarupah' => $kadar_raw['kadarujrah'],
'marhun' => $array_trans['marhun'],
'percentpinj' => $margin_pinjaman,
'teller' => $array_trans['teller'],
'bakipjm' => $array_trans['pinjamanbaru'],
'bakiupah' => $upah6,
'jbg' => 0.5,
't_update' => $current->toDateString(),
'cetak' => 0,
'upah12' => $upah12,
'hargajualan' => $hargajualan,
'bakihargajualan' => $hargajualan,
'tagserah' => 0,
't_matang' => $t_matang,
't_matang1' => $t_kontrak,
'tempoh' => 0.5,
'kuantiti' => $total_bil_marhun,
'tagkomuditi' => 0,
'upahdibayar' => 0.00,
'tempohbayar' => 0.00,
'lelong_tawarruq' => 1,
'kadarujrah' => $kadar_raw['kadarujrah'],
'ujrah' => $ujrah,
'onepercent' => $onepercent,
'margin_semasa' => $margin_pinjaman,
'tagbaru' => 1,
'tunggakanujrah' => $akrual_ujrah,
'tunggakanonepercent' => $akrual_onepercent,
'historygadaian' => $norujukan,
'tag_tebus' => $array_trans['jenistebus'],
));
Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array(
'sttebus' => "T",
't_update' => $current->toDateString(),
));
}catch(\Exception $e){
throw new \Exception("Error in Transaction: " . $e->getMessage());
}
}
private function createTransactionBase($norujukan,$kodcaw,$array_trans_base){
$current = Carbon::now();
$komuditi_current = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first();
$unit_current = isset($komuditi_current['unit_komuditi']) ? $komuditi_current['unit_komuditi']: 0;
try{
$update_unit = $unit_current - $array_trans_base['pinjamanbaru'];
KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([
'unit_komuditi' => $update_unit
]);
KomuditiTransaksi::on('mysql7')->create([
'unit_komuditi' => $update_unit,
'nosijil'=>$komuditi_current['no_sijil'],
'norujukan' => $norujukan,
'kodcaw' => $kodcaw,
'teller' => $array_trans_base['teller'],
'masa' => $current->toTimeString(),
'tarikh' => $current->toDateString()
]);
}catch(\Exception $e){
throw new \Exception("Error in TransactionBase: " . $e->getMessage());
}
}
} }
@@ -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);
});
});
}
}
@@ -0,0 +1,50 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddNotaPekerjaan extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
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()
{
Schema::connection('mysql7')->table('customer', function (Blueprint $table) {
$table->string('nota_pekerjaan')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('customer', function (Blueprint $table) {
$table->dropColumn('nota_pekerjaan');
});
}
}
+24 -1
View File
@@ -61,6 +61,18 @@ $router->group(['prefix'=>'api'], function () use ($router){
$router->get('customer/blacklist',['uses'=>'CustomerController@blacklistCustomer']); $router->get('customer/blacklist',['uses'=>'CustomerController@blacklistCustomer']);
$router->get('customer/eachcawangan/{ic}',['uses'=>'CustomerController@showCustomerByEachCawangan']); $router->get('customer/eachcawangan/{ic}',['uses'=>'CustomerController@showCustomerByEachCawangan']);
//Change Password
$router->post('changepassword/{kodcaw}/{id}',['uses'=>'CustomerController@changepassword']);
//tukar cawangan
$router->post('/tukarcawangan/{kodcaw}', ['uses'=>'CustomerController@TukarCawangan']);
//pengesahan kakitangan
$router->post('/kakitangan/{kodcaw}', ['uses' => 'CustomerController@kakitangan']);
//tukar taraf
$router->get('tukartaraf/{kodcaw}/{role}',['uses'=>'CustomerController@TukarTaraf']);
//Gadai API //Gadai API
$router->get('gadai',['uses'=>'GadaiController@showAllGadais']); $router->get('gadai',['uses'=>'GadaiController@showAllGadais']);
$router->get('gadai/{noic}',['uses'=>'GadaiController@showOneGadai']); $router->get('gadai/{noic}',['uses'=>'GadaiController@showOneGadai']);
@@ -119,6 +131,7 @@ $router->group(['prefix'=>'api'], function () use ($router){
///Log session ///Log session
$router->post('logsession/{kodcaw}',['uses'=>'LogController@logSession']); $router->post('logsession/{kodcaw}',['uses'=>'LogController@logSession']);
$router->get('checknokp/{kodcaw}/{nokp}/{tarikh}',['uses'=>'LogController@checkNokpSession']); $router->get('checknokp/{kodcaw}/{nokp}/{tarikh}',['uses'=>'LogController@checkNokpSession']);
$router->post('logoutsession/{kodcaw}',['uses'=>'LogController@logoutSession']);
//Tebus API //Tebus API
$router->get('tebustawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusTawarruq']); $router->get('tebustawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusTawarruq']);
@@ -151,7 +164,7 @@ $router->group(['prefix'=>'api'], function () use ($router){
$router->get('tebus/norujukan/{kodcaw}/{norujukan}',['uses'=>'TebusController@showOneTebusbyRujukanAndCawangan']); $router->get('tebus/norujukan/{kodcaw}/{norujukan}',['uses'=>'TebusController@showOneTebusbyRujukanAndCawangan']);
$router->put('updateautotawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateAutoTawarruq']); $router->put('updateautotawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateAutoTawarruq']);
$router->get('listpenebusanhistory/{kodcaw}',['uses'=>'TebusController@listhistorypenebusan']); $router->get('listpenebusanhistory/{kodcaw}',['uses'=>'TebusController@listhistorypenebusan']);
$router->put('updatetambahpinjaman/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateTambahPinjaman']);
//API FARIS //API FARIS
$router->put('tebus/serah_marhun_teller/{kodcaw}/{norujukan}',['uses'=>'GadaiController@barcodescanTebus']); $router->put('tebus/serah_marhun_teller/{kodcaw}/{norujukan}',['uses'=>'GadaiController@barcodescanTebus']);
// $router->get('tebus_serahan/{kodcaw}',['uses'=>'TebusController@SerahMarhunTeller']); // $router->get('tebus_serahan/{kodcaw}',['uses'=>'TebusController@SerahMarhunTeller']);
@@ -382,9 +395,11 @@ $router->group(['prefix'=>'api'], function () use ($router){
$router->post('requestTeller/{kodcaw}',['uses' => 'TunaiController@createRequestTeller']); $router->post('requestTeller/{kodcaw}',['uses' => 'TunaiController@createRequestTeller']);
$router->get('requestTeller/get/{kodcaw}',['uses' => 'TunaiController@getRequestTeller']); $router->get('requestTeller/get/{kodcaw}',['uses' => 'TunaiController@getRequestTeller']);
$router->get('requestTeller/getlaporan/{kodcaw}',['uses' => 'TunaiController@getRequestTellerLaporanSerahan']); $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/getlaporanberkala/{kodcaw}',['uses' => 'TunaiController@getRequestTellerLaporanSerahanBerkala']);
$router->get('requestTeller/get/{kodcaw}/date',['uses' => 'TunaiController@getRequestTellerByDate']); $router->get('requestTeller/get/{kodcaw}/date',['uses' => 'TunaiController@getRequestTellerByDate']);
$router->put('requestTeller/update/{kodcaw}',['uses' => 'TunaiController@updateRequestTeller']); $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->put('requestTeller/batal/{kodcaw}',['uses' => 'TunaiController@batalRequestTeller']);
$router->get('requestTeller/checkproses',['uses'=>'TunaiController@CheckProsesReqTeller']); $router->get('requestTeller/checkproses',['uses'=>'TunaiController@CheckProsesReqTeller']);
@@ -649,6 +664,14 @@ $router->group(['prefix'=>'api'], function () use ($router){
$router->get('/cawangan/getcawnotisall/{kodcaw}',['uses'=>'CawanganCallCenterController@getcawnotisall']); $router->get('/cawangan/getcawnotisall/{kodcaw}',['uses'=>'CawanganCallCenterController@getcawnotisall']);
$router->get('/cawangan/bycawnotisperingatan/{kodcaw}/{notisid}',['uses'=>'CawanganCallCenterController@bycawnotisperingatan']); $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']);
}); });
+42 -1
View File
@@ -1,7 +1,8 @@
<?php <?php
use Laravel\Lumen\Testing\TestCase as BaseTestCase; use Laravel\Lumen\Testing\TestCase as BaseTestCase;
use Illuminate\Support\Facades\DB;
use PHPUnit\Framework\Assert as PHPUnit;
abstract class TestCase extends BaseTestCase abstract class TestCase extends BaseTestCase
{ {
/** /**
@@ -13,4 +14,44 @@ abstract class TestCase extends BaseTestCase
{ {
return require __DIR__.'/../bootstrap/app.php'; return require __DIR__.'/../bootstrap/app.php';
} }
protected function assertDatabaseHasThroughNorujukan(string $table, array $data, string $connection = null): void
{
$query = DB::connection($connection)->table($table);
foreach ($data as $key => $value) {
$query->where($key, $value);
}
$record = $query->first();
if (!$record) {
// Check if a record exists but doesn't match the expected attributes
$actualRecord = DB::connection($connection)->table($table)->where('norujukan', $data['norujukan'])->first();
if ($actualRecord) {
$mismatchedColumns = [];
foreach ($data as $key => $value) {
if ($actualRecord->$key !== $value) {
$expectedValue = stripslashes($value); // Remove backslashes from expected
$mismatchedColumns[$key] = [
'expected' => $expectedValue,
'actual' => $actualRecord->$key,
];
}
}
PHPUnit::fail(
"A record exists in the table [{$table}] but does not match the expected attributes. " .
"Mismatched columns: " . json_encode($mismatchedColumns)
);
}
PHPUnit::fail(
"Failed asserting that a record exists in the table [{$table}] with the attributes " . json_encode($data)
);
}
PHPUnit::assertNotNull($record, "Record exists and matches the expected attributes.");
}
} }
+50
View File
@@ -0,0 +1,50 @@
<?php
namespace Tests\Traits;
use Illuminate\Support\Facades\DB;
trait DatabaseTransactions
{
/**
* Database connections to use for transactions.
*
* @var array
*/
protected array $connections = ['mysql','mysql7'];
/**
* Begin transactions on all specified database connections.
*/
protected function setUp(): void
{
parent::setUp();
foreach ($this->connections as $connection) {
DB::connection($connection)->beginTransaction();
}
}
/**
* Rollback transactions on all specified database connections.
*/
protected function tearDown(): void
{
foreach ($this->connections as $connection) {
DB::connection($connection)->rollBack();
}
parent::tearDown();
}
/**
* Set the database connections for transactions.
*
* @param string|array $connections
* @return void
*/
protected function setTransactionConnections(array $connections): void
{
$this->connections = $connections;
}
}
+228
View File
@@ -0,0 +1,228 @@
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Tests\Traits\DatabaseTransactions;
use App\Cawangan;
use App\Gadai;
use App\Support\v2\Penebusan as V2Penebusan;
use Carbon\Carbon;
class TransactionTest extends TestCase
{
use DatabaseTransactions;
public function testTransactionAT(){
$cawangan = Cawangan::on('mysql7')->where('kodcaw', 'KB2')->first();
$this->setTransactionConnections([$cawangan['mysql'], 'mysql7']);
$current = new Carbon();
$array_test = [
'norujukan' => 'KB2240327-0009',
"nopelanggan" => "M03-00133879",
"jenistebus" => "AT",
"jbg" => 6.5,
"kadarupah" => 0.56,
"pinjaman_lama" => 2000,
"pinjaman" => 2000,
"ansuran" => 0,
"addpinjaman" => 0,
"bakipinjaman" => 2221,
"bakiupah" => 221,
"historygadaian" => "KB2240327-0009",
"marhun" => "1 R/L,",
"kuantiti_marhun" => 1,
"total_berat" => 8.5,
"kadarkeuntungan" => 0.56,
"noic" => "980412035872",
"jenisbayarantebus" => "nottawarruq",
"teller" => "MOHD KHALID ABDUL RAHMAN",
"jeniskeuntungan" => "onepercent",
"nilai_marhun" => 2943.21,
"jenisAT" => "none",
"totalbayaran" => 221,
"bayaran" => 300,
"bakipelanggan" => 79,
"nowakil" => 0,
"total_nilai_marhun" => 3171.265,
"marhun_detail" => "1 R/L,",
];
// Create a mock request
$request = new Request($array_test);
$penebusan_services = new V2Penebusan('KB2',$cawangan);
$response = $penebusan_services->transaksiPembiayaanSemula('KB2','KB2240327-0009',$request);
$responseArray = json_decode($response->getContent(), true);
$this->assertIsArray($responseArray, 'Response is not an array');
$this->assertEquals('success', $responseArray['result'], 'Result should be success');
$this->assertEquals(1, $responseArray['data'], 'Data should be 1');
/* Tebus Assert */
$this->assertDatabaseHasThroughNorujukan('tebus', [
'kodcaw'=> "KB2",
'norujukan'=> "KB2240327-0009",
'nopelanggan' => "M03-00133879",
'jenisbyr' => "TN",
'jenistebus' => "A",
'glcode' => "0",
't_tebus' => $current->toDateString(),
'jbg' => "6.50",
'kadarupah' => "0.56",
'nilaimarhun' => "2943.21",
'pinjaman' => "2000.00",
'ansuran' => "0.00",
'addpinjaman' => 0,
'bakipjm' => "2221",
'bakiupah' => "221",
'terima' => "*",
'kodgl' => "0",
'nowakil' => 0,
'rebate' => 0,
'marhuntebus' => "1 R/L,",
'historygadaian' => "KB2240327-0009",
'tarikhbyrn' => $current->toDateString(),
'teller' => "MOHD KHALID ABDUL RAHMAN",
'ujrah' => 0,
'onepercent' => 0,
], $cawangan['mysql']);
$this->assertDatabaseHasThroughNorujukan('gadai', [
'norujukan' => 'KB2240327-0009',
'sttebus' => 'T'
], $cawangan['mysql']);
}
public function testTransactionP(){
$cawangan = Cawangan::on('mysql7')->where('kodcaw', 'KB2')->first();
$this->setTransactionConnections([$cawangan['mysql'], 'mysql7']);
$current = new Carbon();
$array_test = [
'norujukan' => 'KB2240327-0009',
'nopelanggan' => 'M03-00133879',
'jenistebus' => 'P',
'jbg' => 6.5,
'kadarupah' => 0.56,
'pinjaman_lama' => 2000,
'pinjaman' => 2010,
'ansuran' => 0,
'addpinjaman' => 10,
'bakipinjaman' => 2221,
'bakiupah' => 221,
'history_gadaian' => 'KB2240327-0009',
'marhun' => '1 R/L,',
'kuantiti_marhun' => 1,
'total_berat' => 8.5,
'kadarkeuntungan' => 0.56,
"noic" => "980412035872",
'jenisbayarantebus' => 'tawarruq',
"teller" => "MOHD KHALID ABDUL RAHMAN",
'jeniskeuntungan' => 'onepercent',
'nilai_marhun' => 3171.265,
// 'jenisAT' => 'Tiada',
// 'totalbayaran' => 'Tiada',
'bayaran' => 222,
'bakipelanggan' => 1,
'nowakil' => 0, //Sebenar Tiada Kena Add dalam series
// 'total_nilai_marhun' => 'Tiada',
'keuntungan_6bln' => 6753.6,
'keuntungan_sebulan' => 1125.6,
// 'marhun_detail' => 'Tiada',
];
// Create a mock request
$request = new Request($array_test);
$penebusan_services = new V2Penebusan('KB2',$cawangan);
$response = $penebusan_services->transaksiTambahPembiayaan('KB2','KB2240327-0009',$request);
$responseArray = json_decode($response->getContent(), true);
$this->assertIsArray($responseArray, 'Response is not an array');
$this->assertEquals('success', $responseArray['result'], 'Result should be success');
$this->assertEquals(1, $responseArray['data'], 'Data should be 1');
/* Tebus Assert */
$this->assertDatabaseHasThroughNorujukan('tebus', [
'kodcaw'=> "KB2",
'norujukan'=> "KB2240327-0009",
'nopelanggan' => "M03-00133879",
'jenisbyr' => "TN",
'jenistebus' => "P",
'glcode' => "0",
't_tebus' => $current->toDateString(),
'jbg' => "6.50",
'kadarupah' => "0.56",
'nilaimarhun' => "2943.21",
'pinjaman' => "2000.00",
'ansuran' => "0.00",
'addpinjaman' => "10.00",
'bakipjm' => "2221.00",
'bakiupah' => "221.00",
'terima' => "*",
'kodgl' => "0",
'nowakil' => 0,
'rebate' => "0.00",
'marhuntebus' => "1 R/L,",
'historygadaian' => "KB2240327-0009",
'tarikhbyrn' => $current->toDateString(),
'teller' => "MOHD KHALID ABDUL RAHMAN",
'ujrah' => "91.00",
'onepercent' => "130.00",
], $cawangan['mysql']);
/* Gadai Assert */
/* Create Gadai */
$gadaiTransaction = Gadai::on($cawangan['mysql'])->where('t_gadai','=',$current->toDateString())->orderBy('sirig', 'desc')->first();
$gadaiTransaction = optional($gadaiTransaction)->toArray();
/* Gadai Baru */
$this->assertDatabaseHasThroughNorujukan('gadai',[
'kodcaw'=>'KB2',
'norujukan' => $gadaiTransaction['norujukan'],
'nopelanggan' => "M03-00133879",
"nokp" => "980412035872",
'sirig' => $gadaiTransaction['sirig'],
't_gadai' => $current->toDateString(),
'sttebus' => '',
'masa' =>$current->toTimeString(),
'tagbaru' => 1,
'nilaimarhun' => "3171.27",
'berat'=> "0.00",
'pinjaman' => "2010.00",
'kadarupah' => "0.56",
// 'marhun' => "1 R\/L,",
'percentpinj' => "0.63",
'teller' => "MOHD KHALID ABDUL RAHMAN",
'bakipjm' => "2010.00",
'bakiupah' => "121.50",
'jbg' => "0.50",
't_update' => $current->toDateString(),
'cetak' => 0,
'upah12' => "243.00",
'hargajualan' => "2253.00",
'bakihargajualan' => "2253.00",
'tagserah' => 0,
't_matang' => "2025-05-24",
't_matang1' => "2025-11-24",
'tempoh' => "0.50",
'kuantiti' => 0,
'tagkomuditi' => 0,
'upahdibayar' => "0.00",
'tempohbayar' => 0.00,
'lelong_tawarruq' => 1,
'kadarujrah' => "0.56",
'ujrah' => "0.15",
'onepercent' => "20.10",
'margin_semasa' => "0.63",
'tagbaru' => 1,
'tunggakanujrah' => "0.05",
'tunggakanonepercent' => "10.05",
], $cawangan['mysql']);
$this->assertDatabaseHasThroughNorujukan('marhun',[
]);
}
}