From 1467d0880f27fb4542039f50026773917f4de8be Mon Sep 17 00:00:00 2001 From: Jia Sheng Date: Mon, 22 Jul 2024 00:46:07 +0800 Subject: [PATCH] update bill group to include the service charge --- .../CreateSupplierBillGroupLogic.php | 2 +- .../CreateSupplierTransactionLogic.php | 13 ++--- .../ControllersLogic/UpdateGroupLogic.php | 2 +- .../CalculatesBillGroupPaymentAmount.php | 2 +- ...eBillGroupAndGroupToIncludeTransferFee.php | 11 ++-- .../BillGroupPaymentSummaryComponent.vue | 54 ++++++++++--------- .../BillGroupListSectionComponent.vue | 4 +- 7 files changed, 48 insertions(+), 40 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierBillGroupLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierBillGroupLogic.php index 6213f55f..d1c94713 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierBillGroupLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierBillGroupLogic.php @@ -139,7 +139,7 @@ class CreateSupplierBillGroupLogic extends AbstractControllerLogic $billGroup->issuer = $supplier->id; $billGroup->receiver = 1; $billGroup->reference = $this->generatesTransactionBillNumber->execute('BSPO-'); - $billGroup->amount = $amount; + $billGroup->amount = $amount + $service_charges; $billGroup->original_amount = $original_amount; $billGroup->currency_id = 1; $billGroup->original_currency_id = $payments[0]['original_currency']['id']; diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php index ca0f77fd..a9297894 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php @@ -28,7 +28,8 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic /** * @return array */ - protected function notification():array { + protected function notification(): array + { return [ 'title' => 'Create Supplier Transactions', 'message' => 'You have successfully created currency supplier transactions' @@ -73,7 +74,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic $this->fetchesTransaction = $fetchesTransaction; } - public function logic(Request $request) : JsonResponse + public function logic(Request $request): JsonResponse { $supplier = $this->fetchesCompany->execute(['id' => $request->route('id')]); @@ -83,7 +84,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic $payments = $request->input('payments'); // todo-refund: activate this for partial refund - foreach($payments as $payment){ + foreach ($payments as $payment) { $payment = $this->fetchesTransaction->execute(['id' => $payment['id']]); $pendingRefundRequest = $payment->transactions()->refunds()->where('status', ApprovalStatus::PENDING_VERIFICATION)->first(); @@ -101,7 +102,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic $this->createSupplierTransactionProcessor->execute($supplier, $rate, $payments); - if(!count($this->createSupplierTransactionProcessor->getBills())) return $this->response([]); + if (!count($this->createSupplierTransactionProcessor->getBills())) return $this->response([]); $group = new Group(); $group->save(); @@ -131,7 +132,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic $transferFee = (float)$this->createSupplierTransactionProcessor->getTransferTransactions()->sum('service_charge'); $original_amount += $transferFee; - $amount += $transferFee / $currency_rate; + $amount = $amount + ($transferFee / $currency_rate) + $service_charge; $group->issuer = $issuer; $group->receiver = $receiver; @@ -150,7 +151,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic $object = new DocumentObject( DocumentType::CURRENCY_VENDOR_ORDER, - [chunk_split('data:application/pdf;base64,'.base64_encode($pdf->output()))], + [chunk_split('data:application/pdf;base64,' . base64_encode($pdf->output()))], '', ApprovalStatus::COMPLETED, 'currency_vendor_order' diff --git a/app/Classes/Modules/Transactions/ControllersLogic/UpdateGroupLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/UpdateGroupLogic.php index b7ca280e..431e1867 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/UpdateGroupLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/UpdateGroupLogic.php @@ -224,7 +224,7 @@ class UpdateGroupLogic extends AbstractControllerLogic $group->issuer = $supplier->id; $group->original_amount = $group->transactions()->sum('original_amount') + ((float)$transferFeeTransactions->sum('service_charge') + (float)$group_transfer_fee_original_amount); - $group->amount = $group->transactions()->sum('amount') + (((float)$transferFeeTransactions->sum('service_charge') + (float)$group_transfer_fee_original_amount) / $rate); + $group->amount = $group->transactions()->sum('amount') + (((float)$transferFeeTransactions->sum('service_charge') + (float)$group_transfer_fee_original_amount) / $rate) + $group->transactions()->sum('service_charge'); $group->currency_rate = $rate; $group->tax = $group->transactions()->sum('tax'); $group->service_charge = $group->transactions()->sum('service_charge'); diff --git a/app/Classes/Modules/Transactions/Services/CalculatesBillGroupPaymentAmount.php b/app/Classes/Modules/Transactions/Services/CalculatesBillGroupPaymentAmount.php index f41de813..7f2530c0 100644 --- a/app/Classes/Modules/Transactions/Services/CalculatesBillGroupPaymentAmount.php +++ b/app/Classes/Modules/Transactions/Services/CalculatesBillGroupPaymentAmount.php @@ -12,7 +12,7 @@ class CalculatesBillGroupPaymentAmount $bill_refund_amount = round(floatval($billGroup->billRefunds->sum('amount')), 7); $floating_amount = round(floatval($billGroup->transactions()->whereIn('status', [ApprovalStatus::PENDING_SUBMISSION, ApprovalStatus::PENDING_VERIFICATION])->sum('amount')), 7); $paid_amount = round(floatval($billGroup->transactions()->where('status', ApprovalStatus::APPROVED)->sum('amount')), 7); - $outstanding_amount = $billGroup->amount - $bill_refund_amount - $paid_amount - $floating_amount + $billGroup->service_charge; + $outstanding_amount = $billGroup->amount - $bill_refund_amount - $paid_amount - $floating_amount; $outstanding_amount = round($outstanding_amount, 7); return [ diff --git a/app/Console/Commands/UpdateBillGroupAndGroupToIncludeTransferFee.php b/app/Console/Commands/UpdateBillGroupAndGroupToIncludeTransferFee.php index da689d70..7b3508c7 100644 --- a/app/Console/Commands/UpdateBillGroupAndGroupToIncludeTransferFee.php +++ b/app/Console/Commands/UpdateBillGroupAndGroupToIncludeTransferFee.php @@ -53,7 +53,7 @@ class UpdateBillGroupAndGroupToIncludeTransferFee extends Command { // update group to include transfer fee - $groups = Group::all(); + $groups = Group::where('created_at', '>=', '2024-06-01')->get(); foreach ($groups as $group) { $group_transfer_fee = 0; @@ -70,7 +70,7 @@ class UpdateBillGroupAndGroupToIncludeTransferFee extends Command $correctOriginalAmount = $correctOriginalAmount + $originalTransferFees + $group_transfer_fee; $correctAmount = $group->transactions()->sum('amount'); $transferFees = $originalTransferFees / $group->currency_rate; - $correctAmount = $correctAmount + $transferFees + ($group_transfer_fee / $group->currency_rate); + $correctAmount = $correctAmount + $transferFees + ($group_transfer_fee / $group->currency_rate) + $group->service_charge; if ($group->original_amount != $correctOriginalAmount || $group->amount != $correctAmount) { $group->original_amount = $correctOriginalAmount; @@ -112,15 +112,16 @@ class UpdateBillGroupAndGroupToIncludeTransferFee extends Command continue; } - $totalOriginal = $billGroup->groups()->sum('original_amount'); - $total = $billGroup->groups()->sum('amount'); + $totalOriginal = round($billGroup->groups()->sum('original_amount'), 2); + $total = round($billGroup->groups()->sum('amount') + $billGroup->service_charge, 2); // update bill group payment transaction amount if there is only 1 payment transaction $payment_transactions = $billGroup->transactions()->whereIn('status', [ApprovalStatus::PENDING_SUBMISSION, ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->get(); if ($payment_transactions->count() === 1) { $payment_transaction = $payment_transactions->first(); - if ($payment_transaction->amount === $billGroup->amount) { + + if ($payment_transaction->amount - ($billGroup->amount + $billGroup->service_charge) < 0.01) { $payment_transaction->original_amount = $total; $payment_transaction->amount = $total; $payment_transaction->save(); diff --git a/resources/assets/vue/components/bookings/elements/BillGroupPaymentSummaryComponent.vue b/resources/assets/vue/components/bookings/elements/BillGroupPaymentSummaryComponent.vue index f84541d1..9801d037 100644 --- a/resources/assets/vue/components/bookings/elements/BillGroupPaymentSummaryComponent.vue +++ b/resources/assets/vue/components/bookings/elements/BillGroupPaymentSummaryComponent.vue @@ -19,7 +19,7 @@
-
{{selectedBillGroup.currency.short_code}} {{formatAmount(selectedBillGroup.amount)}}
+
{{selectedBillGroup.currency.short_code}} {{formatAmount(selectedBillGroup.amount - selectedBillGroup.service_charge)}}
MYR 0.00
@@ -49,38 +49,40 @@
-
Paid Total:
+
Paid Total:
-
{{selectedBillGroup.currency.short_code}} {{ formatAmount(selectedBillGroup.paid_amount) }}
+
{{selectedBillGroup.currency.short_code}} {{ formatAmount(selectedBillGroup.paid_amount) }}
-
MYR 0.00
+
MYR 0.00
-
-
-
Floating Amount:
+
+
+
+
Floating Amount:
+
+
+
{{selectedBillGroup.currency.short_code}} {{ formatAmount(selectedBillGroup.floating_amount) }}
+
+
+
MYR 0.00
+
-
-
{{selectedBillGroup.currency.short_code}} {{ formatAmount(selectedBillGroup.floating_amount) }}
-
-
-
MYR 0.00
+
+
+
OutStanding Total:
+
+
+
{{selectedBillGroup.currency.short_code}} {{ formatAmount(selectedBillGroup.outstanding_amount) }}
+
+
+
MYR 0.00
+
-
-
-
OutStanding Total:
-
-
-
{{selectedBillGroup.currency.short_code}} {{ formatAmount(selectedBillGroup.outstanding_amount) }}
-
-
-
MYR 0.00
-
-
-
+
@@ -129,6 +131,10 @@ type: Function, required: true }, + section:{ + type: String, + required: true + }, }, watch: { selectedBillGroup(){ diff --git a/resources/assets/vue/components/bookings/sections/BillGroupListSectionComponent.vue b/resources/assets/vue/components/bookings/sections/BillGroupListSectionComponent.vue index 18aa285f..66f5711e 100644 --- a/resources/assets/vue/components/bookings/sections/BillGroupListSectionComponent.vue +++ b/resources/assets/vue/components/bookings/sections/BillGroupListSectionComponent.vue @@ -66,8 +66,8 @@
-
- +
+