Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CalculationReportBacklog.php 6.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. namespace App\Http\Controllers\Api\Export;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Api\BaseController;
  5. use Carbon\Carbon;
  6. use App\Model\Module\Compound;
  7. use App\Model\Module\ReportEnforcer;
  8. use App\Model\Staff;
  9. use App\Model\StaffDetail;
  10. use App\Model\Module\Department;
  11. class CalculationReportBacklog extends BaseController
  12. {
  13. public function jumlahKompaunTahunan($year, $jabatan)
  14. {
  15. $date = Carbon::createFromDate($year, 01, 01);
  16. $startOfYear = $date->copy()->startOfYear();
  17. $endOfYear = $date->copy()->endOfYear();
  18. //list of compound 'Belum Bayar' in the year 2019
  19. $compound = Compound::whereBetween('created_at', array($startOfYear, $endOfYear))->where('jbkod', $jabatan)->get();
  20. $jumlah_kompaun = 0;
  21. $keping_kompaun = 0;
  22. foreach($compound as $c)
  23. {
  24. $jumlah_kompaun += $c->jumlah_asal_kompaun;
  25. $keping_kompaun += 1;
  26. }
  27. $result = array();
  28. array_push($result, array(
  29. 'jumlah_kompaun' => $jumlah_kompaun,
  30. 'keping_kompaun' => $keping_kompaun,
  31. ));
  32. return json_encode($result);
  33. }
  34. //Calculate compound with status 'Berbayar'
  35. public function kompaunBayarByBulan($year, $month, $jabatan)
  36. {
  37. $monthly = Carbon::createFromDate($year, $month, 1);
  38. $startOfMonth = $monthly->copy()->startOfMonth();
  39. $endOfMonth = $monthly->copy()->endOfMonth();
  40. $monthly_collection = Compound::whereBetween('created_at', array($startOfMonth, $endOfMonth))->where('jbkod', $jabatan)->where('status', 'Berbayar')->get();
  41. $jumlah_bayar = 0;
  42. $keping_bayar = 0;
  43. $jumlah_asal = 0;
  44. $jumlah_kurang = 0;
  45. $temp_jumlah_kurang = 0;
  46. foreach($monthly_collection as $k)
  47. {
  48. if((!($k->jumlah_kemaskini_kompaun == '')))
  49. {
  50. $temp_jumlah_kurang = $k->jumlah_asal_kompaun - $k->jumlah_kemaskini_kompaun;
  51. }
  52. $keping_bayar += 1;
  53. $jumlah_asal += $k->jumlah_asal_kompaun;
  54. $jumlah_bayar += $k->amount_payment;
  55. $jumlah_kurang += $temp_jumlah_kurang;
  56. }
  57. $result = array();
  58. array_push($result, array(
  59. 'jumlah_berbayar' => $jumlah_bayar,
  60. 'keping_berbayar' => $keping_bayar,
  61. 'jumlah_pengurangan' => $jumlah_kurang,
  62. 'jumlah_asal_berbayar' => $jumlah_asal,
  63. ));
  64. return json_encode($result);
  65. }
  66. public function berbayarTerkumpul($value1, $value2)
  67. {
  68. return $value1 += $value2;
  69. }
  70. public function bakiTunggakan($baki_tertunggak, $bayar_bulanan, $jumlah_kurang)
  71. {
  72. return $baki_tertunggak - $bayar_bulanan - $jumlah_kurang;
  73. }
  74. public function kepingTunggakan($keping_tertunggak, $keping_bulanan)
  75. {
  76. return $keping_tertunggak -= $keping_bulanan;
  77. }
  78. public function peratusKutipan($jumlah_tertunggak, $berbayar_bulanan)
  79. {
  80. return $berbayar_bulanan /= $jumlah_tertunggak;
  81. }
  82. public function peratusTerkumpul($jumlah_tertunggak, $berbayar_terkumpul)
  83. {
  84. return $berbayar_terkumpul /= $jumlah_tertunggak;
  85. }
  86. public function penguranganTerkumpul($total_pengurangan, $pengurangan_bulanan)
  87. {
  88. return $total_pengurangan += $pengurangan_bulanan;
  89. }
  90. public function returnBacklogCompound(Request $request)
  91. {
  92. $looping_month = array();
  93. $year = $request->year;
  94. $jabatan = $request->jabatan;
  95. //declaring required variables
  96. $kutipan_terkumpul = 0;
  97. $tunggakan_terkumpul = 0;
  98. $pengurangan_terkumpul = 0;
  99. $baki_tunggakan = 0;
  100. $keping_tunggakan = 0;
  101. $nama_bulan = array('JAN', 'FEB', 'MAC', 'APR', 'MEI', 'JUN', 'JUL', 'OGOS', 'SEP', 'OKT', 'NOV', 'DIS');
  102. if(($year != 'null') && ($jabatan != 'null') && ($year != '') && ($jabatan != ''))
  103. {
  104. // search kompaun tertunggak a year before
  105. $tertunggak = json_decode($this->jumlahKompaunTahunan($request->year, $request->jabatan));
  106. if($tertunggak[0]->keping_kompaun != 0 || $tertunggak[0]->jumlah_kompaun != 0)
  107. {
  108. $baki_tunggakan = $tertunggak[0]->jumlah_kompaun;
  109. $keping_tunggakan = $tertunggak[0]->keping_kompaun;
  110. for( $bulan = 1; $bulan < 13; $bulan++)
  111. {
  112. //calling required functions
  113. $bayar_bulanan = json_decode($this->kompaunBayarByBulan($year, $bulan,$jabatan));
  114. $kutipan_terkumpul = $this->berbayarTerkumpul($kutipan_terkumpul, $bayar_bulanan[0]->jumlah_berbayar);
  115. $baki_tunggakan = $this->bakiTunggakan($baki_tunggakan, $bayar_bulanan[0]->jumlah_berbayar, $bayar_bulanan[0]->jumlah_pengurangan);
  116. $keping_tunggakan = $this->kepingTunggakan($keping_tunggakan, $bayar_bulanan[0]->keping_berbayar);
  117. $peratus_kutipan = $this->peratusKutipan($tertunggak[0]->jumlah_kompaun, $bayar_bulanan[0]->jumlah_berbayar);
  118. $peratus_terkumpul = $this->peratusTerkumpul($tertunggak[0]->jumlah_kompaun, $kutipan_terkumpul);
  119. $pengurangan_terkumpul = $this->penguranganTerkumpul($pengurangan_terkumpul, $bayar_bulanan[0]->jumlah_pengurangan);
  120. array_push($looping_month, array(
  121. 'bulan' => $nama_bulan[$bulan-1], //A
  122. 'space' => "", //B
  123. 'kutipan_bulanan' => $bayar_bulanan[0]->jumlah_berbayar, //C
  124. 'jumlah_kompaun_bayar' => $bayar_bulanan[0]->keping_berbayar, //D
  125. 'kutipan_terkumpul' => $kutipan_terkumpul, //E
  126. 'baki_tunggakan' => $baki_tunggakan, //F
  127. 'baki_belum_bayar' => $keping_tunggakan, //G
  128. 'jumlah_kurang' => $bayar_bulanan[0]->jumlah_pengurangan, //H
  129. '_kutipan' => number_format((float)$peratus_kutipan, 3, '.', ''), //I
  130. '_terkumpul' => number_format((float)$peratus_terkumpul, 3, '.', ''), //J
  131. ));
  132. }
  133. $kompaun_j = $tertunggak[0]->jumlah_kompaun;
  134. $kompaun_k = $tertunggak[0]->keping_kompaun;
  135. }
  136. }
  137. return \DataTables::of($looping_month)->make(true);
  138. }
  139. }