copy()->startOfYear(); $endOfYear = $date->copy()->endOfYear(); //list of compound 'Belum Bayar' in the year 2019 $compound = Compound::whereBetween('created_at', array($startOfYear, $endOfYear))->where('jbkod', $jabatan)->get(); $jumlah_kompaun = 0; $keping_kompaun = 0; foreach($compound as $c) { $jumlah_kompaun += $c->jumlah_asal_kompaun; $keping_kompaun += 1; } $result = array(); array_push($result, array( 'jumlah_kompaun' => $jumlah_kompaun, 'keping_kompaun' => $keping_kompaun, )); return json_encode($result); } //Calculate compound with status 'Berbayar' public function kompaunBayarByBulan($year, $month, $jabatan) { $monthly = Carbon::createFromDate($year, $month, 1); $startOfMonth = $monthly->copy()->startOfMonth(); $endOfMonth = $monthly->copy()->endOfMonth(); $monthly_collection = Compound::whereBetween('created_at', array($startOfMonth, $endOfMonth))->where('jbkod', $jabatan)->where('status', 'Berbayar')->get(); $jumlah_bayar = 0; $keping_bayar = 0; $jumlah_asal = 0; $jumlah_kurang = 0; $temp_jumlah_kurang = 0; foreach($monthly_collection as $k) { if((!($k->jumlah_kemaskini_kompaun == ''))) { $temp_jumlah_kurang = $k->jumlah_asal_kompaun - $k->jumlah_kemaskini_kompaun; } $keping_bayar += 1; $jumlah_asal += $k->jumlah_asal_kompaun; $jumlah_bayar += $k->amount_payment; $jumlah_kurang += $temp_jumlah_kurang; } $result = array(); array_push($result, array( 'jumlah_berbayar' => $jumlah_bayar, 'keping_berbayar' => $keping_bayar, 'jumlah_pengurangan' => $jumlah_kurang, 'jumlah_asal_berbayar' => $jumlah_asal, )); return json_encode($result); } public function berbayarTerkumpul($value1, $value2) { return $value1 += $value2; } public function bakiTunggakan($baki_tertunggak, $bayar_bulanan, $jumlah_kurang) { return $baki_tertunggak - $bayar_bulanan - $jumlah_kurang; } public function kepingTunggakan($keping_tertunggak, $keping_bulanan) { return $keping_tertunggak -= $keping_bulanan; } public function peratusKutipan($jumlah_tertunggak, $berbayar_bulanan) { return $berbayar_bulanan /= $jumlah_tertunggak; } public function peratusTerkumpul($jumlah_tertunggak, $berbayar_terkumpul) { return $berbayar_terkumpul /= $jumlah_tertunggak; } public function penguranganTerkumpul($total_pengurangan, $pengurangan_bulanan) { return $total_pengurangan += $pengurangan_bulanan; } public function returnBacklogCompound(Request $request) { $looping_month = array(); $year = $request->year; $jabatan = $request->jabatan; //declaring required variables $kutipan_terkumpul = 0; $tunggakan_terkumpul = 0; $pengurangan_terkumpul = 0; $baki_tunggakan = 0; $keping_tunggakan = 0; $nama_bulan = array('JAN', 'FEB', 'MAC', 'APR', 'MEI', 'JUN', 'JUL', 'OGOS', 'SEP', 'OKT', 'NOV', 'DIS'); if(($year != 'null') && ($jabatan != 'null') && ($year != '') && ($jabatan != '')) { // search kompaun tertunggak a year before $tertunggak = json_decode($this->jumlahKompaunTahunan($request->year, $request->jabatan)); if($tertunggak[0]->keping_kompaun != 0 || $tertunggak[0]->jumlah_kompaun != 0) { $baki_tunggakan = $tertunggak[0]->jumlah_kompaun; $keping_tunggakan = $tertunggak[0]->keping_kompaun; for( $bulan = 1; $bulan < 13; $bulan++) { //calling required functions $bayar_bulanan = json_decode($this->kompaunBayarByBulan($year, $bulan,$jabatan)); $kutipan_terkumpul = $this->berbayarTerkumpul($kutipan_terkumpul, $bayar_bulanan[0]->jumlah_berbayar); $baki_tunggakan = $this->bakiTunggakan($baki_tunggakan, $bayar_bulanan[0]->jumlah_berbayar, $bayar_bulanan[0]->jumlah_pengurangan); $keping_tunggakan = $this->kepingTunggakan($keping_tunggakan, $bayar_bulanan[0]->keping_berbayar); $peratus_kutipan = $this->peratusKutipan($tertunggak[0]->jumlah_kompaun, $bayar_bulanan[0]->jumlah_berbayar); $peratus_terkumpul = $this->peratusTerkumpul($tertunggak[0]->jumlah_kompaun, $kutipan_terkumpul); $pengurangan_terkumpul = $this->penguranganTerkumpul($pengurangan_terkumpul, $bayar_bulanan[0]->jumlah_pengurangan); array_push($looping_month, array( 'bulan' => $nama_bulan[$bulan-1], //A 'space' => "", //B 'kutipan_bulanan' => $bayar_bulanan[0]->jumlah_berbayar, //C 'jumlah_kompaun_bayar' => $bayar_bulanan[0]->keping_berbayar, //D 'kutipan_terkumpul' => $kutipan_terkumpul, //E 'baki_tunggakan' => $baki_tunggakan, //F 'baki_belum_bayar' => $keping_tunggakan, //G 'jumlah_kurang' => $bayar_bulanan[0]->jumlah_pengurangan, //H '_kutipan' => number_format((float)$peratus_kutipan, 3, '.', ''), //I '_terkumpul' => number_format((float)$peratus_terkumpul, 3, '.', ''), //J )); } $kompaun_j = $tertunggak[0]->jumlah_kompaun; $kompaun_k = $tertunggak[0]->keping_kompaun; } } return \DataTables::of($looping_month)->make(true); } }