diff --git a/app/Classes/Modules/Billplzs/ControllersLogic/CallbackBillplzLogic.php b/app/Classes/Modules/Billplzs/ControllersLogic/CallbackBillplzLogic.php index 0c48064b..eb3aec53 100644 --- a/app/Classes/Modules/Billplzs/ControllersLogic/CallbackBillplzLogic.php +++ b/app/Classes/Modules/Billplzs/ControllersLogic/CallbackBillplzLogic.php @@ -42,6 +42,9 @@ class CallbackBillplzLogic /** @var UpdatesWalletBalance */ private $updatesWalletBalance; + /** @var CreateCashBackTransactionProcessor */ + private $createCashBackTransactionProcessor; + /** * CallbackBillplzLogic constructor. * @param GetBillplzBill $getBillplzBill diff --git a/app/Classes/Modules/Bookings/ControllersLogic/CreateBookingPaymentLogic.php b/app/Classes/Modules/Bookings/ControllersLogic/CreateBookingPaymentLogic.php index ecb6a87c..fdd786e6 100644 --- a/app/Classes/Modules/Bookings/ControllersLogic/CreateBookingPaymentLogic.php +++ b/app/Classes/Modules/Bookings/ControllersLogic/CreateBookingPaymentLogic.php @@ -20,6 +20,9 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\ValueObjects\Constants\TransactionType; use App\Http\Resources\TransactionResource; + +use App\Classes\Modules\Transactions\Processors\CreateCashBackTransactionProcessor; + use App\Models\Booking; use App\Models\Transaction; use App\Models\Wallet; @@ -64,6 +67,9 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic /** @var UpdatesTransactionStatus */ private $updatesTransactionStatus; + /** @var CreateCashBackTransactionProcessor */ + private $createCashBackTransactionProcessor; + /** * CreateBookingPaymentLogic constructor. * @param FetchesBookingQuotation $fetchBookingQuotation @@ -74,8 +80,9 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic * @param CreatesBillplzBill $createsBillplzBill * @param UpdatesWalletBalance $updatesWalletBalance * @param UpdatesTransactionStatus $updatesTransactionStatus + * @param CreateCashBackTransactionProcessor $createCashBackTransactionProcessor */ - public function __construct(FetchesBookingQuotation $fetchBookingQuotation, FetchesCompanyPaymentAttemptLimit $fetchesCompanyPaymentAttemptLimit, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CreatesTransaction $createsTransaction, CalculatesBookingOutstanding $calculatesBookingOutstanding, CreatesBillplzBill $createsBillplzBill, UpdatesWalletBalance $updatesWalletBalance, UpdatesTransactionStatus $updatesTransactionStatus) + public function __construct(FetchesBookingQuotation $fetchBookingQuotation, FetchesCompanyPaymentAttemptLimit $fetchesCompanyPaymentAttemptLimit, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CreatesTransaction $createsTransaction, CalculatesBookingOutstanding $calculatesBookingOutstanding, CreatesBillplzBill $createsBillplzBill, UpdatesWalletBalance $updatesWalletBalance, UpdatesTransactionStatus $updatesTransactionStatus, CreateCashBackTransactionProcessor $createCashBackTransactionProcessor) { $this->fetchBookingQuotation = $fetchBookingQuotation; $this->fetchesCompanyPaymentAttemptLimit = $fetchesCompanyPaymentAttemptLimit; @@ -85,6 +92,7 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic $this->createsBillplzBill = $createsBillplzBill; $this->updatesWalletBalance = $updatesWalletBalance; $this->updatesTransactionStatus = $updatesTransactionStatus; + $this->createCashBackTransactionProcessor = $createCashBackTransactionProcessor; } /** @@ -126,12 +134,13 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic } $transaction_object = new TransactionObject($billNumber, TransactionType::PAYMENT, 1, $booking->company->id, 1, PaymentMethodType::WALLET, $amount, $amount, 1, 1, 1, 0, 0, null, ApprovalStatus::APPROVED, [], ''); - $this->createsTransaction->execute($wallet, $transaction_object); + $transaction = $this->createsTransaction->execute($wallet, $transaction_object); $paymentReference = $billNumber; $this->updatesWalletBalance->execute($wallet, ($amount * -1)); + $cash_back_transaction = $this->createCashBackTransactionProcessor->execute($transaction); } $billNumber = $this->generatesTransactionBillNumber->execute('PYMT-'); diff --git a/app/Classes/Modules/Transactions/Processors/CreateCashBackTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateCashBackTransactionProcessor.php index ed6c2ab8..af9d646c 100644 --- a/app/Classes/Modules/Transactions/Processors/CreateCashBackTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreateCashBackTransactionProcessor.php @@ -118,12 +118,14 @@ class CreateCashBackTransactionProcessor 0, null, ApprovalStatus::APPROVED, + null, + 'cash back ' . $transaction->bill_no ); $cash_back_transaction = $this->createsTransaction->execute($transaction, $object); $company = $transaction->owner()->first()->company; - $credit = $this->creditWalletProcessor->execute($company, $transaction->type, $cash_back_transaction->amount, ''); + $credit = $this->creditWalletProcessor->execute($company, $transaction->type, $cash_back_transaction->amount, 'cash back ' . $transaction->bill_no); } } }