diff --git a/app/Classes/Modules/Wallets/ControllersLogic/CreditWalletLogic.php b/app/Classes/Modules/Wallets/ControllersLogic/CreditWalletLogic.php index 8ed8aa08..ef7144f1 100644 --- a/app/Classes/Modules/Wallets/ControllersLogic/CreditWalletLogic.php +++ b/app/Classes/Modules/Wallets/ControllersLogic/CreditWalletLogic.php @@ -10,6 +10,7 @@ use App\Classes\Modules\Wallets\Services\UpdatesWallet; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Companies\Services\FetchesCompany; +use App\Classes\Modules\Companies\Services\fetchesCompanyModule; use App\Classes\Modules\Wallets\Services\GeneratesWalletCode; use App\Classes\Modules\Transactions\Services\CreatesTransaction; @@ -29,6 +30,9 @@ class CreditWalletLogic extends AbstractControllerLogic } + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; + /** @var FetchesCompany */ private $fetchesCompany; @@ -62,6 +66,7 @@ class CreditWalletLogic extends AbstractControllerLogic */ public function __construct( FetchesCompany $fetchesCompany, + FetchesCompanyModule $fetchesCompanyModule, GeneratesWalletCode $generatesWalletCode, CreatesWallet $createsWallet, GeneratesTransactionBillNumber $generatesTransactionBillNumber, @@ -71,6 +76,7 @@ class CreditWalletLogic extends AbstractControllerLogic ) { $this->fetchesCompany = $fetchesCompany; + $this->fetchesCompanyModule = $fetchesCompanyModule; $this->generatesWalletCode = $generatesWalletCode; $this->createsWallet = $createsWallet; $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; @@ -88,13 +94,13 @@ class CreditWalletLogic extends AbstractControllerLogic { $amount = floatval(str_replace(',', '', $request->input('amount'))); - $company = $this->fetchesCompany->execute(['id' => $request->input('company_id')]); + $companyModule = $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')]); $reference = $request->input('reference'); $type = $request->input('transaction_type'); - $wallet = $this->creditWalletProcessor->execute($company, $type, $amount, $reference); + $wallet = $this->creditWalletProcessor->execute($companyModule, $type, $amount, $reference); return $this->resourceResponse(new WalletResource($wallet)); } diff --git a/app/Classes/Modules/Wallets/Processors/CreditWalletProcessor.php b/app/Classes/Modules/Wallets/Processors/CreditWalletProcessor.php index 65f3b9b6..3806f852 100644 --- a/app/Classes/Modules/Wallets/Processors/CreditWalletProcessor.php +++ b/app/Classes/Modules/Wallets/Processors/CreditWalletProcessor.php @@ -11,9 +11,11 @@ use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\Modules\Wallets\Services\GeneratesWalletCode; use App\Classes\Modules\Transactions\Services\CreatesTransaction; +use App\Classes\Modules\Transactions\Services\CreatesTransactionableTransaction; use App\Classes\Modules\Wallets\DataTransferObjects\WalletObject; use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject; use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber; +use App\Models\CompanyModule; class CreditWalletProcessor { @@ -29,6 +31,9 @@ class CreditWalletProcessor /** @var CreatesTransaction */ private $createsTransaction; + /** @var CreatesTransactionableTransaction */ + private $createsTransactionableTransaction; + /** @var UpdatesWallet */ private $updatesWallet; @@ -38,6 +43,7 @@ class CreditWalletProcessor * @param CreatesWallet $createsWallet * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber * @param CreatesTransaction $createsTransaction + * @param CreatesTransactionableTransaction $createsTransactionableTransaction * @param UpdatesWallet $updatesWallet */ public function __construct( @@ -45,6 +51,7 @@ class CreditWalletProcessor CreatesWallet $createsWallet, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CreatesTransaction $createsTransaction, + CreatesTransactionableTransaction $createsTransactionableTransaction, UpdatesWallet $updatesWallet ) { @@ -52,32 +59,33 @@ class CreditWalletProcessor $this->createsWallet = $createsWallet; $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; $this->createsTransaction = $createsTransaction; + $this->createsTransactionableTransaction = $createsTransactionableTransaction; $this->updatesWallet = $updatesWallet; } /** - * @param Company $company + * @param CompanyModule $companyModule * @param int $transactionType * @param float $amount * @param string $reference * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException */ - public function execute(Company $company, int $transactionType, float $amount, string $reference) + public function execute(CompanyModule $companyModule, int $transactionType, float $amount, string $reference) { - if (!$company->wallets()->first()) { - $object = new WalletObject($company->id, 1, $this->generatesWalletCode->execute()); - $this->createsWallet->execute($object, $company); + if (!$companyModule->wallets()->first()) { + $object = new WalletObject($companyModule->id, 1, $this->generatesWalletCode->execute()); + $this->createsWallet->execute($object, $companyModule); } /** @var Wallet $wallet */ - $wallet = $company->wallets()->first(); + $wallet = $companyModule->wallets()->first(); $billNumber = $this->generatesTransactionBillNumber->execute($transactionType === 2 ? 'DEBIT-NOTE-' : 'CREDIT-NOTE-'); $transaction_object = new TransactionObject($billNumber, $transactionType === 2 ? TransactionType::DEBIT_NOTE : TransactionType::CREDIT_NOTE, 1, $wallet->owner->id, 1, PaymentMethodType::CASH, $amount, $amount, 1, 1, 1, 0, 0, null, ApprovalStatus::APPROVED, [], $reference); - $transaction = $this->createsTransaction->execute($wallet, $transaction_object); + $transaction = $this->createsTransactionableTransaction->execute($wallet, $transaction_object); $updateWalletAmount = $transactionType === 2 ? ($wallet->amount - $transaction->amount) : ($wallet->amount + $transaction->amount); diff --git a/resources/assets/vue/components/companies/elements/CustomerPaymentBillingInnerComponent.vue b/resources/assets/vue/components/companies/elements/CustomerPaymentBillingInnerComponent.vue index 3403edc2..a1113c14 100644 --- a/resources/assets/vue/components/companies/elements/CustomerPaymentBillingInnerComponent.vue +++ b/resources/assets/vue/components/companies/elements/CustomerPaymentBillingInnerComponent.vue @@ -17,7 +17,7 @@