[WIP] ASO Payment

This commit is contained in:
R
2023-01-05 18:28:45 +07:00
parent 0fdad5a6c2
commit 804ac883fa
41 changed files with 882 additions and 177 deletions

View File

@@ -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;
// }
}