From aaae8bcafa0b897ed09f166872c070bdc64ab704 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Sat, 24 Feb 2024 10:48:26 +0800 Subject: [PATCH] Create a regenerate storage invoice feature to debug problem in reading and downloading storage invoice --- ...teSingleStorageInvoiceTransactionLogic.php | 58 ++++++++++++++++++ .../Rules/CanRegenerateStorageInvoice.php | 47 +++++++++++++++ ...gleStorageInvoiceTransactionController.php | 21 +++++++ ...stomerPaymentsBillingVariant2Component.vue | 60 +++++++++++++++---- routes/transaction.php | 1 + 5 files changed, 174 insertions(+), 13 deletions(-) create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleStorageInvoiceTransactionLogic.php create mode 100644 app/Classes/Modules/Transactions/Standards/Rules/CanRegenerateStorageInvoice.php create mode 100644 app/Http/Controllers/Transactions/RegenerateSingleStorageInvoiceTransactionController.php diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleStorageInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleStorageInvoiceTransactionLogic.php new file mode 100644 index 00000000..51166015 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleStorageInvoiceTransactionLogic.php @@ -0,0 +1,58 @@ + 'Regenerate Storage Invoice', + 'message' => 'You have successfully regenerated storage invoice' + ]; + } + + + /** @var FetchesTransaction */ + private $fetchesTransaction; + + /** @var CreateStorageInvoiceDocTransactionFixProcessor */ + private $createStorageInvoiceDocTransactionProcessor; + + /** @var CanRegenerateStorageInvoice */ + private $canRegenerateStorageInvoice; + + /** + * @param CreatesDocument $createsDocument + */ + public function __construct(FetchesTransaction $fetchesTransaction, CreateStorageInvoiceDocTransactionFixProcessor $createStorageInvoiceDocTransactionProcessor, CanRegenerateStorageInvoice $canRegenerateStorageInvoice) + { + $this->fetchesTransaction = $fetchesTransaction; + $this->createStorageInvoiceDocTransactionProcessor = $createStorageInvoiceDocTransactionProcessor; + $this->canRegenerateStorageInvoice = $canRegenerateStorageInvoice; + } + + public function logic(Request $request) : JsonResponse + { + $this->canRegenerateStorageInvoice->passes(); + + $invoice = $this->fetchesTransaction->execute(['id' => $request->route('invoice_id')]); + $packingList = $invoice->owner; + + $this->createStorageInvoiceDocTransactionProcessor->execute($packingList, true); + + return $this->response([]); + } + +} diff --git a/app/Classes/Modules/Transactions/Standards/Rules/CanRegenerateStorageInvoice.php b/app/Classes/Modules/Transactions/Standards/Rules/CanRegenerateStorageInvoice.php new file mode 100644 index 00000000..d7a7a9bf --- /dev/null +++ b/app/Classes/Modules/Transactions/Standards/Rules/CanRegenerateStorageInvoice.php @@ -0,0 +1,47 @@ +user(); + if($user){ + $roleToCheck = Auth()->user()->type; + if (in_array($roleToCheck, 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; + } + +} diff --git a/app/Http/Controllers/Transactions/RegenerateSingleStorageInvoiceTransactionController.php b/app/Http/Controllers/Transactions/RegenerateSingleStorageInvoiceTransactionController.php new file mode 100644 index 00000000..0edebadd --- /dev/null +++ b/app/Http/Controllers/Transactions/RegenerateSingleStorageInvoiceTransactionController.php @@ -0,0 +1,21 @@ +execute($request); + } +} diff --git a/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingVariant2Component.vue b/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingVariant2Component.vue index dd73291f..cb589896 100644 --- a/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingVariant2Component.vue +++ b/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingVariant2Component.vue @@ -41,7 +41,21 @@ -
+
+ + Waive Transaction + + + Transaction Waived + + + N/A + + + + +
+
Billing Question?
@@ -68,21 +82,41 @@
-
- - Waive Transaction +
+ + + - - Transaction Waived + + - - N/A - - - + + + + -
-
+ + + + + + diff --git a/routes/transaction.php b/routes/transaction.php index caa5b6fb..9e41455c 100644 --- a/routes/transaction.php +++ b/routes/transaction.php @@ -11,6 +11,7 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' => Route::put('{id}/status/update/{status}', 'UpdateTransactionStatusController@update')->where('status', 'approve|expire|reject')->name('update'); route::post('/{invoice_id}/regenerate', 'RegenerateSingleShippingInvoiceTransactionController@regenerate')->name('invoice.regenerate'); Route::post('/waive/{id}', 'WaiveTransactionController@waive')->name('waive'); + Route::post('/storage-invoice/{invoice_id}/regenerate', 'RegenerateSingleStorageInvoiceTransactionController@regenerate')->name('storage.invoice.regenerate'); Route::get('wallet/list', 'ListWalletTransactionsController@list')->name('wallet.list');