Fix calculation of billplz transaction summary

This commit is contained in:
Afiq Hamzah
2024-08-13 13:20:02 +08:00
parent f2b7168252
commit a69402f68a
2 changed files with 36 additions and 29 deletions
@@ -15,14 +15,14 @@ class BillplzTransactionSummaryController extends Controller
$transactionData = array_map(fn($x) => ['arrahn_transactions' => $x], $transactionData);
$transactionData = collect($transactionData);
$billIds = $transactionData->pluck('arrahn_transactions.billplz_id');
$billIds = $transactionData->keys();
$billplzBills = Http::get(config('api.url_arrahn_portal') . '/api/billplz', ['bill_ids' => json_encode($billIds)])->json();
$billplzBills = collect($billplzBills)->map(function($bill) {
$bill['paid_amount_formatted'] = floatval($bill['paid_amount']['amount']) / 100;
return $bill;
});
$sumOfArrahnTransactions = $transactionData->sum(fn($x) => $x['arrahn_transactions']['total_payment']);
$sumOfArrahnTransactions = $transactionData->sum(fn($x) => array_reduce($x['arrahn_transactions'], fn($carry, $item) => $carry + $item['total_payment'], 0));
$sumOfBillplzTransactions = collect($billplzBills)->sum(fn($x) => $x['paid_amount_formatted']);
$numberOfArrahnTransactions = $transactionData->count();
@@ -35,7 +35,7 @@ class BillplzTransactionSummaryController extends Controller
throw new \Exception("The number of items in transactionData and billplzBills must be the same.");
}
$billPlzTransactionReview = $transactionData->zip($billplzBills)->map(function ($zippedItem) {
$billPlzTransactionSummary = $transactionData->zip($billplzBills)->map(function ($zippedItem) {
[$transactionData, $billplzBill] = $zippedItem;
$transactionData['billplz_bill'] = $billplzBill;
@@ -44,7 +44,7 @@ class BillplzTransactionSummaryController extends Controller
});
return view('online.billplz-transaction-summary.index', compact( 'billPlzTransactionReview', 'sumOfArrahnTransactions', 'sumOfBillplzTransactions', 'paymentGatewayCost', 'numberOfArrahnTransactions', 'date'));
return view('online.billplz-transaction-summary.index', compact( 'billPlzTransactionSummary', 'sumOfArrahnTransactions', 'sumOfBillplzTransactions', 'paymentGatewayCost', 'numberOfArrahnTransactions', 'date'));
}
}
@@ -10,23 +10,28 @@
</breadcrumb>
<div class="container mx-auto p-4 bg-yellow-50">
<x-filter-date-card title="Billplz Transaction Summary" action="{{ route('transaction.online.billplz-transaction-summary.index') }}" :selectedDate="$date" />
<x-filter-date-card title="Billplz Transaction Summary"
action="{{ route('transaction.online.billplz-transaction-summary.index') }}" :selectedDate="$date" />
<div class="flex flex-row space-x-4 mt-6">
<x-card title="Sum of Billplz Transactions" subtitle="{{ $sumOfBillplzTransactions }}"></x-card>
<div class="flex items-center"><span class="text-5xl font-bold">-</span></div>
<x-card title="Sum of Arrahn Transactions" subtitle="{{ $sumOfArrahnTransactions }}"></x-card>
<div class="flex items-center"><span class="text-5xl font-bold"> = </span></div>
<x-card title="Payment Gateway Cost" subtitle="{{ $paymentGatewayCost }}"></x-card>
</div>
<hr class="border-b-2 border-gray-300 border-solid my-4">
<div class="flex flex-row space-x-4 mb-6">
<x-card title="No of Arrahn Transactions" subtitle="{{ $numberOfArrahnTransactions }}"></x-card>
<div class="flex items-center"><span class="text-5xl font-bold">x</span></div>
<x-card title="Charge Per Transaction" subtitle="RM 1.00"></x-card>
<div class="flex items-center"><span class="text-5xl font-bold"> = </span></div>
<x-card title="Payment Gateway Cost" subtitle="RM {{ number_format($numberOfArrahnTransactions * 100 / 100, 2) }}"></x-card>
<div class="container mx-auto px-4">
<div class="flex flex-col items-center">
<div class="flex flex-row space-x-4 mt-6">
<x-card title="Sum of Billplz Transactions" subtitle="{{ $sumOfBillplzTransactions }}"></x-card>
<div class="flex items-center"><span class="text-5xl font-bold">-</span></div>
<x-card title="Sum of Arrahn Transactions" subtitle="{{ $sumOfArrahnTransactions }}"></x-card>
<div class="flex items-center"><span class="text-5xl font-bold"> = </span></div>
<x-card title="Payment Gateway Cost" subtitle="{{ $paymentGatewayCost }}"></x-card>
</div>
<hr class="border-b-2 border-gray-300 border-solid my-4 w-full">
<div class="flex flex-row space-x-4 mb-6">
<x-card title="No of Arrahn Transactions" subtitle="{{ $numberOfArrahnTransactions }}"></x-card>
<div class="flex items-center"><span class="text-5xl font-bold">x</span></div>
<x-card title="Charge Per Transaction" subtitle="RM 1.00"></x-card>
<div class="flex items-center"><span class="text-5xl font-bold"> = </span></div>
<x-card title="Payment Gateway Cost"
subtitle="RM {{ number_format(($numberOfArrahnTransactions * 100) / 100, 2) }}"></x-card>
</div>
</div>
</div>
<x-table>
<x-slot name="header">
@@ -35,33 +40,35 @@
<x-table.header content="Transaction Billplz" />
</x-slot>
<x-slot name="body">
@forelse ($billPlzTransactionReview as $data)
@forelse ($billPlzTransactionSummary as $data)
<tr>
<x-table.data :content="$data['billplz_bill']['id']" />
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3 text-gray-900 whitespace-no-wrap">
@foreach ($data['arrahn_transactions'] as $arrahn_transaction)
<div class="flex items-center">
<div class="ml-3 text-gray-900 whitespace-no-wrap">
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
status : <span
class="inline-block bg-green-600 text-white px-2 py-0.5 rounded text-xs font-medium">{{ $data['arrahn_transactions']['status'] }}</span>
class="inline-block bg-green-600 text-white px-2 py-0.5 rounded text-xs font-medium">{{ $arrahn_transaction['status'] }}</span>
<br>
total_payment:
{{ number_format((float) $data['arrahn_transactions']['total_payment'], 2, '.', '') }}<br>
norujukan: {{ $data['arrahn_transactions']['norujukan'] }}
{{ number_format((float) $arrahn_transaction['total_payment'], 2, '.', '') }}<br>
norujukan: {{ $arrahn_transaction['norujukan'] }}
</p>
<br>
<p class="text-gray-900 whitespace-no-wrap">
kodcaw: {{ $data['arrahn_transactions']['kodcaw'] }} <br>
customer_name: {{ $data['arrahn_transactions']['customer_name'] }} <br>
kodcaw: {{ $arrahn_transaction['kodcaw'] }} <br>
customer_name: {{ $arrahn_transaction['customer_name'] }} <br>
</p>
</div>
</div>
<br>
</div>
</div>
</div>
@endforeach
</td>
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">