[WIP] ASO Payment
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Events\ClaimApproved;
|
||||
use App\Models\Claim;
|
||||
use App\Models\Icd;
|
||||
use App\Models\Member;
|
||||
@@ -111,22 +112,23 @@ class ClaimService{
|
||||
// $policy = $member->currentPolicy;
|
||||
// $corporate = $member->currentCorporate;
|
||||
$benefit = $member->currentPlan->benefits()->where('code', $benefit_code)->first();
|
||||
$corporateBenefit = $member->currentPlan->corporateBenefits()->where('benefit_id', $benefit->id)->first();
|
||||
|
||||
// dd($benefit->toArray());
|
||||
// dd(compact(['plan', 'policy', 'corporate', 'benefit']));
|
||||
$limits = [
|
||||
'total_limit' => $benefit->limit_amount,
|
||||
'frequency_limit_name' => $benefit->max_frequency_period_name,
|
||||
'frequency_limit' => $benefit->max_frequency,
|
||||
'total_limit' => $corporateBenefit ? $corporateBenefit->limit_amount : 0,
|
||||
'frequency_limit_name' => $corporateBenefit ? $corporateBenefit->max_frequency_period_name : null,
|
||||
'frequency_limit' => $corporateBenefit ? $corporateBenefit->max_frequency : 0,
|
||||
'total_claim' => 0,
|
||||
'remaining_limit' => $benefit->limit_amount,
|
||||
'remaining_limit' => $corporateBenefit ? $corporateBenefit->limit_amount : 0,
|
||||
'usage_daily' => null,
|
||||
'usage_weekly' => null,
|
||||
'usage_monthly' => null,
|
||||
'usage_yearly' => null
|
||||
];
|
||||
|
||||
switch ($benefit->max_frequency_period) {
|
||||
switch ($corporateBenefit->max_frequency_period) {
|
||||
case(0) :
|
||||
$limits['usage_yearly'] = $member->claims()->used(Carbon::now()->firstOfYear(), now())->count();
|
||||
$limits['total_claim'] = $member->claims()->used(Carbon::now()->firstOfYear(), now())->sum('total_claim');
|
||||
@@ -151,7 +153,7 @@ class ClaimService{
|
||||
// return null;
|
||||
break;
|
||||
}
|
||||
$limits['remaining_limit'] = $benefit->limit_amount - $limits['total_claim'];
|
||||
$limits['remaining_limit'] = $corporateBenefit->limit_amount - $limits['total_claim'];
|
||||
|
||||
return $limits;
|
||||
}
|
||||
@@ -170,20 +172,11 @@ class ClaimService{
|
||||
'benefit_id' => $benefit->id,
|
||||
'status' => $status
|
||||
];
|
||||
$claimData[$status.'_at'] = now();
|
||||
$claimData[$status.'_by'] = auth()->user()->id ?? null;
|
||||
// $claimData[$status.'_at'] = now();
|
||||
// $claimData[$status.'_by'] = auth()->user()->id ?? null;
|
||||
|
||||
$claim = Claim::create($claimData);
|
||||
|
||||
$policy = $member->currentPolicy;
|
||||
$policy->limitJournals()->create([
|
||||
'previous_balance' => $policy->limit_balance,
|
||||
'total_credit' => $totalClaim,
|
||||
'type' => 'credit',
|
||||
'balance' => bcsub($policy->limit_balance, $totalClaim),
|
||||
'description' => 'Log for Claim #'. $claim->code,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
return $claim;
|
||||
} catch (\Exception $error) {
|
||||
@@ -192,4 +185,23 @@ class ClaimService{
|
||||
throw new \Exception($error);
|
||||
}
|
||||
}
|
||||
|
||||
// public static function claimApprove(Claim $claim)
|
||||
// {
|
||||
// if (!in_array($claim->status, ['approved', 'paid', 'declined'])) {
|
||||
|
||||
// // Only Update Claim is not approved yet
|
||||
// if (empty($claim->approved_at)) {
|
||||
// $claim->approved_at = now();
|
||||
// $claim->status = 'approved';
|
||||
|
||||
// $claim->save();
|
||||
|
||||
// ClaimApproved::dispatch($claim);
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
// return false;
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user