Updates for validation for verifactu documents

This commit is contained in:
David Bomba 2025-10-15 12:22:28 +11:00
parent 345e8fa2ce
commit f98411f81b
4 changed files with 110 additions and 2 deletions

View File

@ -101,6 +101,20 @@ class UpdateClientRequest extends Request
return $rules;
}
public function withValidator($validator)
{
$validator->after(function ($validator) {
$user = auth()->user();
$company = $user->company();
if(isset($this->settings['lock_invoices']) && $company->verifactuEnabled() && $this->settings['lock_invoices'] != 'when_sent'){
$validator->errors()->add('settings.lock_invoices', 'Locked Invoices Cannot Be Disabled');
}
});
}
public function messages()
{
return [

View File

@ -47,6 +47,20 @@ class StoreGroupSettingRequest extends Request
return $rules;
}
public function withValidator($validator)
{
$validator->after(function ($validator) {
$user = auth()->user();
$company = $user->company();
if(isset($this->settings['lock_invoices']) && $company->verifactuEnabled() && $this->settings['lock_invoices'] != 'when_sent'){
$validator->errors()->add('settings.lock_invoices', 'Locked Invoices Cannot Be Disabled');
}
});
}
public function prepareForValidation()
{
$input = $this->all();

View File

@ -41,6 +41,22 @@ class UpdateGroupSettingRequest extends Request
}
public function withValidator($validator)
{
$validator->after(function ($validator) {
$user = auth()->user();
$company = $user->company();
if(isset($this->settings['lock_invoices']) && $company->verifactuEnabled() && $this->settings['lock_invoices'] != 'when_sent'){
$validator->errors()->add('settings.lock_invoices', 'Locked Invoices Cannot Be Disabled');
}
});
}
public function prepareForValidation()
{
$input = $this->all();

View File

@ -11,14 +11,16 @@
namespace Tests\Feature\EInvoice\Verifactu;
use App\DataMapper\InvoiceItem;
use Tests\TestCase;
use App\Models\Client;
use App\Models\Invoice;
use App\Models\Project;
use Tests\MockAccountData;
use Illuminate\Support\Str;
use App\Models\GroupSetting;
use App\Models\Subscription;
use App\Models\ClientContact;
use App\DataMapper\InvoiceItem;
use App\Utils\Traits\MakesHash;
use App\Models\RecurringInvoice;
use App\Factory\InvoiceItemFactory;
@ -27,7 +29,6 @@ use Illuminate\Support\Facades\Config;
use App\Repositories\InvoiceRepository;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class VerifactuApiTest extends TestCase
@ -95,6 +96,69 @@ class VerifactuApiTest extends TestCase
}
public function test_update_group_settings_with_locked_invoices()
{
$settings = $this->company->settings;
$settings->e_invoice_type = 'VERIFACTU';
$settings->lock_invoices = 'when_sent';
$this->company->settings = $settings;
$this->company->save();
$gs = new GroupSetting();
$gs->name = 'Test';
$gs->company_id = $this->company->id;
$settings = new \stdClass();
$settings->lock_invoices = 'when_sent';
$gs->settings = $settings;
$gs->save();
$settings = new \stdClass();
$settings->lock_invoices = 'off';
$data = [
'name' => 'testX',
'settings' => (array)$settings,
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->putJson('/api/v1/group_settings/'.$gs->hashed_id, $data);
nlog($response->json());
$response->assertStatus(422);
}
public function test_store_group_settings_with_locked_invoices()
{
$settings = $this->company->settings;
$settings->e_invoice_type = 'VERIFACTU';
$settings->lock_invoices = 'when_sent';
$this->company->settings = $settings;
$this->company->save();
$settings = new \stdClass();
$settings->lock_invoices = 'off';
$data = [
'name' => 'testX',
'settings' => $settings,
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->postJson('/api/v1/group_settings', $data);
$response->assertStatus(422);
}
public function test_update_company_settings_with_locked_invoices()
{
$settings = $this->company->settings;