mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-24 23:13:59 +00:00
Transfer Fee Transaction - Company Balance Account API
This commit is contained in:
+2
-2
@@ -125,7 +125,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic
|
||||
$payment->original_amount * (1 / $rate), $payment->original_amount, 1, $payment->original_currency_id,
|
||||
$rate, 0, $supplier->id == 2 ? 0 : $serviceCharge, null, ApprovalStatus::PENDING_VERIFICATION);
|
||||
|
||||
$transactions[] = $this->createsTransaction->execute($payment->booking, $object);
|
||||
$transactions[] = $billTransaction = $this->createsTransaction->execute($payment->booking, $object);
|
||||
|
||||
$transferFeeNumber = $this->generatesTransactionBillNumber->execute('TRFR-');
|
||||
$trasferFee = $this->calculatesTransactionTransferFee->execute($payment->original_amount);
|
||||
@@ -134,7 +134,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic
|
||||
$payment->original_amount, $payment->original_amount, $payment->original_currency_id, $payment->original_currency_id,
|
||||
1, 0, $trasferFee, null, ApprovalStatus::PENDING_VERIFICATION);
|
||||
|
||||
$transferFeeTransactions[] = $this->createsTransaction->execute($payment->booking, $object);
|
||||
$transferFeeTransactions[] = $this->createsTransaction->execute($billTransaction, $object);
|
||||
}
|
||||
|
||||
if(!count($transactions)) return $this->response([]);
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Classes\Modules\Transactions\ControllersLogic;
|
||||
|
||||
use App\Models\Company;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Transactions\Services\GeneratesCompanyBalanceAccount;
|
||||
|
||||
class FetchCompanyAccountBalanceLogic extends AbstractControllerLogic
|
||||
{
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Retrieved Company Balance Account',
|
||||
'message' => 'You have successfully retrieved company balance account'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var GeneratesCompanyBalanceAccount */
|
||||
private $generatesCompanyBalanceAccount;
|
||||
|
||||
/**
|
||||
* FetchCompanyAccountBalanceLogic constructor.
|
||||
* @param GeneratesCompanyBalanceAccount $generatesCompanyBalanceAccount
|
||||
*/
|
||||
public function __construct(GeneratesCompanyBalanceAccount $generatesCompanyBalanceAccount)
|
||||
{
|
||||
$this->generatesCompanyBalanceAccount = $generatesCompanyBalanceAccount;
|
||||
}
|
||||
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
$company = Company::find($request->route('id'));
|
||||
|
||||
return $this->response(['data' => $this->generatesCompanyBalanceAccount->execute($company)]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Transactions\Services;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use App\Models\Company;
|
||||
use App\Http\Resources\CompanyResource;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||
use App\Classes\Modules\Transactions\Services\ChecksIfTransactionBillNumberExists;
|
||||
|
||||
class GeneratesCompanyBalanceAccount
|
||||
{
|
||||
|
||||
/** @var ChecksIfTransactionBillNumberExists */
|
||||
private $checksIfTransactionBillNumberExists;
|
||||
|
||||
/**
|
||||
* GeneratesTransactionBillNo constructor.
|
||||
* @param ChecksIfTransactionBillNumberExists $checksIfTransactionBillNumberExists
|
||||
*/
|
||||
public function __construct(ChecksIfTransactionBillNumberExists $checksIfTransactionBillNumberExists)
|
||||
{
|
||||
$this->checksIfTransactionBillNumberExists = $checksIfTransactionBillNumberExists;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Company $company
|
||||
*/
|
||||
public function execute(Company $company) {
|
||||
$transferFeeTransactions = $company->issuerTransactions()->where('transactions.type', TransactionType::TRANSFER_FEE)->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->orderBy('id', 'DESC')->get();
|
||||
return [
|
||||
'company' => new CompanyResource($company),
|
||||
'transferFeeTransactions' => $transferFeeTransactions,
|
||||
'account_balance' => $transferFeeTransactions->sum('amount'),
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Http\Controllers\Transactions;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Classes\Modules\Transactions\ControllersLogic\FetchCompanyAccountBalanceLogic;
|
||||
|
||||
|
||||
class FetchCompanyAccountBalanceController
|
||||
{
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param FetchCompanyAccountBalanceLogic $logic
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function fetch(Request $request, FetchCompanyAccountBalanceLogic $logic) : JsonResponse {
|
||||
return $logic->execute($request);
|
||||
}
|
||||
}
|
||||
@@ -101,6 +101,13 @@ class Company extends AbstractModel implements Documentable
|
||||
{
|
||||
return $this->hasManyDeep(Transaction::class, [Booking::class], ['company_id', 'owner_id'], ['id', 'id']);
|
||||
}
|
||||
/**
|
||||
* @return HasMany
|
||||
*/
|
||||
public function issuerTransactions(): HasMany
|
||||
{
|
||||
return $this->HasMany(Transaction::class, 'issuer');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MorphMany
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Models;
|
||||
|
||||
use App\Classes\General\Interfaces\Documentable;
|
||||
use App\Classes\General\Interfaces\Transactionable;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||
use Carbon\Carbon;
|
||||
@@ -16,7 +17,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
|
||||
|
||||
class Transaction extends AbstractModel implements Documentable
|
||||
class Transaction extends AbstractModel implements Documentable, Transactionable
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
@@ -27,6 +28,14 @@ class Transaction extends AbstractModel implements Documentable
|
||||
return $this->morphTo();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MorphMany
|
||||
*/
|
||||
public function transactions(): MorphMany
|
||||
{
|
||||
return $this->MorphMany(Transaction::class, 'owner');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MorphMany
|
||||
*/
|
||||
|
||||
@@ -16,4 +16,5 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' =>
|
||||
|
||||
Route::post('booking/{id}/details/update', 'CreatePurchaseOrderTransactionController@create')->name('po.create');
|
||||
|
||||
Route::get('/company/{id}/account/balance', 'FetchCompanyAccountBalanceController@fetch')->name('company.account.balance');
|
||||
});
|
||||
Reference in New Issue
Block a user