diff --git a/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php new file mode 100644 index 00000000..29d5d297 --- /dev/null +++ b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php @@ -0,0 +1,62 @@ + 'Updated EInvoice Request', + 'message' => 'You have successfully updated company E-Invoice request' + ]; + } + + /** @var FetchesCompany */ + private $fetchesCompany; + + /** @var UpdatesCompanyEInvoiceRequest */ + private $updatesCompanyEInvoiceRequest; + + + /** + * UpdateCompanyEInvoiceRequestChangeLogic constructor. + * @param FetchesCompany $fetchesCompany + * @param UpdatesCompanyEInvoiceRequest $updatesCompanyEInvoiceRequest + */ + public function __construct(FetchesCompany $fetchesCompany, UpdatesCompanyEInvoiceRequest $updatesCompanyEInvoiceRequest) + { + $this->fetchesCompany = $fetchesCompany; + $this->updatesCompanyEInvoiceRequest = $updatesCompanyEInvoiceRequest; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $dto = new EInvoiceRequestDTO($request->all()); + $company = $this->fetchesCompany->execute(['id' => $dto->companyId]); + + if($company->e_invoice === 1){ + $this->updatesCompanyEInvoiceRequest->execute($company, $dto->eInvoiceRequest); + } + + return $this->response([]); + } +} diff --git a/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php b/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php index bdef7fc8..1257ca70 100644 --- a/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php +++ b/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php @@ -17,13 +17,18 @@ class UpdatesCompanyEInvoiceRequest extends AbstractUpdateRecord */ public function execute(Company $model, bool $eInvoice) { - if (is_null($model->e_invoice_requested_at)) { - if($eInvoice){ - $model->e_invoice_requested_at = now(); + if($eInvoice){ + if (is_null($model->e_invoice_requested_at)) { + if($eInvoice){ + $model->e_invoice_requested_at = now(); + } } + $model->e_invoice = 1; + } + else{ + $model->e_invoice_requested_at = null; + $model->e_invoice = 0; } - $model->e_invoice = $eInvoice; - return $this->handler($model); } } diff --git a/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php b/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php index 9157e9de..d6e29f95 100644 --- a/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php +++ b/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Companies; use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceInfoLogic; use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceRequestLogic; +use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceRequestChangeLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -18,7 +19,7 @@ class UpdateCompanyEInvoiceInfoController return $logic->execute($request); } - /** + /** * @param Request $request * @param UpdateCompanyEInvoiceRequestLogic $logic * @return JsonResponse @@ -26,4 +27,13 @@ class UpdateCompanyEInvoiceInfoController public function updateRequest(Request $request, UpdateCompanyEInvoiceRequestLogic $logic): JsonResponse { return $logic->execute($request); } + + /** + * @param Request $request + * @param UpdateCompanyEInvoiceRequestChangeLogic $logic + * @return JsonResponse + */ + public function updateChangeOfMindRequest(Request $request, UpdateCompanyEInvoiceRequestChangeLogic $logic): JsonResponse { + return $logic->execute($request); + } } diff --git a/resources/assets/vue/components/address/forms/EInvoiceInfoFormComponent.vue b/resources/assets/vue/components/address/forms/EInvoiceInfoFormComponent.vue index d10f1818..1393865a 100644 --- a/resources/assets/vue/components/address/forms/EInvoiceInfoFormComponent.vue +++ b/resources/assets/vue/components/address/forms/EInvoiceInfoFormComponent.vue @@ -80,6 +80,18 @@ +
+
+ + I don't need now + +
+
@@ -251,6 +263,10 @@ successHandler(response){ this.$emit('eInvoiceInfoUpdated', response.payload.data); this.closeModal(); + }, + updateChangeOfMind(){ + this.$emit('eInvoiceChangeOfMindRequest'); + this.closeModal(); } }, mixins: [ModalFormHandler], diff --git a/resources/assets/vue/components/bookings/forms/BookingPaymentQuotationV2Component.vue b/resources/assets/vue/components/bookings/forms/BookingPaymentQuotationV2Component.vue index 03c327cf..6dce568f 100644 --- a/resources/assets/vue/components/bookings/forms/BookingPaymentQuotationV2Component.vue +++ b/resources/assets/vue/components/bookings/forms/BookingPaymentQuotationV2Component.vue @@ -166,7 +166,7 @@ :company-id="data.company.id" :company-type="data.company.type" v-on:eInvoiceInfoUpdated="updatedEInvoiceInfo($event)" - v-on:close="createAddress = !createAddress"> + v-on:eInvoiceChangeOfMindRequest="changeOfMindEInvoiceRequest()"> @@ -724,6 +724,9 @@ $('#confirm-booking-modal').modal('show'); } } + else if(section === this.section + 'ChangeOfMind'){ + this.$store.dispatch('reloadList', {'name': "bookingDetailSection"}); + } else if(section === this.section + 'ValidateVoucher'){ if(!response.payload.data){ this.voucherValidated = false; @@ -756,7 +759,6 @@ } else{ this.checkTransferRule(); - // this.checkEInvoiceRule(); } }, cancelQuotation(){ @@ -836,6 +838,10 @@ if(!choice){ this.showModalEInvoiceRequest = true; } + }, + changeOfMindEInvoiceRequest(){ + this.parameters.e_invoice_request = false; + this.submit((this.route('api.company.einvoice.request.change')), 'post', this.section + 'ChangeOfMind', true, true); } //E-Invoice - Ends }, diff --git a/routes/company.php b/routes/company.php index d88bd398..d844f51a 100644 --- a/routes/company.php +++ b/routes/company.php @@ -43,4 +43,5 @@ Route::group(['prefix' => 'company', 'as' => 'company.', 'namespace' => 'Compani Route::get('/e-invoice/info/{id}', [FetchCompanyEInvoiceInfoController::class, 'fetch'])->name('einvoice.info'); Route::post('/e-invoice/info/update', [UpdateCompanyEInvoiceInfoController::class, 'updateInfo'])->name('einvoice.info.update'); Route::post('/e-invoice/request/update', [UpdateCompanyEInvoiceInfoController::class, 'updateRequest'])->name('einvoice.request.update'); + Route::post('/e-invoice/request/update/changeofmind', [UpdateCompanyEInvoiceInfoController::class, 'updateChangeOfMindRequest'])->name('einvoice.request.change'); });