967fbf1da3
- Change header columns - Change column positions - Add config to exclude certain cawangan in report stok audit
93 lines
3.2 KiB
PHP
93 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Reports;
|
|
use App\Cawangan;
|
|
use App\Helper;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
|
|
class StokAuditController extends Controller
|
|
{
|
|
|
|
public function getActiveCawanganConnections()
|
|
{
|
|
$cawangan_details = Cawangan::select(['details_caw', 'mysql'])->get();
|
|
|
|
$cawangan_details = $cawangan_details->filter(fn($x) => !in_array(strtolower($x->details_caw), config('report.excluded_cawangan')));
|
|
|
|
$connection_active_cawangan = Helper::getActiveCawanganDbConnection();
|
|
|
|
return collect($cawangan_details->filter(fn($x) => in_array($x->mysql, $connection_active_cawangan)));
|
|
|
|
}
|
|
|
|
public function buildStokAuditModel($month)
|
|
{
|
|
// Create the class name dynamically based on the number
|
|
$className = 'App\StokAudit' . $month;
|
|
|
|
// Ensure the class exists
|
|
if (!class_exists($className)) {
|
|
abort(404);
|
|
}
|
|
|
|
$model = new $className();
|
|
|
|
return $model;
|
|
}
|
|
|
|
public function getSummaryLaporanStokAudit(Request $request)
|
|
{
|
|
$month = $request->month;
|
|
$year = $request->year;
|
|
|
|
$stokAudit = $this->buildStokAuditModel($month);
|
|
$connections = $this->getActiveCawanganConnections();
|
|
|
|
$total_audit = $connections->map(function ($connection) use ($stokAudit, $year) {
|
|
$data = $stokAudit->on($connection->mysql)->where('tahun', $year)->get();
|
|
|
|
return [
|
|
'cawangan' => $connection->details_caw,
|
|
'bilangan_pembiayaan' => $data->count(),
|
|
'berat' => $data->sum('berat'),
|
|
'nilai_marhun' => $data->sum('nilaimarhun'),
|
|
'baki_pembiayaan' => $data->sum('bakipjm'),
|
|
'pembiayaan' => $data->sum('pinjaman'),
|
|
'upah_belum_bayar' => $data->sum('upahblmbyar'),
|
|
'total_utg_onepercent' => $data->sum('utgonepercent'),
|
|
'total_ujrah' => $data->sum('ujrah'),
|
|
];
|
|
});
|
|
|
|
$getTotalAcrossCawangan = function($property) use($total_audit) {
|
|
$total = array_reduce($total_audit->toArray(), function($carry, $subarray) use($property) {
|
|
return $carry + $subarray[$property];
|
|
}, 0);
|
|
|
|
return $total;
|
|
};
|
|
|
|
$total_all_cawangan_audit = [
|
|
'cawangan' => 'Total Semua Cawangan',
|
|
'bilangan_pembiayaan' => $getTotalAcrossCawangan('bilangan_pembiayaan'),
|
|
'berat' => $getTotalAcrossCawangan('berat'),
|
|
'nilai_marhun' => $getTotalAcrossCawangan('nilai_marhun'),
|
|
'baki_pembiayaan' => $getTotalAcrossCawangan('baki_pembiayaan'),
|
|
'pembiayaan' => $getTotalAcrossCawangan('pembiayaan'),
|
|
'upah_belum_bayar' => $getTotalAcrossCawangan('upah_belum_bayar'),
|
|
'total_utg_onepercent' => $getTotalAcrossCawangan('total_utg_onepercent'),
|
|
'total_ujrah' => $getTotalAcrossCawangan('total_ujrah'),
|
|
];
|
|
|
|
$total_audit->push($total_all_cawangan_audit);
|
|
|
|
if (sizeof($total_audit) == 0) {
|
|
return response()->json('failed', 200);
|
|
} else {
|
|
return response()->json($total_audit, 200);
|
|
}
|
|
}
|
|
|
|
}
|