From 18bec1c5078d3af229a726969ade0784e483f9e3 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Thu, 28 Dec 2023 16:52:04 +0800 Subject: [PATCH] Add laporan keseluruhan ringkasan harian --- .../Reports/KawalanStokController.php | 17 + .../Reports/RingkasanHarianController.php | 23 + app/Services/Reports/KawalanStokService.php | 439 ++++++++ app/Services/Reports/OnePercentService.php | 10 +- .../Reports/RingkasanHarianService.php | 963 ++++++++++++++++++ routes/report.php | 12 + tests/ExampleTest.php | 4 + tests/RingkasanHarianServicesTest.php | 208 ++++ 8 files changed, 1671 insertions(+), 5 deletions(-) create mode 100644 app/Http/Controllers/Reports/KawalanStokController.php create mode 100644 app/Http/Controllers/Reports/RingkasanHarianController.php create mode 100644 app/Services/Reports/KawalanStokService.php create mode 100644 app/Services/Reports/RingkasanHarianService.php create mode 100644 tests/RingkasanHarianServicesTest.php diff --git a/app/Http/Controllers/Reports/KawalanStokController.php b/app/Http/Controllers/Reports/KawalanStokController.php new file mode 100644 index 0000000..2f435e0 --- /dev/null +++ b/app/Http/Controllers/Reports/KawalanStokController.php @@ -0,0 +1,17 @@ +getLaporanCawangan(); + } +} diff --git a/app/Http/Controllers/Reports/RingkasanHarianController.php b/app/Http/Controllers/Reports/RingkasanHarianController.php new file mode 100644 index 0000000..c69a20b --- /dev/null +++ b/app/Http/Controllers/Reports/RingkasanHarianController.php @@ -0,0 +1,23 @@ +getLaporanCawangan(); + } + + public function getSummaryLaporanRingkasanHarian() + { + return json_encode(Helper::getActiveCawangan()); + } +} diff --git a/app/Services/Reports/KawalanStokService.php b/app/Services/Reports/KawalanStokService.php new file mode 100644 index 0000000..1a5ff92 --- /dev/null +++ b/app/Services/Reports/KawalanStokService.php @@ -0,0 +1,439 @@ +kodCawangan = $kodCawangan; + $this->startDate = $request->startDate; + $this->endDate = $request->endDate; + } + + public function getLaporanCawangan() + { + + $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $this->kodCawangan)->first(); + + $array_kawalanstok = []; + + /* Gadai */ + $gadai1 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(*) AS bil, SUM(pinjaman) AS pinj') + ->where('t_gadai', '<', $this->startDate) + ->where('tagpalsu', 0) + ->whereBetween('nilaimarhun', [1, 400.99]) + ->get(); + + $gadai2 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(*) AS bil, SUM(pinjaman) AS pinj') + ->where('t_gadai', '<', $this->startDate) + ->where('tagpalsu', 0) + ->whereBetween('nilaimarhun', [401, 2000.99]) + ->get(); + + $gadai3 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(*) AS bil, SUM(pinjaman) AS pinj') + ->where('t_gadai', '<', $this->startDate) + ->where('tagpalsu', 0) + ->whereBetween('nilaimarhun', [2001, 1000000]) + ->get(); + + $gadaiini1 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('t_gadai', '=>', $this->startDate)->where('t_gadai', '=<', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 1) + ->where('nilaimarhun', '<=', 400.99) + ->get(); + + $gadaiini2 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 401) + ->where('nilaimarhun', '<=', 2000.99) + ->get(); + + $gadaiini3 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 2001) + ->where('nilaimarhun', '<=', 1000000) + ->get(); + + /*tebus*/ + + $tebus1 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'T') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 1) + ->where('nilaimarhun', '<=', 400.99) + ->get(); + + $tebus2 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'T') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 401) + ->where('nilaimarhun', '<=', 2000.99) + ->get(); + + $tebus3 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'T') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 2001) + ->where('nilaimarhun', '<=', 1000000) + ->get(); + + $tebusini1 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'T') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 1) + ->where('nilaimarhun', '<=', 400.99) + ->get(); + + $tebusini2 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'T') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 401) + ->where('nilaimarhun', '<=', 2000.99) + ->get(); + + $tebusini3 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'T') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 2001) + ->where('nilaimarhun', '<=', 1000000) + ->get(); + + /*lelong*/ + + $lelong1 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'L') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 1) + ->where('nilaimarhun', '<=', 400.99) + ->get(); + + $lelong2 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'L') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 401) + ->where('nilaimarhun', '<=', 2000.99) + ->get(); + + $lelong3 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'L') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 2001) + ->where('nilaimarhun', '<=', 1000000) + ->get(); + + $lelongini1 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'L') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 1) + ->where('nilaimarhun', '<=', 400.99) + ->get(); + + $lelongini2 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'L') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 401) + ->where('nilaimarhun', '<=', 2000.99) + ->get(); + + $lelongini3 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'L') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 2001) + ->where('nilaimarhun', '<=', 1000000) + ->get(); + + /*ansuran*/ + + $ansuran1_data = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.created_at', '<', $this->startDate) + ->where('trans.trans_type', '=', 'A') + ->groupBy('trans.id') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('trans.norujukan'); + + $ansuran1 = []; + + $ansuran1 = Gadai::on($cawangan['mysql']) + ->whereIn('norujukan', $ansuran1_data) + ->where([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', ''], ['hargajualan', '<>', 'null']]) + ->orWhere([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']]) + ->pluck('norujukan'); + + $transaksi1 = TransaksiKeuntungan::on('mysql7') + ->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total') + ->whereIn('norujukan', $ansuran1) + ->where('kodcaw', $this->kodCawangan) + ->where('tarikh_bayaran', '<=', $this->startDate) + ->get(); + + $ansuranharini1_data = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('trans.created_at', '>=', $this->startDate) + ->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.trans_type', '=', 'A') + ->groupBy('trans.id') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('trans.norujukan'); + + $ansuran1harini = Gadai::on($cawangan['mysql']) + ->whereIn('norujukan', $ansuranharini1_data) + ->where([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', ''], ['hargajualan', '<>', 'null']]) + ->pluck('norujukan'); + + $transaksi1harini = TransaksiKeuntungan::on('mysql7') + ->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total') + ->whereIn('norujukan', $ansuran1harini) + ->whereDate('tarikh_bayaran', '>=', $this->startDate) + ->whereDate('tarikh_bayaran', '<=', $this->endDate) + ->where('kodcaw', $this->kodCawangan) + ->get(); + + $ansuran2_data = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.created_at', '<', $this->startDate) + ->where('trans.trans_type', '=', 'A') + ->groupBy('trans.id') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('trans.norujukan'); + + $ansuran2 = Gadai::on($cawangan['mysql']) + ->whereIn('norujukan', $ansuran2_data) + ->where([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', ''], ['hargajualan', '<>', 'null']]) + ->orWhere([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']]) + ->pluck('norujukan'); + + $transaksi2 = TransaksiKeuntungan::on('mysql7') + ->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total') + ->whereIn('norujukan', $ansuran2) + ->where('tarikh_bayaran', '<=', $this->startDate) + ->where('kodcaw', $this->kodCawangan) + ->get(); + + $ansuranharini2_data = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('trans.created_at', '>=', $this->startDate) + ->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.trans_type', '=', 'A') + ->groupBy('trans.id') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('trans.norujukan'); + + $ansuran2harini = Gadai::on($cawangan['mysql']) + ->whereIn('norujukan', $ansuranharini2_data) + ->where([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', ''], ['hargajualan', '<>', 'null']]) + ->pluck('norujukan'); + + $transaksi2harini = TransaksiKeuntungan::on('mysql7') + ->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total') + ->whereIn('norujukan', $ansuran2harini) + ->whereDate('tarikh_bayaran', '>=', $this->startDate) + ->whereDate('tarikh_bayaran', '<=', $this->endDate) + ->where('kodcaw', $this->kodCawangan) + ->get(); + + $ansuran3_data = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.created_at', '<', $this->startDate) + ->where('trans.trans_type', '=', 'A') + ->groupBy('trans.id') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('trans.norujukan'); + + $ansuran3 = Gadai::on($cawangan['mysql']) + ->whereIn('norujukan', $ansuran3_data) + ->where([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', ''], ['hargajualan', '<>', 'null']]) + ->orWhere([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']]) + ->pluck('norujukan'); + + $transaksi3 = TransaksiKeuntungan::on('mysql7') + ->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total') + ->whereIn('norujukan', $ansuran3) + ->where('tarikh_bayaran', '<=', $this->startDate) + ->where('kodcaw', $this->kodCawangan) + ->get(); + + $ansuranharini3_data = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('trans.created_at', '>=', $this->startDate) + ->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.trans_type', '=', 'A') + ->groupBy('trans.id') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('trans.norujukan'); + + $ansuran3harini = Gadai::on($cawangan['mysql']) + ->whereIn('norujukan', $ansuranharini3_data) + ->where([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', ''], ['hargajualan', '<>', 'null']]) + ->pluck('norujukan'); + + $transaksi3harini = TransaksiKeuntungan::on('mysql7') + ->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total') + ->whereIn('norujukan', $ansuran3harini) + ->whereDate('tarikh_bayaran', '>=', $this->startDate) + ->whereDate('tarikh_bayaran', '<=', $this->endDate) + ->where('kodcaw', $this->kodCawangan) + ->get(); + + ##push in array## + $arrayans1 = ['bil' => $transaksi1[0]->bil, 'pinj' => $transaksi1[0]->total]; + $arrayharinians1 = ['bil' => $transaksi1harini[0]->bil, 'pinj' => $transaksi1harini[0]->total]; + $arrayans2 = ['bil' => $transaksi2[0]->bil, 'pinj' => $transaksi2[0]->total]; + $arrayharinians2 = ['bil' => $transaksi2harini[0]->bil, 'pinj' => $transaksi2harini[0]->total]; + $arrayans3 = ['bil' => $transaksi3[0]->bil, 'pinj' => $transaksi3[0]->total]; + $arrayharinians3 = ['bil' => $transaksi3harini[0]->bil, 'pinj' => $transaksi3harini[0]->total]; + + /*hapus kira*/ + + $hapuskira1 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'H') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 1) + ->where('nilaimarhun', '<=', 400.99) + ->get(); + + $hapuskira2 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'H') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 401) + ->where('nilaimarhun', '<=', 2000.99) + ->get(); + + $hapuskira3 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'H') + ->where(function ($query) { + $query->where('t_update', '<', $this->startDate) + ->orWhereNull('t_update'); + }) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 2001) + ->where('nilaimarhun', '<=', 1000000) + ->get(); + + $hapuskiraini1 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'H') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 1) + ->where('nilaimarhun', '<=', 400.99) + ->get(); + + $hapuskiraini2 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'H') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 401) + ->where('nilaimarhun', '<=', 2000.99) + ->get(); + + $hapuskiraini3 = Gadai::on($cawangan['mysql']) + ->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj') + ->where('sttebus', 'H') + ->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate) + ->where('tagpalsu', 0) + ->where('nilaimarhun', '>=', 2001) + ->where('nilaimarhun', '<=', 1000000) + ->get(); + + array_push($array_kawalanstok, ["gadai1" => $gadai1, "gadai2" => $gadai2, "gadai3" => $gadai3, "gadaiini1" => $gadaiini1, "gadaiini2" => $gadaiini2, "gadaiini3" => $gadaiini3]); + array_push($array_kawalanstok, ["tebus1" => $tebus1, "tebus2" => $tebus2, "tebus3" => $tebus3, "tebusini1" => $tebusini1, "tebusini2" => $tebusini2, "tebusini3" => $tebusini3]); + array_push($array_kawalanstok, ["lelong1" => $lelong1, "lelong2" => $lelong2, "lelong3" => $lelong3, "lelongini1" => $lelongini1, "lelongini2" => $lelongini2, "lelongini3" => $lelongini3]); + array_push($array_kawalanstok, ["hapuskira1" => $hapuskira1, "hapuskira2" => $hapuskira2, "hapuskira3" => $hapuskira3, "hapuskiraini1" => $hapuskiraini1, "hapuskiraini2" => $hapuskiraini2, "hapuskiraini3" => $hapuskiraini3]); + array_push($array_kawalanstok, ["ans1" => $arrayans1, "ans2" => $arrayans2, "ans3" => $arrayans3, "ansini1" => $arrayharinians1, "ansini2" => $arrayharinians2, "ansini3" => $arrayharinians3]); + return response()->json($array_kawalanstok); + + + } + +} diff --git a/app/Services/Reports/OnePercentService.php b/app/Services/Reports/OnePercentService.php index a937433..f0f12ea 100644 --- a/app/Services/Reports/OnePercentService.php +++ b/app/Services/Reports/OnePercentService.php @@ -23,7 +23,7 @@ class OnePercentService public function getTotalRounded($type='B',$start = '2023-12-14',$end = '2023-12-14'){ - if($type == 'B'){ + if($type == 'B'){ $rounded = TransaksiKeuntungan::on('mysql7') ->leftJoin('transaction as trans', function($join) { @@ -37,19 +37,19 @@ class OnePercentService $rounded = TransaksiKeuntungan::on('mysql7') ->whereDate('tarikh_bayaran','>=',$start) ->whereDate('tarikh_bayaran','<=',$end) - ->sum('rounded');; + ->sum('rounded');; } return $rounded; } - public function getTotalKeuntungan($type = 'B',$start = '2023-12-14',$end = '2023-12-14') : Float{ + public function getTotalKeuntungan($type = 'B',$start = '2023-12-14',$end = '2023-12-14') : Float{ if($type == 'B'){ $akrual = Gadai::on($this->cawangan['mysql'])->where([['sttebus',''],['tagbaru',1]])->sum('tunggakanonepercent'); $norujukan = Gadai::on($this->cawangan['mysql'])->where('sttebus','T')->where('tagbaru',1)->pluck('norujukan'); - + $keuntungan = TransaksiKeuntungan::on('mysql7') ->whereIn('norujukan',$norujukan) ->sum('onepercent_rebet'); @@ -99,5 +99,5 @@ class OnePercentService return $totalujrah; } - + } diff --git a/app/Services/Reports/RingkasanHarianService.php b/app/Services/Reports/RingkasanHarianService.php new file mode 100644 index 0000000..e502698 --- /dev/null +++ b/app/Services/Reports/RingkasanHarianService.php @@ -0,0 +1,963 @@ +kodCawangan = $kodCawangan; + $this->connectionCawangan = Cawangan::on('mysql7')->where('kodcaw', $kodCawangan)->first()->mysql; + $this->startDate = $request->startDate; + $this->endDate = $request->endDate; + } + + public function getLaporanCawangan() + { + + $laporan_harian = []; + + $total_gadai = Gadai::on($this->connectionCawangan)->whereDate('t_gadai', '>=', $this->startDate)->whereDate('t_gadai', '<=', $this->endDate)->sum('pinjaman'); + $bayaranonline = $this->getSumBayaranOnline(); + $bilbayaranonline = $this->getTotalBayaranOnline(); + $total_ansuran = $this->getSumAnsuranNotOnline(); + $total_ansuranonline = $this->getSumAnsuranOnline(); + $bilangan_gadai = Gadai::on($this->connectionCawangan)->whereDate('t_gadai', '>=', $this->startDate)->whereDate('t_gadai', '<=', $this->endDate)->where('pinjaman', '>', 0)->count(); + $bilangan_tebus = Tebus::on($this->connectionCawangan)->whereDate('t_tebus', '>=', $this->startDate)->whereDate('t_tebus', '<=', $this->endDate)->count(); + $bilangan_ansuran = $this->getTotalAnsuranNotOnline(); + $bilangan_ansuranonline = $this->getTotalAnsuranOnline(); + $bilangan_customer_baru = $this->getBilanganCustomerBaru(); + $bayar_baki_lelong = $this->getBayarBakiLelong(); + $bayar_rugi_lelong = $this->getBayarRugiLelong(); + $gadai_70 = $this->getGadaiSumPinjamanPercentLessThan(70); + $gadai_75 = $this->getGadaiSumPinjamanPercentRange(70, 75); + $gadai_80 = $this->getGadaiSumPinjamanPercentRange(75, 80); + $total_gadaian = floatval($gadai_70) + floatval($gadai_75) + floatval($gadai_80); + $nilaimarhun_70 = $this->getGadaiSumNilaiMarhunPercentLessThan(70); + $nilaimarhun_75 = $this->getGadaiSumNilaiMarhunPercentRange(70, 75); + $nilaimarhun_80 = $this->getGadaiSumNilaiMarhunPercentRange(75, 80); + $total_nm = floatval($nilaimarhun_70) + floatval($nilaimarhun_75) + floatval($nilaimarhun_80); + $bilangan_70 = $this->getGadaiCountPercentLessThan(70); + $bilangan_75 = $this->getGadaiCountPercentRange(70, 75); + $bilangan_80 = $this->getGadaiCountPercentRange(75, 80); + $total_bilangan = floatval($bilangan_70) + floatval($bilangan_75) + floatval($bilangan_80); + $panjar_harian = Panjar::on($this->connectionCawangan)->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate)->sum('bayaran'); + $panjar_bulanan = $this->getPanjarBulanan(); + $panjar_tahunan = $this->getPanjarTahunan(); + $bilangan_lelong = Lelong::on($this->connectionCawangan)->whereDate('t_jual', '>=', $this->startDate)->whereDate('t_jual', '<=', $this->endDate)->count(); + $data_lelong = $this->getDataLelong(); + $cas_lelong = $data_lelong['cas_lelong']; + $jumlah_lelong = $data_lelong['jumlah_lelong']; + $baki_lelong = $data_lelong['baki_lelong']; + $rugi_lelong = $data_lelong['rugi_lelong']; + $total_keuntungan_kaunter = $this->getTotalKeuntunganKaunter(); + $total_keuntungan_online = $this->getTotalKeuntunganOnline(); + $total_bayaran_online = $this->getTotalSumBayaranOnline(); + $bil_total_bayaran_online = $this->getBilTotalBayaranOnline(); + $petibesi_sistem = Vault::on($this->connectionCawangan)->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate)->sum('bakiakhir'); + $petibesi_deno = Denominasi::on($this->connectionCawangan)->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate)->sum('txtjumlah'); + $total_stok_audit = $this->getTotalStokAudit(); + $stokauditpembiayaan = $total_stok_audit['stokAuditPembiayaan']; + $stokauditnilaimarhun = $total_stok_audit['stokAuditNilaiMarhun']; + $stokauditcount = $total_stok_audit['stokAuditCount']; + $petibesiimbangduga = $this->getPetiBesiImbangDuga(); + $outstandingimbangduga = $this->getOutstandingImbangDuga(); + $rekodpinj = $this->getRekodKoopSumPinjaman(); + $rekodpinjnm = $this->getRekodKoopSumNilaiMarhun(); + $rekodpinjbil = $this->getRekodKoopCount(); + $totalpenebusan = $this->getTotalPenebusan(); + $rekodtawarruq = $this->getPinjamanRekodTawarruq(); + $rekodtawarruqnilaimarhun = $this->getNilaiMarhunRekodTawarruq(); + $rekodtawarruqbil = $this->getBilanganRekodTawarruq(); + $bayaranpendahuluan = $this->getBayaranPendahuluan(); + $upahsimpankaunter = $this->getUpahSimpanKaunter(); + $keuntungansebenarkaunter = $this->getKeuntunganSebenarKaunter(); + $serahanbayaranOnline = $this->getSerahanBayaranOnline(); + $totalSerahan = $this->getTotalSerahan(); + $totalPendahuluan = $this->getTotalPendahuluan(); + + array_push($laporan_harian, [ + 'total_gadai' => $total_gadai, + 'total_tebus' => $totalpenebusan, + 'total_ansuran' => $total_ansuran, + 'total_ansuranonline' => $total_ansuranonline, + 'bilangan_gadai' => $bilangan_gadai, + 'bilangan_tebus' => $bilangan_tebus, + 'bilangan_ansuran' => $bilangan_ansuran, + 'bilangan_ansuranonline' => $bilangan_ansuranonline, + 'bilangan_customer_baru' => $bilangan_customer_baru, + 'bayar_baki_lelong' => $bayar_baki_lelong, + 'bayar_rugi_lelong' => $bayar_rugi_lelong, + 'gadai_70' => $gadai_70, + 'gadai_75' => $gadai_75, + 'gadai_80' => $gadai_80, + 'total_gadaian' => $total_gadaian, + 'nilaimarhun_70' => $nilaimarhun_70, + 'nilaimarhun_75' => $nilaimarhun_75, + 'nilaimarhun_80' => $nilaimarhun_80, + 'total_nm' => $total_nm, + 'bilangan_70' => $bilangan_70, + 'bilangan_75' => $bilangan_75, + 'bilangan_80' => $bilangan_80, + 'total_bilangan' => $total_bilangan, + 'panjar_harian' => $panjar_harian, + 'panjar_bulanan' => $panjar_bulanan, + 'panjar_tahunan' => $panjar_tahunan, + 'bilangan_lelong' => $bilangan_lelong, + 'cas_lelong' => $cas_lelong, + 'jumlah_lelong' => $jumlah_lelong, + 'baki_lelong' => $baki_lelong, + 'rugi_lelong' => $rugi_lelong, + 'total_keuntungan_kaunter' => $total_keuntungan_kaunter, + 'total_keuntungan_online' => $total_keuntungan_online, + 'totalbayaranonline' => $total_bayaran_online, + 'biltotalbayaranonline' => $bil_total_bayaran_online, + 'petibesi_sistem' => $petibesi_sistem, + 'petibesi_deno' => $petibesi_deno, + 'stokauditpembiayaan' => $stokauditpembiayaan, + 'stokauditnilaimarhun' => $stokauditnilaimarhun, + 'stokauditcount' => $stokauditcount, + 'petibesiimbangduga' => $petibesiimbangduga, + 'outstandingimbangduga' => $outstandingimbangduga, + 'rekodpinj' => $rekodpinj, + 'rekodpinjnm' => $rekodpinjnm, + 'rekodpinjbil' => $rekodpinjbil, + 'rekodpemb' => $rekodtawarruq, + 'rekodpembnm' => $rekodtawarruqnilaimarhun, + 'rekodpembbil' => $rekodtawarruqbil, + 'bayaranpend' => $bayaranpendahuluan, + 'upahsimpankaunter' => $upahsimpankaunter, + 'keuntungansebenarkaunter' => $keuntungansebenarkaunter, + 'totalserahan' => $totalSerahan, + 'serahanbayaranOnline' => $serahanbayaranOnline, + 'totalpendahuluan' => $totalPendahuluan, + ]); + + return response()->json($laporan_harian); + } + + private function getTotalPenebusan() + { + $tebus = Tebus::on($this->connectionCawangan) + ->select('tebus.t_tebus', 'gad.t_gadai', 'gad.hargajualan', 'gad.bakihargajualan', 'gad.bakipjm as gadaibakipjm', 'tebus.nilaimarhun', 'tebus.tagterima', 'tebus.teller', 'tebus.jenistebus', 'tebus.pinjaman', 'tebus.bakiupah', 'tebus.bakipjm', 'gad.norujukan', 'gad.nokp', 'tebus.jbg') + ->join('gadai as gad', 'gad.norujukan', '=', 'tebus.norujukan') + ->whereDate('tebus.t_tebus', '>=', $this->startDate)->whereDate('tebus.t_tebus', '<=', $this->endDate) + ->get(); + + $pembiayaanlelong = Lelong::on($this->connectionCawangan) + ->whereDate('t_jual', '>=', $this->startDate)->whereDate('t_jual', '<=', $this->endDate) + ->sum('pinjaman'); + + $totalpenebusan = 0; + + foreach ($tebus as $index1 => $teb) { + if ($teb['gad.hargajualan'] != $teb['bakihargajualan']) { + $totalpenebusan += $teb['gadaibakipjm']; + } else { + $totalpenebusan += $teb['pinjaman']; + } + } + + //Lelongan Pembiayaan + return $totalpenebusan += $pembiayaanlelong; + } + + private function getAnsuranQuery() + { + $sum_ansuran_query = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereRaw('DATE(transaksi_keuntungan.tarikh_bayaran) >= ?', [$this->startDate]) + ->whereRaw('DATE(transaksi_keuntungan.tarikh_bayaran) <= ?', [$this->endDate]) + ->where([['trans.trans_type', '=', 'A'], ['trans.kodcaw', '=', $this->kodCawangan]]); + + return $sum_ansuran_query; + + } + + private function getSumAnsuranOnline() + { + $sum_ansuran = $this->getAnsuranQuery($this->kodCawangan) + ->where('teller', '=', 'online') + ->sum('transaksi_keuntungan.bayaran_pembiayaan'); + + return $sum_ansuran; + } + + private function getTotalAnsuranOnline() + { + $sum_ansuran = $this->getAnsuranQuery($this->kodCawangan) + ->where('teller', '=', 'online') + ->count(); + + return $sum_ansuran; + } + + private function getSumAnsuranNotOnline() + { + $sum_ansuran = $this->getAnsuranQuery($this->kodCawangan) + ->where('teller', '<>', 'online') + ->sum('transaksi_keuntungan.bayaran_pembiayaan'); + + return $sum_ansuran; + } + + private function getTotalAnsuranNotOnline() + { + $sum_ansuran = $this->getAnsuranQuery($this->kodCawangan) + ->where('teller', '<>', 'online') + ->count(); + + return $sum_ansuran; + } + + private function getBilanganCustomerBaru() + { + $totalCustomer = Customer::on('mysql7')->where([ + ['tarikhdaftar', '>=', $this->startDate], + ['tarikhdaftar', '<=', $this->endDate], + ['kodcaw', $this->kodCawangan], + ])->count(); + + return $totalCustomer; + + } + + private function getBayarRugiLelong() + { + $bayarRugiLelong = TuntutBaki::on($this->connectionCawangan) + ->whereDate('tarikh', '>=', $this->startDate) + ->whereDate('tarikh', '<=', $this->endDate) + ->where('jumlah', '<', 0) + ->sum('jumlah'); + + return $bayarRugiLelong; + } + + private function getBayarBakiLelong() + { + $bayarBakiLelong = TuntutBaki::on($this->connectionCawangan) + ->whereDate('tarikh', '>=', $this->startDate) + ->whereDate('tarikh', '<=', $this->endDate) + ->where('jumlah', '>', 0) + ->sum('jumlah'); + + return $bayarBakiLelong; + } + + private function getBayaranOnlineQuery() + { + $bayaranOnlineQuery = Transaction::on('mysql7') + ->whereDate('created_at', '>=', $this->startDate) + ->whereDate('created_at', '<=', $this->endDate) + ->where('teller', '=', 'Online') + ->where('kodcaw', $this->kodCawangan); + + return $bayaranOnlineQuery; + } + + private function getSumBayaranOnline() + { + return $this->getBayaranOnlineQuery($this->kodCawangan)->sum('duit_masuk'); + } + + private function getTotalBayaranOnline() + { + return $this->getBayaranOnlineQuery($this->kodCawangan)->count(); + } + + private function getGadaiPercentLessThan($percentage) + { + return Gadai::on($this->connectionCawangan) + ->where([ + ['t_gadai', '>=', $this->startDate], + ['t_gadai', '<=', $this->endDate], + ['percentpinj', '<=', $percentage], + ]); + } + + private function getGadaiSumPinjamanPercentLessThan($percentage) + { + return $this->getGadaiPercentLessThan($percentage)->sum('pinjaman'); + } + + private function getGadaiPercentRange($percentage_from, $percentage_to) + { + return Gadai::on($this->connectionCawangan) + ->where([ + ['t_gadai', '>=', $this->startDate], + ['t_gadai', '<=', $this->endDate], + ['percentpinj', '>', $percentage_from], + ['percentpinj', '<=', $percentage_to], + ]); + } + + private function getGadaiSumPinjamanPercentRange($percentage_from, $percentage_to) + { + return $this->getGadaiPercentRange($percentage_from, $percentage_to)->sum('pinjaman'); + } + + private function getGadaiSumNilaiMarhunPercentLessThan($percentage) + { + return $this->getGadaiPercentLessThan($percentage)->sum('nilaimarhun'); + } + + private function getGadaiSumNilaiMarhunPercentRange($percentage_from, $percentage_to) + { + return $this->getGadaiPercentRange($percentage_from, $percentage_to)->sum('nilaimarhun'); + } + + private function getGadaiCountPercentLessThan($percentage) + { + return $this->getGadaiPercentLessThan($percentage)->count(); + } + + private function getGadaiCountPercentRange($percentage_from, $percentage_to) + { + return $this->getGadaiPercentRange($percentage_from, $percentage_to)->count(); + } + + private function getDataLelong() + { + + $data_lelong_query = Lelong::on($this->connectionCawangan)->whereDate('t_jual', '>=', $this->startDate)->whereDate('t_jual', '<=', $this->endDate); + + $data_lelong_untung = (clone $data_lelong_query)->where('baki', '>=', 0) + ->selectRaw(' + sum(cajlelong) as cajLelong, + sum(hargajual) as jumlahLelong, + sum(baki) as bakiLelong + ') + ->first(); + + $data_lelong_rugi = (clone $data_lelong_query)->where('baki', '<', 0) + ->selectRaw(' + sum(cajlelong) as cajLelong, + sum(hargajual) as jumlahLelong, + abs(sum(baki)) as rugiLelong + ') + ->first(); + + + return [ + 'cas_lelong' => $data_lelong_untung->cajLelong + $data_lelong_rugi->cajLelong, + 'jumlah_lelong' => $data_lelong_untung->jumlahLelong + $data_lelong_rugi->jumlahLelong, + 'baki_lelong' => $data_lelong_untung->bakiLelong ?? 0, + 'rugi_lelong' => $data_lelong_rugi->rugiLelong ?? 0, + ]; + + } + + private function getTotalKeuntunganOnline() + { + $total_keuntunganansuran_data_online = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('trans.created_at', '>=', $this->startDate)->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.teller', '=', 'Online') + ->where('trans.trans_type', '=', 'A') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('transaksi_keuntungan.norujukan'); + + $gadaiDataOnline = Gadai::on($this->connectionCawangan)->whereIn('norujukan', $total_keuntunganansuran_data_online)->whereNotNull('hargajualan')->pluck('norujukan'); + + $keuntunganansuran_online_query = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('trans.created_at', '>=', $this->startDate)->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.teller', '=', 'Online') + ->where('trans.trans_type', '=', 'A') + ->where('trans.kodcaw', $this->kodCawangan) + ->whereIn('trans.norujukan', $gadaiDataOnline) + ->whereDate('transaksi_keuntungan.tarikh_bayaran', '>=', $this->startDate)->whereDate('transaksi_keuntungan.tarikh_bayaran', '<=', $this->endDate); + + $total_keuntunganansuran_online = $keuntunganansuran_online_query->sum('bayaran_keuntungan'); + + $total_keuntunganbukanansuran_data_online = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.trans_type', '!=', 'A') + ->where('trans.teller', '=', 'Online') + ->whereDate('trans.created_at', '>=', $this->startDate)->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.kodcaw', '=', $this->kodCawangan) + ->pluck('transaksi_keuntungan.norujukan'); + + $gadaiDataOnline = Gadai::on($this->connectionCawangan)->whereIn('norujukan', $total_keuntunganbukanansuran_data_online)->whereNotNull('hargajualan')->pluck('norujukan'); + + $keuntunganbukanansuran_online_query = TransaksiKeuntungan::on('mysql7') + ->whereIn('norujukan', $gadaiDataOnline) + ->whereDate('tarikh_bayaran', '>=', $this->startDate)->whereDate('tarikh_bayaran', '<=', $this->endDate); + + $total_keuntunganbukanansuran_online = $keuntunganbukanansuran_online_query->sum('keuntungan_rebet'); + + $keuntungansebenaronline = $total_keuntunganansuran_online + $total_keuntunganbukanansuran_online; + + $upahansurOnlineQuery = Advansur::on($this->connectionCawangan) + ->where('teller', '=', 'Online') + ->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate); + + $upahansurOnline = $upahansurOnlineQuery->sum('upahdibayar'); + + $upahsimpanonline = $upahansurOnline; + $total_keuntungan_online = floatval($upahsimpanonline) + floatval($keuntungansebenaronline); + + return floatval($total_keuntungan_online); + + } + + private function getTotalKeuntunganKaunter() + { + $total_keuntunganansuran_data_online = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('trans.created_at', '>=', $this->startDate)->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.teller', '=', 'Online') + ->where('trans.trans_type', '=', 'A') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('transaksi_keuntungan.norujukan'); + + $gadaiDataOnline = Gadai::on($this->connectionCawangan)->whereIn('norujukan', $total_keuntunganansuran_data_online)->whereNotNull('hargajualan')->pluck('norujukan'); + + $keuntunganansuran_online_query = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('trans.created_at', '>=', $this->startDate)->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.teller', '=', 'Online') + ->where('trans.trans_type', '=', 'A') + ->where('trans.kodcaw', $this->kodCawangan) + ->whereIn('trans.norujukan', $gadaiDataOnline) + ->whereDate('transaksi_keuntungan.tarikh_bayaran', '>=', $this->startDate)->whereDate('transaksi_keuntungan.tarikh_bayaran', '<=', $this->endDate); + + $total_keuntunganansuran_online = $keuntunganansuran_online_query->sum('bayaran_keuntungan'); + + $total_keuntunganbukanansuran_data_online = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.trans_type', '!=', 'A') + ->where('trans.teller', '=', 'Online') + ->whereDate('trans.created_at', '>=', $this->startDate)->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.kodcaw', '=', $this->kodCawangan) + ->pluck('transaksi_keuntungan.norujukan'); + + $gadaiDataOnline = Gadai::on($this->connectionCawangan)->whereIn('norujukan', $total_keuntunganbukanansuran_data_online)->whereNotNull('hargajualan')->pluck('norujukan'); + + $keuntunganbukanansuran_online_query = TransaksiKeuntungan::on('mysql7') + ->whereIn('norujukan', $gadaiDataOnline) + ->whereDate('tarikh_bayaran', '>=', $this->startDate)->whereDate('tarikh_bayaran', '<=', $this->endDate); + + $total_keuntunganbukanansuran_online = $keuntunganbukanansuran_online_query->sum('keuntungan_rebet'); + + $keuntungansebenaronline = $total_keuntunganansuran_online + $total_keuntunganbukanansuran_online; + + $upahSimpanKaunter = $this->getUpahSimpanKaunter(); + $keuntunganSebenar = $this->getKeuntunganSebenarKaunter(); + $totalKeuntunganSebenar = $upahSimpanKaunter + $keuntunganSebenar; + + return floatval($totalKeuntunganSebenar); + } + + private function getUpahAnsurOnlineQuery() + { + $upahansurOnlineQuery = Advansur::on($this->connectionCawangan) + ->where('teller', '=', 'Online') + ->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate); + + return $upahansurOnlineQuery; + + } + + private function getUpahAnsuranOnline() + { + $upahansurOnline = $this->getUpahAnsurOnlineQuery()->sum('upahdibayar'); + return floatval($upahansurOnline); + } + + private function getUpahAnsuranOnlineTotal() + { + return $this->getUpahAnsurOnlineQuery()->count(); + } + + private function getTotalSumBayaranOnline() + { + $cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $this->kodCawangan); + return floatval($this->getSumBayaranOnline($this->kodCawangan)) + floatval($this->getUpahAnsuranOnline()); + } + + private function getTotalStokAudit() + { + + $stokaudit = Gadai::on($this->connectionCawangan) + ->where(function ($query) { + $query->where('tagpalsu', '=', 0) + ->where([['t_gadai', '<=', $this->endDate], ['sttebus', '=', '']]) + ->orWhere([['t_update', '>', $this->startDate], ['sttebus', '!=', ''], ['t_gadai', '<=', $this->endDate]]); + }); + + $stokauditnilaimarhun = (clone $stokaudit)->sum('nilaimarhun'); + $stokauditcount = (clone $stokaudit)->count(); + + $totalstokaudit_from_pinjaman = (clone $stokaudit)->whereNull('hargajualan') + ->sum('pinjaman'); + + $totalstokaudit_from_baki_pinjaman = (clone $stokaudit)->whereNotNull('hargajualan') + ->sum('bakipjm'); + + return [ + 'stokAuditPembiayaan' => $totalstokaudit_from_pinjaman + $totalstokaudit_from_baki_pinjaman, + 'stokAuditNilaiMarhun' => $stokauditnilaimarhun, + 'stokAuditCount' => $stokauditcount, + ]; + } + + private function getPetiBesiImbangDuga() + { + + $totalbakiakhirtunai = 0; + + $vault = Vault::on($this->connectionCawangan) + ->where('kodcaw', '=', $this->kodCawangan) + ->where('tarikh', '<=', $this->endDate) + ->orderby('tarikh', 'desc')->first(); + + $tunai = Tunai::on($this->connectionCawangan) + ->where('kodcaw', '=', $this->kodCawangan) + ->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate); + + $total = $tunai->sum('baki'); + + $totalBakiAkhirTunai = $vault['bakiakhir']; + + if ($total != 0) { + $totalBakiAkhirTunai = $vault['bakiakhir'] + $total; + } + + return $totalBakiAkhirTunai; + } + + private function getTarikhTawarruq() + { + + $tarikhTawarruq = [ + 'KB2' => '2021-04-13', + 'WCY' => '2021-05-04', + '1STOP' => '2021-05-09', + '020301' => '2021-05-18', + 'ALS' => '2021-05-24', + 'WB' => '2021-05-24', + 'APM' => '2021-06-08', + 'ARM' => '2021-06-08', + '020306' => '2021-06-08', + '010311' => '2021-06-13', + 'GC' => '2021-06-13', + 'JLI' => '2021-06-13', + '010621' => '2021-06-15', + 'ARP' => '2021-06-15', + '010621' => '2021-06-21', + '010136' => '2021-06-20', + '011235' => '2021-06-21', + '011227' => '2021-06-21', + '010620' => '2021-06-21', + '010617' => '2021-06-21', + '010915' => '2021-06-22', + '011228' => '2021-06-22', + '010219' => '2021-06-22', + '011229' => '2021-06-22', + '011230' => '2021-06-23', + '011013' => '2021-06-23', + '011412' => '2021-06-23', + '011234' => '2021-06-28', + '020303' => '2021-06-29', + '010618' => '2021-06-29', + '011231' => '2021-06-23', + '011232' => '2021-06-28', + '011233' => '2021-06-28', + ]; + + return $tarikhTawarruq[Str::upper($this->kodCawangan)]; + } + + private function getOutstandingImbangDuga() + { + $rekodKoop = $this->getRekodKoopSumPinjaman(); + $rekodTawarruq = $this->getPinjamanRekodTawarruq(); + $bayaranPendahuluan = $this->getBayaranPendahuluan(); + + $outstandingImbangDuga = $rekodKoop + $rekodTawarruq - $bayaranPendahuluan; + + return $outstandingImbangDuga; + } + + private function getRekodKoopQuery() + { + $tarikhTawarruq = $this->getTarikhTawarruq(); + $rekodkoopquery = Gadai::on($this->connectionCawangan) + ->where('tagpalsu', '=', 0) + ->where([['t_gadai', '<=', $tarikhTawarruq], ['sttebus', '=', '']]) + ->orWhere([['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['t_gadai', '<=', $tarikhTawarruq]]); + + return $rekodkoopquery; + } + + private function getRekodKoopSumPinjaman() + { + return floatval($this->getRekodKoopQuery()->sum('pinjaman')); + + } + + private function getRekodKoopSumNilaiMarhun() + { + return floatval($this->getRekodKoopQuery()->sum('nilaimarhun')); + } + + private function getRekodKoopCount() + { + return floatval($this->getRekodKoopQuery()->count()); + } + + private function getRekodTawarruqQuery() + { + + $rekodtawarruqquery = Gadai::on($this->connectionCawangan) + ->where('tagpalsu', '=', 0) + ->where([['t_gadai', '<=', $this->startDate], ['hargajualan', '<>', 'NULL'], ['sttebus', '=', '']]) + ->orWhere([['t_update', '>', $this->endDate], ['sttebus', '!=', ''], ['t_gadai', '<=', $this->startDate], ['hargajualan', '<>', 'null']]); + + return $rekodtawarruqquery; + } + + private function getPinjamanRekodTawarruq() + { + if ($this->startDate < '2021-04-13') { + return null; + } + + $rekodtawarruq = $this->getRekodTawarruqQuery()->sum('pinjaman'); + return floatval($rekodtawarruq); + } + + private function getNilaiMarhunRekodTawarruq() + { + $rekodtawarruqnilaimarhun = $this->getRekodTawarruqQuery()->sum('nilaimarhun'); + return floatval($rekodtawarruqnilaimarhun); + } + + private function getBilanganRekodTawarruq() + { + $rekodtawarruqbil = $this->getRekodTawarruqQuery()->count(); + return floatval($rekodtawarruqbil); + } + + private function getBayaranPendahuluan() + { + $daterequest = new Carbon($this->startDate); + $daterequest->addDays(1); + + $bayaranpendahuluan_data = TransaksiKeuntungan::on('mysql7') + ->where('tarikh_bayaran', '<=', $daterequest) + ->where('kodcaw', $this->kodCawangan) + ->pluck('norujukan'); + + $gadaiData = Gadai::on($this->connectionCawangan)->whereIn('norujukan', $bayaranpendahuluan_data) + ->where([['sttebus', ''], ['hargajualan', '<>', 'null']]) + ->orWhere([['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']]) + ->pluck('norujukan'); + + $bayaranpendahuluan = TransaksiKeuntungan::on('mysql7') + ->whereIn('norujukan', $gadaiData) + ->where('tarikh_bayaran', '<=', $daterequest) + ->sum('bayaran_pembiayaan'); + + return floatval($bayaranpendahuluan); + } + + private function getUpahSimpanKaunter() + { + $keuntungan_data_kaunter = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('transaksi_keuntungan.tarikh_bayaran', '>=', $this->startDate)->whereDate('transaksi_keuntungan.tarikh_bayaran', '<=', $this->endDate) + ->where('trans.teller', '<>', 'Online') + + ->pluck('transaksi_keuntungan.norujukan'); + + $gadaiDataKaunter = Gadai::on($this->connectionCawangan)->whereIn('norujukan', $keuntungan_data_kaunter)->whereNull('hargajualan')->pluck('norujukan'); + + $keuntungan_kaunter_query = TransaksiKeuntungan::on('mysql7') + ->whereIn('norujukan', $gadaiDataKaunter); + + $keuntungan_kaunter = $keuntungan_kaunter_query->sum('bayaran_keuntungan'); + + $upahtebus = Tebus::on($this->connectionCawangan) + ->whereDate('t_tebus', '>=', $this->startDate)->whereDate('t_tebus', '<=', $this->endDate) + ->sum('upahdibayar'); + + $upahlelong = Lelong::on($this->connectionCawangan) + ->whereDate('t_jual', '>=', $this->startDate)->whereDate('t_jual', '<=', $this->endDate) + ->sum('bakiupah'); + + $upahansurKaunter = Advansur::on($this->connectionCawangan) + ->where('teller', '<>', 'Online') + ->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate) + ->sum('upahdibayar'); + + $total_keuntunganbukanansuran_data_kaunter = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.trans_type', '!=', 'A') + ->where('trans.teller', '<>', 'Online') + ->whereDate('trans.created_at', '>=', $this->startDate)->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.kodcaw', '=', $this->kodCawangan); + + $total_keuntunganbukanansuran_kaunter = $total_keuntunganbukanansuran_data_kaunter->sum('keuntungan_rebet'); + + $upahsimpankaunter = $keuntungan_kaunter + $upahtebus + $upahlelong + $upahansurKaunter + $total_keuntunganbukanansuran_kaunter; + + return floatval($upahsimpankaunter); + } + + private function getKeuntunganSebenarKaunter() + { + $total_keuntunganansuran_data_kaunter = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->whereDate('trans.created_at', '>=', $this->startDate)->whereDate('trans.created_at', '<=', $this->endDate) + ->where('trans.teller', '<>', 'Online') + ->where('trans.trans_type', '=', 'A') + ->where('trans.kodcaw', $this->kodCawangan) + ->pluck('transaksi_keuntungan.norujukan'); + + $gadaiDataKaunter = Gadai::on($this->connectionCawangan)->whereIn('norujukan', $total_keuntunganansuran_data_kaunter)->whereNotNull('hargajualan')->pluck('norujukan'); + + $keuntunganansuran_kaunter_query = TransaksiKeuntungan::on('mysql7') + ->leftJoin('transaction as trans', function ($join) { + $join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan'); + $join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at'); + }) + ->where('trans.teller', '<>', 'Online') + ->where('trans.trans_type', '=', 'A') + ->whereIn('transaksi_keuntungan.norujukan', $gadaiDataKaunter) + ->whereDate('transaksi_keuntungan.tarikh_bayaran', '>=', $this->startDate)->whereDate('transaksi_keuntungan.tarikh_bayaran', '<=', $this->endDate); + + $total_keuntunganansuran_kaunter = $keuntunganansuran_kaunter_query->sum('bayaran_keuntungan'); + + $keuntungansebenarkaunter = $total_keuntunganansuran_kaunter; + + return floatval($keuntungansebenarkaunter); + } + + public function getSerahanBayaranOnline() + { + $serahanpkb = '1000/020'; + + $serahanbayaranOnline = GlDetail::on($this->connectionCawangan) + ->where('ktacct', '=', $serahanpkb) + ->where('descpt', 'like', 'SERAHAN BAYAR ONLINE%') + ->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate) + ->where('tarikh', '>', '2021-03-24') + ->sum('serahan'); + + return floatval($serahanbayaranOnline); + + } + + private function getTotalSerahan() + { + + $serahanpkb = '1000/020'; + $serahanjmc = '1000/026'; + + $serahanpkbTawarruq = GlDetail::on($this->connectionCawangan) + ->where('ktacct', '=', $serahanpkb) + ->where('descpt', 'not like', 'SERAHAN BAYAR ONLINE%') + ->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate) + ->where('tarikh', '>', '2021-03-24') + ->sum('serahan'); + + $specificCawangan = [ + 'KB2', + 'WCY', + '1STOP', + 'ARM', + 'APM', + '010621', + '010915', + ]; + + $kodCawangan = strtoupper($this->kodCawangan); + + if (in_array($kodCawangan, $specificCawangan)) { + + $tarikhMulaTawarruq = '2013-12-31'; + + $serahanpkb = GlDetail::on($this->connectionCawangan) + ->where('dtacct', '=', $serahanpkb) + ->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate) + ->where('tarikh', '>', $tarikhMulaTawarruq) + ->sum('amaun'); + + $serahanJMC = GlDetail::on($this->connectionCawangan) + ->where('dtacct', '=', $serahanjmc) + ->whereDate('tarikh', '>=', $this->startDate)->whereDate('tarikh', '<=', $this->endDate) + ->where('tarikh', '>', $tarikhMulaTawarruq) + ->sum('amaun'); + + if ($this->startDate <= $tarikhMulaTawarruq) { + $serahanpkblama = imbangdugalama::on($this->connectionCawangan) + ->sum('serahan_pkb'); + + $serahanjmclama = imbangdugalama::on($this->connectionCawangan) + ->sum('serahan_jmc'); + + $totaljmc = $serahanJMC + $serahanjmclama; + $totalpkb = $serahanpkb + $serahanpkblama; + + $totalserahan = $serahanpkbTawarruq + $totaljmc + $totalpkb; + + } else { + + $totalSerahan = $serahanpkbTawarruq + $serahanJMC + $serahanpkb; + } + + return floatval($totalSerahan); + } + + return floatval(0); + + } + + private function getTotalPendahuluan() + { + $pendahuluanpkb = '7000/102'; + + $pendahuluanPKBtawarruq = GlDetail::on($this->connectionCawangan) + ->where('ktacct', '=', $pendahuluanpkb) + ->where([['tarikh', '=', $this->startDate], ['tarikh', '>', '2021-03-24']]) + ->sum('pendahuluan'); + + $pendahuluanPKB = GlDetail::on($this->connectionCawangan) + ->where('ktacct', '=', $pendahuluanpkb) + ->where([['tarikh', '=', $this->startDate], ['tarikh', '>', '2013-12-31']]) + ->sum('amaun'); + + $pendahuluanJMC = GlDetail::on($this->connectionCawangan) + ->where('ktacct', '=', '7000/106') + ->where([['tarikh', '=', $this->startDate], ['tarikh', '>', '2013-12-31']]) + ->sum('amaun'); + + if ($this->startDate <= '2013-12-31') { + $pendahuluanpkblama = imbangdugalama::on($this->connectionCawangan) + ->sum('pendahuluan_pkb'); + + $pendahuluanjmclama = imbangdugalama::on($this->connectionCawangan) + ->sum('pendahuluan_jmc'); + + $totalpendahuluan = $pendahuluanPKBtawarruq + $pendahuluanjmclama + $pendahuluanpkblama + $pendahuluanPKB + $pendahuluanJMC; + + } else { + + $totalpendahuluan = $pendahuluanPKBtawarruq + $pendahuluanPKB + $pendahuluanJMC; + } + + return floatval($totalpendahuluan); + + } + + function getBilTotalBayaranOnline() + { + + $bayaranonlinequery = Transaction::on('mysql7') + ->whereDate('created_at', '>=', $this->startDate) + ->whereDate('created_at', '<=', $this->endDate) + ->where('teller', '=', 'Online')->where('kodcaw', $this->kodCawangan); + + $bilbayaranonline = $bayaranonlinequery->count(); + + $upahansurOnlineQuery = Advansur::on($this->connectionCawangan) + ->where('teller', '=', 'Online') + ->whereDate('tarikh', '>=', $this->startDate) + ->whereDate('tarikh', '<=', $this->endDate); + + $bilupahansurOnline = $upahansurOnlineQuery->count(); + + $biltotalbayaranonline = $bilbayaranonline + $bilupahansurOnline; + + return $biltotalbayaranonline; + } + + private function getPanjarBulanan() + { + $getFirstDayOfMonthByDate = function ($date) { + return Carbon::parse($date)->firstOfMonth(); + }; + + // range start from first day of month of startDate to endDate + $panjar = Panjar::on($this->connectionCawangan) + ->where([ + ['tarikh', '>=', $getFirstDayOfMonthByDate($this->startDate)], + ['tarikh', '<=', $this->endDate], + ]) + ->sum('bayaran'); + + return $panjar; + } + + private function getPanjarTahunan() + { + $getFirstDayOfYearByDate = function ($date) { + return Carbon::parse($date)->firstOfYear(); + }; + + // range start from first day of year of startDate to endDate + $panjar = Panjar::on($this->connectionCawangan) + ->where([ + ['tarikh', '<=', $this->endDate], + ['tarikh', '>=', $getFirstDayOfYearByDate($this->startDate)], + ]) + ->sum('bayaran'); + + return $panjar; + } +} diff --git a/routes/report.php b/routes/report.php index 2ceea39..5fab083 100644 --- a/routes/report.php +++ b/routes/report.php @@ -1,13 +1,25 @@ group(['prefix'=>'api/reports'], function () use ($router){ $router->group(['namespace' => 'Reports'], function() use($router){ +======= +$router->group(['prefix' => 'api/reports'], function () use ($router) { + $router->group(['namespace' => 'Reports'], function () use ($router) { +>>>>>>> 3ced9b3 (Add report ringkasan harian) $router->get('gadaian', ['uses' => 'GadaianController@getSummaryLaporanGadai']); $router->get('gadaian/{kod_cawangan}', ['uses' => 'GadaianController@getLaporanCawangan']); $router->get('penebusan', ['uses' => 'PenebusanController@getSummaryLaporanTebus']); $router->get('penebusan/{kod_cawangan}', ['uses' => 'PenebusanController@getLaporanCawangan']); $router->get('ansuran', ['uses' => 'AnsuranController@getSummaryLaporanAnsuran']); $router->get('ansuran/{kod_cawangan}', ['uses' => 'AnsuranController@getLaporanCawangan']); +<<<<<<< HEAD +======= + $router->get('kawalan-stok/{kod_cawangan}', ['uses' => 'KawalanStokController@getLaporanCawangan']); + $router->get('ringkasan-harian', ['uses' => 'RingkasanHarianController@getSummaryLaporanRingkasanHarian']); + $router->get('ringkasan-harian/{kod_cawangan}', ['uses' => 'RingkasanHarianController@getLaporanCawangan']); + +>>>>>>> 3ced9b3 (Add report ringkasan harian) $router->get('onepercent/balance/{kod_cawangan}', ['uses' => 'OnePercentController@getKeuntunganImbangDuga']); $router->get('onepercent/ledger/{kod_cawangan}', ['uses' => 'OnePercentController@getKeuntunganLejerAm']); $router->get('ujrah/balance/{kod_cawangan}', ['uses' => 'OnePercentController@getUjrahImbangDuga']); diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php index 1bad6ef..010997a 100644 --- a/tests/ExampleTest.php +++ b/tests/ExampleTest.php @@ -14,6 +14,10 @@ class ExampleTest extends TestCase { $this->get('/'); + dump('test'); + + return; + $this->assertEquals( $this->app->version(), $this->response->getContent() ); diff --git a/tests/RingkasanHarianServicesTest.php b/tests/RingkasanHarianServicesTest.php new file mode 100644 index 0000000..84f687c --- /dev/null +++ b/tests/RingkasanHarianServicesTest.php @@ -0,0 +1,208 @@ +startDate = $this->startDate; + $request->endDate = $this->endDate; + $ringkasanHarianService = new RingkasanHarianService($this->kodCawangan, $request); + + $this->expectNotToPerformAssertions(); + return $ringkasanHarianService->generate(); + + } + + public function test_service_method_output_is_same_originated_method() + { + + $request = new Request; + $request->startDate = $this->startDate; + $request->endDate = $this->endDate; + $ringkasanHarianService = new RingkasanHarianService($this->kodCawangan, $request); + $outputService = $ringkasanHarianService->generate(); + + $request = new Request; + $request->tarikh = $this->startDate; + $request->kodcaw = $this->kodCawangan; + $outputOriginatedMethod = (new LaporanController)->laporanHarian($request); + + // Find divergent properties and values + $divergentProperties = []; + + $outputOriginatedMethod = $outputOriginatedMethod->getData()[0]; + $outputService = $outputService->getData()[0]; + + $this->show_diverged_changes($outputOriginatedMethod, $outputService); + + $this->assertEquals($outputOriginatedMethod, $outputService); + + } + + public function test_date_range_of_test_service_method_ouput_is_same_as_originated_method() + { + + // Properties are excluded because all property values from originated report are assummed to sum between 2 days. + // But these properties are already utilize range. So summing these property values will result in false output + $propertiesToBeExcludedFromTest = [ + 'panjar_bulanan', + 'panjar_tahunan', + 'stokauditpembiayaan', + 'stokauditnilaimarhun', + 'stokauditcount', + 'petibesiimbangduga', + 'outstandingimbangduga', + 'rekodpemb', + 'rekodpembnm', + 'rekodpembbil', + 'bayaranpend', + ]; + + $prepareReport = function($report) use($propertiesToBeExcludedFromTest){ + foreach ($propertiesToBeExcludedFromTest as $properties) { + unset($report->$properties); + } + + return $report; + }; + + $day1 = '2023-03-20'; + $day2 = '2023-03-21'; + $kodCawangan = $this->kodCawangan; + + $report1 = $this->get_2_days_report_from_originated_method($kodCawangan, $day1, $day2); + + $request = new Request; + $request->startDate = $day1; + $request->endDate = $day2; + $ringkasanHarianService = new RingkasanHarianService($kodCawangan, $request); + $outputService = $ringkasanHarianService->generate(); + $report2 = $this->convert_object_values_to_string($outputService->getData()[0]); + + $this->assertEquals($prepareReport($report1), $prepareReport($report2)); + + } + + public function show_diverged_changes($outputOriginatedMethod, $outputService) + { + + // Get properties dynamically from the first object + $properties = array_keys(get_object_vars($outputOriginatedMethod)); + + // Find divergent properties and values + $divergentProperties = []; + + foreach ($properties as $property) { + $value1 = $outputOriginatedMethod->$property; + $value2 = $outputService->$property; + + if ($value1 !== $value2) { + $divergentProperties[$property] = [ + 'value1' => $value1, + 'value2' => $value2, + ]; + } + } + + // Display divergent properties and values + if (!empty($divergentProperties)) { + dump("Divergent properties found:\n"); + foreach ($divergentProperties as $property => $values) { + + $value1 = in_array(gettype($values['value1']), ['integer', 'string']) ? $values['value1'] : json_encode($values['value1']); + $value2 = in_array(gettype($values['value2']), ['integer', 'string']) ? $values['value2'] : json_encode($values['value2']); + + dump("$property: outputOriginatedMethod : {$value1} vs serviceMethod : {$value2}\n"); + } + } + } + + private function get_2_days_report_from_originated_method($kodCawangan, $day1, $day2) + { + + $requestFirstDay = new Request; + $requestFirstDay->tarikh = $day1; + $requestFirstDay->kodcaw = $kodCawangan; + + $requestSecondDay = new Request; + $requestSecondDay->tarikh = $day2; + $requestSecondDay->kodcaw = $kodCawangan; + + $outputFirstDay = (new LaporanController)->laporanHarian($requestFirstDay)->getData()[0]; + $outputSecondDay = (new LaporanController)->laporanHarian($requestSecondDay)->getData()[0]; + + $sumDateRangeReportData = function ($report1, $report2) { + $floatingPointProperty = [ + 'total_gadai', + 'gadai_70', + 'gadai_75', + 'gadai_80', + 'nilaimarhun_70', + 'nilaimarhun_75', + 'nilaimarhun_80', + 'panjar_harian', + 'panjar_bulanan', + 'panjar_tahunan', + 'stokauditpembiayaan', + 'stokauditnilaimarhun', + 'stokauditcount', + 'petibesiimbangduga', + 'outstandingimbangduga', + 'rekodpemb', + 'rekodpembnm', + 'rekodpembil', + 'bayaranpend', + ]; + // Merge objects by summing corresponding values + $mergedReport = new stdClass(); + + foreach ($report1 as $key => $value) { + // Check if the property exists in the second object + if (property_exists($report2, $key)) { + // Sum the values and assign to the merged object + $sum = $value + $report2->$key; + $mergedReport->$key = in_array($key, $floatingPointProperty) ? floatval($sum) : $sum; + } + } + + return $mergedReport; + }; + + $sum = $sumDateRangeReportData($outputFirstDay, $outputSecondDay); + + return $this->convert_object_values_to_string($sum); + } + + private function convert_object_values_to_string($inputObject) { + // Check if the input is an object + if (!is_object($inputObject)) { + // Handle the case where the input is not an object + return $inputObject; + } + + // Create a new stdClass object to store the converted values + $convertedObject = new stdClass(); + + // Iterate through the properties of the input object + foreach ($inputObject as $key => $value) { + // Convert the value to string and assign it to the new object + $convertedObject->$key = number_format($value, 2); + } + + return $convertedObject; + } + +}