penyesuaian kode claim
This commit is contained in:
@@ -7,6 +7,9 @@ use App\Helpers\Helper;
|
|||||||
use App\Models\ClaimRequest;
|
use App\Models\ClaimRequest;
|
||||||
use App\Models\File;
|
use App\Models\File;
|
||||||
use App\Models\Member;
|
use App\Models\Member;
|
||||||
|
use App\Models\RequestLog;
|
||||||
|
use App\Models\Organization;
|
||||||
|
|
||||||
use App\Services\ClaimRequestService;
|
use App\Services\ClaimRequestService;
|
||||||
use App\Services\ClaimService;
|
use App\Services\ClaimService;
|
||||||
use Exception;
|
use Exception;
|
||||||
@@ -26,7 +29,7 @@ class ClaimRequestController extends Controller
|
|||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
* @return Renderable
|
* @return Renderable
|
||||||
*/
|
*/
|
||||||
private static $code_prefix = 'CRQ-H';
|
private static $code_prefix = 'CLAIM';
|
||||||
public function index(request $request)
|
public function index(request $request)
|
||||||
{
|
{
|
||||||
$claimRequests = ClaimRequest::query()
|
$claimRequests = ClaimRequest::query()
|
||||||
@@ -85,21 +88,26 @@ class ClaimRequestController extends Controller
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$check_claim_requests = DB::table('claim_requests')
|
$check_claim_requests = DB::table('claim_requests')
|
||||||
->where('claim_requests.request_log_id', '=', $request->request_logs_id)
|
->where('claim_requests.request_log_id', '=', $request->request_logs_id)
|
||||||
->first();
|
->first();
|
||||||
if(!$check_claim_requests)
|
if(!$check_claim_requests)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
$code = $this->getNextCode();
|
$code = $this->getNextCode($request->request_logs_id);
|
||||||
$member = Member::find($request->member_id);
|
$member = Member::find($request->member_id);
|
||||||
|
$requestLogData = RequestLog::where('id',$request->request_logs_id)->first();
|
||||||
|
$organization = Organization::where(['id' => $requestLogData->organization_id, 'type' => 'hospital'])->first('code');
|
||||||
|
$provideCode = $organization ? $organization->code : '';
|
||||||
|
|
||||||
$newClaimRequest = ClaimRequestService::storeClaimRequest(
|
$newClaimRequest = ClaimRequestService::storeClaimRequest(
|
||||||
row: [],
|
row: [],
|
||||||
code: $code,
|
code: $code,
|
||||||
member: $member,
|
member: $member,
|
||||||
paymentType: 'reimbursement',
|
paymentType: 'cashless',
|
||||||
serviceCode: $request->service_code,
|
serviceCode: $request->service_code,
|
||||||
requestLogID: $request->request_logs_id,
|
requestLogID: $request->request_logs_id,
|
||||||
|
organization_code: $provideCode,
|
||||||
);
|
);
|
||||||
// Log History
|
// Log History
|
||||||
$newClaimRequest->histories()->create([
|
$newClaimRequest->histories()->create([
|
||||||
@@ -228,21 +236,36 @@ class ClaimRequestController extends Controller
|
|||||||
return $claimRequest;
|
return $claimRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getNextCode()
|
public static function getNextCode($request_log_id = 0)
|
||||||
{
|
{
|
||||||
$last_number = ClaimRequest::withTrashed()->max('code');
|
$last_numeric_code = ClaimRequest::select(DB::raw('MAX(CAST(SUBSTRING_INDEX(code, ".", -1) AS SIGNED)) as max_numeric_code'))
|
||||||
$last_number_parts = explode('-', $last_number);
|
->whereRaw('SUBSTRING_INDEX(code, ".", -1) REGEXP "^[0-9]+$"')
|
||||||
$next_number = count($last_number_parts) < 3 ? 1 : ((int) $last_number_parts[2] + 1);
|
->value('max_numeric_code');
|
||||||
return self::makeCode($next_number);
|
// $next_number = 1;
|
||||||
|
if ($last_numeric_code) {
|
||||||
|
// // Jika ada kode sebelumnya, pecah kode dan tambahkan 1 ke angka terakhir
|
||||||
|
// $parts = explode('-', $last_code);
|
||||||
|
// $last_number = (int) end($parts);
|
||||||
|
$next_number = $last_numeric_code + 1;
|
||||||
|
} else {
|
||||||
|
$next_number = 1;
|
||||||
|
}
|
||||||
|
return self::makeCode($next_number, $request_log_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function makeCode($next_number)
|
public static function makeCode($next_number, $request_log_id)
|
||||||
{
|
{
|
||||||
// Pastikan $next_number adalah integer positif
|
// Pastikan $next_number adalah integer positif
|
||||||
$next_number = max(1, (int) $next_number);
|
$next_number = max(1, (int) $next_number);
|
||||||
|
$requestLogData = RequestLog::where('id', $request_log_id)->first();
|
||||||
|
$organization = Organization::where(['id' => $requestLogData->organization_id, 'type' => 'hospital'])->first('code');
|
||||||
|
$provideCode = $organization ? $organization->code : '';
|
||||||
|
$member = Member::with('currentCorporate')->where(['id' => $requestLogData->member_id])->first();
|
||||||
|
$sparator = '.';
|
||||||
|
$date = date('ymd');
|
||||||
// Menghasilkan kode dengan format yang diinginkan
|
// Menghasilkan kode dengan format yang diinginkan
|
||||||
return self::$code_prefix . '-' . str_pad($next_number, 5, '0', STR_PAD_LEFT);
|
return self::$code_prefix . $sparator. 'H' . $sparator. $provideCode . $sparator. $date. $sparator . $member->currentPolicy->code . $sparator. $member->member_id . $sparator. str_pad($next_number, 5, '0', STR_PAD_LEFT);
|
||||||
|
return self::$code_prefix . '.' . str_pad($next_number, 6, '0', STR_PAD_LEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_claim_requests(Request $request)
|
public function get_claim_requests(Request $request)
|
||||||
|
|||||||
Reference in New Issue
Block a user