123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- <?php
-
- namespace App\Http\Controllers\Api\Export;
-
- use Illuminate\Http\Request;
- use App\Http\Controllers\Api\BaseController;
- use Carbon\Carbon;
-
- use App\Model\Module\Compound;
- use App\Model\Module\ReportEnforcer;
- use App\Model\Staff;
- use App\Model\StaffDetail;
- use App\Model\Module\Department;
-
- class CalculationReportBacklog extends BaseController
- {
- public function jumlahKompaunTahunan($year, $jabatan)
- {
- $date = Carbon::createFromDate($year, 01, 01);
- $startOfYear = $date->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);
- }
- }
|