Add tabbable views in billplz transaction summary logic
This commit is contained in:
@@ -14,7 +14,24 @@ class BillplzTransactionSummaryController extends Controller
|
||||
$transactionDataPKB = collect( Http::arrahn()->get('/api/transaction/online/query', ['date' => $date, 'status' => 'paid'])->json() );
|
||||
$transactionDataKOOP = collect( Http::arrahn_koop()->get('/api/transaction/online/query', ['date' => $date, 'status' => 'paid'])->json() );
|
||||
$transactionData = $transactionDataPKB->merge($transactionDataKOOP);
|
||||
|
||||
|
||||
$transactionDataPKB = $this->processArrahnTransactions($transactionDataPKB);
|
||||
$transactionDataKOOP = $this->processArrahnTransactions($transactionDataKOOP);
|
||||
$transactionData = $this->processArrahnTransactions($transactionData);
|
||||
|
||||
$billIds = $transactionData->keys();
|
||||
$billIds = $billIds->toArray();
|
||||
$billplzBills = Http::get(config('api.url_arrahn_portal') . '/api/billplz', ['bill_ids' => json_encode($billIds)])->json();
|
||||
|
||||
$data = array_map(fn($x, $y) => $this->processBillplzBills($x, $y), $billplzBills, [$transactionDataKOOP, $transactionDataPKB]);
|
||||
|
||||
[$billPlzTransactionSummaryPKB, $billPlzTransactionSummaryKOOP] = $data;
|
||||
|
||||
return view('online.billplz-transaction-summary.index', compact('billPlzTransactionSummaryPKB' ,'billPlzTransactionSummaryKOOP', 'date'));
|
||||
}
|
||||
|
||||
public function processArrahnTransactions($transactionData)
|
||||
{
|
||||
// Group transactionData by bill_id
|
||||
$transactionData = $transactionData->groupBy(function($transaction) {
|
||||
return $transaction['billplz_id'];
|
||||
@@ -23,15 +40,18 @@ class BillplzTransactionSummaryController extends Controller
|
||||
$transactionData = array_map(fn($x) => ['arrahn_transactions' => $x], $transactionData);
|
||||
$transactionData = collect($transactionData);
|
||||
|
||||
$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) {
|
||||
return $transactionData;
|
||||
}
|
||||
|
||||
public function processBillplzBills($bills_group, $transactionData)
|
||||
{
|
||||
$bills_group = collect($bills_group)->map(function($bill) {
|
||||
$bill['paid_amount_formatted'] = floatval($bill['paid_amount']['amount']) / 100;
|
||||
return $bill;
|
||||
});
|
||||
|
||||
$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']);
|
||||
$sumOfBillplzTransactions = collect($bills_group)->sum(fn($x) => $x['paid_amount_formatted']);
|
||||
$numberOfArrahnTransactions = $transactionData->count();
|
||||
|
||||
$paymentGatewayCost = 'RM ' . number_format($sumOfBillplzTransactions - $sumOfArrahnTransactions, 2);
|
||||
@@ -39,20 +59,25 @@ class BillplzTransactionSummaryController extends Controller
|
||||
$sumOfBillplzTransactions = 'RM ' . number_format($sumOfBillplzTransactions, 2);
|
||||
|
||||
|
||||
if ($transactionData->count() !== count($billplzBills)) {
|
||||
throw new \Exception("The number of items in transactionData and billplzBills must be the same.");
|
||||
if ($transactionData->count() !== count($bills_group)) {
|
||||
throw new \Exception("The number of items in transactionData and bills_group must be the same.");
|
||||
}
|
||||
|
||||
$billPlzTransactionSummary = $transactionData->zip($billplzBills)->map(function ($zippedItem) {
|
||||
$billPlzTransactionSummary = $transactionData->zip($bills_group)->map(function ($zippedItem) {
|
||||
[$transactionData, $billplzBill] = $zippedItem;
|
||||
|
||||
$transactionData['billplz_bill'] = $billplzBill;
|
||||
|
||||
return $transactionData;
|
||||
});
|
||||
|
||||
|
||||
return view('online.billplz-transaction-summary.index', compact( 'billPlzTransactionSummary', 'sumOfArrahnTransactions', 'sumOfBillplzTransactions', 'paymentGatewayCost', 'numberOfArrahnTransactions', 'date'));
|
||||
|
||||
return[
|
||||
'billPlzTransactionSummary' => $billPlzTransactionSummary,
|
||||
'sumOfArrahnTransactions' => $sumOfArrahnTransactions,
|
||||
'sumOfBillplzTransactions' => $sumOfBillplzTransactions,
|
||||
'paymentGatewayCost' => $paymentGatewayCost,
|
||||
'numberOfArrahnTransactions' => $numberOfArrahnTransactions,
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
</breadcrumb>
|
||||
|
||||
|
||||
<div>
|
||||
<div class="flex mb-4 border-b border-gray-200">
|
||||
<div class="container p-4 mx-auto">
|
||||
<div class="flex mb-0 border-b border-gray-200">
|
||||
<button class="flex items-center tab-button active" data-tab="pkb-transactions-summary">
|
||||
<span>PKB (v2)</span>
|
||||
</button>
|
||||
@@ -27,20 +27,20 @@
|
||||
<div class="container px-4 mx-auto">
|
||||
<div class="flex flex-col items-center">
|
||||
<div class="flex flex-row mt-6 space-x-4">
|
||||
<x-card title="Sum of Billplz Transactions" subtitle="{{ $sumOfBillplzTransactions }}"></x-card>
|
||||
<x-card title="Sum of Billplz Transactions" subtitle="{{ $billPlzTransactionSummaryPKB['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>
|
||||
<x-card title="Sum of Arrahn Transactions" subtitle="{{ $billPlzTransactionSummaryPKB['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>
|
||||
<x-card title="Payment Gateway Cost" subtitle="{{ $billPlzTransactionSummaryPKB['paymentGatewayCost'] }}"></x-card>
|
||||
</div>
|
||||
<hr class="w-full my-4 border-b-2 border-gray-300 border-solid">
|
||||
<div class="flex flex-row mb-6 space-x-4">
|
||||
<x-card title="No of Arrahn Transactions" subtitle="{{ $numberOfArrahnTransactions }}"></x-card>
|
||||
<x-card title="No of Arrahn Transactions" subtitle="{{ $billPlzTransactionSummaryPKB['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>
|
||||
subtitle="RM {{ number_format(($billPlzTransactionSummaryPKB['numberOfArrahnTransactions'] * 100) / 100, 2) }}"></x-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -52,7 +52,7 @@
|
||||
<x-table.header content="Transaction Billplz" />
|
||||
</x-slot>
|
||||
<x-slot name="body">
|
||||
@forelse ($billPlzTransactionSummary as $data)
|
||||
@forelse ($billPlzTransactionSummaryPKB['billPlzTransactionSummary'] as $data)
|
||||
<tr>
|
||||
<x-table.data :content="$loop->iteration" />
|
||||
<x-table.data :content="$data['billplz_bill']['id']" />
|
||||
@@ -118,20 +118,20 @@
|
||||
<div class="container px-4 mx-auto">
|
||||
<div class="flex flex-col items-center">
|
||||
<div class="flex flex-row mt-6 space-x-4">
|
||||
<x-card title="Sum of Billplz Transactions" subtitle="{{ $sumOfBillplzTransactions }}"></x-card>
|
||||
<x-card title="Sum of Billplz Transactions" subtitle="{{ $billPlzTransactionSummaryKOOP['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>
|
||||
<x-card title="Sum of Arrahn Transactions" subtitle="{{ $billPlzTransactionSummaryKOOP['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>
|
||||
<x-card title="Payment Gateway Cost" subtitle="{{ $billPlzTransactionSummaryKOOP['paymentGatewayCost'] }}"></x-card>
|
||||
</div>
|
||||
<hr class="w-full my-4 border-b-2 border-gray-300 border-solid">
|
||||
<div class="flex flex-row mb-6 space-x-4">
|
||||
<x-card title="No of Arrahn Transactions" subtitle="{{ $numberOfArrahnTransactions }}"></x-card>
|
||||
<x-card title="No of Arrahn Transactions" subtitle="{{ $billPlzTransactionSummaryKOOP['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>
|
||||
subtitle="RM {{ number_format(($billPlzTransactionSummaryKOOP['numberOfArrahnTransactions'] * 100) / 100, 2) }}"></x-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -143,7 +143,7 @@
|
||||
<x-table.header content="Transaction Billplz" />
|
||||
</x-slot>
|
||||
<x-slot name="body">
|
||||
@forelse ($billPlzTransactionSummary as $data)
|
||||
@forelse ($billPlzTransactionSummaryKOOP['billPlzTransactionSummary'] as $data)
|
||||
<tr>
|
||||
<x-table.data :content="$loop->iteration" />
|
||||
<x-table.data :content="$data['billplz_bill']['id']" />
|
||||
|
||||
Reference in New Issue
Block a user