Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion 3rdparty/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
],
"require": {
"php": "^8.2",
"librecodeoop/nfse-php": "dev-main#d2fd12b8e3590100dfb55cdef8310e884d18e22a"
"librecodeoop/nfse-php": "dev-main#ca369400494afa2cdf07137479376d652b0be902"
},
"minimum-stability": "dev",
"prefer-stable": true,
Expand Down
3 changes: 3 additions & 0 deletions Providers/Main.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
use Modules\Nfse\Support\VaultConfig;
use Modules\Nfse\Vendor\LibreCodeCoop\NfsePHP\Contracts\HttpTransportInterface;
use Modules\Nfse\Vendor\LibreCodeCoop\NfsePHP\Contracts\SecretStoreInterface;
use Modules\Nfse\Vendor\LibreCodeCoop\NfsePHP\Domain\OfficialDomainCatalog;
use Modules\Nfse\Vendor\LibreCodeCoop\NfsePHP\Http\NativeStreamTransport;
use Modules\Nfse\Vendor\LibreCodeCoop\NfsePHP\SecretStore\OpenBaoSecretStore;

Expand Down Expand Up @@ -458,6 +459,7 @@ protected function registerItemFiscalFieldInjection(): void
}

$catalog = (new Lc116Catalog())->search(null, 400);
$nationalServiceCatalog = (new OfficialDomainCatalog())->searchNationalServices(null, 400);
$validation = (new ItemFiscalProfileValidator())->validate(
is_object($profile) ? (string) ($profile->item_lista_servico ?? '') : null,
is_object($profile) ? (string) ($profile->codigo_tributacao_nacional ?? '') : null,
Expand All @@ -475,6 +477,7 @@ protected function registerItemFiscalFieldInjection(): void
}

$view->with('nfseLc116Catalog', $catalog);
$view->with('nfseNationalServiceCatalog', $nationalServiceCatalog);
$view->with('nfseItemFiscalProfile', $profile);
$view->with('nfseItemFiscalValidation', $validation);
});
Expand Down
3 changes: 2 additions & 1 deletion Resources/lang/en-GB/general.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,8 @@
'item_lista_servico_placeholder' => 'Example: 1.07 - Technical IT support',
'item_lista_servico_hint' => 'Use the official LC116 code. Only 4 digits are stored.',
'codigo_tributacao_nacional' => 'National Taxation Code (cTribNac)',
'codigo_tributacao_nacional_placeholder' => 'Example: 010701',
'codigo_tributacao_nacional_placeholder' => 'Select an official code...',
'codigo_tributacao_nacional_legacy' => 'Previously saved code; review before issuing',
'codigo_tributacao_municipal' => 'Municipal taxation code',
'codigo_tributacao_municipal_placeholder' => 'Example: 001',
'codigo_tributacao_municipal_hint' => 'Enter the 3-digit municipal subdivision published by the municipality, when applicable.',
Expand Down
3 changes: 2 additions & 1 deletion Resources/lang/pt-BR/general.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,8 @@
'item_lista_servico_placeholder' => 'Ex.: 1.07 - Suporte técnico em informática',
'item_lista_servico_hint' => 'Use o código oficial da lista LC116. Apenas os 4 dígitos são salvos.',
'codigo_tributacao_nacional' => 'Código de Tributação Nacional (cTribNac)',
'codigo_tributacao_nacional_placeholder' => 'Ex.: 010701',
'codigo_tributacao_nacional_placeholder' => 'Selecione um código oficial...',
'codigo_tributacao_nacional_legacy' => 'Código salvo anteriormente; revise antes de emitir',
'codigo_tributacao_municipal' => 'Código de tributação municipal',
'codigo_tributacao_municipal_placeholder' => 'Ex.: 001',
'codigo_tributacao_municipal_hint' => 'Informe o desdobramento municipal de 3 dígitos publicado pelo município, quando aplicável.',
Expand Down
18 changes: 15 additions & 3 deletions Resources/views/items/partials/fiscal-fields.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,16 @@
@php($selectedServiceOption = $normalizedServiceCode !== '' ? 'lc:' . $normalizedServiceCode : '')
@php($oldNationalCode = old('nfse_codigo_tributacao_nacional', $profileNationalCode))
@php($oldMunicipalCode = old('nfse_codigo_tributacao_municipal', $profileMunicipalCode))
@php($nationalServiceOptions = [])
@foreach(($nfseNationalServiceCatalog ?? []) as $entry)
@php($entryCode = preg_replace('/\D+/', '', (string) ($entry['code'] ?? '')) ?? '')
@if(strlen($entryCode) === 6)
@php($nationalServiceOptions[$entryCode] = $entryCode . ' - ' . (string) ($entry['description'] ?? ''))
@endif
@endforeach
@if($oldNationalCode !== '' && !array_key_exists((string) $oldNationalCode, $nationalServiceOptions))
@php($nationalServiceOptions[(string) $oldNationalCode] = (string) $oldNationalCode . ' - ' . trans('nfse::general.items.codigo_tributacao_nacional_legacy'))
@endif
@php($lc116Options = [])
@foreach(($nfseLc116Catalog ?? []) as $entry)
@php($entryCode = \Modules\Nfse\Support\Lc116Code::normalize($entry['code'] ?? ''))
Expand All @@ -96,12 +106,14 @@
<p class="text-xs text-gray-500">{{ trans('nfse::general.items.item_lista_servico_hint') }}</p>
</div>

<x-form.group.text
<x-form.group.select
name="nfse_codigo_tributacao_nacional"
label="{{ trans('nfse::general.items.codigo_tributacao_nacional') }}"
:value="$oldNationalCode"
:options="$nationalServiceOptions"
:selected="$oldNationalCode"
placeholder="{{ trans('nfse::general.items.codigo_tributacao_nacional_placeholder') }}"
maxlength="6"
searchable
sort-options="false"
form-group-class="sm:col-span-6"
not-required
/>
Expand Down
6 changes: 4 additions & 2 deletions Tests/Feature/ItemFiscalFieldsRenderingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ public function testCreateItemPageRendersNfseFiscalFields(): void
->get(route('items.create'))
->assertOk()
->assertSee('name="nfse_item_lista_servico"', false)
->assertSee('name="nfse_codigo_tributacao_nacional"', false);
->assertSee('name="nfse_codigo_tributacao_nacional"', false)
->assertSee('010101', false);
}

public function testEditItemPageRendersNfseFiscalFields(): void
Expand All @@ -29,6 +30,7 @@ public function testEditItemPageRendersNfseFiscalFields(): void
->get(route('items.edit', $item))
->assertOk()
->assertSee('name="nfse_item_lista_servico"', false)
->assertSee('name="nfse_codigo_tributacao_nacional"', false);
->assertSee('name="nfse_codigo_tributacao_nacional"', false)
->assertSee('010101', false);
}
}
1 change: 1 addition & 0 deletions tests/Unit/Build/NfsePhpRuntimeContractTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public function testSefinClientExposesRecoveryAndEventCapabilities(): void
self::assertTrue(method_exists(NfseClient::class, 'queryEvent'));
self::assertTrue(method_exists(NfseClient::class, 'cancel'));
self::assertTrue(method_exists(NfseClient::class, 'cancelWithReason'));
self::assertTrue(method_exists(\Modules\Nfse\Vendor\LibreCodeCoop\NfsePHP\Domain\OfficialDomainCatalog::class, 'searchNationalServices'));
}

public function testAdnClientExposesDistributionCapabilities(): void
Expand Down
1 change: 0 additions & 1 deletion tests/Unit/Build/ScopedRuntimeComposerConfigTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ public function testScopedRuntimeManifestLivesUnder3rdparty(): void
$content = file_get_contents($manifestPath);

self::assertIsString($content);
self::assertStringContainsString('"librecodeoop/nfse-php": "dev-main#d2fd12b8e3590100dfb55cdef8310e884d18e22a"', $content);
self::assertStringContainsString('"url": "https://github.com/LibreCodeCoop/nfse-php"', $content);
self::assertMatchesRegularExpression(
'/"librecodeoop\/nfse-php": "dev-main#[0-9a-f]{40}"/',
Expand Down
Loading