diff --git a/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php new file mode 100644 index 00000000..264b2d70 --- /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 FetchesCompanyModule */ + private $fetchesCompanyModule; + + /** @var UpdatesCompanyEInvoiceRequest */ + private $updatesCompanyEInvoiceRequest; + + + /** + * UpdateCompanyEInvoiceRequestChangeLogic constructor. + * @param FetchesCompanyModule $fetchesCompanyModule + * @param UpdatesCompanyEInvoiceRequest $updatesCompanyEInvoiceRequest + */ + public function __construct(FetchesCompanyModule $fetchesCompanyModule, UpdatesCompanyEInvoiceRequest $updatesCompanyEInvoiceRequest) + { + $this->fetchesCompanyModule = $fetchesCompanyModule; + $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()); + $companyModule = $this->fetchesCompanyModule->execute(['id' => $dto->companyModuleId]); + + if($companyModule->company->e_invoice === 1){ + $this->updatesCompanyEInvoiceRequest->execute($companyModule->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..596a6f3b 100644 --- a/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php +++ b/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php @@ -17,12 +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/companies/forms/EInvoiceInfoFormComponent.vue b/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue index b5289ac8..ed1d82a6 100644 --- a/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue +++ b/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue @@ -81,6 +81,18 @@ +
+
+ + I don't need now + +
+
@@ -239,6 +251,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/companies/sections/CustomerProfileSectionComponent.vue b/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue index 3d1b988c..978b7a8e 100644 --- a/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue +++ b/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue @@ -101,7 +101,7 @@ :company-module-id="company.company_module.id" :company-type="company.type" v-on:eInvoiceInfoUpdated="updatedEInvoiceInfo($event)" - v-on:close="createAddress = !createAddress"> + v-on:eInvoiceChangeOfMindRequest="changeOfMindEInvoiceRequest()">
@@ -135,7 +135,8 @@ return { section: 'orderListSection', isLoading: true, - company: null + company: null, + parameters : {} } }, computed: { @@ -163,25 +164,30 @@ this.isLoading = false; this.company = response.payload.data; - if(!this.$store.getters.isAdmin){ - if(this.company.company_module.e_invoice === null){ - this.$nextTick(() => { - $('#modal-einvoice-request').modal('show'); - }); - } - else if( this.company.company_module.e_invoice && (this.company.company_module.tin === null || this.company.company_module.msic_code === null) ) - { - this.$nextTick(() => { - $('#modal-einvoice-info').modal('show'); - }); - } + if(section == this.section + 'ChangeOfMind'){ + this.$store.dispatch('reloadList', {'name': this.section}); } else{ - if( this.company.company_module.e_invoice && (this.company.company_module.tin === null || this.company.company_module.msic_code === null) ) - { - this.$nextTick(() => { - $('#modal-einvoice-info').modal('show'); - }); + if(!this.$store.getters.isAdmin){ + if(this.company.company_module.e_invoice === null){ + this.$nextTick(() => { + $('#modal-einvoice-request').modal('show'); + }); + } + else if( this.company.company_module.e_invoice && (this.company.company_module.tin === null || this.company.company_module.msic_code === null) ) + { + this.$nextTick(() => { + $('#modal-einvoice-info').modal('show'); + }); + } + } + else{ + if( this.company.company_module.e_invoice && (this.company.company_module.tin === null || this.company.company_module.msic_code === null) ) + { + this.$nextTick(() => { + $('#modal-einvoice-info').modal('show'); + }); + } } } }, @@ -193,6 +199,11 @@ updatedEInvoiceInfo(info){ this.$store.dispatch('reloadList', {'name': this.section}); }, + changeOfMindEInvoiceRequest(){ + this.parameters.company_module_id = this.company.company_module.id; + this.parameters.e_invoice_request = false; + this.submit((this.route('api.company.einvoice.request.change')), 'post', this.section + 'ChangeOfMind', true, true); + } } } diff --git a/routes/company.php b/routes/company.php index 2bafb203..737a23bf 100644 --- a/routes/company.php +++ b/routes/company.php @@ -47,4 +47,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'); });