diff --git a/app/Classes/Modules/Transactions/ControllersLogic/DeletePaidGroupLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/DeletePaidGroupLogic.php new file mode 100644 index 00000000..ce03965f --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/DeletePaidGroupLogic.php @@ -0,0 +1,68 @@ + 'Delete Paid Group Transaction', + 'message' => 'You have successfully deleted this Group Transaction' + ]; + } + + /** @var FetchesGroup */ + private $fetchesGroup; + + /** @var DeletesGroup */ + private $deletesGroup; + + /** + * DeleteGroupLogic constructor. + * @param updatesTransactionStatus $updatesTransactionStatus + * @param FetchesGroup $fetchesGroup + * @param DeletesTransaction $deletesTransaction + */ + public function __construct(FetchesGroup $fetchesGroup, DeletesGroup $deletesGroup) + { + $this->fetchesGroup = $fetchesGroup; + $this->deletesGroup = $deletesGroup; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function logic(Request $request): JsonResponse + { + $group = $this->fetchesGroup->execute(['id' => $request->route('id')]); + + foreach ($group->groupTransactions as $groupTransaction) { + $invoice = $groupTransaction->transaction; + $paymentTransaction = $invoice->transactions()->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->first(); + + $paymentTransaction->delete(); + } + + $this->deletesGroup->execute($group); + + return $this->response([]); + } +} diff --git a/app/Http/Controllers/Transactions/DeletePaidGroupController.php b/app/Http/Controllers/Transactions/DeletePaidGroupController.php new file mode 100644 index 00000000..08cf1e33 --- /dev/null +++ b/app/Http/Controllers/Transactions/DeletePaidGroupController.php @@ -0,0 +1,20 @@ +execute($request); + } +} diff --git a/resources/assets/vue/components/paymentsBilling/elements/GroupPaymentsBillingComponents.vue b/resources/assets/vue/components/paymentsBilling/elements/GroupPaymentsBillingComponents.vue index 763f0174..0a2717e8 100644 --- a/resources/assets/vue/components/paymentsBilling/elements/GroupPaymentsBillingComponents.vue +++ b/resources/assets/vue/components/paymentsBilling/elements/GroupPaymentsBillingComponents.vue @@ -25,12 +25,12 @@ -
+
- +
+
+
+ +
+
+ + + +
diff --git a/routes/transaction.php b/routes/transaction.php index 9e41455c..08db2447 100644 --- a/routes/transaction.php +++ b/routes/transaction.php @@ -47,6 +47,7 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' => Route::get('/list', 'ListGroupsController@list')->name('list'); // Route::get('/list', 'ListGroupsController@list')->middleware('storage.invoice.check.bygroup')->name('list'); Route::delete('/{id}/delete', 'DeleteGroupController@delete')->name('delete'); + Route::delete('/{id}/delete-paid', 'DeletePaidGroupController@delete')->name('paidGroup.delete'); Route::put('/{id}/update', 'UpdateGroupController@update')->name('update'); // Route::post('/{id}/approve', 'CreateBulkPurchaseOrderDocumentController@aprove')->name('approve'); // Route::post('/bulk/po', 'CreateBulkPurchaseOrderDocumentController@create')->name('bulk.po');