Update Import Billing & Invoice

This commit is contained in:
ivan-sim
2024-05-21 17:01:56 +07:00
parent 81311928da
commit 6fef852e2c
5 changed files with 251 additions and 18 deletions

View File

@@ -22,6 +22,8 @@ use Carbon\Carbon;
use Maatwebsite\Excel\Facades\Excel;
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
use Box\Spout\Writer\Common\Creator\Style\StyleBuilder;
use Box\Spout\Common\Entity\Style\CellAlignment;
use Exception;
@@ -212,7 +214,7 @@ class RequestLogController extends Controller
});
return Helper::responseJson(data: $manipulatedIcds);
}
public function hospitals(){
$organizations = Organization::query()
->where([
@@ -330,7 +332,7 @@ class RequestLogController extends Controller
// Hapus semua manfaat log permintaan terkait
RequestLogBenefit::where('request_log_id', $id)->delete();
return response()->json([
'error' => false,
'message' => 'Delete Final LOG',
@@ -461,7 +463,7 @@ class RequestLogController extends Controller
// if($requestLog->service_code != 'IP'){
// $requestLog->discharge_date = Carbon::now();
// }
$requestLog->save();
@@ -670,6 +672,181 @@ class RequestLogController extends Controller
];
}
public function importInvoice(Request $request)
{
if ($request->hasFile('file')) {
$file = $request->file('file');
$data = Excel::toArray([], $file);
$processedData = $this->processCategoryNames($data);
$importedRows = 0;
$result_rows = [];
$failedRows = [];
foreach ($processedData as $row) {
if($row['code'])
{
try {
$affectedRows = DB::table('request_logs')
->where('code','=', $row['code'])
->update([
'invoice_no' => $row['invoice_no'],
'billing_no' => $row['billing_no'],
]);
if ($affectedRows === 0) {
$row['code_error'] = '500';
$row['error'] = 'Gagal update karena data sudah ada ';
$result_rows[] = $row;
$failedRows[] = $row;
} else {
$importedRows += $affectedRows;
$row['code_error'] = '200';
$row['error'] = 'Sukses';
$result_rows[] = $row;
}
} catch (\Exception $e) {
$row['code_error'] = '500';
$row['error'] = $e->getMessage();
if(!$row['code'])
{
$row['error'] = 'Kolom Code wajib isi';
}
if(!$row['invoice_no'])
{
$row['error'] = 'No Invoice wajib isi';
}
if(!$row['billing_no'])
{
$row['error'] = 'No Billing wajib isi';
}
$result_rows[] = $row;
$failedRows[] = $row;
}
}
}
$response = [
'message' => 'File uploaded and data saved to database',
'metaData' => 'invoice',
'data' => [
'total_success_row' => $importedRows,
'total_failed_row' => count($failedRows),
'result_rows' => $result_rows,
],
];
return response()->json($response);
}
return response()->json(['error' => 'No file uploaded.']);
}
private function processCategoryNames($data)
{
$header = [];
$row = [];
for ($i = 1; $i < count($data[0]); $i++) {
$row[] = $data[0][$i];
$header[] = $data[0][0];
}
$filed = [];
foreach ($header[0] as $value)
{
$modelColumn = strtolower(preg_replace('/\s+/', '_', trim($value)));
$modelColumn = str_replace(['*', ' '], '', $modelColumn);
if($modelColumn)
{
$filed[] = $modelColumn;
}
}
$result = [];
foreach ($row as $subarray) {
$trimmedSubarray = [];
for ($i = 0; $i < count($filed); $i++) {
$trimmedSubarray[$filed[$i]] = $subarray[$i] ? $subarray[$i] : null;
}
$result[] = $trimmedSubarray;
}
return $result;
}
public function exportFiledInvoice(Request $request)
{
$writer = WriterEntityFactory::createXLSXWriter();
$writer->openToFile(public_path('files/Report-Data-Result-Import.xlsx'));
$header = [
'Code*',
'Inovice No*',
'Billing NO*',
'Ingest Code',
'Ingest Note'
];
$style = (new StyleBuilder())
->setFontBold()
// ->setFontSize(15)
// ->setFontColor(Color::BLUE)
// ->setShouldWrapText()
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$headerRow = WriterEntityFactory::createRowFromArray($header, $style);
$writer->addRow($headerRow);
// ============================
foreach($request->params as $item)
{
$rowData = [
$item['code'],
$item['invoice_no'],
$item['billing_no'],
$item['code_error'],
$item['error']
];
$style = (new StyleBuilder())
//->setFontBold()
// ->setFontSize(15)
// ->setFontColor(Color::BLUE)
// ->setShouldWrapText()
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$row = WriterEntityFactory::createRowFromArray($rowData, $style);
$writer->addRow($row);
}
$footer = [
'',
'',
'',
'',
''
];
$style = (new StyleBuilder())
->setFontBold()
// ->setFontSize(15)
// ->setFontColor(Color::BLUE)
// ->setShouldWrapText()
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$footerRow = WriterEntityFactory::createRowFromArray($footer, $style);
$writer->addRow($footerRow);
$writer->close();
return Helper::responseJson([
'file_name' => 'Report-Data-Result-Import',
"file_url" => url('files/Report-Data-Result-Import.xlsx')
]);
}
public function claimRequestDetail($claimRequestId)
{
$status = DB::table('claim_requests')
@@ -962,7 +1139,7 @@ class RequestLogController extends Controller
// Menghapus file dari penyimpanan
if (Storage::exists($path)) {
Storage::delete($path);
// Update entri file dari basis data
File::where('path', $request->path)->update([
'deleted_at' => Carbon::now(), // Gunakan Carbon untuk mendapatkan tanggal dan waktu saat ini