Update Primayan Medicare report search and layout
This commit is contained in:
@@ -7,11 +7,9 @@ use App\Models\Corporate;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
||||||
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
|
||||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||||
use PhpOffice\PhpSpreadsheet\Style\Border;
|
use PhpOffice\PhpSpreadsheet\Style\Border;
|
||||||
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
||||||
@@ -62,6 +60,8 @@ class PrimayanMedicareController extends Controller
|
|||||||
$query->orWhere('members.name', 'like', "%" . $search . "%")
|
$query->orWhere('members.name', 'like', "%" . $search . "%")
|
||||||
->orWhere('members.member_id', 'like', "%" . $search . "%")
|
->orWhere('members.member_id', 'like', "%" . $search . "%")
|
||||||
->orWhere('claim_requests.code', 'like', "%" . $search . "%")
|
->orWhere('claim_requests.code', 'like', "%" . $search . "%")
|
||||||
|
->orWhere('request_logs.code', 'like', "%" . $search . "%")
|
||||||
|
->orWhere('claims.code', 'like', "%" . $search . "%")
|
||||||
->orWhere('corporate_employees.nik', 'like', "%" . $search . "%");
|
->orWhere('corporate_employees.nik', 'like', "%" . $search . "%");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@@ -173,6 +173,8 @@ class PrimayanMedicareController extends Controller
|
|||||||
$query->orWhere('members.name', 'like', "%" . $search . "%")
|
$query->orWhere('members.name', 'like', "%" . $search . "%")
|
||||||
->orWhere('members.member_id', 'like', "%" . $search . "%")
|
->orWhere('members.member_id', 'like', "%" . $search . "%")
|
||||||
->orWhere('claim_requests.code', 'like', "%" . $search . "%")
|
->orWhere('claim_requests.code', 'like', "%" . $search . "%")
|
||||||
|
->orWhere('request_logs.code', 'like', "%" . $search . "%")
|
||||||
|
->orWhere('claims.code', 'like', "%" . $search . "%")
|
||||||
->orWhere('corporate_employees.nik', 'like', "%" . $search . "%");
|
->orWhere('corporate_employees.nik', 'like', "%" . $search . "%");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@@ -226,8 +228,8 @@ class PrimayanMedicareController extends Controller
|
|||||||
mkdir(storage_path('app/public/temp'), 0755, true);
|
mkdir(storage_path('app/public/temp'), 0755, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
$writer = WriterEntityFactory::createXLSXWriter();
|
$spreadsheet = new Spreadsheet();
|
||||||
$writer->openToFile($filePath);
|
$sheet = $spreadsheet->getActiveSheet();
|
||||||
|
|
||||||
$serviceCodeMap = [
|
$serviceCodeMap = [
|
||||||
'OP' => 'Outpatient',
|
'OP' => 'Outpatient',
|
||||||
@@ -258,40 +260,55 @@ class PrimayanMedicareController extends Controller
|
|||||||
'Excess Paid',
|
'Excess Paid',
|
||||||
'Status',
|
'Status',
|
||||||
];
|
];
|
||||||
$headerRow = WriterEntityFactory::createRowFromArray($headers);
|
|
||||||
$writer->addRow($headerRow);
|
|
||||||
|
|
||||||
|
$sheet->fromArray($headers, null, 'A1');
|
||||||
|
$sheet->getStyle('A1:Q1')->applyFromArray([
|
||||||
|
'font' => [
|
||||||
|
'bold' => true,
|
||||||
|
],
|
||||||
|
'alignment' => [
|
||||||
|
'horizontal' => Alignment::HORIZONTAL_CENTER,
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$rowIndex = 2;
|
||||||
$no = 1;
|
$no = 1;
|
||||||
foreach ($results as $row) {
|
foreach ($results as $item) {
|
||||||
$serviceCode = $row->service_code ?? '-';
|
$serviceCode = $item->service_code ?? '-';
|
||||||
$serviceName = $serviceCodeMap[$serviceCode] ?? $serviceCode;
|
$serviceName = $serviceCodeMap[$serviceCode] ?? $serviceCode;
|
||||||
|
|
||||||
$rowData = [
|
$rowData = [
|
||||||
$no++,
|
$no++,
|
||||||
($row->claim_code && $row->log_code)
|
($item->claim_code && $item->log_code)
|
||||||
? $row->claim_code . ' / ' . $row->log_code
|
? $item->claim_code . ' / ' . $item->log_code
|
||||||
: ($row->claim_code ?? $row->log_code ?? $row->request_code ?? '-'),
|
: ($item->claim_code ?? $item->log_code ?? $item->request_code ?? '-'),
|
||||||
$row->member_name ?? '-',
|
$item->member_name ?? '-',
|
||||||
$row->member_number ?? '-',
|
$item->member_number ?? '-',
|
||||||
$row->nik ?? '-',
|
$item->nik ?? '-',
|
||||||
$row->birth_date ?? '-',
|
$item->birth_date ?? '-',
|
||||||
$row->gender ?? '-',
|
$item->gender ?? '-',
|
||||||
$row->plan_code ?? '-',
|
$item->plan_code ?? '-',
|
||||||
$row->benefit_name ?? $row->benefit_desc ?? '-',
|
$item->benefit_name ?? $item->benefit_desc ?? '-',
|
||||||
$serviceName,
|
$serviceName,
|
||||||
$row->provider_name ?? '-',
|
$item->provider_name ?? '-',
|
||||||
$row->request_date ?? '-',
|
$item->request_date ?? '-',
|
||||||
$row->amount_incurred ?? 0,
|
$item->amount_incurred ?? 0,
|
||||||
$row->amount_approved ?? 0,
|
$item->amount_approved ?? 0,
|
||||||
$row->amount_not_approved ?? 0,
|
$item->amount_not_approved ?? 0,
|
||||||
$row->excess_paid ?? 0,
|
$item->excess_paid ?? 0,
|
||||||
$row->status ?? '-',
|
$item->status ?? '-',
|
||||||
];
|
];
|
||||||
$dataRow = WriterEntityFactory::createRowFromArray($rowData);
|
|
||||||
$writer->addRow($dataRow);
|
$sheet->fromArray($rowData, null, 'A' . $rowIndex);
|
||||||
|
$rowIndex++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$writer->close();
|
foreach (range('A', 'Q') as $col) {
|
||||||
|
$sheet->getColumnDimension($col)->setAutoSize(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$writer = new Xlsx($spreadsheet);
|
||||||
|
$writer->save($filePath);
|
||||||
|
|
||||||
return Helper::responseJson([
|
return Helper::responseJson([
|
||||||
'file_name' => 'Primayan Medicare List ' . now()->format('Y-m-d H:i:s'),
|
'file_name' => 'Primayan Medicare List ' . now()->format('Y-m-d H:i:s'),
|
||||||
@@ -333,8 +350,15 @@ class PrimayanMedicareController extends Controller
|
|||||||
// Header Date Range (Row 1)
|
// Header Date Range (Row 1)
|
||||||
$dateRange = now()->startOfMonth()->format('j F') . ' - ' . now()->format('j F Y');
|
$dateRange = now()->startOfMonth()->format('j F') . ' - ' . now()->format('j F Y');
|
||||||
$sheet->setCellValue('A1', strtoupper($dateRange));
|
$sheet->setCellValue('A1', strtoupper($dateRange));
|
||||||
$sheet->mergeCells('A1:G1');
|
$sheet->mergeCells('A1:B1');
|
||||||
$sheet->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
$sheet->getStyle('A1')->applyFromArray([
|
||||||
|
'font' => [
|
||||||
|
'bold' => true,
|
||||||
|
],
|
||||||
|
'alignment' => [
|
||||||
|
'horizontal' => Alignment::HORIZONTAL_CENTER,
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
// Table Headers (Row 3)
|
// Table Headers (Row 3)
|
||||||
$headers = ['Code RS', 'Branch Code', 'Total Benefit', 'Deposit 10%', 'Pemakaian Benefit Obat & Rujukan', 'Pemakaian Telekonsultasi', 'Sisa Deposit'];
|
$headers = ['Code RS', 'Branch Code', 'Total Benefit', 'Deposit 10%', 'Pemakaian Benefit Obat & Rujukan', 'Pemakaian Telekonsultasi', 'Sisa Deposit'];
|
||||||
@@ -353,6 +377,9 @@ class PrimayanMedicareController extends Controller
|
|||||||
'allBorders' => [
|
'allBorders' => [
|
||||||
'borderStyle' => Border::BORDER_THIN,
|
'borderStyle' => Border::BORDER_THIN,
|
||||||
]
|
]
|
||||||
|
],
|
||||||
|
'alignment' => [
|
||||||
|
'horizontal' => Alignment::HORIZONTAL_CENTER,
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -90,8 +90,8 @@ export default function List() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<form style={{ width: '100%' }}>
|
<form style={{ width: '100%' }}>
|
||||||
<Grid container spacing={2} sx={{ justifyContent: 'space-between', alignItems: 'center' }}>
|
<Grid container spacing={2} sx={{ alignItems: 'center' }}>
|
||||||
<Grid item md={2}>
|
<Grid item xs={12} md={2.4}>
|
||||||
<TextField
|
<TextField
|
||||||
id="search-input"
|
id="search-input"
|
||||||
ref={searchInput}
|
ref={searchInput}
|
||||||
@@ -118,7 +118,7 @@ export default function List() {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item md={2}>
|
<Grid item xs={12} md={2}>
|
||||||
<FormControl fullWidth>
|
<FormControl fullWidth>
|
||||||
<InputLabel>Status</InputLabel>
|
<InputLabel>Status</InputLabel>
|
||||||
<Select
|
<Select
|
||||||
@@ -146,7 +146,7 @@ export default function List() {
|
|||||||
</FormControl>
|
</FormControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item md={2}>
|
<Grid item xs={12} md={2}>
|
||||||
<FormControl fullWidth>
|
<FormControl fullWidth>
|
||||||
<InputLabel>Provider</InputLabel>
|
<InputLabel>Provider</InputLabel>
|
||||||
<Select
|
<Select
|
||||||
@@ -172,7 +172,7 @@ export default function List() {
|
|||||||
</FormControl>
|
</FormControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item md={2}>
|
<Grid item xs={12} md={2}>
|
||||||
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
||||||
<DesktopDatePicker
|
<DesktopDatePicker
|
||||||
value={searchParams.get('start_date') || null}
|
value={searchParams.get('start_date') || null}
|
||||||
@@ -196,7 +196,7 @@ export default function List() {
|
|||||||
</LocalizationProvider>
|
</LocalizationProvider>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item md={2}>
|
<Grid item xs={12} md={2}>
|
||||||
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
||||||
<DesktopDatePicker
|
<DesktopDatePicker
|
||||||
value={searchParams.get('end_date') || null}
|
value={searchParams.get('end_date') || null}
|
||||||
@@ -220,11 +220,12 @@ export default function List() {
|
|||||||
</LocalizationProvider>
|
</LocalizationProvider>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item md={1}>
|
<Grid item xs={12} md={1.6}>
|
||||||
<LoadingButton
|
<LoadingButton
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
startIcon={<UploadIcon />}
|
startIcon={<UploadIcon />}
|
||||||
sx={{ p: 1.8 }}
|
fullWidth
|
||||||
|
sx={{ height: '56px' }}
|
||||||
onClick={handleExportClick}
|
onClick={handleExportClick}
|
||||||
loading={exportLoading}
|
loading={exportLoading}
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user