Merge branch 'dillon/137-project-upgrade-update-1A' into vapor/production

This commit is contained in:
Dillon Ngo
2026-07-05 10:58:24 +08:00
23 changed files with 430 additions and 12 deletions
@@ -3,6 +3,7 @@
namespace App\Classes\Modules\Accounting\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Accounting\Standards\Rules\CanApproveDuplicateBankStatementDetailsStatus;
use App\Classes\Modules\Accounting\Services\FetchesBankStatementTransaction;
use App\Http\Resources\BankStatementTransactionResource;
use App\Classes\Modules\Accounting\Services\UpdatesBankStatementTransactionOwnerStatus;
@@ -33,12 +34,17 @@ class ApproveDuplicateBankStatementDetailsStatusLogic extends AbstractController
/** @var UpdatesBankStatementTransactionOwnerStatus */
private $updatesBankStatementTransactionOwnerStatus;
/** @var CanApproveDuplicateBankStatementDetailsStatus */
private $canApproveDuplicateBankStatementDetailsStatus;
/**
* @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus
* @param CanApproveDuplicateBankStatementDetailsStatus $canApproveDuplicateBankStatementDetailsStatus
*/
public function __construct(UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus)
public function __construct(UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, CanApproveDuplicateBankStatementDetailsStatus $canApproveDuplicateBankStatementDetailsStatus)
{
$this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus;
$this->canApproveDuplicateBankStatementDetailsStatus = $canApproveDuplicateBankStatementDetailsStatus;
}
// /**
@@ -134,6 +140,8 @@ class ApproveDuplicateBankStatementDetailsStatusLogic extends AbstractController
*/
public function logic(Request $request): JsonResponse
{
$this->canApproveDuplicateBankStatementDetailsStatus->passes();
// Determine the approval status
$status = $this->getConstantStatus($request->route('status'));
@@ -2,6 +2,7 @@
namespace App\Classes\Modules\Accounting\ControllersLogic;
use App\Classes\Modules\Accounting\Standards\Rules\CanGroupApproveStatementTransaction;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Accounting\Services\ListsBankStatementTransactions;
@@ -37,16 +38,21 @@ class GroupApproveStatementTransactionLogic extends AbstractControllerLogic
/** @var UpdatesTransactionStatus */
private $updatesTransactionStatus;
/** @var CanGroupApproveStatementTransaction */
private $canGroupApproveStatementTransaction;
/**
* @param ListsBankStatementTransactions $listsBankStatementTransactions
* @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus
* @param UpdatesTransactionStatus $updatesTransactionStatus
* @param CanGroupApproveStatementTransaction $canGroupApproveStatementTransaction
*/
public function __construct(ListsBankStatementTransactions $listsBankStatementTransactions, UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, UpdatesTransactionStatus $updatesTransactionStatus)
public function __construct(ListsBankStatementTransactions $listsBankStatementTransactions, UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus, UpdatesTransactionStatus $updatesTransactionStatus, CanGroupApproveStatementTransaction $canGroupApproveStatementTransaction)
{
$this->listsBankStatementTransactions = $listsBankStatementTransactions;
$this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus;
$this->updatesTransactionStatus = $updatesTransactionStatus;
$this->canGroupApproveStatementTransaction = $canGroupApproveStatementTransaction;
}
/**
@@ -56,6 +62,7 @@ class GroupApproveStatementTransactionLogic extends AbstractControllerLogic
*/
public function logic(Request $request): JsonResponse
{
$this->canGroupApproveStatementTransaction->passes();
$filters = $request->except(['per_page','order_by']);
@@ -2,6 +2,7 @@
namespace App\Classes\Modules\Accounting\ControllersLogic;
use App\Classes\Modules\Accounting\Standards\Rules\CanViewHistoryImportedTransactionMapped;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use App\Http\Resources\TransactionMappingLogResource;
@@ -26,14 +27,20 @@ class HistoryImportedTransactionMappedControllerLogic extends AbstractController
/** @var ListTransactionMappingLogs */
private $listTransactionMappingLogs;
/** @var CanViewHistoryImportedTransactionMapped */
private $canViewHistoryImportedTransactionMapped;
/**
* UpdateAnnouncementLogic constructor.
* @param ListTransactionMappingLogs $listTransactionMappingLogs
* @param CanViewHistoryImportedTransactionMapped $canViewHistoryImportedTransactionMapped
*/
public function __construct(
ListTransactionMappingLogs $listTransactionMappingLogs
ListTransactionMappingLogs $listTransactionMappingLogs,
CanViewHistoryImportedTransactionMapped $canViewHistoryImportedTransactionMapped
) {
$this->listTransactionMappingLogs = $listTransactionMappingLogs;
$this->canViewHistoryImportedTransactionMapped = $canViewHistoryImportedTransactionMapped;
}
/**
@@ -42,6 +49,8 @@ class HistoryImportedTransactionMappedControllerLogic extends AbstractController
*/
public function logic(Request $request): JsonResponse
{
$this->canViewHistoryImportedTransactionMapped->passes();
$query = $this->listTransactionMappingLogs->execute($this->listTransactionMappingLogs->deserializeFilters($request->input('filters')));
return $this->collectionResponse(TransactionMappingLogResource::collection($query));
@@ -3,6 +3,7 @@
namespace App\Classes\Modules\Accounting\ControllersLogic;
use App\Classes\Modules\Accounting\Standards\Rules\CanImportBankStatement;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Jobs\CreateBankStatementTransactionOwners;
@@ -29,6 +30,18 @@ class ImportBankStatementLogic extends AbstractControllerLogic
];
}
/** @var CanImportBankStatement */
private $canImportBankStatement;
/**
* ImportBankStatementLogic constructor.
* @param CanImportBankStatement $canImportBankStatement
*/
public function __construct(CanImportBankStatement $canImportBankStatement)
{
$this->canImportBankStatement = $canImportBankStatement;
}
/**
* @param Request $request
@@ -37,6 +50,7 @@ class ImportBankStatementLogic extends AbstractControllerLogic
*/
public function logic(Request $request) : JsonResponse
{
$this->canImportBankStatement->passes();
$files = $request->file('files');
@@ -3,6 +3,7 @@
namespace App\Classes\Modules\Accounting\ControllersLogic;
use App\Classes\Modules\Accounting\Standards\Rules\CanListBankStatementDetails;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Accounting\Services\ListsBankStatementDetails;
use App\Http\Resources\BankStatementDetailResource;
@@ -27,13 +28,18 @@ class ListBankStatementDetailsLogic extends AbstractControllerLogic
/** @var ListsBankStatementDetails */
private $listsBankStatementDetails;
/** @var CanListBankStatementDetails */
private $canListBankStatementDetails;
/**
* ListBankStatementDetailsLogic constructor.
* @param ListsBankStatementDetails $listsBankStatementDetails
* @param CanListBankStatementDetails $canListBankStatementDetails
*/
public function __construct(ListsBankStatementDetails $listsBankStatementDetails)
public function __construct(ListsBankStatementDetails $listsBankStatementDetails, CanListBankStatementDetails $canListBankStatementDetails)
{
$this->listsBankStatementDetails = $listsBankStatementDetails;
$this->canListBankStatementDetails = $canListBankStatementDetails;
}
@@ -44,6 +50,8 @@ class ListBankStatementDetailsLogic extends AbstractControllerLogic
*/
public function logic(Request $request) : JsonResponse
{
$this->canListBankStatementDetails->passes();
$query = $this->listsBankStatementDetails->execute($this->listsBankStatementDetails->deserializeFilters($request->input('filters')));
return $this->collectionResponse(BankStatementDetailResource::collection($query));
@@ -3,6 +3,7 @@
namespace App\Classes\Modules\Accounting\ControllersLogic;
use App\Classes\Modules\Accounting\Standards\Rules\CanListBankStatementTransactions;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Accounting\Services\ListsBankStatementDetails;
use App\Classes\Modules\Accounting\Services\ListsBankStatementTransactions;
@@ -30,12 +31,17 @@ class ListBankStatementTransactionsLogic extends AbstractControllerLogic
/** @var ListsBankStatementTransactions */
private $listsBankStatementTransactions;
/** @var CanListBankStatementTransactions */
private $canListBankStatementTransactions;
/**
* @param ListsBankStatementTransactions $listsBankStatementTransactions
* @param CanListBankStatementTransactions $canListBankStatementTransactions
*/
public function __construct(ListsBankStatementTransactions $listsBankStatementTransactions)
public function __construct(ListsBankStatementTransactions $listsBankStatementTransactions, CanListBankStatementTransactions $canListBankStatementTransactions)
{
$this->listsBankStatementTransactions = $listsBankStatementTransactions;
$this->canListBankStatementTransactions = $canListBankStatementTransactions;
}
/**
@@ -45,6 +51,8 @@ class ListBankStatementTransactionsLogic extends AbstractControllerLogic
*/
public function logic(Request $request) : JsonResponse
{
$this->canListBankStatementTransactions->passes();
$query = $this->listsBankStatementTransactions->execute($this->listsBankStatementTransactions->deserializeFilters($request->input('filters')));
return $this->collectionResponse(BankStatementTransactionResource::collection($query));
@@ -3,6 +3,7 @@
namespace App\Classes\Modules\Accounting\ControllersLogic;
use App\Classes\Modules\Accounting\Standards\Rules\CanUpdateBankStatementDetail;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Accounting\Services\CreatesBankStatementTransactionOwner;
@@ -46,22 +47,31 @@ class UpdateBankStatementDetailLogic extends AbstractControllerLogic
/** @var UpdatesBankStatementTransactionOwnerStatus */
private $updatesBankStatementTransactionOwnerStatus;
/** @var CanUpdateBankStatementDetail */
private $canUpdateBankStatementDetail;
/**
* @param FetchesBankStatementTransaction $fetchesBankStatementTransaction
* @param ChecksBillNumber $checksBillNumber
* @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus
* @param CanUpdateBankStatementDetail $canUpdateBankStatementDetail
*/
public function __construct(
FetchesBankStatementTransaction $fetchesBankStatementTransaction,
ChecksBillNumber $checksBillNumber,
UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus)
UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus,
CanUpdateBankStatementDetail $canUpdateBankStatementDetail)
{
$this->fetchesBankStatementTransaction = $fetchesBankStatementTransaction;
$this->checksBillNumber = $checksBillNumber;
$this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus;
$this->canUpdateBankStatementDetail = $canUpdateBankStatementDetail;
}
public function logic(Request $request): JsonResponse
{
$this->canUpdateBankStatementDetail->passes();
$bankStatementTransaction = $this->fetchesBankStatementTransaction->execute(['id' => $request->route('id')]);
$transactionReference = $request->input('transaction_reference');
@@ -2,6 +2,7 @@
namespace App\Classes\Modules\Accounting\ControllersLogic;
use App\Classes\Modules\Accounting\Standards\Rules\CanUpdateStatementTransactionStatus;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
@@ -31,17 +32,23 @@ class UpdateStatementTransactionStatusLogic extends AbstractControllerLogic
/** @var UpdatesBankStatementTransactionOwnerStatus */
private $updatesBankStatementTransactionOwnerStatus;
/** @var CanUpdateStatementTransactionStatus */
private $canUpdateStatementTransactionStatus;
/**
* UpdateAnnouncementLogic constructor.
* @param FetchesBankStatementTransactionOwner $fetchesBankStatementTransactionOwner
* @param UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus
* @param CanUpdateStatementTransactionStatus $canUpdateStatementTransactionStatus
*/
public function __construct(
FetchesBankStatementTransactionOwner $fetchesBankStatementTransactionOwner,
UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus
UpdatesBankStatementTransactionOwnerStatus $updatesBankStatementTransactionOwnerStatus,
CanUpdateStatementTransactionStatus $canUpdateStatementTransactionStatus
) {
$this->fetchesBankStatementTransactionOwner = $fetchesBankStatementTransactionOwner;
$this->updatesBankStatementTransactionOwnerStatus = $updatesBankStatementTransactionOwnerStatus;
$this->canUpdateStatementTransactionStatus = $canUpdateStatementTransactionStatus;
}
/**
@@ -53,6 +60,8 @@ class UpdateStatementTransactionStatusLogic extends AbstractControllerLogic
*/
public function logic(Request $request): JsonResponse
{
$this->canUpdateStatementTransactionStatus->passes();
$statementTrasactionOwner = $this->fetchesBankStatementTransactionOwner->execute(['id' => $request->route('id')]);
$this->updatesBankStatementTransactionOwnerStatus->execute($statementTrasactionOwner, $request->route('status') == 'approve' ? ApprovalStatus::APPROVED : ApprovalStatus::REJECTED);
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Modules\Accounting\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Support\Facades\Auth;
class CanApproveDuplicateBankStatementDetailsStatus extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
if (in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) {
return true;
}
return false;
}
/**
* @param $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Modules\Accounting\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Support\Facades\Auth;
class CanGroupApproveStatementTransaction extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
if (in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) {
return true;
}
return false;
}
/**
* @param $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Modules\Accounting\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Support\Facades\Auth;
class CanImportBankStatement extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
if (in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) {
return true;
}
return false;
}
/**
* @param $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Modules\Accounting\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Support\Facades\Auth;
class CanListBankStatementDetails extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
if (in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) {
return true;
}
return false;
}
/**
* @param $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Modules\Accounting\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Support\Facades\Auth;
class CanListBankStatementTransactions extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
if (in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) {
return true;
}
return false;
}
/**
* @param $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Modules\Accounting\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Support\Facades\Auth;
class CanUpdateBankStatementDetail extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
if (in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) {
return true;
}
return false;
}
/**
* @param $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Modules\Accounting\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Support\Facades\Auth;
class CanUpdateStatementTransactionStatus extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
if (in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) {
return true;
}
return false;
}
/**
* @param $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Classes\Modules\Accounting\Standards\Rules;
use App\Classes\General\Abstracts\AbstractRule;
use App\Classes\ValueObjects\Constants\RoleTypes;
use Illuminate\Support\Facades\Auth;
class CanViewHistoryImportedTransactionMapped extends AbstractRule
{
/**
* @return bool
*/
protected function authorized($object): bool
{
if (in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES)) {
return true;
}
return false;
}
/**
* @param $object
* @return bool
* @throws \App\Classes\Exceptions\RequestValidationException
*/
protected function validators($object): bool
{
return true;
}
/**
* @param $object
* @return bool
*/
protected function criteria($object): bool
{
return true;
}
}
@@ -162,6 +162,7 @@ import { useAuthStore } from '@/stores/auth';
import { useUiStore } from '@/stores/ui';
import { track } from '@/utils/tracking';
import { useFormHandler } from '@/composables/useFormHandler';
import route from '@/general/functions/router';
interface Props {
section: string;
@@ -62,6 +62,8 @@ const props = defineProps<{
section: string;
}>();
const asset = window.Vapor.asset;
const returnData = ref<any>(null);
const parameters = ref({
startDate: '',
@@ -54,6 +54,8 @@ const props = withDefaults(defineProps<{
employee: null,
});
const asset = window.Vapor.asset;
const emit = defineEmits(['selected-voucher']);
const vouchers = ref<any[]>([]);
@@ -68,6 +68,8 @@ const props = withDefaults(defineProps<{
emptyListSection: true
});
const asset = window.Vapor.asset;
const queueStore = useQueueStore();
const uiStore = useUiStore();
const jobPollingStore = useJobPollingStore();
@@ -102,6 +102,7 @@
<script setup lang="ts">
import { computed, ref } from 'vue';
import { useUiStore } from '@/stores/ui';
import route from '@/general/functions/router';
const uiStore = useUiStore();
@@ -80,6 +80,7 @@
<script setup lang="ts">
import { ref } from 'vue';
import { useComponentHandler } from '@/composables/useComponentHandler';
import route from '@/general/functions/router';
interface Props {
data: any;
+5 -5
View File
@@ -3,10 +3,10 @@ import '@vue/runtime-dom';
declare module 'vue' {
interface ComponentCustomProperties {
asset: (path: string) => string;
route: (...args: any[]) => string;
$store: any;
authStore: any;
uiStore: any;
// asset: (path: string) => string;
// route: (...args: any[]) => string;
// $store: any;
// authStore: any;
// uiStore: any;
}
}