diff --git a/app/Http/Requests/Company/UpdateCompanyRequest.php b/app/Http/Requests/Company/UpdateCompanyRequest.php index d53defa9b1..963ec9eacf 100644 --- a/app/Http/Requests/Company/UpdateCompanyRequest.php +++ b/app/Http/Requests/Company/UpdateCompanyRequest.php @@ -214,7 +214,7 @@ class UpdateCompanyRequest extends Request } } - if($this->company->settings->e_invoice_type == 'VERIFACTU') { + if($this->company->verifactuEnabled()) { $settings['lock_invoices'] = 'when_sent'; $settings['e_invoice_type'] = 'VERIFACTU'; } diff --git a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php index fd65a4603c..a40d002a66 100644 --- a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php +++ b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php @@ -98,6 +98,14 @@ class UpdateInvoiceRequest extends Request return $rules; } + public function withValidator($validator) + { + if($this->invoice->company->verifactuEnabled() && $this->invoice->status_id !== \App\Models\Invoice::STATUS_DRAFT){ + $validator->errors()->add('status_id', ctrans('texts.locked_invoice')); + } + } + + public function prepareForValidation() { diff --git a/app/Services/EDocument/Standards/Validation/Verifactu/EntityLevel.php b/app/Services/EDocument/Standards/Validation/Verifactu/EntityLevel.php index c10ab19023..afba6729a6 100644 --- a/app/Services/EDocument/Standards/Validation/Verifactu/EntityLevel.php +++ b/app/Services/EDocument/Standards/Validation/Verifactu/EntityLevel.php @@ -98,8 +98,13 @@ class EntityLevel implements EntityLevelInterface } - $_invoice = (new \App\Services\EDocument\Standards\Verifactu\RegistroAlta($invoice))->run()->getInvoice(); - $xml = $_invoice->toXmlString(); + $_invoice = (new \App\Services\EDocument\Standards\Verifactu\RegistroAlta($invoice))->run(); + + if($invoice->amount < 0) { + $_invoice = $_invoice->setRectification(); + } + + $xml = $_invoice->getInvoice()->toXmlString(); $xslt = new \App\Services\EDocument\Standards\Validation\VerifactuDocumentValidator($xml); $xslt->validate(); diff --git a/app/Services/EDocument/Standards/Verifactu/RegistroAlta.php b/app/Services/EDocument/Standards/Verifactu/RegistroAlta.php index 2bb4749312..8cebcf8892 100644 --- a/app/Services/EDocument/Standards/Verifactu/RegistroAlta.php +++ b/app/Services/EDocument/Standards/Verifactu/RegistroAlta.php @@ -289,7 +289,6 @@ class RegistroAlta $this->v_invoice->setTipoRectificativa('I'); // S for substitutive rectification //need to harvest the parent invoice!! - $_i = Invoice::withTrashed()->find($this->decodePrimaryKey($this->invoice->backup->parent_invoice_id)); if(!$_i) {