diff --git a/app/AddTunai.php b/app/AddTunai.php index 2aadf68..635f389 100644 --- a/app/AddTunai.php +++ b/app/AddTunai.php @@ -13,7 +13,7 @@ class AddTunai extends Model * * @var array */ - protected $fillable = ['tarikh','kodcaw','kodlaluan','tambah','kurang','nota']; + protected $fillable = ['tarikh','kodcaw','kodlaluan','tambah','kurang','nota','created_at']; public $timestamps = false; /** diff --git a/app/AuditCustomer.php b/app/AuditCustomer.php index b86564b..f32ee6c 100644 --- a/app/AuditCustomer.php +++ b/app/AuditCustomer.php @@ -14,10 +14,12 @@ class AuditCustomer extends Model 'username', 'old_data', 'new_data', + 'kodkerja', + 'nota_pekerjaan', 'kodcaw', 'created_at', 'updated_at', 'customer_name', 'customer_nokp', ]; -} \ No newline at end of file +} diff --git a/app/BayaranHutang.php b/app/BayaranHutang.php index 5a9e0a5..aeaa4c7 100644 --- a/app/BayaranHutang.php +++ b/app/BayaranHutang.php @@ -1,4 +1,3 @@ - where('kodcaw','=',$request->kodcaw)->first(); $current = Carbon::now(); @@ -3181,11 +3182,14 @@ class AdminPageController extends Controller // $total = $sum_keuntungan + $sum_bayaran + $summation_ansuran; - + $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') ->leftJoin('transaksi_keuntungan as trans', function ($join) { $join->on('transaction.norujukan', '=', 'trans.norujukan'); @@ -3224,7 +3228,9 @@ class AdminPageController extends Controller return $transaction->trans_type !== 'A'; })->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); } @@ -3673,11 +3679,11 @@ class AdminPageController extends Controller $keuntungansebenar = ($keuntungan + $keuntunganreducing + $ansuran + $bukanansuran); - $previousYear = Carbon::now()->subYears(1); + $previousYear = Carbon::parse($request->tarikh)->subYears(); $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") - ->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') ->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; + $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']) ->where('tahun','<=',$previousYear->year) ->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') $total -= 45390.37; diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index 4ec9109..0f6f6a5 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Audit; use App\Marhun; use App\BankMaster; use App\Customer; @@ -49,7 +50,7 @@ class CustomerController extends Controller } public function showOneCustomerByICAdmin(Request $request){ - + $customer = Customer::on('mysql7') ->where('kplama','=',$request->ic) ->orWhere('kpbaru','=',$request->ic) @@ -111,7 +112,7 @@ class CustomerController extends Controller } } } - + return response()->json($gadai_all); } @@ -142,7 +143,7 @@ class CustomerController extends Controller } $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); - + if($status == 'belum_tebus'){ $gadai = Gadai::on($cawangan['mysql']) ->where([['sttebus','=',$gadai_status],['nokp','=',$ic]]) @@ -165,7 +166,7 @@ class CustomerController extends Controller $gadai[0]['datatuntut'] = $tuntutbaki; } } - } + } return response()->json($gadai); } @@ -202,7 +203,7 @@ class CustomerController extends Controller } } } - + return response()->json($gadai_all); } @@ -227,7 +228,7 @@ class CustomerController extends Controller )); } } - + return $barang; } @@ -259,10 +260,10 @@ class CustomerController extends Controller 'tarikhgadai' => $gd->t_gadai, 'hargajualan' => $gd->hargajualan, 'bakihargajualan' => $gd->bakihargajualan, - 'barang' => $this->marhun($cawangan, $gd->norujukan) ?? ' tiada data', - )); + 'barang' => $this->marhun($cawangan, $gd->norujukan) ?? ' tiada data', + )); - } + } elseif($gd->sttebus == 'T') { array_push($sttebus_T, array( @@ -270,22 +271,22 @@ class CustomerController extends Controller 'pembiayaan' => number_format($gd->pinjaman,2), 'tarikhgadai' => $gd->t_gadai, 'hargajualan' => $gd->hargajualan, - 'bakihargajualan' => $gd->bakihargajualan, - 'barang' => $this->marhun($cawangan, $gd->norujukan) ?? ' tiada data', + 'bakihargajualan' => $gd->bakihargajualan, + 'barang' => $this->marhun($cawangan, $gd->norujukan) ?? ' tiada data', )); } elseif($gd->sttebus == 'L') - { + { array_push($sttebus_L, array( 'norujukan' => $gd->norujukan, 'pembiayaan' => number_format($gd->pinjaman,2), 'tarikhgadai' => $gd->t_gadai, 'hargajualan' => $gd->hargajualan, - 'bakihargajualan' => $gd->bakihargajualan, - 'barang' => $this->marhun($cawangan, $gd->norujukan) ?? ' tiada data', + 'bakihargajualan' => $gd->bakihargajualan, + 'barang' => $this->marhun($cawangan, $gd->norujukan) ?? ' tiada data', )); - - } + + } } } else @@ -308,7 +309,7 @@ class CustomerController extends Controller ->where([['tarikhdaftar','=',$tarikh],['kodcaw',$kodcaw]]) ->orderBy('tarikhdaftar', 'desc') ->get(); - + return response()->json($gadai); } @@ -344,6 +345,7 @@ class CustomerController extends Controller 'nosiri'=>$request->nosiri, 'nota'=>$request->nota, 'kodkerja'=>$request->kodkerja, + 'nota_pekerjaan'=>$request->nota_pekerjaan, 'tujuangadai'=>$request->tujuangadai ]); @@ -361,10 +363,12 @@ class CustomerController extends Controller 'poskod' => $request->poskod, 'koddaerah' => $poskod['koddaerah'], 'kodnegeri' => $poskod['kodnegeri'], + 'kodkerja'=>$request->kodkerja, + 'nota_pekerjaan'=>$request->nota_pekerjaan, 'telefon' => $request->telefon1, 'telefon2' => $request->telefon2 )); - + return response()->json($customer_update, 200); } @@ -376,7 +380,7 @@ class CustomerController extends Controller $poskod = Poskod::on('mysql7')->where('poskod','=',$request->poskod)->first(); $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) ->orWhere('kpbaru','=',$nokp) ->get()->toArray(); @@ -391,6 +395,9 @@ class CustomerController extends Controller 'telefon' => $request->telefon1, 'telefon2' => $request->telefon2, 'kodbank' => $request->kodbank, + 'kodkerja' => $request->kodkerja, + // 'nota_pekerjaan' => $request->nota_pekerjaan, + 'nota_pekerjaan' => $request->kodkerja === '6' ? $request->nota_pekerjaan : null, 'noakaun' => $request->noakaun, 'nota' => $request->nota, 'alamat1' => $request->alamat, @@ -402,13 +409,13 @@ class CustomerController extends Controller if($customer_update) { $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) ->orWhere('kpbaru','=',$nokp) ->get()->toArray(); $new_data = json_encode($customer_info_new); - + $audit_customer = DB::connection('mysql7') ->table('audit_customer') ->insert([ @@ -431,11 +438,11 @@ class CustomerController extends Controller DB::connection('mysql7')->rollback(); return response()->json($e->getMessage(),400); - } + } } public function customerUpdateKhazanah($nokp,Request $request){ - + DB::connection('mysql7')->beginTransaction(); try{ @@ -457,6 +464,8 @@ class CustomerController extends Controller 'telefon' => $request->telefon1, 'telefon2' => $request->telefon2, 'kodbank' => $request->kodbank, + 'kodkerja' => $request->kodkerja, + 'nota_pekerjaan' => $request->nota_pekerjaan, 'noakaun' => $request->noakaun, 'nota' => $request->nota, 'nama' => $request->nama, @@ -476,7 +485,7 @@ class CustomerController extends Controller ->get()->toArray(); $new_data = json_encode($customer_info_new); - + $audit_customer = DB::connection('mysql7') ->table('audit_customer') ->insert([ @@ -490,7 +499,7 @@ class CustomerController extends Controller 'customer_nokp' => $nokp, ]); } - + DB::connection('mysql7')->commit(); @@ -500,8 +509,8 @@ class CustomerController extends Controller DB::connection('mysql7')->rollback(); return response()->json($e->getMessage(),400); - } - + } + } public function customerUpdateAdmin(Request $request){ @@ -521,12 +530,12 @@ class CustomerController extends Controller 'nokp'=>$request->icno ]); } - + $data_asal = $customer_update = Customer::on('mysql7') ->where('kplama','=',$request->ic_asal) ->orWhere('kpbaru','=',$request->ic_asal) ->first(); - + if($data_asal['kpbaru'] != null){ $customer_update = Customer::on('mysql7') ->where('kplama','=',$request->ic_asal) @@ -601,7 +610,7 @@ class CustomerController extends Controller return response()->json($array_norujukan); } - + public function countNorujukanMobile($nokp){ $cawangan_all = Cawangan::on('mysql7')->get(); $bilangan_sag = 0; @@ -615,7 +624,7 @@ class CustomerController extends Controller public function getGadaiDetailMobile(Request $request) { - $array_norujukan = $request->norujukan; + $array_norujukan = $request->norujukan; $array_kodcaw = $request->kodcaw; $array_gadai = []; $gadai_payment = []; @@ -660,7 +669,7 @@ class CustomerController extends Controller return response('Deleted Successfully', 200); } - + public function akaunBankMobile($nokp) { $customer_detail = []; @@ -672,7 +681,7 @@ class CustomerController extends Controller ->where('kplama','=',$nokp) ->orWhere('kpbaru','=',$nokp) ->rightJoin('online_arrahn.bank', 'bank.id', '=', 'customer.kodbank') - ->first(); + ->first(); if(!empty($customer)) { @@ -680,14 +689,14 @@ class CustomerController extends Controller $customer_detail['namabank'] = $customer['name']; $customer_detail['kodbank'] = $customer['id']; return response()->json($customer_detail); - } + } else { return $customer_detail; } } } - + public function bankListMobile() { $bank_array = []; @@ -702,32 +711,32 @@ class CustomerController extends Controller { array_push($bank_array, array( 'kodbank' => $banklist->id, - 'namabank' => $banklist->name, - )); + 'namabank' => $banklist->name, + )); } return response()->json($bank_array); } else { return response()->json('Data Not Found'); - } + } } } public function insertAkaunBankMobile(Request $request) { - $customer = Customer::on('mysql7') + $customer = Customer::on('mysql7') ->where('kplama','=',$request->nokp) ->orWhere('kpbaru','=',$request->nokp) ->first(); if(!empty($customer)) - { + { $customer->kodbank = $request->kodbank; $customer->noakaun = $request->noakaun; - $customer->save(); + $customer->save(); } - + return response()->json($customer, 200); } @@ -761,7 +770,7 @@ class CustomerController extends Controller } public function blacklistCustomer(Request $request){ - + $blacklist = Blacklist::where('nokp',$request->nokp)->first(); return response()->json($blacklist); @@ -778,8 +787,8 @@ class CustomerController extends Controller ->select('kodcaw') ->where('nokp', '=', $ic) ->first(); - - if($customer) + + if($customer) array_push($custcawangan,['kodcaw' => $customer['kodcaw'], 'namacawangan' => $cawangan['details_caw']]); } @@ -805,9 +814,9 @@ class CustomerController extends Controller return response()->json($dataCustomer); } - + public function AdminsearchCustomerByName(Request $request) - { + { $nama = strtoupper($request->nama); if(empty($nama)) @@ -821,12 +830,12 @@ class CustomerController extends Controller ->take(3) ->get(); } - + return response()->json($customer); } public function AdminsearchCustomerByIC(Request $request) - { + { if(isset($request->kodcaw)) { $customer = Customer::on('mysql7') @@ -841,8 +850,87 @@ class CustomerController extends Controller ->take(3) ->get(); } - + 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']); + + } } diff --git a/app/Http/Controllers/DenominasiController.php b/app/Http/Controllers/DenominasiController.php index 066e0d5..3dc632c 100644 --- a/app/Http/Controllers/DenominasiController.php +++ b/app/Http/Controllers/DenominasiController.php @@ -5,12 +5,49 @@ namespace App\Http\Controllers; use App\CawanganDetail; use App\Cawangan; use App\Denominasi; +use App\Services\CashFlow\TellerServices; use Illuminate\Http\Request; - +use App\Services\Miscellaneous\PanjarServices; +use Log; use Carbon\Carbon; class DenominasiController extends Controller { + public function cashdeposit($kodcaw,Request $request){ + $teller = new TellerServices($kodcaw); + $response = $teller->CashDeposit($request); + + return response()->json($response); + } + + public function cashwithdraw($kodcaw,Request $request){ + $teller = new TellerServices($kodcaw); + $response = $teller->CashWithdrawals($request); + + return response()->json($response); + } + + public function createpanjar($kodcaw,Request $request){ + $teller = new PanjarServices($kodcaw); + $response = $teller->create($request); + + return response()->json($response); + } + + public function deletepanjar($kodcaw,Request $request){ + $teller = new PanjarServices($kodcaw); + $response = $teller->delete($request); + + return response()->json($response); + } + + public function getPerubatanAmount($kodcaw,Request $request){ + $teller = new PanjarServices($kodcaw); + $response = $teller->getPerubatanAmount($request->tuntutoleh); + + return response()->json($response); + } + public function listdenominasi($kodcaw) { $current = Carbon::now(); diff --git a/app/Http/Controllers/GadaiController.php b/app/Http/Controllers/GadaiController.php index eeff97f..a3805af 100644 --- a/app/Http/Controllers/GadaiController.php +++ b/app/Http/Controllers/GadaiController.php @@ -35,7 +35,7 @@ use Illuminate\Http\Request; use App\Services\MasterServices; use App\Support\OnePercent; use App\Services\Transaction\AnsuranServices as AnsServ; -use Log; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\DB; @@ -49,10 +49,16 @@ class GadaiController extends Controller } public function gadaiTransactionByCawanganAndDay($cawangan_code,$date){ + try{ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$cawangan_code)->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); } @@ -132,7 +138,7 @@ class GadaiController extends Controller } public function create($kodcaw,Request $request){ - + $master = new MasterServices($kodcaw); $response = $master->createGadai($request); @@ -356,8 +362,8 @@ class GadaiController extends Controller // $old_data = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); $old_data = Gadai::on($cawangan['mysql'])->where([['norujukan','=',$norujukan],['pinjaman','=','NULL']])->orWhere([['norujukan','=',$norujukan],['pinjaman','=',0.00]])->first(); - - + + if($old_data){ Gadai::on($cawangan['mysql'])->where([['norujukan','=',$norujukan],['pinjaman','=','NULL']])->delete(); Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); @@ -392,6 +398,8 @@ class GadaiController extends Controller } public function cetakSAG($kodcaw,$norujukan,Request $request){ + $harini = Carbon::now(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $gadai = Gadai::on($cawangan['mysql']) ->where('norujukan','=',$norujukan) @@ -400,6 +408,16 @@ class GadaiController extends Controller '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); } @@ -582,7 +600,7 @@ class GadaiController extends Controller "ujrah"=> $gadaiData['ujrah'], "onepercent"=> $gadaiData['onepercent'], "tagbaru"=> $gadaiData['tagbaru'] - + ]); } } @@ -1073,14 +1091,14 @@ class GadaiController extends Controller $onepercentonline = $ansuransonline->sum('trans.onepercent'); $arrayansuran = [ - 'totalpendahuluankaunter' => $pendahuluankaunter, - 'totalkeuntungankaunter' => $keuntungankaunter, + 'totalpendahuluankaunter' => $pendahuluankaunter, + 'totalkeuntungankaunter' => $keuntungankaunter, 'bilangankaunter' => $bilangankaunter, 'totalujrahkaunter' => $ujrahkaunter, 'totalonepercentkaunter' => $onepercentkaunter, - 'totalpendahuluanonline' => $pendahuluanonline, - 'totalkeuntunganonline' => $keuntunganonline, + 'totalpendahuluanonline' => $pendahuluanonline, + 'totalkeuntunganonline' => $keuntunganonline, 'bilanganonline' => $bilanganonline, 'totalujrahonline' => $ujrahonline, 'totalonepercentonline' => $onepercentonline @@ -1132,14 +1150,14 @@ class GadaiController extends Controller $onepercentonline = $ansuransonline->sum('trans.onepercent'); $arrayansuran = [ - 'totalpendahuluankaunter' => $pendahuluankaunter, - 'totalkeuntungankaunter' => $keuntungankaunter, + 'totalpendahuluankaunter' => $pendahuluankaunter, + 'totalkeuntungankaunter' => $keuntungankaunter, 'bilangankaunter' => $bilangankaunter, 'totalujrahkaunter' => $ujrahkaunter, 'totalonepercentkaunter' => $onepercentkaunter, - 'totalpendahuluanonline' => $pendahuluanonline, - 'totalkeuntunganonline' => $keuntunganonline, + 'totalpendahuluanonline' => $pendahuluanonline, + 'totalkeuntunganonline' => $keuntunganonline, 'bilanganonline' => $bilanganonline, 'totalujrahonline' => $ujrahonline, 'totalonepercentonline' => $onepercentonline, @@ -2017,159 +2035,188 @@ class GadaiController extends Controller $audit->updated_at = $current; $audit->save(); - - if($gadai[0]['historygadaian'] != "0" && $gadai[0]['historygadaian'] != '') - { - - if($tebus['tagterima'] == 1) + try{ + DB::connection($cawangan['mysql'])->beginTransaction(); + DB::connection('mysql7')->beginTransaction(); + + if($gadai[0]['historygadaian'] != "0" && $gadai[0]['historygadaian'] != '') { - if($tebus['jenistebus'] == 'P') + + if($tebus['tagterima'] == 1) { + if($tebus['jenistebus'] == 'P') + { - $totalkeluar = $keluar - ($tebus['addpinjaman'] + $tebus['pinjaman']); - $totalmasuk = $masuk - ($tebus['bakiupah'] + $tebus['pinjaman']); + $totalkeluar = $keluar - ($tebus['addpinjaman'] + $tebus['pinjaman']); + $totalmasuk = $masuk - ($tebus['bakiupah'] + $tebus['pinjaman']); - // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; - $bakiakhir = $baki - $tebus['bakiupah'] + $tebus['addpinjaman']; + // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir = $baki - $tebus['bakiupah'] + $tebus['addpinjaman']; - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $totalkeluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + }else{ + + $totalmasuk = $masuk - ($tebus['pinjaman']+$tebus['bakiupah']); + $totalkeluar = $keluar - (($tebus['pinjaman'] + $tebus['bakiupah']) - $tebus['bakipjm']); + // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + if($tebus['jenistebus'] == 'S') + $bakiakhir = $baki - $tebus['bakipjm']; + else + $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $totalkeluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + + } }else{ - $totalmasuk = $masuk - ($tebus['pinjaman']+$tebus['bakiupah']); - $totalkeluar = $keluar - (($tebus['pinjaman'] + $tebus['bakiupah']) - $tebus['bakipjm']); - // $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir = $baki; - if($tebus['jenistebus'] == 'S') - $bakiakhir = $baki - $tebus['bakipjm']; - else - $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + if($tebus['jenistebus'] == 'P') + { - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); + $bakiakhir = $bakiakhir - $tebus['bakiupah'] + $tebus['addpinjaman']; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); + + }else{ + + $totalmasuk = $masuk; + $totalkeluar = $keluar; + + if($tebus['jenistebus'] == 'S') + $bakiakhir = ($bakiakhir - $tebus['bakipjm']); + else + $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); + + } } - }else{ - $bakiakhir = $baki; - if($tebus['jenistebus'] == 'P') + Gadai::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->update(['sttebus' => '']); + + + $saved_historygadaian = $gadai[0]['historygadaian']; + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); + + Transaction::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); + + Tebus::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->delete(); + + Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + $gadaiDouble = Gadai::on($cawangan['mysql'])->where([['historygadaian',$gadai[0]['historygadaian']],['norujukan','<>',$gadai[0]['historygadaian']]])->pluck('norujukan'); + + if($gadaiDouble){ + + $isGadaianTawarruq = $saved_historygadaian !== '0' || $saved_historygadaian !== null || $saved_historygadaian !== ''; + if($isGadaianTawarruq){ + + $this->batalKomuditiTawarruq($norujukan); + Gadai::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); + Marhun::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); + } else { + + Gadai::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); + Marhun::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); + $this->batalKomuditi($gadai[0]['historygadaian'],$cawangan['mysql']); + } + + } + + // return response('Deleted Successfully', 200); + } + else + { + + if($gadai[0]['semakbarcode'] == 'Lulus') { + $totalkeluar = $keluar - $gadai[0]['pinjaman']; - $bakiakhir = $bakiakhir - $tebus['bakiupah'] + $tebus['addpinjaman']; + $bakiakhir = $baki; + + $bakiakhir += $gadai[0]['pinjaman']; $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir + 'keluar' => $totalkeluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir )); - }else{ - $totalmasuk = $masuk; - $totalkeluar = $keluar; + $bakiakhir = $baki; - if($tebus['jenistebus'] == 'S') - $bakiakhir = ($bakiakhir - $tebus['bakipjm']); - else - $bakiakhir = $bakiawal - $totalkeluar + $totalmasuk + $pendahuluan - $serahan; + $bakiakhir += $gadai[0]['pinjaman']; $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir )); - } + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->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(); + + // return response('Deleted Successfully', 200); } + $array_response = [ + 'result' => 'success', + 'data' => 1 + ]; - Gadai::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->update(['sttebus' => '']); + 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() + ]; - $saved_historygadaian = $gadai[0]['historygadaian']; - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - TransaksiKeuntungan::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); - - Transaction::on('mysql7')->where('norujukan','=',$gadai[0]['historygadaian'])->orderBy('id', 'desc')->limit(1)->delete(); - - Tebus::on($cawangan['mysql'])->where('norujukan','=',$gadai[0]['historygadaian'])->delete(); - - Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - $gadaiDouble = Gadai::on($cawangan['mysql'])->where([['historygadaian',$gadai[0]['historygadaian']],['norujukan','<>',$gadai[0]['historygadaian']]])->pluck('norujukan'); - - if($gadaiDouble){ - - $isGadaianTawarruq = $saved_historygadaian !== '0' || $saved_historygadaian !== null || $saved_historygadaian !== ''; - if($isGadaianTawarruq){ - - $this->batalKomuditiTawarruq($norujukan); - Gadai::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); - Marhun::on($cawangan['mysql'])->where('norujukan', $norujukan)->delete(); - } else { - - Gadai::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); - Marhun::on($cawangan['mysql'])->whereIn('norujukan',$gadaiDouble)->delete(); - $this->batalKomuditi($gadai[0]['historygadaian'],$cawangan['mysql']); - } - - } - - return response('Deleted Successfully', 200); - } - else - { - - if($gadai[0]['semakbarcode'] == 'Lulus') - { - $totalkeluar = $keluar - $gadai[0]['pinjaman']; - - $bakiakhir = $baki; - - $bakiakhir += $gadai[0]['pinjaman']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $totalkeluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); - }else{ - - $bakiakhir = $baki; - - $bakiakhir += $gadai[0]['pinjaman']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); - } - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - Marhun::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->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(); - - return response('Deleted Successfully', 200); + 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'); + $unit_current = $komuditi_current['unit_komuditi']; $update_unit = $unit_current + $transaksi_asal['unit_komuditi']; @@ -2239,82 +2287,109 @@ class GadaiController extends Controller $bakiakhir = $baki; $totalkeluar = 0; - if($gadai){ - return response('Bukan-Tebus', 200); - }else{ - - $audit = new Audit(); - $audit->users = $request->kodlaluan; - $audit->actions = 'Hapus Tebus'; - $audit->norujukan = $norujukan; - $audit->old_data = $gadai; - $audit->kodcaw = $kodcaw; - $audit->created_at = $current; - $audit->updated_at = $current; - $audit->save(); - - if($tebus[0]['tagterima'] == 1) - { - if($tebus[0]['jenistebus'] == 'T') - { - $totalmasuk = $masuk - $tebus[0]['bakipjm']; - - // $bakiakhir = $bakiawal-$keluar+$totalmasuk+$pendahuluan-$serahan; - $bakiakhir = $baki - $tebus[0]['bakipjm']; - - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $totalmasuk, - 'baki' => $bakiakhir - )); - - Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - - InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->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(); - - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); - - return response('Deleted Successfully', 200); - } - else - return response('Bukan-Tebus', 200); + try{ + if($gadai){ + return response('Bukan-Tebus', 200); }else{ + DB::connection($cawangan['mysql'])->beginTransaction(); + DB::connection('mysql7')->beginTransaction(); - if($tebus[0]['jenistebus'] == 'T') + $audit = new Audit(); + $audit->users = $request->kodlaluan; + $audit->actions = 'Hapus Tebus'; + $audit->norujukan = $norujukan; + $audit->old_data = $gadai; + $audit->kodcaw = $kodcaw; + $audit->created_at = $current; + $audit->updated_at = $current; + $audit->save(); + + if($tebus[0]['tagterima'] == 1) { + if($tebus[0]['jenistebus'] == 'T') + { + $totalmasuk = $masuk - $tebus[0]['bakipjm']; - $bakiakhir = $bakiakhir - $tebus[0]['bakipjm']; + // $bakiakhir = $bakiawal-$keluar+$totalmasuk+$pendahuluan-$serahan; + $bakiakhir = $baki - $tebus[0]['bakipjm']; - $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> - update(array( - 'keluar' => $keluar, - 'masuk' => $masuk, - 'baki' => $bakiakhir - )); + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $totalmasuk, + 'baki' => $bakiakhir + )); + + Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + + InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->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(); + + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); + + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + + return response('Deleted Successfully', 200); + } + else + return response('Bukan-Tebus', 200); + }else{ + + if($tebus[0]['jenistebus'] == 'T') + { + + $bakiakhir = $bakiakhir - $tebus[0]['bakipjm']; + + $updatetunai=Tunai::on($cawangan['mysql'])->where( [['tarikh','=', $current->toDateString()],['kodlaluan','=', $request->kodlaluan] ])-> + update(array( + 'keluar' => $keluar, + 'masuk' => $masuk, + 'baki' => $bakiakhir + )); - Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); + InOutMar::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->delete(); - 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(); - Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); + Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(['sttebus' => '']); - return response('Deleted Successfully', 200); + DB::connection($cawangan['mysql'])->commit(); + DB::connection('mysql7')->commit(); + return response('Deleted Successfully', 200); + } + else + return response('Bukan-Tebus', 200); } - else - 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){ @@ -3007,7 +3082,7 @@ class GadaiController extends Controller ->where('trans.trans_type','=','A') ->where('transaksi_keuntungan.tarikh_bayaran' ,'<=', $daterequest) ->get(); - + $transaksi = 0; if($transaksi_data){ foreach($transaksi_data as $index=>$transaksiData){ @@ -3083,6 +3158,51 @@ class GadaiController extends Controller $current = Carbon::now(); $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') ->where('tarikh_bayaran' ,'<=', $daterequest) ->where('kodcaw',$request->kodcaw) @@ -3278,7 +3398,7 @@ class GadaiController extends Controller $audit = Gadai::on($cawangan['mysql']) ->where([['tagpalsu','=',1],['t_gadai','<=',$request->tarikh],['sttebus','=','']]) - ->orWhere([['tagpalsu','=',1],['t_update','>',$request->tarikh],['sttebus','!=',''],['t_gadai','<=',$request->tarikh]]) + ->orWhere([['tagpalsu','=',1],['t_update','>',$request->tarikh],['sttebus','!=',''],['t_gadai','<=',$request->tarikh]]) ->orderBy('t_gadai', 'ASC') ->orderBy('sirig', 'ASC'); @@ -3647,7 +3767,7 @@ class GadaiController extends Controller public function getKadarUjrah(Request $request){ $onePercentServices = new Onepercent($request->kodcaw); $kadarujrah = $onePercentServices->getKadarUjrah($request); - + return $kadarujrah; } diff --git a/app/Http/Controllers/KelulusanController.php b/app/Http/Controllers/KelulusanController.php index 8dbadaf..a3f26c3 100644 --- a/app/Http/Controllers/KelulusanController.php +++ b/app/Http/Controllers/KelulusanController.php @@ -1,6 +1,8 @@ where('kodcaw','=',$kodcaw)->first(); - + $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('masalulus','<>','') ->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); } @@ -52,13 +63,13 @@ class KelulusanController extends Controller $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); - + $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->orderBy('siri','desc') ->first(); - + return response()->json($kelulusan); } @@ -116,7 +127,7 @@ class KelulusanController extends Controller )); } - + } else if($pengesahan == 'operasi') { @@ -128,9 +139,9 @@ class KelulusanController extends Controller ->where('siri','=',$request->siri) ->update(array( 'pelulus' => 'operasi', - 'khazanah' => $request->namakhazanah + 'khazanah' => $request->namakhazanah - )); + )); } else @@ -143,8 +154,17 @@ class KelulusanController extends Controller 'pelulus' => 'operasi', 'masalulus' => 'batal', '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) @@ -157,7 +177,7 @@ class KelulusanController extends Controller 'pelulus' => 'dahlulus', 'operasi' => $request->namaoperasi, 'masalulus'=> $harini->toTimeString() - )); + )); }else if($request->sahkan === 2){ $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) @@ -167,9 +187,17 @@ class KelulusanController extends Controller 'pelulus' => 'dahlulus', 'operasi' => $request->namaoperasi, 'masalulus'=> 'batal' - )); + )); } + $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); } @@ -186,24 +214,23 @@ class KelulusanController extends Controller ->where('siri','=',$request->siri) ->update(array( 'komen' => $request->komen - )); - - return response()->json($kelulusan,201); - + )); + + return response()->json($kelulusan,201); + } - public function create(REQUEST $request,$kodcaw,$norujukan,$roles) +public function create(REQUEST $request,$kodcaw,$norujukan,$roles) { $harini = Carbon::now(); - $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); if($roles == "khazanah") { $kelulusan=Mohon::on($cawangan['mysql']) - ->create([ - + ->create([ + 'tarikh'=> $harini->toDateString(), 'norujukan'=> $norujukan, 'siri' => $request->siri, @@ -218,15 +245,15 @@ class KelulusanController extends Controller 'teller' => $request->teller, 'pelulus' => ($request->pelulus) ? $request->pelulus : '' - + ]); } else if($roles == "operasi") { $kelulusan=Mohon::on($cawangan['mysql']) - ->create([ - + ->create([ + 'tarikh'=> $harini->toDateString(), 'norujukan'=> $norujukan, 'siri' => $request->siri, @@ -244,7 +271,15 @@ 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); } @@ -259,7 +294,7 @@ class KelulusanController extends Controller $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $mohonid=Mohonid::on($cawangan['mysql']) - ->create([ + ->create([ 'tarikh'=> $harini->toDateString(), 'mohon' => $request->mohon, 'norujukan' => $norujukan, @@ -355,7 +390,7 @@ class KelulusanController extends Controller if(sizeof($kelulusan) != 0){ array_push($arraykelulusan,["kelulusanall" => $kelulusan,"cawangan" => $cawangan['details_caw'],"cawangankod" => $cawangan['kodcaw']]); } - } + } return response()->json($arraykelulusan,200); } @@ -377,7 +412,7 @@ class KelulusanController extends Controller if(sizeof($kelulusan) != 0){ array_push($arraykelulusan,["kelulusanall" => $kelulusan,"cawangan" => $cawangan['details_caw'],"cawangankod" => $cawangan['kodcaw']]); } - } + } return response()->json($arraykelulusan,200); } diff --git a/app/Http/Controllers/KomuditiController.php b/app/Http/Controllers/KomuditiController.php index 98e9466..e20e1fe 100644 --- a/app/Http/Controllers/KomuditiController.php +++ b/app/Http/Controllers/KomuditiController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Audit; use App\Komuditi; use App\KomuditiPurchase; use App\KomuditiTransaksi; @@ -41,7 +42,6 @@ class KomuditiController extends Controller public function beliKomuditi(Request $request){ $current = Carbon::now(); - $current = new Carbon(); $komuditi_purchase = KomuditiPurchase::on('mysql7')->create([ 'unit_komuditi' => $request->unit_komuditi, @@ -64,12 +64,20 @@ class KomuditiController extends Controller '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); } public function jualKomuditi(Request $request){ $current = Carbon::now(); - $current = new Carbon(); $komuditi_asal = KomuditiPurchase::on('mysql7')->where('no_sijil','=',$request->nosijil)->latest()->first(); @@ -86,6 +94,15 @@ class KomuditiController extends Controller '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'); } @@ -134,7 +151,7 @@ class KomuditiController extends Controller $update_komuditi = KomuditiPurchase::on('mysql7')->where('id','=',$komuditi_current['id'])->update([ 'unit_komuditi' => $update_unit ]); - + $komuditi_transaksi = KomuditiTransaksi::on('mysql7')->create([ 'unit_komuditi' => $request->unit_komuditi, 'nosijil'=>$komuditi_current['no_sijil'], @@ -175,7 +192,7 @@ class KomuditiController extends Controller public function getKomuditiProductUnit(Request $request){ $produk = KomuditiProduk::on('mysql7')->where('kodproduk','=',$request->kodproduk)->first(); - + return response()->json($produk['unit']); } @@ -198,7 +215,7 @@ class KomuditiController extends Controller $current = Carbon::now(); $current = new Carbon(); $komoditi = []; - + $jumlahkomoditi = Komuditi::on('mysql7')->where([['date_purchase','=',$current->toDateString()], ['transaction_type', '=', 'Beli Komoditi']])->orderBy('created_at','desc')->first(); $transaksi_komoditi = KomuditiPurchase::on('mysql7')->where('date_purchase','=',$current->toDateString())->orderBy('created_at','desc')->first(); @@ -209,8 +226,8 @@ class KomuditiController extends Controller $percentage_baki_komoditi = ($baki_komoditi/$jumlahkomoditi['unit_komuditi'])*100; array_push($komoditi, - ['komoditi_transaksi'=>number_format($transaksi_komoditi['unit_komuditi'],2), - 'baki_komoditi'=>number_format($baki_komoditi,2), + ['komoditi_transaksi'=>number_format($transaksi_komoditi['unit_komuditi'],2), + 'baki_komoditi'=>number_format($baki_komoditi,2), 'percentage_komoditi_transaksi'=>number_format($percentage_komoditi_transaksi,1), 'percentage_baki_komoditi'=>number_format($percentage_baki_komoditi,1)]); @@ -232,7 +249,7 @@ class KomuditiController extends Controller $monthly_array = new Carbon(); $yearly_array = Carbon::now(); $yearly_array = new Carbon(); - + $array_totalup = []; if($request->method == 'daily'){ @@ -279,13 +296,13 @@ class KomuditiController extends Controller { $pembeliankomuditi = Komuditi::on('mysql')->selectRaw('SUM(unit_komuditi) as totalkomoditi')->addSelect('date_purchase')->groupBy('date_purchase') ->where([['date_purchase','<=',$current->toDateString()],['date_purchase','>=',$weekly_date]])->orderBy('created_at','desc')->get(); - + }elseif($request->method == 'monthly') { $pembeliankomuditi = Komuditi::on('mysql')->selectRaw('SUM(unit_komuditi) AS totalkomoditi')->addSelect(DB::connection('mysql')->raw('DATE_FORMAT(date_purchase, "%Y-%m") as date_purchase')) ->groupBy(DB::connection('mysql')->raw("DATE_FORMAT(date_purchase,'%Y%m')"))->where([['date_purchase','<=',$current->toDateString()],['date_purchase','>=',$monthly_date]]) ->orderBy('created_at','desc')->get(); - + }elseif($request->method == 'yearly') { $pembeliankomuditi = Komuditi::on('mysql')->selectRaw('SUM(unit_komuditi) AS totalkomoditi')->addSelect(DB::connection('mysql')->raw('DATE_FORMAT(date_purchase, "%Y") as date_purchase')) @@ -303,7 +320,7 @@ class KomuditiController extends Controller } } } - + } @@ -318,4 +335,4 @@ class KomuditiController extends Controller return response()->json($rekodkomoditi); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 5b26dc6..1c5f4c8 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -27,6 +27,7 @@ use App\imbangdugalama; use App\Services\Reports\ImbangDugaService; use App\Services\Reports\Account\GeneralLedger; +use Illuminate\Support\Facades\Log; use DateTime; use Illuminate\Support\Facades\DB; @@ -50,7 +51,7 @@ class LaporanController extends Controller $bayaranonline = $bayaranonlinequery->sum('duit_masuk'); $bilbayaranonline = $bayaranonlinequery->count(); - + $ansurankaunter = TransaksiKeuntungan::on('mysql7') ->leftJoin('transaction as trans', function($join) { @@ -108,7 +109,7 @@ class LaporanController extends Controller $total_keuntunganansuran_kaunter = $keuntunganansuran_kaunter_query->sum('bayaran_keuntungan'); $bil_keuntunganansuran_kaunter = $keuntunganansuran_kaunter_query->count(); - + // $total_keuntunganansuran = 0; // if($total_keuntunganansuran_data){ // foreach($total_keuntunganansuran_data as $index=>$total_keuntunganansuranData){ @@ -167,7 +168,7 @@ class LaporanController extends Controller // ->pluck('transaksi_keuntungan.norujukan'); // dd($total_keuntunganbukanansuran_data_kaunter); - + // $gadaiDataKaunter = Gadai::on($cawangan['mysql'])->whereIn('norujukan',$total_keuntunganbukanansuran_data_kaunter)->whereNotNull('hargajualan')->pluck('norujukan'); @@ -245,7 +246,6 @@ class LaporanController extends Controller $keuntungan_kaunter = $keuntungan_kaunter_query->sum('bayaran_keuntungan'); $bil_keuntungan_kaunter = $keuntungan_kaunter_query->count(); - // $keuntungan = 0; @@ -364,7 +364,7 @@ class LaporanController extends Controller $panjar_harian = Panjar::on($cawangan['mysql'])->where('tarikh','=',$request->tarikh)->sum('bayaran'); $panjar_bulanan = Panjar::on($cawangan['mysql'])->where([['tarikh','<=',$request->tarikh],['tarikh','>=',$firstDay]])->sum('bayaran'); $panjar_tahunan = Panjar::on($cawangan['mysql'])->where([['tarikh','<=',$request->tarikh],['tarikh','>=',$firstDayYear]])->sum('bayaran'); - + //e $tarikhtawarruq = ''; @@ -497,21 +497,37 @@ class LaporanController extends Controller $daterequest = new Carbon($request->tarikh); $daterequest->addDays(1); - - $bayaranpendahuluan_data = TransaksiKeuntungan::on('mysql7') - ->where('tarikh_bayaran' ,'<=', $daterequest) - ->where('kodcaw',$request->kodcaw) - ->pluck('norujukan'); + + // $bayaranpendahuluan_data = TransaksiKeuntungan::on('mysql7') + // ->where('tarikh_bayaran' ,'<=', $daterequest) + // ->where('kodcaw',$request->kodcaw) + // ->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'); + // $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 = 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; + + // $bayaranpendahuluan = 0; diff --git a/app/Http/Controllers/LelongController.php b/app/Http/Controllers/LelongController.php index c98fae7..6f54ae0 100644 --- a/app/Http/Controllers/LelongController.php +++ b/app/Http/Controllers/LelongController.php @@ -71,11 +71,14 @@ class LelongController extends Controller return response()->json($lelong); } - public function showBakiLelong($noic,$jenislelong) + public function showBakiLelong($noic,$jenislelong, $kodcaw, Request $request) + { $cawangan_all = Cawangan::on('mysql7')->get(); $bakilelongtotal = 0; $rugilelongtotal = 0; + $current = Carbon::now(); + $current = new Carbon(); 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); } @@ -259,6 +276,7 @@ class LelongController extends Controller if($kodcaw == 'GC'){ $bakilelong += 2135.75; + $bakilelong -= 3; //added 15/10/2024 sebab ada kemusykilan 3 ringgit daripada rugi lelong } $arraylelong = ['bakilelong' => $bakilelong, 'rugilelong' => $rugitotal]; @@ -598,11 +616,11 @@ class LelongController extends Controller if($cawangan['tagarrahnbid'] == 1){ if(env('APP_ENV') != 'production'){ - $link = 'https://niklah.arrahn.com.my/api/portalApi'; + $link = 'http://niklah.arrahn.com.my/api/portalApi'; }else{ $link = 'http://adminbid.arrahn/api/portalApi'; } - + $lelong = Http::withOptions(['verify' => true])->get($link,[ 'norujukan' => $request->norujukan ])->json(); @@ -623,8 +641,8 @@ class LelongController extends Controller if($lelong) { $date_lelong = new Carbon($lelong['t_lelong']); - $current_date = new Carbon($current->toDateString()); - + $current_date = new Carbon($current->toDateString()); + if($lelong['t_lelong'] >= $current->toDateString()) { $diff = $date_lelong->diffInDays($current_date); @@ -662,7 +680,7 @@ class LelongController extends Controller } else{ - + $lelong = Lelong::on($cawangan['mysql']) ->where('norujukan', '=', $request->norujukan) ->select('norujukan', 't_lelong') @@ -970,13 +988,13 @@ class LelongController extends Controller if($batchnosama) { $dif=array_intersect($bl,$batchnosama); - + if(!$dif) { array_push($arraybatch,['batchno' => $bl['batchno'], 'bilangantuntutbaki' => $bl['bilangan'], 'bilanganrugi' => 0,'tarikhlelong' => $bl['tarikhlelong']]); } } - + } foreach($batchlelrugi as $index=>$br) @@ -985,13 +1003,13 @@ class LelongController extends Controller if($batchnosama) { $dif=array_intersect($br,$batchnosama); - + if(!$dif) { array_push($arraybatch,['batchno' => $br['batchno'], 'bilangantuntutbaki' => 0, 'bilanganrugi' => $br['bilangan'],'tarikhlelong' => $br['tarikhlelong']]); - } + } } - + } return response()->json($arraybatch); @@ -1031,7 +1049,7 @@ class LelongController extends Controller ->orderBy('gadai.sirig','asc') ->where('gadai.taglel','=', 1); } - + $lelonglist = $lelong->get(); foreach($lelonglist as $index=>$lel) @@ -1106,7 +1124,7 @@ class LelongController extends Controller 'telefon' => $index['user_details']['notelbimbit'], ]); } - + $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$index['norujukan'])->update(array( 'sttebus' => "L", 't_update' => $request->tarikh @@ -1208,7 +1226,7 @@ class LelongController extends Controller return response()->json("success"); } - public function getRingkasanHarian(Request $request){ + public function getRingkasanHarian(Request $request){ $ringkasan = new RingkasanHarianServices; $getData = $ringkasan->getRingkasanHarian($request->mula,$request->hingga,$request->kodcaw); @@ -1323,7 +1341,7 @@ class LelongController extends Controller ->Where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orwhere('lelmarhun.nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->orderBy('lelong.t_lelong','asc') ->select('lelong.t_lelong','gadai.t_gadai','gadai.nokp','lelong.pinjaman','lelong.baki','lelong.batchno','lelong.norujukan') @@ -1334,7 +1352,7 @@ class LelongController extends Controller $groupbybatch = $lelong_data->groupBy('batchno'); $lelong = []; - foreach($groupbybatch as $index=>$lelongData){ + foreach($groupbybatch as $index=>$lelongData){ $total_pembiayaan = $lelongData->sum('pinjaman'); // dd($total_pembiayaan); $total_lelong = $lelongData->count('norujukan'); @@ -1366,7 +1384,7 @@ class LelongController extends Controller ->Where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orwhere('lelmarhun.nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->orderBy('lelong.t_lelong','asc') ->select('lelong.t_lelong','gadai.t_gadai','gadai.nokp','lelong.pinjaman','lelong.baki','lelong.batchno','lelong.norujukan') @@ -1376,7 +1394,7 @@ class LelongController extends Controller ->get(); // dd($lelong_data); $lelong = []; - foreach($lelong_data as $index=>$lelongData){ + foreach($lelong_data as $index=>$lelongData){ // dd($lelongData->norujukan); $lelmarhun = LelMarhun::on($cawangan['mysql']) ->where('norujukan',$lelongData['norujukan']) @@ -1385,7 +1403,7 @@ class LelongController extends Controller ->Where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orwhere('nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->get(); // dd($lelmarhun->norujukan); @@ -1403,7 +1421,7 @@ class LelongController extends Controller // dd($lelong); } - + return response()->json($lelong); } @@ -1421,7 +1439,7 @@ class LelongController extends Controller ->where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orWhere('lelmarhun.nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->select('lelong.batchno','lelong.t_lelong','gadai.t_gadai','gadai.nokp','lelong.pinjaman','lelong.baki','lelong.batchno','lelong.norujukan','gadai.marhun') ->orderBy('lelong.t_lelong') @@ -1430,8 +1448,8 @@ class LelongController extends Controller ->get(); // dd($lelong_data); $lelong = []; - foreach($lelong_data as $index=>$lelongData){ - + foreach($lelong_data as $index=>$lelongData){ + // dd($lelongData->norujukan); $lelmarhun = LelMarhun::on($cawangan['mysql']) ->where('norujukan',$lelongData['norujukan']) @@ -1441,13 +1459,13 @@ class LelongController extends Controller ->where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orWhere('nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->where('norujukan',$lelongData['norujukan']) ->where('batch_no',$lelongData['batchno']) ->distinct() ->get(); - + array_push($lelong,[ "batchno"=> $lelongData->batchno, "norujukan"=> $lelongData->norujukan, @@ -1464,7 +1482,7 @@ class LelongController extends Controller // dd($lelong); } - + return response()->json($lelong); } @@ -1482,7 +1500,7 @@ class LelongController extends Controller ->Where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orwhere('lelmarhun.nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->select('lelong.batchno','lelong.t_lelong','gadai.t_gadai','gadai.nokp','lelong.pinjaman','lelong.baki','lelong.batchno','lelong.norujukan','gadai.marhun') ->orderBy('lelong.t_lelong') @@ -1491,8 +1509,8 @@ class LelongController extends Controller ->get(); // dd($lelong_data); $lelong = []; - foreach($lelong_data as $index=>$lelongData){ - + foreach($lelong_data as $index=>$lelongData){ + $lelmarhun = LelMarhun::on($cawangan['mysql']) ->where('norujukan',$lelongData['norujukan']) ->where('batch_no',$lelongData['batchno']) @@ -1502,7 +1520,7 @@ class LelongController extends Controller ->Where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orwhere('nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->where('batch_no',$lelongData['batchno']) ->where('norujukan',$lelongData['norujukan']) @@ -1525,7 +1543,7 @@ class LelongController extends Controller // dd($lelong); } - + return response()->json($lelong); } @@ -1543,7 +1561,7 @@ class LelongController extends Controller ->Where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orwhere('lelmarhun.nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->orderBy('lelong.t_lelong','asc') ->select('lelong.t_lelong','gadai.t_gadai','gadai.nokp','lelong.pinjaman','lelong.baki','lelong.batchno','lelong.norujukan') @@ -1554,7 +1572,7 @@ class LelongController extends Controller $groupbybatch = $lelong_data->groupBy('batchno'); $lelong = []; - foreach($groupbybatch as $index=>$lelongData){ + foreach($groupbybatch as $index=>$lelongData){ $total_pembiayaan = $lelongData->sum('pinjaman'); // dd($total_pembiayaan); $total_lelong = $lelongData->count('norujukan'); @@ -1586,7 +1604,7 @@ class LelongController extends Controller ->Where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orwhere('lelmarhun.nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->orderBy('lelong.t_lelong','asc') ->select('lelong.t_lelong','gadai.t_gadai','gadai.nokp','lelong.pinjaman','lelong.baki','lelong.batchno','lelong.norujukan') @@ -1596,7 +1614,7 @@ class LelongController extends Controller ->get(); // dd($lelong_data); $lelong = []; - foreach($lelong_data as $index=>$lelongData){ + foreach($lelong_data as $index=>$lelongData){ // dd($lelongData->norujukan); $lelmarhun = LelMarhun::on($cawangan['mysql']) ->where('norujukan',$lelongData['norujukan']) @@ -1607,7 +1625,7 @@ class LelongController extends Controller ->Where(function ($query) use($item) { for ($i = 0; $i < count($item); $i++){ $query->orwhere('lelmarhun.nota', 'like', '%' . $item[$i] .'%'); - } + } }) ->where('batch_no',$batchno) ->where('norujukan',$lelongData['norujukan']) @@ -1629,14 +1647,14 @@ class LelongController extends Controller // dd($lelong); } - + return response()->json($lelong); } public function kiraupahUjrahOnePercent($kodcaw,$norujukan){ $onepercentservices = new OnePercentServices(); - + $cawangan = Cawangan::on('mysql7') ->where('kodcaw','=',$kodcaw) ->first(); @@ -1655,7 +1673,7 @@ class LelongController extends Controller $array_upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); $ujrah = $bilang_bln * $array_upah['ujrah']; $onepercent = $bilang_bln * $array_upah['onepercent']; - $onepercent_semasa = $onepercent; + $onepercent_semasa = $onepercent; $ujrah_semasa = $ujrah; return ['ujrah' => $ujrah_semasa, 'onepercent' => $onepercent_semasa]; @@ -1664,7 +1682,7 @@ class LelongController extends Controller // public function kiraupahUjrahOnePercentRebate($kodcaw,$norujukan){ // // $onepercentservices = new OnePercentServices(); // $onepercentservices = new Calculation(); - + // $cawangan = Cawangan::on('mysql7') // ->where('kodcaw','=',$kodcaw) // ->first(); @@ -1697,7 +1715,7 @@ class LelongController extends Controller ->first(); $onepercentservices = new Calculation(); - + // $cawangan = $kodcaw; $gadai_data = Gadai::on($cawangan['mysql']) @@ -1712,13 +1730,13 @@ class LelongController extends Controller $bilang_bln = $tempoh - $gadai_data['tempohbayar']; $array_upah = $onepercentservices->kiraanKeuntunganRebet($gadai_data['bakipjm'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['margin_semasa']); - // $ujrah_rounded = $onepercentservices->getRoundedMethod($array_upah['ujrah']); + // $ujrah_rounded = $onepercentservices->getRoundedMethod($array_upah['ujrah']); // $keuntungan_rounded = $onepercentservices->getRoundedMethod($array_upah['onepercent']); $ujrah = $bilang_bln * $array_upah['ujrah']; $onepercent = $bilang_bln * $array_upah['onepercent']; $ujrah = $onepercentservices->getRoundedMethod($ujrah); $onepercent = $onepercentservices->getRoundedMethod($onepercent); - + return ['ujrah' => $ujrah, 'onepercent' => $onepercent]; } diff --git a/app/Http/Controllers/LogController.php b/app/Http/Controllers/LogController.php index 6af7955..7a158de 100644 --- a/app/Http/Controllers/LogController.php +++ b/app/Http/Controllers/LogController.php @@ -10,6 +10,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Carbon\Carbon; +use App\Audit; class LogController extends Controller { @@ -20,7 +21,8 @@ class LogController extends Controller public function logSession($kodcaw, Request $request) { - // dd($request->all()); + $current = Carbon::now(); + $current = new Carbon(); $logsession = Logsession::on('mysql7')->where('kodcaw', '=', $kodcaw) ->create([ @@ -31,6 +33,18 @@ class LogController extends Controller 'taraf' => $request->taraf, ]); + + $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); @@ -55,5 +69,36 @@ class LogController extends Controller 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); + } + } diff --git a/app/Http/Controllers/PekerjaanController.php b/app/Http/Controllers/PekerjaanController.php index 6f268f7..870e56b 100644 --- a/app/Http/Controllers/PekerjaanController.php +++ b/app/Http/Controllers/PekerjaanController.php @@ -12,4 +12,4 @@ class PekerjaanController extends Controller return response()->json($kerja); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/PolisController.php b/app/Http/Controllers/PolisController.php index 6ac75ec..7221351 100644 --- a/app/Http/Controllers/PolisController.php +++ b/app/Http/Controllers/PolisController.php @@ -108,12 +108,22 @@ class PolisController extends Controller return response()->json(['error' => 'Invalid kodcaw'], 403); } - $polis = Polis::on($cawangan['mysql']) - ->where('komen1','=',$request->alasan) - // ->where('tarikh','=',$request->tarikh) - ->whereBetween('tarikh', [$request->tarikh_mula, $request->tarikh_akhir]) - ->get(); - + if($request->alasan == 'all'){ + $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('tarikh','=',$request->tarikh) + ->whereBetween('polis.tarikh', [$request->tarikh_mula, $request->tarikh_akhir]) + ->get(); + } + return response()->json($polis); } diff --git a/app/Http/Controllers/Reports/BalanceSheetsController.php b/app/Http/Controllers/Reports/BalanceSheetsController.php index 0d99a02..05e1083 100644 --- a/app/Http/Controllers/Reports/BalanceSheetsController.php +++ b/app/Http/Controllers/Reports/BalanceSheetsController.php @@ -31,8 +31,8 @@ class BalanceSheetsController extends Controller } public function updateIGBalanceSheets(Request $request){ - $cawangan = Cawangan::on('mysql7')->where('zone','<>',1)->get(); - $date = Carbon::now()->month($request->month); + $cawangan = Cawangan::on('mysql7')->where('version','v2')->get(); + $date = Carbon::create($request->year)->month($request->month); $lastDay = (clone $date)->endOfMonth(); try{ diff --git a/app/Http/Controllers/Reports/RingkasanHarianController.php b/app/Http/Controllers/Reports/RingkasanHarianController.php index 4d61edc..74143e3 100644 --- a/app/Http/Controllers/Reports/RingkasanHarianController.php +++ b/app/Http/Controllers/Reports/RingkasanHarianController.php @@ -16,9 +16,12 @@ class RingkasanHarianController extends Controller $reportRingkasanHarianService = new ReportRingkasanHarianService($kod_cawangan, $request); $reportKawalanStokService = new KawalanStokService($kod_cawangan, $request); + $ringkasan_report = $reportRingkasanHarianService->getLaporanCawangan()->getContent(); + $ringkasan_kawalan = $reportKawalanStokService->getLaporanCawangan()->getContent(); + $reports = [ - 'reportRingkasanHarian' => $reportRingkasanHarianService->getLaporanCawangan(), - 'reportKawalanStok' => $reportKawalanStokService->getLaporanCawangan(), + 'reportRingkasanHarian' => json_decode($ringkasan_report), + 'reportKawalanStok' => json_decode($ringkasan_kawalan), ]; return response()->json($reports); diff --git a/app/Http/Controllers/TebusController.php b/app/Http/Controllers/TebusController.php index 217f8ee..6606a4e 100644 --- a/app/Http/Controllers/TebusController.php +++ b/app/Http/Controllers/TebusController.php @@ -182,6 +182,13 @@ class TebusController extends Controller 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){ $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); @@ -224,7 +231,7 @@ class TebusController extends Controller "nama"=>$customer_info['nama'], "nokp"=>$tebusData['nokp'], "jbg"=>$tebusData['jbg'], - "ujrah"=>$trans['ujrah_rebet'], + "ujrah"=>$trans['ujrah_rebet'], "onepercent"=>$trans['onepercent_rebet'] ]); @@ -301,7 +308,7 @@ class TebusController extends Controller "nama"=>$customer_info['nama'], "nokp"=>$tebusData['nokp'], "jbg"=>$tebusData['jbg'], - "ujrah"=>$trans['ujrah_rebet'], + "ujrah"=>$trans['ujrah_rebet'], "onepercent"=>$trans['onepercent_rebet'], "tagbaru"=>$tebusData['tagbaru'] @@ -314,17 +321,17 @@ class TebusController extends Controller if ($compare_teller === 0) { $compare_tebus = strcmp($a['t_tebus'], $b['t_tebus']); - - if ($compare_tebus === 0) { + + if ($compare_tebus === 0) { return $a['tarikh_bayaran'] <=> $b['tarikh_bayaran']; } - + return $compare_tebus; } return $compare_teller; }); - + return response()->json($tebus); } @@ -371,13 +378,13 @@ class TebusController extends Controller // dd($totalkeuntunganarrahn,$totalkeuntungantawarruq); $array_penebusan = [ - 'bilarrahn' => $bilpenebusanarrahn, - 'totalarrahn' => $totalpenebusanarrahn, - 'keuntunganarrahn' => $totalkeuntunganarrahn, + 'bilarrahn' => $bilpenebusanarrahn, + 'totalarrahn' => $totalpenebusanarrahn, + 'keuntunganarrahn' => $totalkeuntunganarrahn, 'ujraharrahn' => $totalujraharrahn, 'onepercentarrahn' => $totalonepercentarrahn, - 'biltawarruq' => $bilpenebusantawarruq, + 'biltawarruq' => $bilpenebusantawarruq, 'totaltawarruq' => $totalpenebusantawarruq, 'totalrebate' => $totalrebatetawarruq, 'keuntungantawarruq' => $totalkeuntungantawarruq, @@ -395,7 +402,7 @@ class TebusController extends Controller $tebusarrahn = Tebus::on($cawangan['mysql']) ->join('gadai as gad','gad.norujukan','=','tebus.norujukan') ->where('tebus.t_tebus','>=',$request->mula) - ->where('tebus.t_tebus','<=',$request->akhir) + ->where('tebus.t_tebus','<=',$request->akhir) ->whereNull('hargajualan'); $totalpenebusanarrahn = $tebusarrahn->sum('tebus.pinjaman'); @@ -408,14 +415,14 @@ class TebusController extends Controller $tebustawarruq = Tebus::on($cawangan['mysql']) ->join('gadai as gad','gad.norujukan','=','tebus.norujukan') ->where('tebus.t_tebus','>=',$request->mula) - ->where('tebus.t_tebus','<=',$request->akhir) + ->where('tebus.t_tebus','<=',$request->akhir) ->whereNotNull('hargajualan'); $tebustawarruqansuran = Tebus::on($cawangan['mysql']) ->select('tebus.bakiupah','tebus.norujukan') ->join('gadai as gad','gad.norujukan','=','tebus.norujukan') ->where('tebus.t_tebus','>=',$request->mula) - ->where('tebus.t_tebus','<=',$request->akhir) + ->where('tebus.t_tebus','<=',$request->akhir) ->whereNotNull('hargajualan') ->where('gad.tagbaru','=',1) ->where('hargajualan','<>','bakihargajualan'); @@ -435,13 +442,13 @@ class TebusController extends Controller // dd($totalkeuntunganarrahn,$totalkeuntungantawarruq); $array_penebusan = [ - 'bilarrahn' => $bilpenebusanarrahn, - 'totalarrahn' => $totalpenebusanarrahn, - 'keuntunganarrahn' => $totalkeuntunganarrahn, + 'bilarrahn' => $bilpenebusanarrahn, + 'totalarrahn' => $totalpenebusanarrahn, + 'keuntunganarrahn' => $totalkeuntunganarrahn, 'ujraharrahn' => $totalujraharrahn, 'onepercentarrahn' => $totalonepercentarrahn, - 'biltawarruq' => $bilpenebusantawarruq, + 'biltawarruq' => $bilpenebusantawarruq, 'totaltawarruq' => $totalpenebusantawarruq, 'totalrebate' => $totalrebatetawarruq, 'keuntungantawarruq' => $totalkeuntungantawarruq, @@ -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(); $dahscan = Tebus::on($cawangan['mysql'])->where([['norujukan','=',$norujukan],['tagterima',1]])->first(); @@ -492,7 +501,16 @@ class TebusController extends Controller $update_inoutmar = Tebus::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( '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'); }else{ return response()->json('unavailable'); @@ -529,9 +547,9 @@ class TebusController extends Controller $wakil = Wakil::on($cawangan['mysql']) ->orderBy('nowakil','desc') ->first(); - + if(!$wakil){ - return response(0); + return response(0); } if($wakil['nowakil']) @@ -752,9 +770,9 @@ class TebusController extends Controller $countadvansuronline = $listadvansuronline->count(); $totaladvansuronline = $listadvansuronline->sum('upahdibayar'); - $arrayadvansur = ['bilkaunter' => $countadvansurkaunter, + $arrayadvansur = ['bilkaunter' => $countadvansurkaunter, 'totalkaunter' => $totaladvansurkaunter, - 'bilonline' => $countadvansuronline, + 'bilonline' => $countadvansuronline, 'totalonline' => $totaladvansuronline]; return response()->json($arrayadvansur,200); @@ -1449,8 +1467,8 @@ class TebusController extends Controller ->sum('transaksi_keuntungan.bayaran_keuntungan'); } - - + + $upahlelong = Lelong::on($cawangan['mysql']) ->where([['t_jual','<=',$request->tarikh],['t_jual','>','2022-07-24']]) ->whereYear('t_jual','=',$tarikhyear->year) @@ -1657,7 +1675,7 @@ class TebusController extends Controller return response(0); } - + public function calculationKeuntunganPenggadai($kodcaw,Request $request) { @@ -1672,8 +1690,8 @@ class TebusController extends Controller if($determine_past->isToday()) { $audit_now = Gadai::on($cawangan['mysql']) - ->select(DB::raw('sum(tunggakan) as "akru", - sum(tunggakanujrah) as "akruujrah", + ->select(DB::raw('sum(tunggakan) as "akru", + sum(tunggakanujrah) as "akruujrah", sum(tunggakanonepercent) as "akruonepercent"')) ->where([['tagpalsu','=',0],['t_gadai','<=',$request->tarikh],['sttebus','=','']]) ->orWhere([['tagpalsu','=',0],['t_update','>',$request->tarikh],['sttebus','!=',''],['t_gadai','<=',$request->tarikh]]) @@ -1687,7 +1705,7 @@ class TebusController extends Controller $totaltunggakan_now = $result_audit_backdate->selectRaw('SUM(upahblmbyar) + SUM(ujrah) + SUM(utgonepercent) as total_sum')->first(); $totaltunggakan_now = $totaltunggakan_now['total_sum']; } - + return response()->json($totaltunggakan_now); } @@ -1717,7 +1735,7 @@ class TebusController extends Controller case '11': return $audit_backdate = StokAudit11::on($cawangan['mysql'])->where('tahun',$year_generate); break; case '12': return $audit_backdate = StokAudit12::on($cawangan['mysql'])->where('tahun',$year_generate); - break; + break; } } @@ -1733,11 +1751,11 @@ class TebusController extends Controller $date_sebelum = clone $date; $determine_past = new Carbon($request->tarikh); - $date_sebelum = $date_sebelum->firstOfMonth(); + $date_sebelum = $date_sebelum->firstOfMonth(); $month_sebelum = $date_sebelum->subMonth()->format('m'); $month_sekarang = $date->format('m'); $year_generate = $date->format('Y'); - $haripertama = $date->firstOfMonth(); + $haripertama = $date->firstOfMonth(); $haripertama_extension = $haripertama->toDateString(); $datenow = new Carbon($request->tarikh); $year = $current->year; @@ -1799,7 +1817,7 @@ class TebusController extends Controller if(!$determine_past->isToday()){ $calculate_month = (int)$month_sekarang - $latest_month_akrunet->bulan; - + if($calculate_month > 1){ return 'ERR_MONTH_SEBELUM'; }else if($calculate_month == 1){ @@ -1810,7 +1828,7 @@ class TebusController extends Controller ->where('bulan','<=',$intmonth_sekarang) ->where('tahun',$year) ->sum('jumlah'); - + return response()->json($jumlahakru); }else if($calculate_month == 0) { @@ -1844,19 +1862,19 @@ class TebusController extends Controller 'hingga' => $datenow->toDateString(), 'kodcaw' => $request->kodcaw, ]); - + // $calculation_keuntungan_sebenar = $this->untungrugicalculationLejer($request->kodcaw,$request_dibina); // $upah_diterima = $calculation_keuntungan_sebenar->getContent(); $upah_diterima = $total; $calculation = $totaltunggakan_sebelum - $upah_diterima; $accrual_net = $totaltunggakan_now - $calculation; - if($calculate_month <= 1){ + if($calculate_month <= 1){ $available_akru = AkruNet::on($cawangan['mysql']) ->where('bulan', (int)$month_sekarang) ->where('tahun', $current->year) ->get()->toArray(); - + if(sizeof($available_akru) == 0) { $akrunet = new AkruNet(); @@ -1871,10 +1889,10 @@ class TebusController extends Controller AkruNet::on($cawangan['mysql'])->where('bulan','=',(int)$month_sekarang)->where('tahun',$current->year) ->update(['jumlah' => ($accrual_net)]); } - + } } - + //dd($jumlahakru,$accrual_net,$total); $total_accrual_net = $jumlahakru + ($accrual_net); @@ -1891,19 +1909,19 @@ class TebusController extends Controller 'hingga' => $date->endOfMonth()->toDateString(), 'kodcaw' => $request->kodcaw, ]); - + $calculation_keuntungan_sebenar = $this->untungrugicalculationLejer($request->kodcaw,$request_dibina); $calculation_upahsimpan = $this->calculationKeuntunganSebenarLejer($request->kodcaw,$request_dibina); - + $upah_diterima = $calculation_keuntungan_sebenar->getContent() + $calculation_upahsimpan->getContent(); $calculation = $totaltunggakan_sebelum - $upah_diterima; $accrual_net = $totaltunggakan_now - $calculation; - if($calculate_month <= 1){ + if($calculate_month <= 1){ $available_akru = AkruNet::on($cawangan['mysql']) ->where('bulan', (int)$month_sekarang) ->get()->toArray(); - + if(sizeof($available_akru) == 0) { $akrunet = new AkruNet(); @@ -1914,10 +1932,10 @@ class TebusController extends Controller $akrunet->save(); } } - + $total_accrual_net = $jumlahakru + ($accrual_net - $total); } - + return response()->json($total_accrual_net); } @@ -1928,7 +1946,7 @@ class TebusController extends Controller $firstMonth = (clone $currentDate)->firstOfMonth(); $lastMonth = (clone $currentDate)->endOfMonth(); /* Start Keuntungan Semasa Calculation */ - + $collection_trans = Transaction::on('mysql7') ->leftJoin('transaksi_keuntungan as trans', function ($join) { $join->on('transaction.norujukan', '=', 'trans.norujukan'); @@ -1970,7 +1988,7 @@ class TebusController extends Controller /* Keuntungan Lelong */ $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) ->sum('bakiupah'); diff --git a/app/Http/Controllers/TransactionOnlineController.php b/app/Http/Controllers/TransactionOnlineController.php index c8f5440..213aabc 100644 --- a/app/Http/Controllers/TransactionOnlineController.php +++ b/app/Http/Controllers/TransactionOnlineController.php @@ -438,7 +438,7 @@ class TransactionOnlineController extends Controller } else { $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']); $onepercentasal = $gadai['pinjaman'] * (1 / 100); diff --git a/app/Http/Controllers/TunaiController.php b/app/Http/Controllers/TunaiController.php index 904d2ec..cd4d83f 100644 --- a/app/Http/Controllers/TunaiController.php +++ b/app/Http/Controllers/TunaiController.php @@ -6,12 +6,14 @@ use App\Cawangan; use App\Tunai; use App\Gadai; use App\AddTunai; +use App\Audit; use App\RequestTeller; use App\Denominasi; use App\Vault; +use Auth0\SDK\API\Management\Users; use Illuminate\Http\Request; use Carbon\Carbon; - +use Illuminate\Support\Facades\Log; class TunaiController extends Controller { @@ -150,6 +152,17 @@ class TunaiController extends Controller '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) @@ -194,7 +207,28 @@ class TunaiController extends Controller $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + //Same Note e.g P1 and S1 + $same_note = AddTunai::on($cawangan['mysql']) + ->where('kodlaluan', $request->kodlaluan) + ->where('nota',$request->nota) + ->where('tarikh',$current->toDateString())->first(); + if($same_note){ + Log::error('Error: same-note :' . $kodcaw . ': Name :' . $request->kodlaluan); + return 'same-note'; + } + + //Time Interval + $latestRecord = AddTunai::on($cawangan['mysql'])->where('kodlaluan', $request->kodlaluan)->latest()->first(); + if($latestRecord){ + $time = Carbon::parse($latestRecord->created_at); + $time_end = $time->copy()->addMinutes(1); + + if($current->between($time,$time_end)){ + Log::error('Error: within 1 minute :' . $kodcaw . ': Name :' . $request->kodlaluan); + return 'within 1 minute'; + } + } $addtunai=AddTunai::on($cawangan['mysql'])->create([ @@ -203,7 +237,8 @@ class TunaiController extends Controller 'kodlaluan'=>$request->kodlaluan, 'tambah'=>$request->tambah, 'kurang'=>$request->kurang, - 'nota'=>$request->nota + 'nota'=>$request->nota, + 'created_at'=>$current ]); return response()->json($addtunai,201); @@ -269,6 +304,33 @@ class TunaiController extends Controller return response()->json($addtunai); } + public function updateRequestTellerDeno($kodcaw,Request $request){ + + $requestteller = RequestTeller::on('mysql7')->where([['no','=',$request->no],['kodcaw','=',$kodcaw],['kodlaluan','=',$request->kodlaluan],['update','=',0]])->update(array( + 'update' => 1, + 'bd1' => $request->bd1, + 'bd5' => $request->bd5, + 'bd10' => $request->bd10, + 'bd20' => $request->bd20, + 'bd50' => $request->bd50, + 'bd100' => $request->bd100, + 'txtring1' => $request->txtring1, + 'txtring5' => $request->txtring5, + 'txtring10' => $request->txtring10, + 'txtring20' => $request->txtring20, + 'txtring50' => $request->txtring50, + 'txtring100' => $request->txtring100, + 'txtring1000' => $request->txtring1000, + 'txtsen1' => $request->txtsen1, + 'txtsen5' => $request->txtsen5, + 'txtsen10' => $request->txtsen10, + 'txtsen20' => $request->txtsen20, + 'txtsen50' => $request->txtsen50, + ) ); + + return response()->json($requestteller); + } + public function getRequestTeller($kodcaw) { @@ -290,6 +352,15 @@ class TunaiController extends Controller return response()->json($requestteller); } + public function getRequestTellerByRecno($kodcaw,Request $request){ + $current = Carbon::now(); + $current = new Carbon(); + + $requestteller=RequestTeller::on('mysql7')->where([['kodcaw','=',$kodcaw],['update','=',1],['recno','=',$request->recno],['kodlaluan','=',$request->teller]])->get(); + + return response()->json($requestteller); + } + public function getRequestTellerLaporanSerahanBerkala($kodcaw,Request $request) { @@ -316,6 +387,17 @@ class TunaiController extends Controller 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( 'update' => 1 @@ -370,6 +452,16 @@ class TunaiController extends Controller '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); } @@ -644,4 +736,12 @@ class TunaiController extends Controller return response()->json($requestteller); } + + public function getAccStatement($kodcaw, Request $request){ + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + + $addtunai = AddTunai::on($cawangan['mysql'])->where('tarikh',$request->tarikh)->where('kodlaluan',$request->teller)->get(); + + return $addtunai; + } } diff --git a/app/Http/Controllers/VaultController.php b/app/Http/Controllers/VaultController.php index 63abc5f..b43a47a 100644 --- a/app/Http/Controllers/VaultController.php +++ b/app/Http/Controllers/VaultController.php @@ -5,6 +5,7 @@ use App\Vault; use App\Cawangan; use App\Tunai; use App\AddTunai; +use App\Audit; use App\GlDetail; use App\imbangdugalama; use App\GlCode; @@ -20,7 +21,7 @@ class VaultController extends Controller public function list($kodcaw) { $current = Carbon::now(); - $current = new Carbon(); + $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql']) @@ -29,7 +30,7 @@ class VaultController extends Controller ->orderby('tarikh','desc')->limit(1)->get(); return response()->json($vault); - + } public function listall($kodcaw) @@ -45,7 +46,7 @@ class VaultController extends Controller public function updateVault($kodcaw, Request $request) { $current = Carbon::now(); - $current = new Carbon(); + $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $updateVault=Vault::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()],['kodcaw','=', $kodcaw]])->update(array( @@ -62,7 +63,7 @@ class VaultController extends Controller public function updateVaultPanjar($kodcaw, Request $request) { $current = Carbon::now(); - $current = new Carbon(); + $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql'])->where('kodcaw','=',$kodcaw)->where('tarikh','=',$current->toDateString())->orderby('tarikh','desc')->first(); @@ -92,7 +93,7 @@ class VaultController extends Controller public function updateVaultDeletePanjar($kodcaw, Request $request) { $current = Carbon::now(); - $current = new Carbon(); + $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql'])->where('kodcaw','=',$kodcaw)->where('tarikh','=',$current->toDateString())->orderby('tarikh','desc')->first(); @@ -122,7 +123,7 @@ class VaultController extends Controller public function updateVaultPendahuluanSerahan($kodcaw, Request $request) { $current = Carbon::now(); - $current = new Carbon(); + $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql'])->where('kodcaw','=',$kodcaw)->where('tarikh','=',$current->toDateString())->orderby('tarikh','desc')->first(); @@ -167,7 +168,7 @@ class VaultController extends Controller public function updateVaultDeletePendahuluanSerahan($kodcaw, Request $request) { $current = Carbon::now(); - $current = new Carbon(); + $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql'])->where('kodcaw','=',$kodcaw)->where('tarikh','=',$current->toDateString())->orderby('tarikh','desc')->first(); @@ -203,12 +204,12 @@ class VaultController extends Controller $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); - $vault = Vault::on($cawangan['mysql'])->orderby('tarikh','desc')->first(); + $vault = Vault::on($cawangan['mysql'])->orderby('tarikh','desc')->first(); if($vault) { - $vaultcreate = Vault::on($cawangan['mysql'])->create([ - + $vaultcreate = Vault::on($cawangan['mysql'])->create([ + 'kodcaw'=>$request->kodcaw, 'tarikh'=> $current->toDateString(), 'bakiawal' => $vault['bakiakhir'], @@ -230,12 +231,12 @@ class VaultController extends Controller 'rm50' => $vault['rm50'], 'rm100' => $vault['rm100'], 'rm1000' => $vault['rm1000'], - 'totpanjar' => 0 - + 'totpanjar' => 0 + ]); }else{ - $vaultcreate = Vault::on($cawangan['mysql'])->create([ - + $vaultcreate = Vault::on($cawangan['mysql'])->create([ + 'kodcaw'=>$request->kodcaw, 'tarikh'=> $current->toDateString(), 'bakiawal' => 0, @@ -257,11 +258,11 @@ class VaultController extends Controller 'rm50' => 0, 'rm100' => 0, 'rm1000' => 0, - 'totpanjar' => 0 - + 'totpanjar' => 0 + ]); } - + return response()->json($vaultcreate,201); } @@ -274,7 +275,7 @@ class VaultController extends Controller $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); - $gldetail=GlDetail::on($cawangan['mysql'])->create([ + $gldetail=GlDetail::on($cawangan['mysql'])->create([ 'kodcaw' => $request->kodcaw, 'tarikh' => $current->toDateString(), 'dtacct' => '1000/020', @@ -296,7 +297,7 @@ class VaultController extends Controller if($request->jenisgldetail == 'pendahuluan') { - $gldetail=GlDetail::on($cawangan['mysql'])->create([ + $gldetail=GlDetail::on($cawangan['mysql'])->create([ 'kodcaw' => $request->kodcaw, 'tarikh' => $current->toDateString(), 'dtacct' => $request->dtacct, @@ -307,7 +308,7 @@ class VaultController extends Controller ]); }else if($request->jenisgldetail == 'serahan') { - $gldetail=GlDetail::on($cawangan['mysql'])->create([ + $gldetail=GlDetail::on($cawangan['mysql'])->create([ 'kodcaw' => $request->kodcaw, 'tarikh' => $current->toDateString(), 'dtacct' => $request->dtacct, @@ -317,7 +318,7 @@ class VaultController extends Controller 'teller' => $request->teller ]); } - + return response()->json($gldetail,201); @@ -326,21 +327,32 @@ class VaultController extends Controller public function listgldetail($kodcaw,Request $request) { $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); + $current = Carbon::now(); + $current = new Carbon(); $gldetail=GlDetail::on($cawangan['mysql']) ->where('kodcaw','=',$kodcaw) ->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); } public function TunaiDiTangan($kodcaw,Request $request) { $current = Carbon::now(); - $current = new Carbon(); - + $current = new Carbon(); + $totalbakiakhirtunai = 0; - + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql']) ->where('kodcaw','=',$kodcaw) @@ -366,7 +378,7 @@ class VaultController extends Controller { $totalbakiakhirtunai = $vault['bakiakhir']; } - + return response()->json($totalbakiakhirtunai); } @@ -375,10 +387,10 @@ class VaultController extends Controller $current = Carbon::now(); - $current = new Carbon(); - + $current = new Carbon(); + $totalbakiakhirtunai = 0; - + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql']) ->where('kodcaw','=',$kodcaw) @@ -410,7 +422,7 @@ class VaultController extends Controller $totalkeluar = $vault['keluar'] + $vault['serahan'] + $vault['totpanjar']; $arraytunaiditangan = ['totalmasuk' => $totalmasuk, 'totalkeluar' => $totalkeluar]; - + return response()->json($arraytunaiditangan,200); } @@ -418,14 +430,14 @@ class VaultController extends Controller public function laporanPetiBesi($kodcaw,$tarikh) { $current = Carbon::now(); - $current = new Carbon(); - + $current = new Carbon(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql']) ->where('kodcaw','=',$kodcaw) ->where('tarikh','=', $tarikh) ->orderby('tarikh','desc')->first(); - + return response()->json($vault); } @@ -492,7 +504,7 @@ class VaultController extends Controller $totalserahan = $serahanpkbTawarruq + $serahanpkb + $serahanJMC; } - + //Selepas Tawarruq @@ -501,7 +513,7 @@ class VaultController extends Controller ->where('ktacct','=',$pendahuluanpkb) ->where([['tarikh','<=', $request->tarikh],['tarikh','>','2021-03-24']]) ->sum('pendahuluan'); - + //Sebelum Tawarruq $pendahuluanPKB = GlDetail::on($cawangan['mysql']) @@ -528,7 +540,7 @@ class VaultController extends Controller if($kodcaw == '011229') $totalserahan -= 0.10; - + if($kodcaw == '011013') $totalserahan += 641000; @@ -588,17 +600,17 @@ class VaultController extends Controller $totaljmc = $serahanJMC + $serahanjmclama; $totalpkb = $serahanpkb + $serahanpkblama; - + $totalserahan = $serahanpkbTawarruq + $totaljmc + $totalpkb; }else{ $totaljmc = $serahanJMC; $totalpkb = $serahanpkb; - + $totalserahan = $serahanpkbTawarruq + $totaljmc + $totalpkb; } - - + + }else{ if($kodcaw == '020301') @@ -627,7 +639,7 @@ class VaultController extends Controller ->where('ktacct','=',$pendahuluanpkb) ->where([['tarikh','>=', $mula],['tarikh','<=', $hingga],['tarikh','>','2021-03-24']]) ->sum('pendahuluan'); - + //Sebelum Tawarruq $pendahuluanPKB = GlDetail::on($cawangan['mysql']) @@ -654,14 +666,14 @@ class VaultController extends Controller ->where('glcode','=',$serahankoperasi) ->sum('amaun'); }else{ - + $total = $pendahuluanPKBtawarruq + $pendahuluanPKB + $pendahuluanJMC; $pindahkekpkb = 0; } - + $arraypend = ['pendahuluan' => $total,'serahan' => $totalserahan,'pindahkekpkb' => $pindahkekpkb]; return response()->json($arraypend); @@ -670,15 +682,15 @@ class VaultController extends Controller public function laporanPetiBesiRange($kodcaw,Request $request) { $current = Carbon::now(); - $current = new Carbon(); - + $current = new Carbon(); + $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $vault=Vault::on($cawangan['mysql']) ->where('kodcaw','=',$kodcaw) ->where('tarikh','>=', $request->mula) ->where('tarikh','<=', $request->hingga) ->orderby('tarikh','desc')->get(); - + return response()->json($vault); } diff --git a/app/Http/Controllers/WakilController.php b/app/Http/Controllers/WakilController.php index 64c226d..878ab06 100644 --- a/app/Http/Controllers/WakilController.php +++ b/app/Http/Controllers/WakilController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Audit; use App\WakilSurat; use App\Cawangan; @@ -44,6 +45,7 @@ class WakilController extends Controller public function createSuratWakil($kodcaw, Request $request) { + $harini = Carbon::now(); $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); } @@ -77,7 +89,7 @@ class WakilController extends Controller { $current = Carbon::now(); $current = new Carbon(); - + $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $kodcaw)->first(); diff --git a/app/Services/CashFlow/TellerServices.php b/app/Services/CashFlow/TellerServices.php new file mode 100644 index 0000000..651025e --- /dev/null +++ b/app/Services/CashFlow/TellerServices.php @@ -0,0 +1,434 @@ +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'; + } + } + +} diff --git a/app/Services/MasterServices.php b/app/Services/MasterServices.php index 8a01139..adb2adf 100644 --- a/app/Services/MasterServices.php +++ b/app/Services/MasterServices.php @@ -7,7 +7,7 @@ use App\KadarUpah; use Illuminate\Http\Request as HttpRequest; use App\Support\OnePercent as OnePercentEngine; use App\Support\Tawarruq as TawarruqEngine; - +use Illuminate\Support\Facades\Log; class MasterServices { protected $cawangan; @@ -223,6 +223,12 @@ class MasterServices 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){ $response = $this->engine->kiraupahUjrahOnePercent($kodcaw,$norujukan); diff --git a/app/Services/Miscellaneous/PanjarServices.php b/app/Services/Miscellaneous/PanjarServices.php index 255202f..df34db2 100644 --- a/app/Services/Miscellaneous/PanjarServices.php +++ b/app/Services/Miscellaneous/PanjarServices.php @@ -9,6 +9,7 @@ use App\DenoPanjar; use App\Panjar; use App\Vault; use Carbon\Carbon; +use DateTime; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -40,11 +41,12 @@ class PanjarServices private function calculation_denominasi($array_deno = [],$denominasi = [],$jenis_panjar){ - if(isset($array_deno) <= 0 || isset($denominasi) <= 0){ + if(empty($array_deno) && empty($denominasi)){ + return empty($array_deno); return 'no data'; } - if($jenis_panjar != 'masuk' || $jenis_panjar != 'keluar') return 'no data'; + if($jenis_panjar != 'masuk' && $jenis_panjar != 'keluar') return 'no data'; $records = []; foreach($this->namelist_deno as $deno => $value){ @@ -80,6 +82,37 @@ class PanjarServices ]; } + private function checkModal($jenismodal){ + switch ($jenismodal) { + case "selenggara": + $kategori = "Baiki dan Selenggara"; + $tag = 2; + break; + case "keraian": + $kategori = "Keraian & Promosi"; + $tag = 3; + break; + case "belanjaam": + $kategori = "Belanja AM"; + $tag = 1; + break; + case "perubatan": + $kategori = "Belanja AM - Perubatan"; + $tag = 1; + break; + case "dapur": + $kategori = "Belanja AM - Barangan Dapur"; + $tag = 1; + break; + case "pos": + $kategori = "Belanja AM - Postage"; + $tag = 1; + break; + } + + return ['kategori' => $kategori, 'tag' => $tag]; + } + public function delete(Request $request){ $current = Carbon::now(); $current = new Carbon(); @@ -89,14 +122,13 @@ class PanjarServices $panjar = Panjar::on($cawangan['mysql'])->latest('tarikh')->where('nobaucer', $request->nobaucer)->first(); $vault = Vault::on($cawangan['mysql'])->latest('tarikh')->first(); $deno_panjar = DenoPanjar::on('mysql7')->where('kodcaw', $this->cawangan)->where('recno', $request->recno)->latest('tarikh','masa')->first(); - try{ if (!$panjar) throw new \Exception('Custom Exception: Panjar Does Not Exist!'); if (!$denominasi) throw new \Exception('Custom Exception: Denominasi Does Not Exist!'); if (!$vault) throw new \Exception('Custom Exception: Vault Does Not Exist!'); if (!$deno_panjar) throw new \Exception('Custom Exception: Denominasi Panjar Does Not Exist!'); - DB::transaction(function () use ($cawangan,$deno_panjar,$panjar,$denominasi,$current,$vault,$request) { + return DB::transaction(function () use ($cawangan,$deno_panjar,$panjar,$denominasi,$current,$vault) { $return_data = $this->calculation_denominasi($deno_panjar,$denominasi,'masuk'); if($return_data == 'no data') throw new \Exception('Custom Exception: Denominasi Panjar Not Return Data'); @@ -149,17 +181,14 @@ class PanjarServices 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'); - 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, 'bakiakhir'=>$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->users = $request->tuntutoleh; + $audit->users = $panjar['tuntutoleh']; $audit->actions = "Keluarkan Perbelanjaan"; $audit->new_data = $panjar; $audit->kodcaw = $this->cawangan; @@ -167,10 +196,27 @@ class PanjarServices $audit->updated_at = $current; $audit->save(); + DenoPanjar::on('mysql7')->where('kodcaw', $this->cawangan)->where('recno', $panjar['recno'])->latest('tarikh','masa')->delete(); + Panjar::on($cawangan['mysql'])->where('recno',$panjar['recno'])->delete(); + + $totalperubatan = floatval($this->getPerubatanAmount($panjar['tuntutoleh'])); + + return $array_response = [ + 'result' => 'success', + 'data' => 1, + 'totalperubatan' => $totalperubatan, + 'tuntutoleh' => $panjar['tuntutoleh'], + 'jenis' => ($panjar['kategori'] == 'Belanja AM - Perubatan') ? 'perubatan' : 'none' + ]; + }); }catch(\Exception $e){ - dd($e->getMessage()); - Log::error('Exception: ' , $e->getMessage()); + $array_response = [ + 'result' => 'error', + 'data' => $e->getMessage() + ]; + Log::error('Exception: ' . $e->getMessage()); + return $array_response; } } @@ -181,25 +227,27 @@ class PanjarServices $cawangan = Cawangan::on('mysql7')->where('kodcaw', $this->cawangan)->first(); $denominasi = Denominasi::on($cawangan['mysql'])->latest('tarikh')->first(); $vault = Vault::on($cawangan['mysql'])->latest('tarikh')->first(); - try{ if (!$denominasi) throw new \Exception('Custom Exception: Denominasi Does Not Exist!'); if (!$vault) throw new \Exception('Custom Exception: Vault Does Not Exist!'); - DB::transaction(function () use ($cawangan,$denominasi,$current,$vault,$request) { + return $response = DB::transaction(function () use ($cawangan,$denominasi,$current,$vault,$request) { + $myDateTime = DateTime::createFromFormat('Y-m-d', $request->tarikhbil); + $tarikhbil = $myDateTime->format('dmY'); + $tagmodal = $this->checkModal($request->jenismodal); $panjar = Panjar::on($cawangan['mysql']) ->create([ 'tarikh'=> $current->toDateString(), 'deskripsi'=> $request->deskripsi, 'bayaran' => $request->bayaran, - 'tag' => $request->tag, - 'kategori' => $request->kategori, - 'id' => $request->id, - 'bakiperubatan' => $request->bakiperubatan, - 'nobaucer' => $request->nobaucer, - 'nobil' => $request->nobil, - 'tuntutoleh' => $request->tuntutoleh + 'tag' => $tagmodal['tag'], + 'kategori' => $tagmodal['kategori'], + 'id' => $request->kodlaluan, + 'bakiperubatan' => 0, + 'nobaucer' => $request->baucer, + 'nobil' => $tarikhbil, + 'tuntutoleh' => $request->tuntutan ]); $denopanjar = DenoPanjar::on('mysql7')->create([ @@ -207,31 +255,31 @@ class PanjarServices 'masa' => $current->toTimeString(), 'kodcaw' => $this->cawangan, 'kodlaluan' => $request->kodlaluan, - 'serahan' => $request->serahan, - 'bd1' => $request->bd1, - 'bd5' => $request->bd5, - 'bd10' => $request->bd10, - 'bd20' => $request->bd20, - 'bd50' => $request->bd50, - 'bd100' => $request->bd100, - 'txtring1' => $request->txtring1, - 'txtring5' => $request->txtring5, - 'txtring10' => $request->txtring10, - 'txtring20' => $request->txtring20, - 'txtring50' => $request->txtring50, - 'txtring100' => $request->txtring100, - 'txtring1000' => $request->txtring1000, - 'txtsen1' => $request->txtsen1, - 'txtsen5' => $request->txtsen5, - 'txtsen10' => $request->txtsen10, - 'txtsen20' => $request->txtsen20, - 'txtsen50' => $request->txtsen50, - 'jenis' =>$request->jenis, - 'recno' =>$panjar['recno'], + 'serahan' => $request->bayaran, + 'bd1' => 0, + 'bd5' => 0, + 'bd10' => 0, + 'bd20' => 0, + 'bd50' => 0, + 'bd100' => 0, + 'txtring1' => $request->ambilanring1, + 'txtring5' => $request->ambilanring5, + 'txtring10' => $request->ambilanring10, + 'txtring20' => $request->ambilanring20, + 'txtring50' => $request->ambilanring50, + 'txtring100' => $request->ambilanring100, + 'txtring1000' => 0, + 'txtsen1' => $request->ambilansen1, + 'txtsen5' => $request->ambilansen5, + 'txtsen10' => $request->ambilansen10, + 'txtsen20' => $request->ambilansen20, + 'txtsen50' => $request->ambilansen50, + 'jenis' =>$request->jenismodal, + 'recno' =>$panjar['id'], 'update' => '0' ]); - $return_data = $this->calculation_denominasi($denopanjar,$denominasi,'masuk'); + $return_data = $this->calculation_denominasi($denopanjar,$denominasi,'keluar'); if($return_data == 'no data') throw new \Exception('Custom Exception: Denominasi Panjar Not Return Data'); Denominasi::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()]])->update(array( @@ -282,7 +330,7 @@ class PanjarServices 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'); - 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, 'bakiakhir'=>$bakiakhir, 'bakieod'=>$bakiakhir @@ -297,21 +345,34 @@ class PanjarServices $audit->updated_at = $current; $audit->save(); + $totalperubatan = $this->getPerubatanAmount($request->tuntutan); + $array_response = [ 'result' => 'success', - 'data' => 1 + 'data' => 1, + 'totalperubatan' => $totalperubatan, ]; - return response()->json($array_response); + return $array_response; }); }catch(\Exception $e){ - dd($e->getMessage()); $array_response = [ 'result' => 'error', 'data' => $e->getMessage() ]; - return response()->json($array_response); - Log::error('Exception: ' , $e->getMessage()); + Log::error('Exception: ' . $e->getMessage()); + return $array_response; } + + return response()->json($response); + } + + public function getPerubatanAmount($tuntutanoleh){ + $current = Carbon::now(); + + $cawangan = Cawangan::on('mysql7')->where('kodcaw', $this->cawangan)->first(); + $panjar = Panjar::on($cawangan['mysql'])->whereYear('tarikh',$current->year)->where('kategori','Belanja AM - Perubatan')->where('tuntutoleh',$tuntutanoleh)->sum('bayaran'); + + return $panjar; } } diff --git a/app/Services/Reports/Account/GeneralLedger.php b/app/Services/Reports/Account/GeneralLedger.php index 08371bc..f7ebc94 100644 --- a/app/Services/Reports/Account/GeneralLedger.php +++ b/app/Services/Reports/Account/GeneralLedger.php @@ -14,6 +14,7 @@ use App\Tebus; use App\Transaction; use App\TransaksiKeuntungan; use App\WTD; +use App\AkruNet; use Carbon\Carbon; class GeneralLedger @@ -517,6 +518,43 @@ class GeneralLedger $mulaCarbon = new Carbon($this->mula); $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 */ $collection_trans = Transaction::on('mysql7') ->leftJoin('transaksi_keuntungan as trans', function ($join) { @@ -718,6 +756,24 @@ class GeneralLedger })->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; + } -} \ No newline at end of file + +} diff --git a/app/Services/Reports/OnePercentService.php b/app/Services/Reports/OnePercentService.php index 30dddda..caf62ce 100644 --- a/app/Services/Reports/OnePercentService.php +++ b/app/Services/Reports/OnePercentService.php @@ -302,7 +302,9 @@ class OnePercentService $ujrah_current = $result_audit_current->sum('ujrah'); } /* 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'); $ujrah_previous = $result_audit_previous->sum('ujrah'); diff --git a/app/Services/Reports/RingkasanHarianService.php b/app/Services/Reports/RingkasanHarianService.php index 9ae62db..b2331bf 100644 --- a/app/Services/Reports/RingkasanHarianService.php +++ b/app/Services/Reports/RingkasanHarianService.php @@ -821,7 +821,8 @@ class RingkasanHarianService '011233' => '2021-06-28', ]; - return $tarikhTawarruq[Str::upper($this->kodCawangan)]; + $defaultDate = '2021-01-01'; + return $tarikhTawarruq[Str::upper($this->kodCawangan)] ?? $defaultDate; } private function getOutstandingImbangDuga() diff --git a/app/Support/OnePercent.php b/app/Support/OnePercent.php index 1638a45..e924fc1 100644 --- a/app/Support/OnePercent.php +++ b/app/Support/OnePercent.php @@ -181,7 +181,14 @@ class OnePercent extends MasterServices public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ $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; } @@ -207,6 +214,13 @@ class OnePercent extends MasterServices 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 */ public function test(){ diff --git a/app/Support/Tawarruq.php b/app/Support/Tawarruq.php index 2ac6755..be5506f 100644 --- a/app/Support/Tawarruq.php +++ b/app/Support/Tawarruq.php @@ -8,6 +8,7 @@ use App\Support\v1\GadaiV1 as Version1Gadai; use App\Services\MasterServices; use App\Support\v1\Penebusan; use Illuminate\Http\Request as HttpRequest; +use Illuminate\Support\Facades\Log; class Tawarruq extends MasterServices { @@ -165,7 +166,7 @@ class Tawarruq extends MasterServices public function tebusUpdateAutoTawarruq($kodcaw,$norujukan,HttpRequest $request){ $tebus = new Penebusan($this->kodcaw,$this->cawangan_info); - $response = $tebus->tebusUpdateAutoTawarruq($this->kodcaw,$norujukan,$request); + $response = $tebus->transaksiPembiayaanSemula($this->kodcaw,$norujukan,$request); return $response; } diff --git a/app/Support/v1/Penebusan.php b/app/Support/v1/Penebusan.php index 7c35110..f85126f 100644 --- a/app/Support/v1/Penebusan.php +++ b/app/Support/v1/Penebusan.php @@ -9,7 +9,10 @@ use App\KadarUpah; use App\Support\v2\Calculation; use Carbon\Carbon; use App\Gadai; +use App\HargaEmas; use App\InOutMar; +use App\KomuditiPurchase; +use App\KomuditiTransaksi; use App\Marhun; use App\Moratorium; use App\Support\OnePercent; @@ -188,7 +191,8 @@ class Penebusan $bilang_bln = $tempoh - $gadai_data['tempohbayar']; $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; $upah_semasa_round = number_format($upahsemasa_raw,2); @@ -458,7 +462,7 @@ class Penebusan //check duplicate $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','T')->first(); if(!empty($data)){ - return 'duplicate'; + return response()->json('duplicate'); } $gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->first(); @@ -601,7 +605,7 @@ class Penebusan //check duplicate $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); if(!empty($data)){ - return 'duplicate'; + return response()->json('duplicate'); } $update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan','=',$norujukan)->update(array( @@ -771,4 +775,326 @@ class Penebusan 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()); + } + } } \ No newline at end of file diff --git a/app/Support/v2/GadaiV2.php b/app/Support/v2/GadaiV2.php index 49bea5c..e212c66 100644 --- a/app/Support/v2/GadaiV2.php +++ b/app/Support/v2/GadaiV2.php @@ -177,8 +177,11 @@ class GadaiV2 $bilang_bln = $tempoh - $gadai_data['tempohbayar']; $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); - $upahsemasa_raw = $bilang_bln * $upah['keuntungan']; - $upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw); + //$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); 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']); - $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); return $upahrebet_raw; @@ -240,7 +246,7 @@ class GadaiV2 $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']); $onepercentasal = $gadai['pinjaman'] * (1/100); diff --git a/app/Support/v2/Penebusan.php b/app/Support/v2/Penebusan.php index af95f76..6294831 100644 --- a/app/Support/v2/Penebusan.php +++ b/app/Support/v2/Penebusan.php @@ -9,8 +9,13 @@ use App\KadarUpah; use App\Support\v2\Calculation; use Carbon\Carbon; use App\Gadai; +use App\HargaEmas; use App\InOutMar; +use App\KomuditiPurchase; +use App\KomuditiTransaksi; use App\Marhun; +use App\FailoverTransaction; +use App\FailoverTransactionFailed; use App\Moratorium; use App\Support\OnePercent; use App\Tebus; @@ -200,8 +205,9 @@ class Penebusan $bilang_bln = $tempoh - $gadai_data['tempohbayar']; $upah = $onepercentservices->kiraanKeuntunganSebenar($gadai_data['pinjaman'],$gadai_data['nilaimarhun'],$gadai_data['kadarupah'],$gadai_data['percentpinj']); - $upahsemasa_raw = $bilang_bln * $upah['keuntungan']; - $upahsemasa_raw = $onepercentservices->getRoundedMethod($upahsemasa_raw); + $onepercent = $onepercentservices->getRoundedMethod($bilang_bln * $upah['onepercent']); + $ujrah = $onepercentservices->getRoundedMethod($bilang_bln * $upah['ujrah']); + $upahsemasa_raw = $onepercentservices->getRoundedMethod($onepercent + $ujrah); return $upahsemasa_raw; } @@ -483,7 +489,7 @@ class Penebusan $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->whereIn('trans_type', ['P', 'T', 'S'])->first(); if(!empty($data)){ - return 'duplicate'; + return response()->json('duplicate'); } $ujrah=0;$onepercent=0;$rounded=0; @@ -649,7 +655,7 @@ class Penebusan $data = Transaction::on('mysql7')->where('norujukan','=',$norujukan)->where('trans_type','=','AT')->first(); if(!empty($data)){ - return 'duplicate'; + return response()->json('duplicate'); } $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()); + } + } + + } \ No newline at end of file diff --git a/database/migrations/2024_09_02_153041_add_column_timestamp_to_addtunai_table.php b/database/migrations/2024_09_02_153041_add_column_timestamp_to_addtunai_table.php new file mode 100644 index 0000000..d47036c --- /dev/null +++ b/database/migrations/2024_09_02_153041_add_column_timestamp_to_addtunai_table.php @@ -0,0 +1,73 @@ +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); + } + }); + } + } +} diff --git a/database/migrations/2024_11_11_101144_add_recno_to_requestteller_table.php b/database/migrations/2024_11_11_101144_add_recno_to_requestteller_table.php new file mode 100644 index 0000000..9861ce9 --- /dev/null +++ b/database/migrations/2024_11_11_101144_add_recno_to_requestteller_table.php @@ -0,0 +1,28 @@ +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); + }); + }); + } +} diff --git a/database/migrations/2024_11_25_154933_add_nota-pekerjaan.php b/database/migrations/2024_11_25_154933_add_nota-pekerjaan.php new file mode 100644 index 0000000..20f0cc3 --- /dev/null +++ b/database/migrations/2024_11_25_154933_add_nota-pekerjaan.php @@ -0,0 +1,50 @@ +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'); + }); + } +} diff --git a/routes/web.php b/routes/web.php index 74b12ea..a6ebdb1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -61,6 +61,18 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('customer/blacklist',['uses'=>'CustomerController@blacklistCustomer']); $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 $router->get('gadai',['uses'=>'GadaiController@showAllGadais']); $router->get('gadai/{noic}',['uses'=>'GadaiController@showOneGadai']); @@ -119,6 +131,7 @@ $router->group(['prefix'=>'api'], function () use ($router){ ///Log session $router->post('logsession/{kodcaw}',['uses'=>'LogController@logSession']); $router->get('checknokp/{kodcaw}/{nokp}/{tarikh}',['uses'=>'LogController@checkNokpSession']); + $router->post('logoutsession/{kodcaw}',['uses'=>'LogController@logoutSession']); //Tebus API $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->put('updateautotawarruq/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateAutoTawarruq']); $router->get('listpenebusanhistory/{kodcaw}',['uses'=>'TebusController@listhistorypenebusan']); - + $router->put('updatetambahpinjaman/{kodcaw}/{norujukan}',['uses'=>'TebusController@tebusUpdateTambahPinjaman']); //API FARIS $router->put('tebus/serah_marhun_teller/{kodcaw}/{norujukan}',['uses'=>'GadaiController@barcodescanTebus']); // $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->get('requestTeller/get/{kodcaw}',['uses' => 'TunaiController@getRequestTeller']); $router->get('requestTeller/getlaporan/{kodcaw}',['uses' => 'TunaiController@getRequestTellerLaporanSerahan']); + $router->get('requestTeller/getrekod/{kodcaw}',['uses' => 'TunaiController@getRequestTellerByRecno']); $router->get('requestTeller/getlaporanberkala/{kodcaw}',['uses' => 'TunaiController@getRequestTellerLaporanSerahanBerkala']); $router->get('requestTeller/get/{kodcaw}/date',['uses' => 'TunaiController@getRequestTellerByDate']); $router->put('requestTeller/update/{kodcaw}',['uses' => 'TunaiController@updateRequestTeller']); + $router->put('requestTeller/updatedeno/{kodcaw}',['uses' => 'TunaiController@updateRequestTellerDeno']); $router->put('requestTeller/batal/{kodcaw}',['uses' => 'TunaiController@batalRequestTeller']); $router->get('requestTeller/checkproses',['uses'=>'TunaiController@CheckProsesReqTeller']); @@ -649,6 +664,14 @@ $router->group(['prefix'=>'api'], function () use ($router){ $router->get('/cawangan/getcawnotisall/{kodcaw}',['uses'=>'CawanganCallCenterController@getcawnotisall']); $router->get('/cawangan/bycawnotisperingatan/{kodcaw}/{notisid}',['uses'=>'CawanganCallCenterController@bycawnotisperingatan']); + $router->post('panjar/updatetunai/{kodcaw}',['uses'=>'DenominasiController@cashdeposit']); + $router->post('panjar/serahantunai/{kodcaw}',['uses'=>'DenominasiController@cashwithdraw']); + $router->post('panjar/createpanjar/{kodcaw}',['uses'=>'DenominasiController@createpanjar']); + $router->post('panjar/deletepanjar/{kodcaw}',['uses'=>'DenominasiController@deletepanjar']); + $router->get('panjar/getperubatan/{kodcaw}',['uses'=>'DenominasiController@getPerubatanAmount']); + + /* Endpoint for Account Statements */ + $router->get('record/accountstatement/{kodcaw}',['uses'=>'TunaiController@getAccStatement']); }); diff --git a/tests/TestCase.php b/tests/TestCase.php index 136846b..1782d8e 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -1,7 +1,8 @@ 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."); +} } diff --git a/tests/Traits/DatabaseTransactions.php b/tests/Traits/DatabaseTransactions.php new file mode 100644 index 0000000..f1bc75e --- /dev/null +++ b/tests/Traits/DatabaseTransactions.php @@ -0,0 +1,50 @@ +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; + } +} \ No newline at end of file diff --git a/tests/TransactionTest.php b/tests/TransactionTest.php new file mode 100644 index 0000000..93b76c6 --- /dev/null +++ b/tests/TransactionTest.php @@ -0,0 +1,228 @@ +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',[ + + ]); + + } +}