Fix a problem reported by Joanne about group payment invoices not appearing properly

This commit is contained in:
Dillon Ngo
2026-02-12 15:44:05 +08:00
parent 20e7e19bc6
commit 7faeec6ef7
3 changed files with 54 additions and 1 deletions
@@ -5,6 +5,7 @@ namespace App\Classes\Modules\Transactions\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Transactions\Services\ListsGroups;
use App\Http\Resources\GroupPaidInvoicesPNBPageResource;
use App\Http\Resources\GroupPendingInvoicesPNBPageResource;
use App\Http\Resources\GroupResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -45,6 +46,9 @@ class ListGroupsLogic extends AbstractControllerLogic
if($section === 'customerPaidGroupInvoiceComponent'){
return $this->collectionResponse(GroupPaidInvoicesPNBPageResource::collection($query));
}
else if($section === 'customerGroupPaymentInProgressInvoiceComponent'){
return $this->collectionResponse(GroupPendingInvoicesPNBPageResource::collection($query));
}
else{
return $this->collectionResponse(GroupResource::collection($query));
}
@@ -0,0 +1,49 @@
<?php
namespace App\Http\Resources;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\PaymentMethodType;
use App\Models\Transaction;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
//PNB - Payment And Billing Page
//Class based on GroupResource.php
class GroupPendingInvoicesPNBPageResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
$payment_transaction = Transaction::where('payment_reference', $this->reference)->first();
return [
'id' => $this->id,
'original_amount' => (float) $this->original_amount,
'original_currency' => new CurrencyResource($this->original_currency),
'issuer_name' => $this->issuerCompany->name,
'issuer_id' => $this->issuerCompany->id,
'amount' => (float) $this->amount,
'service_charge' => (float) $this->amount,
'currency' => new CurrencyResource($this->currency),
'created_at' => Carbon::parse($this->created_at)->format('d-m-Y h:i:s A'),
'currency_rate' => (float) $this->currency_rate,
'status' => $this->status,
'status_name' => ApprovalStatus::APPROVAL_STATUS_ID[$this->status],
'payment_method' => $this->payment_method,
'payment_method_name' => ucwords(PaymentMethodType::PAYMENT_METHODS_ID[$this->payment_method]),
'reference' => $this->reference,
'payment_transaction' => $payment_transaction ? [
'id' => $payment_transaction->id,
'status' => $payment_transaction->status,
'status_name' => ApprovalStatus::APPROVAL_STATUS_ID[$payment_transaction->status],
'documents' => $this->status === ApprovalStatus::APPROVED ? DocumentResource::collection($payment_transaction->documents->where('status', ApprovalStatus::APPROVED)) : DocumentResource::collection($payment_transaction->documents->where('status', ApprovalStatus::PENDING_VERIFICATION)),
] : []
];
}
}