delete paid group transaction

This commit is contained in:
edmondlang
2024-03-30 00:49:55 +08:00
parent 0719285286
commit 7e029c5610
4 changed files with 108 additions and 2 deletions
@@ -0,0 +1,68 @@
<?php
namespace App\Classes\Modules\Transactions\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Transactions\Services\FetchesGroup;
use App\Classes\Modules\Transactions\Services\DeletesTransaction;
use App\Classes\Modules\Transactions\Services\DeletesGroup;
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\TransactionType;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class DeletePaidGroupLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification(): array
{
return [
'title' => '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([]);
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Transactions;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Classes\Modules\Transactions\ControllersLogic\DeletePaidGroupLogic;
class DeletePaidGroupController
{
/**
* @param Request $request
* @param DeleteGroupTransactionLogic $logic
* @return JsonResponse
*/
public function delete(Request $request, DeletePaidGroupLogic $logic) : JsonResponse {
return $logic->execute($request);
}
}
@@ -25,12 +25,12 @@
<i class="fa fa-repeat fs-20 text-white"></i> <i class="fa fa-repeat fs-20 text-white"></i>
</div> </div>
</div> </div>
<div class="col-auto requestModal" v-if="item.status != 2 && item.status != 6" data-type="deleteGroupTransaction"> <div class="col-auto requestModal" v-if="item.status != 2 && item.status != 6" data-type="deleteGroupTransactionInProgress">
<div class="btn bg-grey no-border"> <div class="btn bg-grey no-border">
<i class="fa fa-times"></i> <i class="fa fa-times"></i>
</div> </div>
</div> </div>
<modal-component class="animate__animated animate__fast animate__fadeIn" styleType="fill-in" type="deleteGroupTransaction"> <modal-component class="animate__animated animate__fast animate__fadeIn" styleType="fill-in" type="deleteGroupTransactionInProgress">
<general-confirmation-form-component <general-confirmation-form-component
contentText="Are you sure you want to delete this Group Payment?" contentText="Are you sure you want to delete this Group Payment?"
modalType="delete" modalType="delete"
@@ -75,6 +75,23 @@
<i class="fa fa-repeat fs-20 text-white"></i> <i class="fa fa-repeat fs-20 text-white"></i>
</div> </div>
</div> </div>
<div class="col-auto requestModal" v-if="item.status == 2 && $store.getters.isSuperAdmin" data-type="deletePaidGroupTransaction">
<div class="btn bg-grey no-border">
<i class="fa fa-times"></i>
</div>
</div>
<modal-component class="animate__animated animate__fast animate__fadeIn" styleType="fill-in" type="deletePaidGroupTransaction">
<general-confirmation-form-component
contentText="Are you sure you want to delete this Paid Group Payment?"
modalType="delete"
buttonText="Delete"
class="text-center"
:apiRoute="route('api.transaction.group.paidGroup.delete', item.id)"
apiMethod="delete"
:section="section"
>
</general-confirmation-form-component>
</modal-component>
<div class="col-auto" v-if="!['customerGroupPaymentExpiredInvoiceComponent'].includes(section)"> <div class="col-auto" v-if="!['customerGroupPaymentExpiredInvoiceComponent'].includes(section)">
<div class="btn bg-grey no-border" @click="expanded = !expanded"> <div class="btn bg-grey no-border" @click="expanded = !expanded">
<i class="fa" :class="{'fa-angle-down': !expanded, 'fa-angle-up': expanded}" ></i> <i class="fa" :class="{'fa-angle-down': !expanded, 'fa-angle-up': expanded}" ></i>
+1
View File
@@ -47,6 +47,7 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' =>
Route::get('/list', 'ListGroupsController@list')->name('list'); Route::get('/list', 'ListGroupsController@list')->name('list');
// Route::get('/list', 'ListGroupsController@list')->middleware('storage.invoice.check.bygroup')->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', 'DeleteGroupController@delete')->name('delete');
Route::delete('/{id}/delete-paid', 'DeletePaidGroupController@delete')->name('paidGroup.delete');
Route::put('/{id}/update', 'UpdateGroupController@update')->name('update'); Route::put('/{id}/update', 'UpdateGroupController@update')->name('update');
// Route::post('/{id}/approve', 'CreateBulkPurchaseOrderDocumentController@aprove')->name('approve'); // Route::post('/{id}/approve', 'CreateBulkPurchaseOrderDocumentController@aprove')->name('approve');
// Route::post('/bulk/po', 'CreateBulkPurchaseOrderDocumentController@create')->name('bulk.po'); // Route::post('/bulk/po', 'CreateBulkPurchaseOrderDocumentController@create')->name('bulk.po');