commit9
tests / ci (push) Canceled after 0s

This commit is contained in:
2026-10-30 20:02:30 +02:00
parent 6d14b4e6f0
commit c6373365bf
225 changed files with 15365 additions and 285 deletions
@@ -8,6 +8,7 @@ use App\Models\User;
use Brick\Math\BigDecimal;
use Carbon\CarbonImmutable;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Validation\ValidationException;
class OrganizationConfiguration
@@ -77,6 +78,33 @@ class OrganizationConfiguration
}
$this->assign($actor, $target->id, $data['profile_ids'], $data['maintenance'] ?? false, $data['expires_at'] ?? null, $data['reason']);
$after = ['user_id' => $target->id, 'profile_ids' => $data['profile_ids'], 'maintenance' => $data['maintenance'] ?? false, 'expires_at' => $data['expires_at'] ?? null, 'reason' => $data['reason']];
} elseif ($command === 'comparison') {
$company = Tenant::query()->findOrFail($actor->tenant_id);
$before = $company->only(['comparison_policy']);
$current = app(ComparisonPolicy::class)->company($company);
$policy = app(ComparisonPolicy::class)->checked([...$data, 'revision' => $current['revision'] + 1, 'configured' => true]);
$company->update(['comparison_policy' => $policy]);
$after = ['comparison_policy' => $policy, 'reason' => $data['reason'], 'scope' => 'new_requisitions_only'];
} elseif ($command === 'ai_plan') {
abort_unless(Schema::hasColumn('tenants', 'intelligence_policy'), 503, 'Instalação da configuração de inteligência pendente.');
$company = Tenant::query()->findOrFail($actor->tenant_id);
$before = $company->only(['intelligence_policy']);
$policy = app(IntelligencePolicy::class)->company($company);
$policy = [...$policy, 'revision' => $policy['revision'] + 1, 'configured' => true, 'ai_plan' => app(AiPreparationPlan::class)->checked($data)];
$company->update(['intelligence_policy' => $policy]);
$after = ['intelligence_policy' => $policy, 'reason' => $data['reason'], 'scope' => 'draft_preparations_only', 'external_processing_enabled' => false];
} elseif ($command === 'intelligence') {
abort_unless(Schema::hasColumn('tenants', 'intelligence_policy'), 503, 'Instalação da configuração de inteligência pendente.');
$company = Tenant::query()->findOrFail($actor->tenant_id);
$before = $company->only(['intelligence_policy']);
$policy = app(IntelligencePolicy::class)->next($company, $data);
$company->update(['intelligence_policy' => $policy]);
$after = ['intelligence_policy' => $policy, 'reason' => $data['reason'], 'scope' => 'future_consultations_only', 'external_processing_enabled' => false];
} elseif ($command === 'tax') {
$company = Tenant::query()->findOrFail($actor->tenant_id);
$before = $company->only(['default_tax_rate']);
$company->update(['default_tax_rate' => (string) BigDecimal::of($data['default_tax_rate'])->toScale(2)]);
$after = [...$company->only(['default_tax_rate']), 'reason' => $data['reason'], 'scope' => 'new_lines_only'];
} elseif ($command === 'rules') {
$company = Tenant::query()->findOrFail($actor->tenant_id);
$before = $company->only(['first_limit_minor', 'second_limit_minor', 'approval_includes_tax', 'rules_provisional']);