Compare commits

...
Author SHA1 Message Date
nala 5c0cb25cea Preserve documented liberatory settlement when changing ISPC route
tests / ci (push) Canceled after 0s
2026-10-25 18:18:03 +02:00
nala 3dda7130ee Group ISPC occasional operations, excess acquisition treatment and 2026 formal preparation in QA 2026-10-25 18:12:34 +02:00
nala 6af7092e83 Reconcile installed L3 receipt and preserve current balance in compatible ISPC QA
tests / ci (push) Canceled after 0s
2026-10-25 17:15:52 +02:00
nala 49b448eb47 Prepare compatible ISPC quarterly QA on L3 baseline without experimental P001 changes 2026-10-25 17:11:58 +02:00
nala fa32a2b9e1 Align legacy message assertion with agreed P001 residual without fiscal changes
tests / ci (push) Canceled after 0s
2026-10-25 17:09:26 +02:00
nala 0f4df8a4d1 Prepare compatible L3 additional delivery with preserved residuals and accepted proofs
tests / ci (push) Canceled after 0s
2026-10-25 16:38:24 +02:00
nala b189d0fa43 Prepare exact beverage partitions, fiscal gap diagnostics and L3 form review in QA 2026-10-25 15:55:25 +02:00
nala dbeaf886ee Record installed L3 E delta and keep L3 and L1 L2 residuals open 2026-10-25 15:29:38 +02:00
nala 7ad187f9f0 Prepare demonstrated L3 E delivery after verified backup and isolated restore
tests / ci (push) Canceled after 0s
2026-10-25 15:25:44 +02:00
nala 4708662532 feat(iva): prepare beverage restitution QA and retain residual scope 2026-10-25 15:08:10 +02:00
nala 46944402da Record installed grouped L3 C D delta and preserved residuals 2026-10-25 14:53:45 +02:00
nala de36f02880 Prepare grouped L3 C D delivery after verified backup restore
tests / ci (push) Canceled after 0s
2026-10-25 14:50:04 +02:00
nala 9e2d90c880 Prepare L3 D refund lifecycle and grouped C D QA delivery with preserved credits 2026-10-25 14:47:03 +02:00
nala b7a745e64f Prepare L3 C substitutions with frozen predecessor and payment reconciliation in QA 2026-10-25 14:23:56 +02:00
nala 3aa851a467 Record installed L3 A/B delta and preserved residuals 2026-10-25 14:13:30 +02:00
nala 109cb0fe9e Prepare grouped L3 A/B delivery after verified backup restore
tests / ci (push) Canceled after 0s
2026-10-25 14:10:24 +02:00
nala f7b778cdce Implement scoped L3 A B credit carry and VAT closure with frozen L2 sources 2026-10-25 14:01:33 +02:00
nala 508aeb5205 Delimit L3 VAT closure increments using existing L1 L2 and cashflow mechanisms 2026-10-25 13:40:20 +02:00
nala acbd1f3315 Record installed L2 demonstrated scope and retain residual regularization work 2026-10-25 13:35:03 +02:00
nala 7a380b7690 Prepare grouped L2 D E delivery after authenticated backup and isolated restore
tests / ci (push) Canceled after 0s
2026-10-25 13:31:55 +02:00
nala dde20c3348 Implement scoped L2 E annual adjustments and asset control with grouped D E manifest 2026-10-25 13:22:17 +02:00
nala 2c2a2f2010 Implement L2 D allocation and provisional proportions with exact totals and frozen history 2026-10-25 13:00:59 +02:00
nala 855ab066c4 Record installed grouped L2 ABC and preserved L1 closure balance 2026-10-25 12:44:51 +02:00
nala 819ae791e9 Prepare grouped L2 ABC delivery after authenticated backup and isolated restore
tests / ci (push) Canceled after 0s
2026-10-25 12:41:42 +02:00
nala fc7e590d4e Prepare grouped L2 A B C with customs deduction exclusions and exact affected totals 2026-10-25 12:29:10 +02:00
nala 56c948ec45 Implement L2-A acquisition deduction rights with preserved history and affected totals 2026-10-25 12:12:29 +02:00
nala 940d69b82a Record limited L1 operational closure and executable L2 scope 2026-10-25 11:59:50 +02:00
nala 7febb6f7be Record installed P047 and explicitly partial P058 baggage delivery 2026-10-25 11:53:35 +02:00
nala ada9629bb6 Prepare grouped P047 delivery with explicitly partial P058 baggage
tests / ci (push) Canceled after 0s
2026-10-25 11:50:02 +02:00
nala 6e1dc4104c Implement P047 four remission families with scoped customs evidence and QA 2026-10-25 11:43:00 +02:00
nala 4f28fac5d0 Clarify L1 residual closure criteria and add partial returnee baggage QA 2026-10-25 11:24:02 +02:00
nala 9019f766f2 Record installed P104 and explicitly partial offer returnee scopes 2026-10-25 11:08:21 +02:00
nala e38aa74920 Authorize grouped installer after authenticated backup and isolated restore
tests / ci (push) Canceled after 0s
2026-10-25 11:04:59 +02:00
nala fab72d2e0c Prepare joint P104 delivery with explicit partial branch coverage 2026-10-25 11:02:30 +02:00
nala 7b6a95a718 Record P104 operational QA and partial offers returnee coverage 2026-10-25 10:57:42 +02:00
nala 9536eb710b Implement Tempo FX selection and offer request decision workflow in QA 2026-10-25 10:54:51 +02:00
nala 8b3ec2b04d docs(iva): receipt joint P046 P059 delivery with scoped RSA benefits 2026-10-25 10:26:31 +02:00
nala a665ee9c97 deploy(iva): deliver P046 P059 jointly with scoped miner benefits
tests / ci (push) Canceled after 0s
2026-10-25 10:22:39 +02:00
nala 2b130a66ec docs(iva): identify miner sources and record compatible P046 P059 QA 2026-10-25 10:16:33 +02:00
nala 4e550c3892 feat(iva): prepare documented P059 miner import paths in QA 2026-10-25 10:13:51 +02:00
nala 34bbcfa7e4 docs(iva): record P046 QA and concrete remaining source actions 2026-10-25 09:51:14 +02:00
nala 0807201517 feat(iva): prepare P046 objective import correspondence in QA 2026-10-25 09:48:47 +02:00
nala f059622562 docs(iva): receipt joint P129 P133 delivery with fiscal continuity 2026-10-25 09:34:10 +02:00
nala a48e974979 docs(iva): prepare joint travel event delivery preserving fiscal continuity
tests / ci (push) Canceled after 0s
2026-10-25 01:48:26 +02:00
nala 1a5f72209e docs(iva): record joint travel and special event QA with limitations 2026-10-25 01:45:12 +02:00
nala c309215d0f fix(iva): report only applicable special event facts preserving drafts 2026-10-25 01:43:06 +02:00
nala 7986d02405 feat(iva): add travel period margin and special travel suspensive events 2026-10-25 01:42:05 +02:00
nala 91c4063338 docs(iva): receipt joint P002 P121 P130 limited-scope delivery 2026-10-25 01:30:16 +02:00
nala df43aeb1e5 docs(iva): prepare joint foreign and limited digital delivery after restore
tests / ci (push) Canceled after 0s
2026-10-25 01:27:21 +02:00
nala de4b25bbd7 docs(iva): record digital QA and prepare grouped P002 delivery 2026-10-25 01:24:34 +02:00
nala 5f088e3411 feat(iva): classify digital goods and services with separate obligations 2026-10-25 01:23:14 +02:00
nala e4c490b323 docs: record P002 QA and delimit P104 currency finding 2026-10-25 01:15:52 +02:00
nala 86970cd507 Implement P002 reusing territoriality and events and clarify P104 legal cotejo 2026-10-25 01:13:46 +02:00
nala 2de67bebf9 docs(iva): receipt P131 P132 delivery keeping P104 conditional and pending 2026-10-25 01:07:32 +02:00
nala e8b5ae43ad docs(iva): prepare P131 P132 delivery with conditional P104 after isolated restore
tests / ci (push) Canceled after 0s
2026-10-25 01:04:54 +02:00
nala 0052cd42d2 docs(iva): record P131 P132 QA and delimit partial P104 currency coverage 2026-10-25 01:02:16 +02:00
nala 7e6e462e12 Implement P131 P132 event timing and conditional P104 draft in QA 2026-10-25 01:01:15 +02:00
nala 7a3ac43224 docs(iva): receipt P087 P127 delivery and remaining dependency groups 2026-10-25 00:52:54 +02:00
nala 92eaa93570 docs(iva): prepare joint P087 P127 delivery after isolated restore
tests / ci (push) Canceled after 0s
2026-10-25 00:50:30 +02:00
nala d84883b801 docs(iva): record P087 P127 QA and concrete actions for 16 pending IDs 2026-10-25 00:48:08 +02:00
nala 5999e35fcb Implement P087 binding lease and P127 business transfers in QA 2026-10-25 00:46:56 +02:00
nala 4cacef23dd docs(iva): receipt P123 P126 delivery with consignment and contrary proof explicit 2026-10-25 00:43:07 +02:00
nala ce9d649fbf docs(iva): prepare joint P123 P126 delivery after backup and isolated restore
tests / ci (push) Canceled after 0s
2026-10-25 00:40:41 +02:00
nala a5b1ae6657 docs(iva): record P123 P126 grouped QA and correct consignment designation 2026-10-25 00:37:34 +02:00
nala f640e19370 Implement P123 consignment and P126 rebuttable goods presumptions in QA 2026-10-25 00:36:56 +02:00
nala 4ef7be3d6f docs(iva): receipt grouped P092 P093 P125 delivery preserving margin eligibility 2026-10-25 00:33:14 +02:00
240 changed files with 31346 additions and 81 deletions
@@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers\Api\V1;
use App\Http\Controllers\Controller;
use App\Jobs\ScanDocumentForMalware;
use App\Services\SimulationFormDrafts;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class SimulationOfferDocumentController extends Controller
{
public function store(Request $request, string $id, SimulationFormDrafts $drafts)
{
abort_unless(Str::isUuid($id), 404);
$drafts->find($id, $request);
// Same private document infrastructure and technical file limit as investment attachments.
$request->validate(['file' => ['required', 'file', 'mimetypes:application/pdf,text/plain,image/png,image/jpeg', 'max:10240']]);
$file = $request->file('file');
$hash = hash_file('sha256', $file->getRealPath());
$existing = DB::table('documents')->where('source_system', 'simulation-fiscal-offer')->where('external_id', $id)->where('sha256', $hash)->whereNull('deleted_at')->first();
if ($existing) {
return response()->json(['data' => $this->metadata($id, $existing)], 200)->header('Cache-Control', 'private, no-store');
}
$documentId = (string) Str::uuid();
$key = $file->storeAs('simulation-offers/'.$id, $documentId, 'local');
abort_unless(is_string($key), 500);
try {
DB::table('documents')->insert(['id' => $documentId, 'source_system' => 'simulation-fiscal-offer', 'external_id' => $id,
'file_name' => basename($file->getClientOriginalName()), 'media_type' => $file->getMimeType(), 'storage_key' => $key,
'sha256' => $hash, 'size_bytes' => $file->getSize(), 'uploaded_by' => $request->user()->id,
'status' => 'quarantined', 'data_classification' => 'confidential']);
} catch (\Throwable $e) {
Storage::disk('local')->delete($key);
throw $e;
}
ScanDocumentForMalware::dispatch($documentId)->afterCommit();
return response()->json(['data' => $this->metadata($id, DB::table('documents')->where('id', $documentId)->first())], 201)->header('Cache-Control', 'private, no-store');
}
public function index(Request $request, string $id, SimulationFormDrafts $drafts)
{
abort_unless(Str::isUuid($id), 404);
$drafts->find($id, $request);
$documents = DB::table('documents')->where('source_system', 'simulation-fiscal-offer')->where('external_id', $id)->whereNull('deleted_at')->get();
return response()->json(['data' => $documents->map(fn ($doc) => $this->metadata($id, $doc))])->header('Cache-Control', 'private, no-store');
}
public function download(Request $request, string $id, string $document, SimulationFormDrafts $drafts)
{
abort_unless(Str::isUuid($id) && Str::isUuid($document), 404);
$drafts->find($id, $request);
$doc = DB::table('documents')->where('id', $document)->where('source_system', 'simulation-fiscal-offer')->where('external_id', $id)->whereNull('deleted_at')->first();
abort_unless($doc, 404);
abort_unless($doc->status === 'active' && $doc->malware_scan_status === 'clean' && hash_equals(trim($doc->sha256), (string) $doc->malware_scanned_sha256), 409, 'Anexo conservado; descarga disponível após análise antimalware concluída.');
$root = realpath(Storage::disk('local')->path('simulation-offers/'.$id));
$path = realpath(Storage::disk('local')->path($doc->storage_key));
abort_unless($root && $path && str_starts_with(strtolower($path), strtolower($root.DIRECTORY_SEPARATOR)) && is_file($path), 404);
abort_unless(hash_equals(trim($doc->sha256), hash_file('sha256', $path)), 409, 'Conteúdo do anexo diverge do hash registado.');
return response()->download($path, basename($doc->file_name), ['Cache-Control' => 'private, no-store', 'X-Content-Type-Options' => 'nosniff']);
}
private function metadata(string $id, object $doc): array
{
return ['id' => $doc->id, 'draftId' => $id, 'name' => $doc->file_name, 'sha256' => trim($doc->sha256),
'scan' => $doc->malware_scan_status, 'url' => '/api/v1/simulation-drafts/'.$id.'/offer-documents/'.$doc->id];
}
}
@@ -53,7 +53,7 @@ final class EnsureSimulationRecoveryCookie
}
}
return $response->withCookie(cookie(
$response->headers->setCookie(cookie(
self::NAME,
$forget ? '' : $token,
$minutes,
@@ -64,6 +64,7 @@ final class EnsureSimulationRecoveryCookie
false,
'lax',
));
return $response;
}
private function isExplicitDraftActivity(Request $request, Response $response): bool
@@ -83,8 +83,9 @@ class StoreSimulationFormDraftRequest extends FormRequest
'economic_snapshot.published_iva_scope' => ['nullable', 'string', 'in:yes,no'],
'economic_snapshot.monthly_iva_settings' => ['nullable', 'string', 'max:2000'],
'economic_snapshot.monthly_iva_snapshot' => ['nullable', 'string', 'max:60000'],
// Preserve operation books and explicit history as the draft grows.
'economic_snapshot.modelo_a_snapshot' => ['nullable', 'string', 'json', 'max:4000000'],
// Preserve accepted books and explicit history through the L3 refund increment.
// This is a bounded transport choice, not a business limit on fiscal records.
'economic_snapshot.modelo_a_snapshot' => ['nullable', 'string', 'json', 'max:6000000'],
'economic_snapshot.project_team_snapshot' => ['nullable', 'string', 'max:30000'],
'economic_snapshot.project_execution_snapshot' => ['nullable', 'string', 'max:30000'],
'economic_snapshot.project_risk_responses_snapshot' => ['nullable', 'string', 'max:30000'],
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,397 @@
{
"status": "installed_scoped_habitual_quarterly_ISPC_and_delta_verified",
"authorization": "Tempo25/10:concluir instalação6af7092e peloGit combackup/restaurofresco,conferirdelta,preservarL3eprovasaceites;ISPCnãoéintegralmenteconcluído.",
"candidate_installed": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"previous_installed": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"prepared_receipt": "ispc-l4-prepared-delivery-20261025.json",
"authenticated_preflight": {
"free_bytes": 7635865600,
"existing_pipeline_minimum_bytes": 5368709120,
"space_guard_satisfied": true,
"installed": {
"status": "installed",
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"previous_release": "/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"release_revision": {
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"branch": "main",
"built_at": "2026-10-25T15:12:37.806036+00:00",
"manifest_sha256": "cddac25dc66b3e555f2380cf3a9d4b2da6501cd03927c183c832a05b0ee5c993"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"fresh_backup": {
"stage": "/var/backups/investmoz-ispc-l4-delivery-20261025/backup",
"created_at": "2026-10-25T15:25:16Z",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "77ba24736ff574d9273845359db90d1a032ff0f39d7f9195efaeff842d5b5857",
"files_sha256": "59917d3f0420dc8ede0562da70ae5f67877aa99f77313950f9e1d840b7505e3b",
"restore_verified": false
},
"isolated_restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "ispc_l4_restore_20261025",
"port": 55441,
"source_dump_sha256": "77ba24736ff574d9273845359db90d1a032ff0f39d7f9195efaeff842d5b5857",
"active_database_writes": 0
},
"installed_protected_delta": {
"installed": {
"status": "installed",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"previous_release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 9,
"L3_unchanged_runtime_files_verified": 11,
"documentary_files_verified": 17,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "81ca74112a72e3638ad335678ebfd0ef"
},
"after": {
"rows": 106,
"checksum": "e799b80b260c8c23326c72a5d7c52881"
}
},
"sessions": {
"before": {
"rows": 156,
"checksum": "5b29e80e2877c2e0bf0c81e046230987"
},
"after": {
"rows": 157,
"checksum": "e83a47d5ba184b55f1680f52ff7e0993"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 156,
"after_rows": 159,
"changes": [
{
"key_sha256": "5045187d392f685b58ae0ce1749c84eb5a30c5ab441aa0e65cfc6d905d0180fa",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "3d45feddb6a0eafd7d40e3efe516866803e4432d922c6a6b6e839276d8461075",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "712b82ddcfb6f6af6a4ea5937ae2d5195976cf4c808e6202a4b234eef1560210",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_to_confirm_separately": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"installed_public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"branch": "main",
"built_at": "2026-10-25T15:29:39.962545+00:00",
"manifest_sha256": "0761702f0aa0f54dd4e7dac14efadf290830c52a5762a97733d82f5332fb44a8"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"ISPC — enquadramento e opção": [
"assets/services-tj9wihZS.js"
],
"ISPC — apuramento trimestral": [
"assets/services-tj9wihZS.js"
],
"ISPC — retenção em aquisições ocasionais": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-tj9wihZS.js"
],
"Conferir e guardar retenção ISPC": [
"assets/services-tj9wihZS.js"
],
"Repartição do IVA documental em MZN": [
"assets/services-tj9wihZS.js"
],
"Reconciliação da dedução anterior": [
"assets/services-tj9wihZS.js"
],
"Cálculos indeterminados e condições para resolver": [
"assets/services-tj9wihZS.js"
],
"Preparação dos quadros L3 e formalidades": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar restituição E": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar substituições C": [
"assets/services-tj9wihZS.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-DlW49dDv.js",
"status": 200,
"sha256": "7002e22485098102c9a49e6f637a8818a4ecb153cf58f9c9cfb377e1b8a3d5a0"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-B9kwzlsI.js",
"status": 200,
"sha256": "c2b62654e0a286c0dfb16a44f3aac513064c8db305cccc827388de35cc6c720f"
},
{
"file": "assets/services-tj9wihZS.js",
"status": 200,
"sha256": "9e88d806f7c8e7193dda407ba1efe8bf720e5eeb76ca40798f3e6c4914e57f4b"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-CkfkH6Xv.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"pipeline_status": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"previous_release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"release": "/var/www/investmoz-homologacao/releases/6af7092e83b9b3932712aa7a9f527393fcec4da8-647c8e2e",
"previous_release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"6af7092e83b9b3932712aa7a9f527393fcec4da8"
],
"finished_at": "2026-10-25T15:29:42.957691+00:00"
},
"log_file": "1792941995601985924.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 31.63s",
"OK (59 tests, 317 assertions)",
"# tests 782",
"# pass 782",
"# fail 0"
],
"log_bytes": 227445
},
"archived_old_build_dependencies": {
"status": "dependencies_archived_and_verified",
"versions": 8,
"free_before": 5531414528,
"free_after": 7635984384,
"receipt": "/var/backups/investmoz-build-dependencies-ispc-l4-20261025/receipt.json",
"protected": [
"/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1"
],
"active_or_previous_release_modified": false,
"source_data_backups_deleted": 0
},
"accepted_QA_proofs_reused": {
"prior_proofs": "L4-A12testes eL1/L2/L3/P001não repetidos;inventário eaceitações reutilizados",
"new_frontend": "13distinctpassed:10quarter/3withholding;frontend-final.txt",
"private_API": "1test/21assertions passed;loopback55441/simulator_fiscal_delta_20261021_test,DatabaseTransactions rollback;otheraccount404;api.txt",
"UI": "Componentesreais:avaliar/opçãoguardada→calcular→guardarficheiroQA→recuperar→relatório;persistênciaprivadaconferidaemAPIseparadamente;ui-recovered-report.txt/png",
"report_fix": "GrupoISPCmapeadoàsecçãofinanceira;testeactualdoexportadorincluiimposto/opção;ausênciaidentificadanademonstraçãoecorrigidaantesdeconcluir.",
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"inventory": "outputs/ispc-l4b-20261025/preservation-before-tests.json;reutiliza8143ficheirosinventariadoseL1fechados"
},
"manual_functional_tests_repeated": false,
"pipeline_checks": "Existing Git process mandatory checks only;no new discretionary functional round.",
"example": {
"context": "opportunity:375;SYNTHETIC QA",
"option": "documentada2026-01-01",
"quarter": "2026/T2",
"prior_turnover_MZN": "100000",
"quarter_base_MZN": "200000",
"rate_percent": 12,
"tax_MZN": "24000",
"payment_MZN": "24000",
"declaration": "mantida",
"other_fiscal_books": "exactamente preservados"
},
"remaining_L4_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
],
"L3": "Preserved;11runtimehashes,17originals and additive integrations verified. Specific residuals remain in existing matrix.",
"preserved_L3_amounts": {
"documentary_VAT_MZN": 16,
"deduction_this_route_MZN": 0,
"recognised_MZN": 12,
"received_MZN": 7,
"awaiting_receipt_MZN": 5
},
"residuals": "P001/P058awaitdefinedclarificationswithoutblocking;P084/P085closed;statistics/AIdeferred.",
"schema_migrations": 0,
"content_imports": 0,
"ISPC_integrally_completed": false,
"proof_hashes": {
"outputs/ispc-l4-delivery-20261025/preflight.txt": "985e4cabc9f4f80ee55f89aa9a20580c1bc3b691225241165b01cc66ba4b5d19",
"outputs/ispc-l4-delivery-20261025/backup.txt": "23f72466038eed5153c93408e5acd508b5c6a66fc0e4c3a9bd30a580367fe8ea",
"outputs/ispc-l4-delivery-20261025/restore.txt": "d0100e1378c2e0e8a4be61de640e0e331695721080bae16d8a7a708cf4d4eb83",
"outputs/ispc-l4-delivery-20261025/integration.txt": "d92b419bd0c57c7951d558039e1414acca4ec2abc47e5a9d2f2389b1401adf7c",
"outputs/ispc-l4-delivery-20261025/status-final.txt": "638710d6205b634b8ab8f8cf625ee308fb76c4fe7c21608130d2b79afba60e0c",
"outputs/ispc-l4-delivery-20261025/installed-protected.txt": "83231f0b6619828618188e7abb9337f6b5e92e4192f7e5a8bbf165f7d2b70a44",
"outputs/ispc-l4-delivery-20261025/installed-public-delta.json": "7b944512bd87b5fa99e83e554247f1567c5629481b2dcdf668b411f118849aa2",
"outputs/ispc-l4-delivery-20261025/operational-delta.txt": "e79fc1267ac6f06e0f2fe78a9ed00eb0cfc05b1ec1ab7bec92c61268e4acbd93",
"outputs/ispc-l4-delivery-20261025/compact-dependencies.txt": "236ebb16564acf706dd434186b20013b9c035dd201f5f728ebcaf1e3813e2053"
}
}
@@ -0,0 +1,285 @@
{
"status": "prepared_for_Git_delivery_not_installed",
"authorization": "Tempo25/10:preparar entrega do âmbito L4 trimestral habitual demonstrado em6af7092e;conferir apenas delta,preservarL3;sem declararL4integralmenteconcluído.",
"installed_baseline": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"candidate": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"branch": "codex/ispc-l4-quarterly-qa-20261025",
"changes": [
"docs/investmoz/simulations/integrated-review-continuation-20261020-receipt.json",
"docs/investmoz/simulations/ispc-l4-quarterly-qa-20261025.json",
"docs/investmoz/simulations/ispc-l4a-eligibility-qa-20261025.json",
"docs/investmoz/simulations/l3-additional-delivery-20261025.json",
"docs/investmoz/simulations/l3-e-additional-coverage-qa-20261025.json",
"docs/investmoz/unification/traceability-and-manual.md",
"docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv",
"resources/js/components/simulation-form.tsx",
"resources/js/components/simulation-ispc-eligibility.tsx",
"resources/js/components/simulation-ispc-quarter.tsx",
"resources/js/components/simulation-ispc-withholding.tsx",
"resources/js/lib/ispc-eligibility.ts",
"resources/js/lib/ispc-quarter.ts",
"resources/js/lib/ispc-withholding.ts",
"resources/js/lib/project-dossier-report.ts",
"resources/js/lib/project-dossier.ts",
"tests/Feature/IspcQuarterDraftTest.php",
"tests/frontend/fixtures/ispc-quarter-preserved.json",
"tests/frontend/ispc-eligibility.test.mjs",
"tests/frontend/ispc-quarter.test.mjs",
"tests/frontend/ispc-withholding.test.mjs"
],
"runtime_delta": [
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "606e6e29f92323450433e8411b2064ba5f55b795a3376794ad1eb30729841c3c"
},
{
"path": "resources/js/components/simulation-ispc-eligibility.tsx",
"sha256_LF": "f48dd4a8f87a994eda0447f81a463589905e5873b2e1044debac9d10825a880c"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "0b950091e9204b2b20823694ea16dc94e4863914080542253966367a5580d62d"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e688a8d6a2e1e20c1e10a85d33152d58a5c14867672cf4ffb834980ec1732f08"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "d8c3ab8b2687af905d3048db192b690fa6d49ab693ff58f2e8f57f76dfb4a1fb"
},
{
"path": "resources/js/lib/ispc-quarter.ts",
"sha256_LF": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129"
},
{
"path": "resources/js/lib/ispc-withholding.ts",
"sha256_LF": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a24e0484f558580c14c4a261de66db8d245ffccf9c6fe17b6d639e9e2cbbe3c2"
},
{
"path": "resources/js/lib/project-dossier-report.ts",
"sha256_LF": "0db9f5fcb2929fd8340894bd13b74ee7c400af25e483ddfe5651002fd7160f49"
}
],
"existing_integrations_additions_only": {
"resources/js/components/simulation-form.tsx": 6,
"resources/js/lib/project-dossier.ts": 6,
"resources/js/lib/project-dossier-report.ts": 1
},
"L3_runtime_preserved_unchanged": [
"resources/js/components/acquisition-beverage-restitution.tsx",
"resources/js/components/fiscal-calculation-gaps.tsx",
"resources/js/components/fiscal-l3-preparation.tsx",
"resources/js/components/simulation-acquisitions.tsx",
"resources/js/components/simulation-operations.tsx",
"resources/js/lib/iva-acquisition-bc.ts",
"resources/js/lib/iva-beverage-allocation.ts",
"resources/js/lib/iva-beverage-restitution.ts",
"resources/js/lib/iva-calculation-gaps.ts",
"resources/js/lib/iva-operations.ts",
"resources/js/lib/l3-form-preparation.ts"
],
"L3_documentary_originals_preserved": 17,
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
}
],
"schema_runtime_PHP_configuration_dependencies_delta": false,
"P001_experimental_changes_excluded": true,
"accepted_QA_proofs_reused": {
"prior_proofs": "L4-A12testes eL1/L2/L3/P001não repetidos;inventário eaceitações reutilizados",
"new_frontend": "13distinctpassed:10quarter/3withholding;frontend-final.txt",
"private_API": "1test/21assertions passed;loopback55441/simulator_fiscal_delta_20261021_test,DatabaseTransactions rollback;otheraccount404;api.txt",
"UI": "Componentesreais:avaliar/opçãoguardada→calcular→guardarficheiroQA→recuperar→relatório;persistênciaprivadaconferidaemAPIseparadamente;ui-recovered-report.txt/png",
"report_fix": "GrupoISPCmapeadoàsecçãofinanceira;testeactualdoexportadorincluiimposto/opção;ausênciaidentificadanademonstraçãoecorrigidaantesdeconcluir.",
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"inventory": "outputs/ispc-l4b-20261025/preservation-before-tests.json;reutiliza8143ficheirosinventariadoseL1fechados"
},
"accepted_proof_hashes_verified": {
"outputs/ispc-l4b-20261025/frontend-final.txt": "2b0ec25bb83505ec9ce8ace02e0860faeeac4ce233083859f9a502069944f49f",
"outputs/ispc-l4b-20261025/api.txt": "2a770d07561a1475973795d5bac01ce5d94ee8a91be1d57d9b0702c621b8284d",
"outputs/ispc-l4b-20261025/ui-recovered-report.txt": "234bae0f17ef84dd9928197bfa38ad4a8a05c2dae18051e1ea9bd88852bb84fa",
"outputs/ispc-l4b-20261025/build-final.txt": "9683e783fd6e457c89a747d4a1a6deb10ba00a034f7891cf69e4c1a0cb1f0073",
"outputs/ispc-l4b-20261025/types-final.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"tests/frontend/fixtures/ispc-quarter-preserved.json": "30266584de9cacb0e4d771a9cc9c38838b62a3472583792e13effcd094247c39"
},
"compatible_build_and_types": "Already passed on identical runtime hashes;proofs reused,no rerun.",
"compiled_markers": {
"ISPC — enquadramento e opção": [
"assets/services-tj9wihZS.js"
],
"ISPC — apuramento trimestral": [
"assets/services-tj9wihZS.js"
],
"ISPC — retenção em aquisições ocasionais": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-tj9wihZS.js"
],
"Conferir e guardar retenção ISPC": [
"assets/services-tj9wihZS.js"
],
"Repartição do IVA documental em MZN": [
"assets/services-tj9wihZS.js"
],
"Reconciliação da dedução anterior": [
"assets/services-tj9wihZS.js"
],
"Cálculos indeterminados e condições para resolver": [
"assets/services-tj9wihZS.js"
],
"Preparação dos quadros L3 e formalidades": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar restituição E": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-tj9wihZS.js"
],
"Calcular e guardar substituições C": [
"assets/services-tj9wihZS.js"
]
},
"public_baseline_readonly": {
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"branch": "main",
"built_at": "2026-10-25T15:12:37.806036+00:00",
"manifest_sha256": "cddac25dc66b3e555f2380cf3a9d4b2da6501cd03927c183c832a05b0ee5c993"
},
"examples": {
"context": "opportunity:375;SYNTHETIC QA",
"option": "documentada2026-01-01",
"quarter": "2026/T2",
"prior_turnover_MZN": "100000",
"quarter_base_MZN": "200000",
"rate_percent": 12,
"tax_MZN": "24000",
"payment_MZN": "24000",
"declaration": "mantida",
"other_fiscal_books": "exactamente preservados"
},
"remaining_L4_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
],
"preserved_amounts_L3": {
"documentary_VAT_MZN": 16,
"deduction_this_route_MZN": 0,
"recognised_MZN": 12,
"received_MZN": 7,
"awaiting_receipt_MZN": 5
},
"residuals": "P001/P058awaitdefinedclarificationswithoutblocking;P084/P085closed;L3residualsremaininexistingmatrix;statistics/AIdeferred.",
"execution_remaining": [
"Fresh authenticated destination/schema/data/configuration/permissions and disk comparison.",
"Fresh backup and verified isolated restore,without modifying active database.",
"Fast-forward integration via existing Git process only after guards pass;verify servedrevision,manifest,compiled L4/L3 markers and protected delta with equivalent identities/context."
],
"backup_restore": "Not executed in preparation;prior L3 receipt preserved,not represented as fresh L4 backup.",
"main_changed": false,
"active_changes": false,
"Git_preparation": {
"feature_ref": "refs/heads/codex/ispc-l4-quarterly-qa-20261025",
"remote_verified": {
"refs/heads/codex/ispc-l4-quarterly-qa-20261025": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"refs/heads/main": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6"
},
"bundle": "outputs/ispc-l4-delivery-20261025/candidate.bundle",
"bundle_sha256": "2d1b690ffbca0cdcc2365d2f5c8cf9f4d34a3e64f9cb5bd4fa2ce23835143c4d",
"bundle_verified": true,
"main_pushed": false
},
"execution_scripts": {
"outputs/ispc-l4-delivery-20261025/backup.py": "f82ee71b83527e2e3b431f88aa24deb0433308f4c15a2873779068a21785c99d",
"outputs/ispc-l4-delivery-20261025/bridge.py": "b12bb51e68c0c3270ac9d127d20aaf69c04745837fb06788e9e1d37a623e3487",
"outputs/ispc-l4-delivery-20261025/installer-status.py": "47cf71d02bbbac76bdf8edf87ab9b69b88d6c610d4b1755e1da69060af8b02cf",
"outputs/ispc-l4-delivery-20261025/integrate-after-guards.py": "b2146ae221af4fa5f26f3a16ba7de22eb3d35fed2ff9b606f49065b0a9524171",
"outputs/ispc-l4-delivery-20261025/preflight.py": "d22ae1370f261cce91201830f39833d03019df5110be8aa5a9eccdfd639de55c",
"outputs/ispc-l4-delivery-20261025/reconcile-operational-delta.py": "d2e2ab7093594ab667b03f76ef7620120d7fd580e22edeb335b3c5c208493cd0",
"outputs/ispc-l4-delivery-20261025/restore.py": "51c03e0e590f3ad8d795334e67140f6de7c594fe52fb5ee9098b2da8bc508a3b",
"outputs/ispc-l4-delivery-20261025/verify-protected.py": "5acdb275e6bd5de5237000f8a8a27234f9d00be4bf1cd1cf71ecf24bc0a7f415",
"outputs/ispc-l4-delivery-20261025/verify-public.py": "e31052548421a2095d23435a716c34086542992fda3ede04f6ae3cd1d24f291b"
},
"execution_script_checks": "Python syntax checked;not executed against active target. Authenticated baseline,fresh backup/isolatedrestore andtimestamp guards prepared;disk comparison pending at execution.",
"guard_origins": {
"base_and_scope": "DecisãoTempo:preservarL3fa32 eentregar apenas âmbitoQA6af.",
"disk_5_GiB": "Requisito técnico do processo de entrega já existente;conferido no código emexecuçãoL3,sem criar regra organizacional.",
"backup_freshness_30_minutes": "Escolha técnica do script de integração;expiração exige actualizar preflight/backup-restauro,sem nova aprovação organizacional."
},
"superseded_by": "ispc-l4-delivery-20261025.json",
"installation_followup": "6af7092e83b9b3932712aa7a9f527393fcec4da8"
}
@@ -0,0 +1,102 @@
{
"status": "installed_scoped_habitual_quarterly_ISPC",
"matrix_anchor": "AUD-SIM-INT02",
"scope": "Actividade habitual ISPC2026/MZN, enquadramento/opção, cálculo trimestral e retenção12(3–4) delimitada. Não é encerramento de operações ocasionais próprias ou formalidades sem correspondência de modelo.",
"source": {
"file": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"citation": "Lei9/2025,republicaçãoISPC,arts8–12;PDF11/p2180(11),enquadramento2–5PDF10",
"application": "8(1)a selecciona taxa3/4/5 pelo volume anual2026 declarado e9 aplica-a à base trimestral; não repartir limites anuais por4 nem copiar acesso2025. Serviços12/15; cumulação usa taxa maior8(2).20%somenteparcela acima limite anual4.000.000 com acumulado anterior; cálculos racionais exactos."
},
"new_implementation": [
"Livro trimestral por contexto; receitas de cada trimestre e suporte explícitos,volume global do sujeito passivo confirmado; previsão anual distinta de ano encerrado reconciliado.",
"Elegibilidade actual e opção documentada reutilizadas; preparação apenas simula; opção posterior ao trimestre não retroage automaticamente.",
"Imposto/prestação/obrigação declarativa separados; inferior500 dispensa pagamento, não declaração;igual500 mantém pagamento. Não acumular dispensas nem deduzir custos/IVA.",
"Retenção5%separada para aquisições ocasionais a pessoa singular não inscrita3(3–4),ligadasàactividade,limiteglobalanual2.500.000;acima limiteindeterminado,semtruncar. Sem crédito contraimpostopróprio,mínimo500não aplicadoàretenção.",
"Gravação/recuperação mantém outros livros e históricos;alterações conservam resultado congelado até nova versão;relatório financeiro inclui grupoISPC."
],
"verification": {
"prior_proofs": "L4-A12testes eL1/L2/L3/P001não repetidos;inventário eaceitações reutilizados",
"new_frontend": "13distinctpassed:10quarter/3withholding;frontend-final.txt",
"private_API": "1test/21assertions passed;loopback55441/simulator_fiscal_delta_20261021_test,DatabaseTransactions rollback;otheraccount404;api.txt",
"UI": "Componentesreais:avaliar/opçãoguardada→calcular→guardarficheiroQA→recuperar→relatório;persistênciaprivadaconferidaemAPIseparadamente;ui-recovered-report.txt/png",
"report_fix": "GrupoISPCmapeadoàsecçãofinanceira;testeactualdoexportadorincluiimposto/opção;ausênciaidentificadanademonstraçãoecorrigidaantesdeconcluir.",
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"inventory": "outputs/ispc-l4b-20261025/preservation-before-tests.json;reutiliza8143ficheirosinventariadoseL1fechados"
},
"example": {
"context": "opportunity:375;SYNTHETIC QA",
"option": "documentada2026-01-01",
"quarter": "2026/T2",
"prior_turnover_MZN": "100000",
"quarter_base_MZN": "200000",
"rate_percent": 12,
"tax_MZN": "24000",
"payment_MZN": "24000",
"declaration": "mantida",
"other_fiscal_books": "exactamente preservados"
},
"remaining_specific": [
"Operações ocasionais próprias3(3–4)enquanto sujeito passivo,distintas da retenção do adquirente;mantidas indeterminadas no percurso específico.",
"Aquisições acima limiteglobal2.500.000:correspondência do tratamento próprio;nãoliquidar5%porpresunção.",
"Formulário/modelo,instruções eprocedimentos da regulamentação2026;relatório depreparação não édeclaraçãosubmetida. Aviso primário do Governo confirma aprovação de novo regulamento,mas não contém articulado/modelos: https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/ . Sem impor segunda validação jurídica ou repetir pesquisa sem nova evidência."
],
"active_changes": false,
"schema_changes": false,
"rules_published_or_activated": 0,
"residuals": "P001/P058nãointerrompem;P084/P085fechados;L3residuaisapenasbloqueiamcasosdependentes;estatísticas/IAadiadas.",
"runtime_hashes": {
"resources/js/lib/ispc-quarter.ts": "f66bd52e9cdfe1ddaa6b00a931465862b3d890b9be216b7a056740f027f24129",
"resources/js/lib/ispc-withholding.ts": "6c31b240299edd3262efa28f7f3d5aee21123f94e30ef4ab90e26c35777cb6e4",
"resources/js/components/simulation-ispc-quarter.tsx": "0b950091e9204b2b20823694ea16dc94e4863914080542253966367a5580d62d",
"resources/js/components/simulation-ispc-withholding.tsx": "e688a8d6a2e1e20c1e10a85d33152d58a5c14867672cf4ffb834980ec1732f08",
"resources/js/lib/project-dossier-report.ts": "0db9f5fcb2929fd8340894bd13b74ee7c400af25e483ddfe5651002fd7160f49"
},
"proof_hashes": {
"outputs/ispc-l4b-20261025/frontend-final.txt": "2b0ec25bb83505ec9ce8ace02e0860faeeac4ce233083859f9a502069944f49f",
"outputs/ispc-l4b-20261025/api.txt": "2a770d07561a1475973795d5bac01ce5d94ee8a91be1d57d9b0702c621b8284d",
"outputs/ispc-l4b-20261025/ui-recovered-report.txt": "234bae0f17ef84dd9928197bfa38ad4a8a05c2dae18051e1ea9bd88852bb84fa",
"outputs/ispc-l4b-20261025/build-final.txt": "9683e783fd6e457c89a747d4a1a6deb10ba00a034f7891cf69e4c1a0cb1f0073",
"outputs/ispc-l4b-20261025/types-final.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"tests/frontend/fixtures/ispc-quarter-preserved.json": "30266584de9cacb0e4d771a9cc9c38838b62a3472583792e13effcd094247c39"
},
"compatible_QA_preparation": {
"branch": "codex/ispc-l4-quarterly-qa-20261025",
"path": "C:\\laragon\\www\\portal-investidor-ispc-qa-20261025",
"base": "fa32a2b9",
"runtime_files": [
"resources/js/components/simulation-form.tsx",
"resources/js/components/simulation-ispc-eligibility.tsx",
"resources/js/components/simulation-ispc-quarter.tsx",
"resources/js/components/simulation-ispc-withholding.tsx",
"resources/js/lib/ispc-eligibility.ts",
"resources/js/lib/ispc-quarter.ts",
"resources/js/lib/ispc-withholding.ts",
"resources/js/lib/project-dossier.ts",
"resources/js/lib/project-dossier-report.ts"
],
"runtime_hashes_match_accepted_QA": true,
"P001_runtime": "fa32a2b9 unchanged; experimental d1551dab runtime excluded",
"compatible_build": "exit0;outputs/ispc-l4b-20261025/compatible-build.txt",
"compatible_types": "exit0;outputs/ispc-l4b-20261025/compatible-types.txt",
"functional_proofs": "13frontend/API1-21/UIreport reused; no new functional round",
"installed": true,
"functional_source_commits": [
"479b6681",
"1b7ccfee"
],
"candidate_commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"functional_candidate_commit": "49b448eb47df9ded3f906996e36c1d5ebd855741",
"installed_at_preparation": false,
"installed_commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8"
},
"QA_status_before_delivery": "QA_demonstrated_eligibility_option_quarter_calculation_private_recovery_and_report_not_installed",
"installation_followup_20261025": {
"status": "installed_scoped_habitual_quarterly",
"commit": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"receipt": "ispc-l4-delivery-20261025.json",
"QA_proofs": "preserved;no manual repetition",
"ISPC_integrally_completed": false
}
}
@@ -0,0 +1,50 @@
{
"status": "QA_partial_eligibility_and_separate_option_not_installed",
"matrix_anchor": "AUD-SIM-INT02",
"authorization": "Tempo25/10: preparar entrega compatível L3, reconciliar saldo e avançar L4 ISPC; P001 residual não bloqueia trabalho independente.",
"source": {
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251",
"law": "Lei9/2025, republicação ISPC; arts2–5,9-A/13; PDF10–11; vigência2026art6/PDF9",
"acceptance": "Fonte oficial aceite pela Tempo; sem segunda validação de proveniência ou aprovação genérica Fiscalista."
},
"scope": [
"Condições preliminares de acesso habitual em2026/MZN; pessoa,actividade nacional,volume anterior2025 ou previsão de início2026,contabilidade obrigatória e exclusões3(2).",
"Limite4.000.000 inclusivo; desconhecido permanece indeterminado e não vira zero; operação ocasional tem percurso próprio ainda não implementado.",
"Serviços liberais8(1)c:183dias versus184 à mesma entidade; não aplicar esta exclusão aos serviços8(1)b.",
"Opção separada de elegibilidade; seleccionarISPC não adopta regime nem alteraIVA/IRPS/IRPC.",
"Reutilização de perfil com diferenças e confirmação; nenhuma inferência de categoria,volume anual anterior ou opção a partir de vendas correntes.",
"Livro por contexto no snapshot existente; preserva mapas fiscais,histórico e resultados congelados; relatório do dossier inclui enquadramento e opção."
],
"verification": {
"inventory_before_tests": "outputs/ispc-l4a-20261025/preservation-before-tests.json",
"new_frontend_tests": 12,
"frontend_result": "12 passed/0failed; outputs/ispc-l4a-20261025/frontend.txt",
"types": "exit0;outputs/ispc-l4a-20261025/types.txt",
"build": "exit0;outputs/ispc-l4a-20261025/build.txt",
"persistence": "serialização/recuperação e preservação dos livros/históricos cobertas nos novos testes; transporte privado existente reutilizado,sem nova rondaAPI",
"UI": "componente integrado;sem demonstração visual nova nesta passagem",
"synthetic_fixture": "outputs/ispc-l4a-20261025/calculated.json; não importada no activo"
},
"remaining_L4": [
"Apuramento trimestral e aplicação dos escalões3/4/5%,serviços12%,liberal15%,excesso20% e actividades mistas8; identificar correspondência exacta anual/trimestral antes do cálculo.",
"Mínimo trimestral500 e obrigação declarativa; retenção5% nas aquisições ocasionais próprias,limite2.500.000 e modelo; sem reutilizar taxa deIVA.",
"Percurso ocasional3(3–4),formalidades,modelos e prazos do regulamento aplicável; conferir apenas correspondências concretas necessárias,sem nova validação genérica.",
"Demonstração visual integrada e gravação privada deste incremento antes de propor entregaL4."
],
"preserved": {
"L1": "131entregues;P001residual;P058parcial com exclusões",
"P084_P085": "fechados no âmbito operacional Tempo;sem pesquisa",
"L3": "candidata0f4df8a4 preparada,não instalada;saldo próprio não encerraL3",
"E_original": "16MZN documental/zero dedução nesta via/12 reconhecidos/7recebidos/5porreceber",
"statistics_AI": "adiadas"
},
"active_changes": false,
"schema_changes": false,
"runtime_hashes": {
"resources/js/lib/ispc-eligibility.ts": "1828cb2d696a6bd852078fc3f1cf90a6649c1f3a0df5bec0a72ac1d1f175b2eb",
"resources/js/components/simulation-ispc-eligibility.tsx": "38ebe2b2fd340e269ba6fdeec96f0d39d0594892b9cb968ec094b2c165346b42",
"resources/js/components/simulation-form.tsx": "5090175a3fee965795fb47ac7f673c5aafc3641c25d323be0be631178afae775",
"resources/js/lib/project-dossier.ts": "de70672560162ef94f1e5429f70c2466a8347e73b2d800da013c7c50e480091c"
}
}
@@ -0,0 +1,253 @@
{
"status": "QA_grouped_compatible_delta_not_installed",
"matrix_anchor": "AUD-SIM-INT02",
"base_installed": "6af7092e83b9b3932712aa7a9f527393fcec4da8",
"branch": "codex/ispc-residuals-qa-20261025",
"scope": "Operações ocasionais próprias3(3–4),aquisições acima do limite12(3)comcorrespondênciapositivaIRPS57(2k),preparação/transporte de camposB–Geral e histórico externo;semfechointegralISPC.",
"sources": [
{
"path": "docs/investmoz/simulations/source-archive/AT-Comunicado-9-2026-ISPC.pdf",
"bytes": 308401,
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"availability": "private source archive;not automatically published/imported into active library",
"scan": "not claimed"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-B-Geral.pdf",
"bytes": 319577,
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"availability": "private source archive;not automatically published/imported into active library",
"scan": "not claimed"
},
{
"path": "docs/investmoz/simulations/source-archive/AT-Modelo-30-ISPC.pdf",
"bytes": 159748,
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"availability": "private source archive;not automatically published/imported into active library",
"scan": "not claimed"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-19-2017-IRPS-BR-OCAM.pdf",
"bytes": 1894997,
"sha256": "c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d",
"availability": "private source archive;not automatically published/imported into active library",
"scan": "not claimed"
}
],
"official_source_inventory": {
"local_reused": "outputs/ispc-l4a-20261025/preservation-before-tests.json",
"AT_forms": "39documents;at-forms.json",
"AT_legislation": "189documents;at-legislation.json",
"AT_communications": "4documents;at-communications.xml",
"provenance": "AT public document APIs reached through links/configuration of the official website;BR2017 republication hostedOCAM;no generic second authenticity validation",
"AT_comunicado": {
"url": "https://www.at.gov.mz/api/webdav?path=%2FINFORMA%C3%87%C3%95ES%2FCOMUNICADO%20DE%20IMPRENSA%2F07-10-2026%20-%20COMUNICADO%20N%C2%BA9_2026%20-%20CUMPRIMENTO%20DAS%20OBRIGA%C3%87%C3%95ES%20DECLARATIVAS%20E%20DE%20PAGAMENTO%20DO%20ISPC.pdf",
"listing": "https://www.at.gov.mz/informacoes/comunicado-de-imprensa",
"file": "C:\\laragon\\www\\portal-investidor-ispc-residuals-qa-20261025\\docs\\investmoz\\simulations\\source-archive\\AT-Comunicado-9-2026-ISPC.pdf",
"sha256": "106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973",
"bytes": 308401,
"origin": "AT official website; public document linked from communications page",
"automatic_rule_activation": false
},
"AT_forms_selected": [
{
"id": "ed263a2ecdd81846af4cdc8f75fc76c1",
"title": "Modelo 30 ISPC IMPOSTO SIMPLIFICADO PARA PEQUENOS CONTRIBUINTES",
"description": "Documentação oficial sincronizada em tempo real.",
"size": "156 KB",
"date": "06/01/2026",
"url": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIRPC%2FModelo%2030%20ISPC%20IMPOSTO%20SIMPLIFICADO%20PARA%20PEQUENOS%20CONTRIBUINTES.pdf",
"downloadUrl": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIRPC%2FModelo%2030%20ISPC%20IMPOSTO%20SIMPLIFICADO%20PARA%20PEQUENOS%20CONTRIBUINTES.pdf",
"viewUrl": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIRPC%2FModelo%2030%20ISPC%20IMPOSTO%20SIMPLIFICADO%20PARA%20PEQUENOS%20CONTRIBUINTES.pdf",
"file": "C:\\laragon\\www\\portal-investidor-ispc-residuals-qa-20261025\\docs\\investmoz\\simulations\\source-archive\\AT-Modelo-30-ISPC.pdf",
"origin": "AT official forms directory",
"sha256": "6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c",
"bytes": 159748
},
{
"id": "c37f0377df612928865f37cfbfc9dabd",
"title": "MODELO B GERAL",
"description": "Documentação oficial sincronizada em tempo real.",
"size": "312 KB",
"date": "28/10/2025",
"url": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIVA%2FMODELO%20B%20GERAL.pdf",
"downloadUrl": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIVA%2FMODELO%20B%20GERAL.pdf",
"viewUrl": "/api/webdav?path=%2FFORMULARIOS%2FIMPOSTOS%20FISCAIS%2FIVA%2FMODELO%20B%20GERAL.pdf",
"file": "C:\\laragon\\www\\portal-investidor-ispc-residuals-qa-20261025\\docs\\investmoz\\simulations\\source-archive\\AT-Modelo-B-Geral.pdf",
"origin": "AT official forms directory",
"sha256": "bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57",
"bytes": 319577
}
],
"IRPS_Bulletin_URL": "https://ocam.org.mz/wp-content/uploads/2024/06/Lei-n-19_2017-de-28-de-Dezembro-IRPS-2-1.pdf"
},
"implemented_calculations": [
{
"case": "Operação ocasional própria",
"positive": "Pessoa singular,semactividadehabitual,actoimprevisível/nãoreiterado,nacional,nasfamílias3(4);IRPS8(3h,4)/9da republicação19/2017;ISPC4/5/8/9/10-A. Cenário100000MZN/3%=3000;opção/factosefectivosdistintosdeprevisão.",
"anti_duplication": "Retenção liberatória5%documentadareconciliadacomabase não gera segunda liquidação própria;divergência ficaindeterminada,nãohácréditopresumido."
},
{
"case": "Aquisição que atravessa2.500.000MZN",
"positive": "Acumulado2400000+aquisição200000:parcela100000atélimite/retencão5000;excedente100000separado. SóactoIRPSqualificado57(2k),semopçãoISPCaplicável,comrendimentoilíquidoidentificado permite20000noexcedente;total25000de retenções,não imposto próprio do adquirente.",
"limits": "Sem enquadramento/base/documentos,parcela excedente e total permanecem indeterminados. Fornecedor com opçãoISPC não recebeIRPS20automaticamente;factura/liquidação própria são âmbito separado. Não se usa20%do excesso de vendasISPC para compras."
}
],
"implemented_formal_preparation": [
"ATcomunicado9/2026visualizado:ModeloB–Geraltransitório,enquanto sistemaéajustado;mesesJaneiro/Abril/Julho/Outubro;nenhumdiadomêsinventado.",
"OriginalB–Geral2pconferido:quadros1/2/3/5/6/8/10;linha1base01/montante05,linha2base02/montante06,subtotal09;numeração própria doquadro10nãosemisturacomquadro8.",
"HTMLdepreparação,relatóriorecuperado efontes/originaispreservados;semrecriarformuláriooficial,assinatura,recibosouacçãodafuncionário. RetençõesISPC5/IRPS20descritas separadamente.",
"Modelo30oficialdisponívelaindaexibe75.000/3%antigos:preservadoparaconsulta,nãotransportadopara2026.",
"Estadosdepreparação/submissão/recepção/pagamentodeclaradoscomreferência/dataehistórico;sem efectuaressasacçõesoucertificarAT."
],
"remaining_calculations": [
{
"item": "Juros compensatórios",
"state": "montante documentado pode ser conservado;fórmula ainda não implementada",
"needed": "regra/taxa/base/período/dias efectivamente aplicáveis,no documento/instrução correspondente;sem zero ou taxa presumidos"
},
{
"item": "Outros enquadramentos da parcela excedente",
"state": "sem fórmula genérica;casos diferentes do acto isolado qualificado não recebem taxa automática",
"needed": "natureza,regime do fornecedor,opção aplicável,base e suporte concretos;encaminhar para o cálculo próprio quando for outro regime,não bloquear o caso positivo implementado"
}
],
"external_formal_dependencies": [
{
"item": "Quadro2doB–Geral",
"needed": "correspondência concreta do mês/ano a inscrever para o trimestre;comunicado fornece meses de pagamento,que não são copiados automaticamente para período"
},
{
"item": "Dispensa inferior500MZN noB–Geral",
"needed": "Representação declarativa do imposto apurado com prestação dispensada10-A;sem preencher montanteapurado comozero porpresunção. O cálculo imposto/prestação jáestá implementado."
},
{
"item": "Entrega de retenções",
"needed": "modelo/código/instrução próprios12(3)ISPCe57(2k)IRPS;B–Geraldeapoio nãoéapresentadocomocorrespondênciacompletadestasretenções"
},
{
"item": "Regulamentação2026/instruções de envio de facturas",
"needed": "texto/exemplar/instrução concreta quando disponibilizado;comunicado transitório já implementado,não se mantém pesquisa genérica como aprovação adicional"
},
{
"item": "Submissão e pagamento",
"needed": "actos externos e comprovativos reais;nenhuma operaçãoATfoiexecutadaemQA"
}
],
"operation_data_missing_in_synthetic_preparation": "Identidade/NUIT/área fiscal/domicílio,referência de período ejuros são dados para formalizar a operação,não nova condição de acesso ao cálculo.",
"verification": {
"preservation_before_tests": "outputs/ispc-residuals-20261025/preservation-before-tests.json",
"new_frontend_distinct": 19,
"frontend_proofs": [
"frontend-final.txt:14passed",
"directed-final.txt:1additionalpass",
"directed-retention-form.txt:1additionalpass",
"directed-known-exclusions.txt:1additionalpass",
"directed-dispensation-form.txt:1additionalpass",
"directed-liberatory-history.txt:1additionalpass"
],
"API": "1test/22assertionspassed;QAloopback55441/simulator_fiscal_delta_20261021_test;DatabaseTransactionsrollback;APP_BASE_PATHcandidateexplicit",
"UI": "Vendedor376/adquirente375separados;3000/5000/20000/25000;guardar→recuperar→relatório;B–Geralpreparadodescarregado;visibilidadeapenasdascondiçõesafectadasverificada",
"UI_proofs": [
"ui-own-report.txt",
"ui-acquisition-report.txt",
"ui-occasional-applicability.txt",
"ui-regular-applicability.txt",
"preparation.html"
],
"types": "exit0;types-final.txt",
"build": "exit0;build-final.txt",
"habitual_re_evaluation": "not repeated;arithmetic engines unchanged;24000snapshotpreservedexactly;onlyconditionalvisibilitydeltaexamined"
},
"runtime_delta": [
{
"path": "resources/js/lib/ispc-residuals.ts",
"sha256_LF": "40d5751c06c7c155ab4b7a17ee2d1653da2fbbf075807fbb8561cdbe19820955"
},
{
"path": "resources/js/components/simulation-ispc-residuals.tsx",
"sha256_LF": "a9219d6f41ccbd0ce45659d4f6aa0fa1c169a685840f5cb1e18daeca377d5e18"
},
{
"path": "resources/js/components/simulation-form.tsx",
"sha256_LF": "07f7d0d73993ffc2924f1b9b2d21cbc53fb7c95aab959c0820fd7dbc35a1fffa"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "beca4eebd3959afa520061f231de25d064723537bd98deb541712ab448eba369"
},
{
"path": "resources/js/lib/ispc-eligibility.ts",
"sha256_LF": "44675c5efacdc1ae19505667611ba3b522d3043cebacc8754597c3a68ca89d25"
},
{
"path": "resources/js/components/simulation-ispc-quarter.tsx",
"sha256_LF": "2c2555309b32d4261f14e7164f39314c9188129c2990357fc54090a2468dd2b4"
},
{
"path": "resources/js/components/simulation-ispc-withholding.tsx",
"sha256_LF": "e0445d015b72859e48726959aa52686f79b1cf5c2ade29751efa83257068b878"
}
],
"compiled_markers": {
"Calcular e guardar operações ocasionais": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar parcela excedente": [
"assets/services-Cvwv29Mo.js"
],
"Preparar e guardar campos B–Geral": [
"assets/services-Cvwv29Mo.js"
],
"Descarregar preparação B–Geral": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar apuramento trimestral ISPC": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar restituição E": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-Cvwv29Mo.js"
],
"Calcular e guardar substituições C": [
"assets/services-Cvwv29Mo.js"
]
},
"schema_backend_configuration_dependency_changes": false,
"active_changes": false,
"originals_previous_preserved": 17,
"existing_books_preserved": "L3,ISPC habitual andacceptedhistories;no reset or overwrite of deliberateedits",
"P001_P058": "unchanged;notblocking",
"P084_P085": "closed",
"statistics_AI": "deferred",
"proof_hashes": {
"outputs/ispc-residuals-20261025/frontend-final.txt": "bb0db1bde933e5fe08356537df1ba783003629f7fcc21abdcf18e119bcb0ab8d",
"outputs/ispc-residuals-20261025/directed-final.txt": "9a2de706bca568599efd9dbfff7cb2c55ba037d64139e0b7d269271b9d84582b",
"outputs/ispc-residuals-20261025/directed-retention-form.txt": "44061cb0f2661fb27b6c1e0acca437710d6569f482c0ad521bec95aced7216f5",
"outputs/ispc-residuals-20261025/directed-known-exclusions.txt": "9c2e039af72cd3b46624979d1d07cae31ffc7f19572dfec1c279272dfdaee0dc",
"outputs/ispc-residuals-20261025/directed-dispensation-form.txt": "ff6ab503c476af55e950937d99a40eb6591d7d479cfed60dcddc681dcf7421fb",
"outputs/ispc-residuals-20261025/api.txt": "12ac172c5898f91ed9ac1bd0216265c33683e6984e817c5d6cb8759c1448b184",
"outputs/ispc-residuals-20261025/types-package.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"outputs/ispc-residuals-20261025/build-package.txt": "d3b9271730c3e0e6dd87f770a7d7badeb7a5e25e76aac44877b4484078e037b4",
"outputs/ispc-residuals-20261025/ui-own-report.txt": "c770078829e65c3830116c192d819c1f8327b8024806b841d88436219bb26571",
"outputs/ispc-residuals-20261025/ui-acquisition-report.txt": "ce976d2042e8ab7f13c42c42b8bd13a32ad67a2eb64ccf408ddf7d20688f1534",
"outputs/ispc-residuals-20261025/ui-occasional-applicability.txt": "72a3eee5b24c5b18faef1ab00076fb9e4d550b84daac41690dfc4488201311b8",
"outputs/ispc-residuals-20261025/ui-regular-applicability.txt": "2fb06f6e9e845022a464c9ffcc1fdee66b3ee2566bfce811c3e63b02cef4ab0a",
"outputs/ispc-residuals-20261025/preparation.html": "bd8dabebcc27b1e27df345648cf6b8fd5ce780f37d422d23f3689ef941f52cf1",
"outputs/ispc-residuals-20261025/active-baseline.json": "ed1e4d9c09215f9695fad1e02e6efec4c5a7097c5c35f0425e3a5142e98f2bc1",
"outputs/ispc-residuals-20261025/directed-liberatory-history.txt": "ec7836ece4ea47a5e5b039958f18ed0d00cd87af219e1ce3cad2316c7f36977d",
"outputs/ispc-residuals-20261025/types-final.txt": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c",
"outputs/ispc-residuals-20261025/build-final.txt": "939ba2172a3b5360d909d36199887f34a9a654f2f4e57a19a12b9c763dd9ca92"
},
"preservation_audit": {
"matrix_only_changed": "AUD-SIM-INT02",
"L1_closed_preserved": 131,
"original_PDFs_preserved": 17,
"habitual_arithmetic_engines": "ispc-quarter.ts/ispc-withholding.ts byte-identical to6af7092e",
"eligibility_regular_path": "byte-identical except message for occasional route",
"source_scope_choices": "Separate books,concrete factinputs and exact cap intervals are implementation choices,not new organisational approvals;no generic legal/provenance revalidation."
},
"liberatory_history_guard": "Same operation reference/date/quarter/amount with documented prior liberatory withholding cannot generate another own payment without explicit correction reference; history preserved."
}
@@ -0,0 +1,232 @@
{
"implementation_commit": "7e6e462e12a50aab6ba0043740ffeecb414cbedf",
"status": "delivered_P131_P132_partial_P104_QA_proofs_preserved",
"coverage": {
"AUD-SIM-L1-P131": [
"goods_available",
"goods_transport",
"goods_installation",
"service_completed",
"service_early_charge",
"import_clearance",
"import_auction",
"continuous_period",
"contract_effects"
],
"AUD-SIM-L1-P132": [
"own_goods",
"own_services",
"commission_delivery",
"consignment_deadline",
"advance_payment"
]
},
"coverage_partial": {
"AUD-SIM-L1-P104": "Preparação e simulação cambial condicionada,gravação/recuperação/histórico/relatório;moeda original,taxa,direcção,data,fonte e pressuposto explícitos. Não fechaP104 e não confirma base fiscal. Falta obter/cotejar disposição de conversão da Lei2/2006 referida em15(8),seu momento/regra e correspondência em2026."
},
"branch_count_complete": 2,
"event_treatment_count": 14,
"conditional_scenario_count": 1,
"source": "CIVA Lei13/2016:7(1)–(7),PDF8/p1426(266);8,PDF9/p1426(267);15(8),PDF14/p1426(272),páginas visualmente conferidas.Lei22/2022 eLei10/2025 não alteram7/8;15(8)mantido.RIVADecreto7/2008,21,PDF4:regra histórica5dias úteis e excepções;prazo actual não automatizado,exige disposição/calendário/âmbito identificados.",
"meaning": {
"P131": "Eventos7(1)a/b/c,7(2),7(3),7(7):disponibilização,início transporte,instalação/montagem concluída,serviço realizado/cobrado ou debitado antecipadamente pelo montante respectivo,desembaraço/arrematação/venda na importação,termo do período sucessivo,efeitos translativos com excepções3(3)a/b. Facto gerador separado de exigibilidade8;factura comercial não desloca evento aduaneiro.",
"P132": "Eventos7(4)/(5)/(6) e8c:afectações/transmissões assimiladas3(3)e/f,serviços4(2),disponibilização pelo comissário,termo180dias de mercadorias à consignação3(3)d e pagamentos anteriores à factura. Corrigida remissão a consignação,não embalagensP102.8a/b/c separam parcela recebida e restante,sem dupla contagem."
},
"scope": "2026contexto;facto gerador7 e exigibilidade8 por data/âmbito;uma parcela de recebimento e restante por linha,ou parcelas de âmbitos distintos,sem agregação de totais entre linhas. Prazo de emissão é parâmetro legal identificado,não calendário presumido;importação segue7c. P104parcial não aplica câmbio fiscal.Sem nova base/IVA,taxa,dedução,campo11,regularização ou totaisModeloA;P133regimes suspensivos/viagens mantém âmbito separado.",
"documentary_research_delimited": {
"P104": {
"finding": "Remissão15(8) para Lei2/2006 identificada;artigo de conversão e parâmetros ainda não cotejados em exemplar íntegro.",
"attempts": [
"Acervo local seisPDF semLei2/2006",
"Pesquisa Lei2/2006/CIP identificaBR12-I22/03/2006",
"PDF primário platformchinaplp devolveu404;DLA recusou/timeout;archiveBR2006 devolveu403"
],
"next_action": "Obter exemplar íntegroLei2/2006 e identificar disposição de conversão/momento/regra;reutilizar rascunhos,sem validação jurídica genérica."
},
"RIVA21": {
"primary_notice": "https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/",
"finding": "Anúncio governamental inclui alteração21;anúncio não substitui texto normativo/publicação. Prazo não presumido5dias úteis por defeito;campo exige termo/disposição/calendário aplicáveis.",
"next_action": "Localizar texto publicado da alteração21 para eventual automatização do prazo;motor8já opera com parâmetro concreto identificado."
}
},
"technical_choices": "currencyEvents poroportunidade nosnapshot/API/dossier existentes. Exporta/reutiliza convertCents já existente,no mesmo algoritmo,sem alteração dos cálculos financeiros anteriores;BigInt6casas/taxa8casas,arredondamento de cenário à6. DatasUTC/histórico existentes;nenhum relógioactual/taxacorrente ou feriado por defeito. Alterações de percurso conservam campos ocultos e exigem rever confirmações.",
"verification": {
"frontend": {
"tests": 19,
"passed": 19,
"failed": 0,
"coverage": "15percursos/exemplos:14eventos+1câmbiocondicionado;factura pontual/tardia/ausente,pagamento parcial/integral,termo prazo,restantependente,eventofuturo/pagamento anterior,importação7c,consignação180dias,moedainversa/arredondamento/parametros;persistência/histórico/relatório/preservação"
},
"privateAPI": {
"tests": 1,
"assertions": 65,
"target": "simulator_fiscal_delta_20261021_test:55441",
"transaction_rollback": true,
"xml": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-currency-events-20261025\\phpunit.xml"
},
"types": "passed",
"build": "passed;existingplugin timingwarnings",
"UI": "Edge/CUA:referência prazo vazia conserva facto gerador e deixa exigibilidade indeterminada;restauro egravação/recuperação/relatório.Fixturefinal regenerada após separarimportação7c;15linhas/1versãoanterior,P104conditional64500MZN/P132pagamento200+restante800,importação2026-12-10.Dadossintéticos,nãoaceitaçãomanualTempo.",
"UI_screenshot": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-currency-events-20261025\\qa-recovered-report.png"
},
"preservation": {
"base": "7a3ac43224843f0f39900645bc901475275b18be",
"delivered_ids": [
"AUD-SIM-L1-P003",
"AUD-SIM-L1-P004",
"AUD-SIM-L1-P005",
"AUD-SIM-L1-P006",
"AUD-SIM-L1-P007",
"AUD-SIM-L1-P008",
"AUD-SIM-L1-P009",
"AUD-SIM-L1-P010",
"AUD-SIM-L1-P011",
"AUD-SIM-L1-P012",
"AUD-SIM-L1-P013",
"AUD-SIM-L1-P014",
"AUD-SIM-L1-P015",
"AUD-SIM-L1-P016",
"AUD-SIM-L1-P017",
"AUD-SIM-L1-P018",
"AUD-SIM-L1-P019",
"AUD-SIM-L1-P020",
"AUD-SIM-L1-P021",
"AUD-SIM-L1-P022",
"AUD-SIM-L1-P023",
"AUD-SIM-L1-P024",
"AUD-SIM-L1-P025",
"AUD-SIM-L1-P026",
"AUD-SIM-L1-P027",
"AUD-SIM-L1-P028",
"AUD-SIM-L1-P029",
"AUD-SIM-L1-P030",
"AUD-SIM-L1-P031",
"AUD-SIM-L1-P032",
"AUD-SIM-L1-P033",
"AUD-SIM-L1-P034",
"AUD-SIM-L1-P035",
"AUD-SIM-L1-P036",
"AUD-SIM-L1-P037",
"AUD-SIM-L1-P038",
"AUD-SIM-L1-P039",
"AUD-SIM-L1-P040",
"AUD-SIM-L1-P041",
"AUD-SIM-L1-P042",
"AUD-SIM-L1-P043",
"AUD-SIM-L1-P044",
"AUD-SIM-L1-P045",
"AUD-SIM-L1-P048",
"AUD-SIM-L1-P049",
"AUD-SIM-L1-P050",
"AUD-SIM-L1-P051",
"AUD-SIM-L1-P052",
"AUD-SIM-L1-P053",
"AUD-SIM-L1-P054",
"AUD-SIM-L1-P055",
"AUD-SIM-L1-P056",
"AUD-SIM-L1-P057",
"AUD-SIM-L1-P060",
"AUD-SIM-L1-P061",
"AUD-SIM-L1-P062",
"AUD-SIM-L1-P063",
"AUD-SIM-L1-P064",
"AUD-SIM-L1-P065",
"AUD-SIM-L1-P066",
"AUD-SIM-L1-P067",
"AUD-SIM-L1-P068",
"AUD-SIM-L1-P069",
"AUD-SIM-L1-P070",
"AUD-SIM-L1-P071",
"AUD-SIM-L1-P072",
"AUD-SIM-L1-P073",
"AUD-SIM-L1-P074",
"AUD-SIM-L1-P075",
"AUD-SIM-L1-P076",
"AUD-SIM-L1-P077",
"AUD-SIM-L1-P078",
"AUD-SIM-L1-P079",
"AUD-SIM-L1-P080",
"AUD-SIM-L1-P081",
"AUD-SIM-L1-P082",
"AUD-SIM-L1-P083",
"AUD-SIM-L1-P086",
"AUD-SIM-L1-P087",
"AUD-SIM-L1-P088",
"AUD-SIM-L1-P089",
"AUD-SIM-L1-P090",
"AUD-SIM-L1-P091",
"AUD-SIM-L1-P092",
"AUD-SIM-L1-P093",
"AUD-SIM-L1-P094",
"AUD-SIM-L1-P095",
"AUD-SIM-L1-P096",
"AUD-SIM-L1-P097",
"AUD-SIM-L1-P098",
"AUD-SIM-L1-P099",
"AUD-SIM-L1-P100",
"AUD-SIM-L1-P101",
"AUD-SIM-L1-P102",
"AUD-SIM-L1-P103",
"AUD-SIM-L1-P105",
"AUD-SIM-L1-P106",
"AUD-SIM-L1-P107",
"AUD-SIM-L1-P108",
"AUD-SIM-L1-P109",
"AUD-SIM-L1-P110",
"AUD-SIM-L1-P111",
"AUD-SIM-L1-P112",
"AUD-SIM-L1-P113",
"AUD-SIM-L1-P114",
"AUD-SIM-L1-P115",
"AUD-SIM-L1-P116",
"AUD-SIM-L1-P117",
"AUD-SIM-L1-P118",
"AUD-SIM-L1-P119",
"AUD-SIM-L1-P120",
"AUD-SIM-L1-P122",
"AUD-SIM-L1-P123",
"AUD-SIM-L1-P124",
"AUD-SIM-L1-P125",
"AUD-SIM-L1-P126",
"AUD-SIM-L1-P127",
"AUD-SIM-L1-P128"
],
"confirmed_losses": [],
"accepted_delivery": "92eaa935/7a3ac432;174tables/369files;29published/28relations/408geometries;code/schema/data/config/permissions compared",
"frozen": "tests\\frontend\\fixtures\\iva-currency-events-preserved.json",
"sha256": "79972e699d32cea2be74f36c244825e47c63d20e6d1d3c14052ba564c4a63c93",
"scope": "P104partial/P131/P132QA;allpriorbooks/history immutable;noactivewrites"
},
"runtime_delta": {
"resources/js/lib/iva-currency-events.ts": "7133d1df2cf4171495bd145f5b8350938f0a3b4230af824c223d2b03cf0d9bb1",
"resources/js/components/simulation-currency-events.tsx": "d103234361d57d0461d19a0f1fb9cbc5a714dbd566000478fad9aced585f32fa",
"resources/js/components/simulation-monthly-iva.tsx": "44901ef5fc9def8ebd6c251d4af65f36a1cb330f5ed7d44db4a52d98753f18ff",
"resources/js/lib/project-dossier.ts": "1712be726c868d182a2ddf405331dcc1f55bf0c3ce72ad32ab758c15afef2f4a",
"resources/js/lib/business-financial-plan.ts": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
},
"counts_current": {
"delivered": 118,
"QA": 2,
"functional_pending": 12,
"P001": 1,
"total": 133
},
"homologation_unchanged": "92eaa935",
"remaining": "Entrega conjuntaP131/P132;P104incluídoapenascomopreparação/simulaçãocondicionada,seconstarnomanifesto,nãofecho. RestamP002/P046/P047/P058/P059/P084/P085/P104/P121/P129/P130/P133comimpedimentosnamesmamatriz.",
"limits": "L1aberto;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas",
"sources_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-currency-events-20261025\\source-archive-inventory.json",
"qa_status_preserved": "QA_complete_P131_P132_partial_P104_not_delivered",
"delivery_followup": {
"served_commit": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"receipt": "l1-currency-events-delivery-20261025.json",
"record": "iva_l1_currency_events_P131_P132_partial_P104_homologation_20261025",
"counts": {
"delivered": 120,
"QA": 0,
"functional_pending": 12,
"documentary": 1,
"total": 133
},
"P104_closure": false
}
}
@@ -0,0 +1,153 @@
{
"implementation_commit": "5f088e341125124077bc420a0b1c8ef0e8c28173",
"status": "delivered_demonstrated_scope_QA_proofs_preserved",
"coverage": {
"AUD-SIM-L1-P121": [
"web",
"software_service",
"information",
"media",
"teaching",
"analogous"
],
"AUD-SIM-L1-P130": [
"software_asset",
"content_asset",
"data_asset",
"crypto_asset",
"ebook_asset",
"profile_asset",
"access_asset",
"other_asset"
]
},
"branch_count_complete": 2,
"treatment_count": 14,
"standard_examples": 42,
"additional_examples": 4,
"source": "Lei10/2025, localPDF12–14/p2180(12–14),3(2)/(7),6(7)k/(8)/(9),23(2),25(7),26(4),32(1)c,33(2); Lei13/2016 localPDF8/p1426(266),6(7)k i–v, ePDF17/p1426(275),26(1–3). Páginas visualmente conferidas. Inventário de sete exemplares com hash preservado.",
"source_link": "https://miramar.co.mz/wp-content/uploads/2026/01/Tax_Update_Key_Amendments_to_Mozambican_Tax_Legislation_1767376440.pdf",
"scope": "Natureza digital, localização e responsável; gravação, recuperação, histórico e relatório. Não calcula taxa/base/IVA/dedução/campo11 ou totais; não envia declaração nem inicia pagamento. Software/acesso/licenciamento não decidem natureza apenas pelo título.",
"rules": {
"inbound": "Fornecedor estrangeiro e adquirente nacional: localização6(7)k.26(4) atribui obrigações ao adquirente sujeito passivo nacional identificado; qualidade desconhecida não apaga localização.25(7) declaração mensal/mapa;32(1)c referência até dia10 do mês seguinte.",
"outbound": "Adquirente estabelecido/domiciliado no estrangeiro:6(8), sem isenção ou IVAzero presumidos.",
"domestic": "Serviços6(3); bens3(2)/(7) equiparados a corpóreos,6(1) exige local na colocação à disposição demonstrado, sem inferência por servidor/IP/domicílio.",
"other_nonresident": "26(1)/(2): representante residente/poderes/comunicação anterior;26(3): falta de representante e actividade comercial/industrial/profissional comprovadas. Não atribui retenção automaticamente a consumidor.33(2)26(1–3) separado de26(4)."
},
"documentary_limits": {
"procedure": "Modelos/formalidades de25(7)/26(4) não cotejados neste incremento. A pesquisa oficial delimitada encontrou anúncio governamental de30/09/2026, não o texto normativo de execução. Isto não declara inexistência de regulamentação nem bloqueia classificação e preparação. Nenhum modelo, taxa de retenção, aprovador ou formulário inventado.",
"official_notice": "https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/",
"next_action": "Cotejar texto publicado e modelos aplicáveis antes de automatizar formalidades/submissão; manter preparação, localização e atribuição legal demonstrada.",
"P104": "Mantém pendência de escolha da taxa/data; conversão condicionada preservada, sem dependência efectiva destes percursos.",
"P084_P085": "Preparação/simulação condicionada preservadas; benefícios não encerrados."
},
"verification": {
"frontend": {
"tests": 57,
"passed": 57,
"failed": 0,
"digital_tests": 49,
"P002_adapter_compatibility_tests": 8
},
"privateAPI": {
"tests": 1,
"assertions": 209,
"database": "simulator_fiscal_delta_20261021_test:55441",
"transaction": "rollback",
"examples": 46
},
"types": "passed",
"build": "passed",
"browser": "Edge: qualidade do adquirente Sim→Por esclarecer mantém localização Moçambique e responsável indeterminado; reposta, classificada, gravada, recuperada e relatório aberto. Resultado versão4, três versões históricas.",
"screenshot": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-digital-20261025\\qa-recovered-report.png",
"preservation": "Comparação integral dos livros e históricos congelados:120entregues e P002QA preservados; sem perdas confirmadas ou escrita activa."
},
"integration_preparation": {
"branches": [
"P002",
"P121",
"P130"
],
"accepted_P002_candidate": "e4c490b3",
"ancestor_confirmed": true,
"local_main": "7ccf62adec52e574fdcc75ea2e3852833e3dba10",
"local_main_ancestor": true,
"merge_tree": "76a7356e225e3e9a857f3aa744f151a3a692c8f4",
"conflicts": false,
"strategy": "Uma entrega compatível pelo processo Git existente; reutilizar provas por ramo. Revalidar main/destino fresco e conferir somente delta instalado na entrega autorizada. Nenhuma integração no activo ou push neste incremento.",
"homologation_baseline": "e8b5ae43",
"runtime_delta_from_baseline": [
{
"file": "resources/js/lib/iva-digital.ts",
"sha256_lf": "623165a4e36e161776fea115ee7f8b9b61b4e5766831daa404badf8397eae271"
},
{
"file": "resources/js/components/simulation-digital.tsx",
"sha256_lf": "7c6cc9a4a79e385f7554ac43a0dd6310c8b890b162fd3a224378c55127b3844c"
},
{
"file": "resources/js/lib/iva-foreign-operations.ts",
"sha256_lf": "b2735b9071aac41f9ddf0ae0c81d3943c870adccfa315ec01432388fec4a7de8"
},
{
"file": "resources/js/components/simulation-foreign-operations.tsx",
"sha256_lf": "5276d81afd97cd40df63973fcfdca27d80903464af078f67deb3e45c7bb90948"
},
{
"file": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_lf": "19269934dc83f2cb3c36b1677f0bcdf066dc0ffd2af889730bd92acb54532587"
},
{
"file": "resources/js/lib/project-dossier.ts",
"sha256_lf": "f0428b411146e030bbf952428faffab6ac26178d09aa3a6437daa9363bc75a46"
},
{
"file": "resources/js/lib/iva-currency-events.ts",
"sha256_lf": "fa99e217e96bc6601ebfe0ac48a8ad3395ce85d57218c23888e6eece5a7405fa"
}
]
},
"balance": {
"delivered": 120,
"QA": 3,
"functional_pending": 9,
"P001": 1,
"total": 133
},
"pending_by_dependency": {
"documentary_specific": [
"P104",
"P084",
"P085",
"P001"
],
"travel_events": [
"P129",
"P133"
],
"imports_benefits": [
"P046",
"P047",
"P058",
"P059"
]
},
"homologation": "e8b5ae43",
"preservation_before_tests": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-digital-20261025\\preservation-before-tests.json",
"source_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-digital-20261025\\source-archive-inventory.json",
"qa_status_preserved": "QA_complete_P121_P130_not_delivered",
"delivery_followup": {
"served_commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"receipt": "l1-foreign-digital-delivery-20261025.json",
"record": "iva_l1_foreign_digital_P002_P121_P130_homologation_20261025",
"counts": {
"delivered": 123,
"QA": 0,
"functional_pending": 9,
"documentary": 1,
"total": 133
},
"digital_coverage_integral": false,
"P104_closure": false
}
}
@@ -0,0 +1,110 @@
{
"implementation_commit": "86970cd507795acb8ff7d942923d84e54e2d3331",
"status": "delivered_demonstrated_scope_QA_proofs_preserved",
"coverage": {
"AUD-SIM-L1-P002": [
"goods",
"services",
"listed_services",
"foreign_transport_portion"
]
},
"branch_count_complete": 1,
"examples": 7,
"meaning": "Localização estrangeira reutilizada; enquadramento potencial CIVA19(1)bii. Não concede nem calcula dedução/campo11, IVA, base ou totais. Hipótese interna e exclusões19(2) explícitas; localização nacional não equivale a isenção. Digital mantém âmbito próprio pendente.",
"coverage_partial": {
"AUD-SIM-L1-P104": "Exemplar integral Lei 2/2006 obtido: BR 12-I de 22/03/2006. Artigo 106(5), PDF18/página impressa66, conferido visualmente: facturação em moeda nacional. Não identifiquei no exemplar a regra de escolha da taxa/data cambial. P104 continua conversão condicionada, sem confirmação de base fiscal."
},
"documentary_research": {
"P104": {
"finding": "Exemplar integral Lei 2/2006 obtido: BR 12-I de 22/03/2006. Artigo 106(5), PDF18/página impressa66, conferido visualmente: facturação em moeda nacional. Não identifiquei no exemplar a regra de escolha da taxa/data cambial. P104 continua conversão condicionada, sem confirmação de base fiscal.",
"next_action": "Localizar a disposição aplicável que concretiza a remissão do CIVA 15(8), especificando taxa e momento de conversão; conservar moeda, taxa, direcção, data e fonte. Sem taxa corrente por defeito nem nova validação genérica.",
"source": {
"file": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-foreign-operations-20261025\\Lei-2-2006-BR-12-I.pdf",
"sha256": "efe00dbb9d9712d719f11d38a55be028c4d82315960ddfcc7786fdf9bdf133cb",
"pages": 36,
"origin": "https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Lei-n_2.2006.pdf_2063068952.pdf",
"official_identity": "BR12-I22/03/2006;Lei2/2006",
"publication": "Localresearchonly;notautomaticallypublishedorusedasFXrule"
}
}
},
"verification": {
"frontend": {
"tests": 8,
"passed": 8,
"failed": 0
},
"privateAPI": {
"tests": 1,
"assertions": 47,
"database": "simulator_fiscal_delta_20261021_test:55441",
"transaction": "rollback"
},
"types": "passed",
"build": "passed",
"browser": "Edge: alteração para hipótese interna desconhecida conserva território e produz indeterminação; reposição, gravação, recuperação e relatório; 7 linhas, versão4, 3 versões históricas",
"preservation": "120 fechos inventariados antes dos testes. Comparação integral dos livros anteriores congelados, excluindo apenas novos contextos sintéticos e novo livro P002. Nenhuma perda confirmada.",
"screenshot": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-foreign-operations-20261025\\qa-recovered-report.png"
},
"runtime_delta": [
{
"file": "resources/js/lib/iva-foreign-operations.ts",
"sha256_lf": "33ac9467a0c667d80cb5f66bad43ec567cd96207702579d57a9cbb15cc30d5f8"
},
{
"file": "resources/js/components/simulation-foreign-operations.tsx",
"sha256_lf": "5e7eddbd4bd7c9388fc55956baee90c74f673fef6f0d4555cf6f5331e98f8d62"
},
{
"file": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_lf": "3072660e5f91668fc69761ddeead00ac9f5e3e752c72537c637cf07993b3ffd3"
},
{
"file": "resources/js/lib/project-dossier.ts",
"sha256_lf": "3edb5682d7c8ca6e61e504eab67ca169f18ddcb07050c62fb58f57d3206b9829"
},
{
"file": "resources/js/lib/iva-currency-events.ts",
"sha256_lf": "fa99e217e96bc6601ebfe0ac48a8ad3395ce85d57218c23888e6eece5a7405fa"
}
],
"scope": "QA isolada; sem escrita no activo, publicação de documentos, migração ou instalação. iva-currency-events.ts altera apenas explicação documental de P104.",
"balance": {
"delivered": 120,
"QA": 1,
"functional_pending": 11,
"P001": 1,
"total": 133
},
"homologation": "e8b5ae43",
"pending": [
"P104",
"P121",
"P130",
"P129",
"P133",
"P046",
"P047",
"P058",
"P059",
"P084",
"P085"
],
"preservation_receipt": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-foreign-operations-20261025\\preservation-before-tests.json",
"qa_status_preserved": "QA_complete_P002_P104_pending_cotejo_documented_not_delivered",
"delivery_followup": {
"served_commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"receipt": "l1-foreign-digital-delivery-20261025.json",
"record": "iva_l1_foreign_digital_P002_P121_P130_homologation_20261025",
"counts": {
"delivered": 123,
"QA": 0,
"functional_pending": 9,
"documentary": 1,
"total": 133
},
"digital_coverage_integral": false,
"P104_closure": false
}
}
@@ -0,0 +1,197 @@
{
"implementation_commit": "f640e193706dd44f74a5d864d73e26c4212c0d88",
"status": "delivered_with_QA_proofs_preserved",
"coverage": {
"AUD-SIM-L1-P123": [
"consignment_180"
],
"AUD-SIM-L1-P126": [
"missing_goods",
"excess_consumption",
"found_goods"
]
},
"branch_count": 2,
"treatment_count": 4,
"source": "CIVA Lei13/2016,3(3)d,PDF6/p1426(264);3(4),PDF7/p1426(265),páginas digitalizadas visualmente conferidas.Lei22/2022 não altera3;Lei10/2025 PDF12 mantém3(3)d/3(4).Rectificação2017 não altera estas disposições. Acervo completo seisPDF inventariado e hashes conferidos.",
"meaning": {
"P123": "Mercadorias enviadas à consignação não devolvidas em180dias da entrega ao destinatário,3(3)d. Data de entrega/destinatário,conjunto não devolvido e data de conferência identificados;prazo de180dias calculado. No dia180 o prazo ainda decorre;após o prazo,a transmissão é identificada neste recorte,sem calcular exigibilidade/base/IVA.",
"P126": "Presunções ilidíveis3(4):transmissão de bens adquiridos/importados/produzidos não localizados nos estabelecimentos,ou consumo excessivo face ao volume de produção;e aquisição dos bens encontrados nesses locais. Levantamento,estabelecimentos,conjunto/período e prova em contrário separados. Desconhecido indeterminado;prova identificada afasta presunção apenas no âmbito declarado,sem concessão de isenção."
},
"scope": "2026,data de conferência/âmbito identificados;classificação da operação,prazo e presunções,não base/exigibilidade/taxa/IVA,nova dedução/regularização/campo11 ou totaisModeloA.P123 não são embalagensP102;P126 não comprova aquisição efectiva/factura ou elegibilidade para margemP092/P093/P125.Devoluções parciais separadas por conjunto;devolução posterior não apaga histórico.",
"matrix_correction": "P123 antes designado embalagens retornáveis não devolvidas,mas180dias3(3)d corresponde a mercadorias enviadas à consignação.Designação corrigida na mesma matriz com histórico.P102 e114fechos preservados;nenhum requisito novo.",
"technical_choices": "goodsPresumptions poroportunidade no snapshot/API/dossier existentes;UTCdiascivis,dataentrega+180dias,dia180atéfimdia,sem calendárioinventado. Condições ereferências próprias,não certificados/aprovadores;consumoexcessivo qualitativamente fundamentado faceprodução,sempercentageminventada.Troca conserva camposocultos eexigereverconfirmações. Classificação independentes dosmontantes.",
"verification": {
"frontend": {
"tests": 7,
"passed": 7,
"failed": 0,
"coverage": "4percursos;factos/referências/datas;fronteira179/180/181dias,passagemdeano;provaemcontrário desconhecida/semref/referenciada;quantidade semlimiar;trocaconservadados;persistência/histórico/relatório/preservação"
},
"privateAPI": {
"tests": 1,
"assertions": 30,
"target": "simulator_fiscal_delta_20261021_test:55441",
"transaction_rollback": true,
"xml": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-goods-presumptions-20261025\\phpunit.xml"
},
"types": "passed",
"build": "passed;existingplugin timingwarnings",
"UI": "Edge/CUAcomponente real:P126 prova desconhecida deixaindeterminado;prova referenciada afasta presunção semisenção;restauro dosfactos,gravação/recuperação/relatório4operações,4versõesanteriores,P123194dias/limite2026-11-28;montantesnull.Histórico indeterminado/afastado preservado.Dadossintéticos,nãoaceitação manualTempo.",
"UI_screenshot": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-goods-presumptions-20261025\\qa-recovered-report.png"
},
"preservation": {
"base": "4ef7be3d6f651d8fb00ce95ae059772d284cd73a",
"delivered_ids": [
"AUD-SIM-L1-P003",
"AUD-SIM-L1-P004",
"AUD-SIM-L1-P005",
"AUD-SIM-L1-P006",
"AUD-SIM-L1-P007",
"AUD-SIM-L1-P008",
"AUD-SIM-L1-P009",
"AUD-SIM-L1-P010",
"AUD-SIM-L1-P011",
"AUD-SIM-L1-P012",
"AUD-SIM-L1-P013",
"AUD-SIM-L1-P014",
"AUD-SIM-L1-P015",
"AUD-SIM-L1-P016",
"AUD-SIM-L1-P017",
"AUD-SIM-L1-P018",
"AUD-SIM-L1-P019",
"AUD-SIM-L1-P020",
"AUD-SIM-L1-P021",
"AUD-SIM-L1-P022",
"AUD-SIM-L1-P023",
"AUD-SIM-L1-P024",
"AUD-SIM-L1-P025",
"AUD-SIM-L1-P026",
"AUD-SIM-L1-P027",
"AUD-SIM-L1-P028",
"AUD-SIM-L1-P029",
"AUD-SIM-L1-P030",
"AUD-SIM-L1-P031",
"AUD-SIM-L1-P032",
"AUD-SIM-L1-P033",
"AUD-SIM-L1-P034",
"AUD-SIM-L1-P035",
"AUD-SIM-L1-P036",
"AUD-SIM-L1-P037",
"AUD-SIM-L1-P038",
"AUD-SIM-L1-P039",
"AUD-SIM-L1-P040",
"AUD-SIM-L1-P041",
"AUD-SIM-L1-P042",
"AUD-SIM-L1-P043",
"AUD-SIM-L1-P044",
"AUD-SIM-L1-P045",
"AUD-SIM-L1-P048",
"AUD-SIM-L1-P049",
"AUD-SIM-L1-P050",
"AUD-SIM-L1-P051",
"AUD-SIM-L1-P052",
"AUD-SIM-L1-P053",
"AUD-SIM-L1-P054",
"AUD-SIM-L1-P055",
"AUD-SIM-L1-P056",
"AUD-SIM-L1-P057",
"AUD-SIM-L1-P060",
"AUD-SIM-L1-P061",
"AUD-SIM-L1-P062",
"AUD-SIM-L1-P063",
"AUD-SIM-L1-P064",
"AUD-SIM-L1-P065",
"AUD-SIM-L1-P066",
"AUD-SIM-L1-P067",
"AUD-SIM-L1-P068",
"AUD-SIM-L1-P069",
"AUD-SIM-L1-P070",
"AUD-SIM-L1-P071",
"AUD-SIM-L1-P072",
"AUD-SIM-L1-P073",
"AUD-SIM-L1-P074",
"AUD-SIM-L1-P075",
"AUD-SIM-L1-P076",
"AUD-SIM-L1-P077",
"AUD-SIM-L1-P078",
"AUD-SIM-L1-P079",
"AUD-SIM-L1-P080",
"AUD-SIM-L1-P081",
"AUD-SIM-L1-P082",
"AUD-SIM-L1-P083",
"AUD-SIM-L1-P086",
"AUD-SIM-L1-P088",
"AUD-SIM-L1-P089",
"AUD-SIM-L1-P090",
"AUD-SIM-L1-P091",
"AUD-SIM-L1-P092",
"AUD-SIM-L1-P093",
"AUD-SIM-L1-P094",
"AUD-SIM-L1-P095",
"AUD-SIM-L1-P096",
"AUD-SIM-L1-P097",
"AUD-SIM-L1-P098",
"AUD-SIM-L1-P099",
"AUD-SIM-L1-P100",
"AUD-SIM-L1-P101",
"AUD-SIM-L1-P102",
"AUD-SIM-L1-P103",
"AUD-SIM-L1-P105",
"AUD-SIM-L1-P106",
"AUD-SIM-L1-P107",
"AUD-SIM-L1-P108",
"AUD-SIM-L1-P109",
"AUD-SIM-L1-P110",
"AUD-SIM-L1-P111",
"AUD-SIM-L1-P112",
"AUD-SIM-L1-P113",
"AUD-SIM-L1-P114",
"AUD-SIM-L1-P115",
"AUD-SIM-L1-P116",
"AUD-SIM-L1-P117",
"AUD-SIM-L1-P118",
"AUD-SIM-L1-P119",
"AUD-SIM-L1-P120",
"AUD-SIM-L1-P122",
"AUD-SIM-L1-P124",
"AUD-SIM-L1-P125",
"AUD-SIM-L1-P128"
],
"confirmed_losses": [],
"accepted_delivery": "019bcbad/4ef7be3d;174tables/369files;29published/28relations/408geometries;code/schema/data/config/permissions compared",
"frozen": "tests\\frontend\\fixtures\\iva-goods-presumptions-preserved.json",
"sha256": "adb410b8e6c6d8f743497193f679c9eae7215b2f1343c36078c0e40183dd369d",
"scope": "P123/P126QA;allpriorbooks/history immutable;noactivewrites"
},
"runtime_delta": {
"resources/js/lib/iva-goods-presumptions.ts": "16047a0a2e7c052a42e83e3983dab7465a2ae5f1d66966896220f27625ab6f17",
"resources/js/components/simulation-goods-presumptions.tsx": "1dcb1d5a057d3b7a3a33beb36a912b90ea258cbc00d74a8140512b82b9b5a589",
"resources/js/components/simulation-monthly-iva.tsx": "ec9b9ea5fa3f044fd76bf30cac2ee54304a58d502888bf28c705e189f4135d4c",
"resources/js/lib/project-dossier.ts": "2c8eb800c1366614521e33930e49b66c4c9efa4a48c90a784bd4d1bf80b06c7a"
},
"counts_current": {
"delivered": 114,
"QA": 2,
"functional_pending": 16,
"P001": 1,
"total": 133
},
"homologation_unchanged": "019bcbad",
"remaining": "Uma entrega conjuntaP123/P126 pelo processoGit,backup/restauro fresco,provasQA reutilizadas e apenasdeltainstalado.",
"limits": "L1aberto;P00105/06;P121digital/P084/P085pendentes;bebidasL2/L3;Estatísticas/IAadiadas",
"sources_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-goods-presumptions-20261025\\source-archive-inventory.json",
"qa_status_preserved": "QA_complete_not_delivered",
"delivery_followup": {
"served_commit": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"receipt": "l1-goods-presumptions-delivery-20261025.json",
"record": "iva_l1_goods_presumptions_P123_P126_homologation_20261025",
"counts": {
"delivered": 116,
"QA": 0,
"functional_pending": 16,
"documentary": 1,
"total": 133
}
}
}
@@ -0,0 +1,146 @@
{
"implementation_commit": "4e550c389216649a72db38cf8f5e3c644223357a",
"status": "delivered_demonstrated_scope_QA_proofs_preserved",
"branch_count_complete": 1,
"treatments": 8,
"examples": 9,
"coverage": {
"baggage": "Bagagem pessoal,quantidades razoáveis,sem fins comerciais;Lei2/2011,2(1)a;Decreto3/2011,1b/3a",
"monthly": "Remessa mensal,valor da linha e total do âmbito com outras remessas;15.000MZN nos exemplares cotejados",
"accumulated": "Remessas por empresa autorizada,janela e saldo não reutilizados,até seis meses;transição2025/2026 suportada",
"appliance": "Um electrodoméstico por tipo/ano;histórico inclui operações externas ao dossier",
"vehicle": "Veículo automóvel ou tractor/alfaias;direito e histórico identificados,cinco anos e restrição de alienação",
"return_baggage": "Fim do contrato e regresso definitivo;prazo do pedido e prorrogação expressa quando necessária",
"return_vehicle": "Veículo/tractor como bagagem no regresso;estadia de pelo menos um ano,direito disponível,pedido e prazos",
"separate_vehicle": "Substituição excepcional por veículo separado da bagagem:50%de redução,estadia curta só com autorização/pressuposto6(7);IVA normal informado com referência e aritmética decimal exacta",
"heirs": "Transversal aos direitos não usados,bens adquiridos em vida,herdeiro legal e pedido dentro de um ano do óbito;pedido7 não recebe automaticamente o prazo de90dias do pedido do mineiro6(5)"
},
"reference_correction": [
{
"diploma": "Lei n.º 2/2011, de 11 de Janeiro",
"title": "Regime Aduaneiro Aplicável aos Mineiros na República da África do Sul",
"issue": "BR n.º 1, I Série, 4.º suplemento, 11/01/2011",
"file": "docs\\investmoz\\simulations\\source-archive\\Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"url_working_copy": "https://tr-jue.mcnet.co.mz/mcnet/portal/faq/category/149/faqsdoclink",
"previous_url": "https://www.pgr.gov.mz/index.php/por/content/download/5617/40390/version/1/file/Lei%2Bdo%2BVoluntariado.pdf",
"previous_url_access": "PGR DNS unavailable to local download in this round;does not invalidate accepted official content. MCNet original obtained and rendered. No claim of byte equality with an unavailable PGR download.",
"articles": [
{
"articles": "1;2(1)(a–d);2(2–5);3;4",
"pdf_page": 1,
"printed_page": "not printed on this opening page",
"meaning": "Scope,goods,quotas,non-alienation,return,heirs,possible limit revision,alcohol/tobacco exclusion,regulation"
},
{
"articles": "5",
"pdf_page": 2,
"printed_page": "110-(8)",
"meaning": "Entry into force01/01/2011"
}
],
"other_acts": "Full original has10pages and also contains Lei7/2011(Legal Regime of Volunteering). Neither original filename nor that other act is the authority for P059."
},
{
"diploma": "Decreto n.º 3/2011, de 16 de Março",
"title": "Regulamento do Regime Aduaneiro Aplicável aos Mineiros Moçambicanos em Serviço na República da África do Sul",
"issue": "BR n.º11,I Série,16/03/2011",
"file": "docs\\investmoz\\simulations\\source-archive\\Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"articles": [
{
"articles": "1(definitions),2(scope),3(benefits),4(beginning)",
"pdf_page": 2,
"printed_page": "152"
},
{
"articles": "4(continuation),5(temporary licence),6(return),7(heirs),8(procedural moment)",
"pdf_page": 3,
"printed_page": "153"
}
]
},
{
"diploma": "CIVA republicado pela Lei13/2016",
"article": "12(2),alínea b);proportionality in opening sentence12(2)",
"file": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"pdf_page": 11,
"printed_page": "1426-(269)",
"subsequent_cotejo": "Lei22/2022PDF2–3 andLei10/2025PDF13 maintain12(2) by reference;no new expanded text in these changes."
}
],
"source_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-miners-returnees-20261025\\source-archive-inventory.json",
"verification": {
"frontend": {
"tests": 15,
"passed": 15,
"failed": 0,
"scope": "All8paths,heirs,missing/negative facts,limit boundaries,one/six month windows,year boundary,one/five year entitlements,90days/six months,exact50%arithmetic,overlapping quotas,history,isolated contexts and complete preservation of P046/125accepted branches"
},
"privateAPI": {
"tests": 1,
"assertions": 51,
"database": "simulator_fiscal_delta_20261021_test:55441",
"transaction": "rollback"
},
"types": "passed",
"build": "passed",
"browser": "Edge:monthly total15000→15001keeps IVA indeterminate;restored and versioned. Separate vehicle treatment confirmed→unknown keeps IVA indeterminate;restored gives160.123456×50%=80.061728. Version6/history5 saved,recovered,and actual dossier report opened. Fields without application hidden;originals/history preserved.",
"screenshot": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-miners-returnees-20261025\\qa-recovered-report.png",
"preservation": "125 delivered branches and P046 QA inventoried before tests. Full snapshot comparison after removing only new minerImports book. No confirmed loss,no active writes,no repeated accepted proofs."
},
"counts_current": {
"delivered": 125,
"QA": 2,
"functional_pending": 5,
"P001": 1,
"total": 133
},
"compatible_QA": [
"P046",
"P059"
],
"homologation_unchanged": "a48e9749",
"runtime_delta": {
"resources/js/lib/iva-miners.ts": "96cade3d3b85dde4e098a802825d52b3abfbde66722f83348fc0f1ca0216138f",
"resources/js/components/simulation-miners.tsx": "40abf151b369b4dae599ca768fe8849466ce0a7122ef62c18e3b4179c095e90b",
"resources/js/components/simulation-monthly-iva.tsx": "25b9ec77328c57ae787388d6222eb6e4df3e15e44be6b61bce90fc389931e024",
"resources/js/lib/project-dossier.ts": "d4dec167e09b7be9477e806d28a3490b620650909859c13da53109747c93cb09"
},
"limitations_balance": {
"scope": "P059 demonstrado para mineiros moçambicanos naRSA,2026/MZN;outros países/fundamentos não são declarados automaticamente isentos nem excluídos de todo o CIVA.",
"monthly_limit": "Cobertura dos exemplares:15.000MZN/mês;valores superiores permanecem indeterminados,não se presume revisão do limite pelo Governo2(5),nem benefício parcial sobre o excesso.",
"customs": "Classificação segundo factos declarados/pressupostos expressos;portal não concede autorização,não emite DU,licença ou despacho,não calcula direitos/base aduaneira/ICE,sem dedução/campo11 ou lançamento automático no ModeloA.",
"temporary": "Licença temporária em férias5 não vira isenção definitiva;encaminhamento para o regime aduaneiro existente,com condições próprias.",
"internal_acquisition": "6(4)também refere aquisição no mercado interno;este incremento aplica apenas IVA informado da importação associada identificada,não calcula IVA da venda interna nem restitui imposições.",
"KAWENA": "OS07/AT/DGA/411.1/2019 permanece procedimento específico;contramarca/SAD500/armazém e outras exigências suas não foram impostas às outras vias.",
"digital": "Formalidades digitais P121/P130 ainda não automatizadas permanecem visíveis;sem cobertura digital integral.",
"travel": "P129/P133 preservados no âmbito margem/eventos,sem IVA devido,dedução42/43d,regularização44,facturação45/modelo46(2);ligação AUD-SIM-INT02 mantida.",
"others": "P084/P085 apenas preparação e simulação condicionada;P104 conversão condicionada;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas;L1aberto."
},
"remaining_ids": {
"P047": "Quatro remissões12(1)b na redacção2022;falta cotejar condições operativas de partidos,mecenato,veículos oficiais diplomáticos/consulares e InstruçõesPreliminaresPauta;sem benefício aduaneiro genérico.",
"P058": "Decreto37/2023 obtido,art57PDF10/p1474 conferido visualmente:57(2)c(funcionários/estudantes,mais de um ano) e d(regresso antecipado por serviço doEstado) já delimitados. 57(2)b remete literalmente a bens do n.º2,mas enumeração de bens está no n.º3:divergência de remissão concreta preservada;concluir correspondência sem a corrigir silenciosamente. Ainda sem implementação/QA dos percursos;veículos não inferidos da lista de bagagem57(3).",
"P084_P085": "Ligação regulamentar14(3)pendente para cada cenário;ModelI.1 epreparação condicionada preservados.",
"P104": "ExemplarLei2/2006 já obtido;falta norma da taxa/data,sem transpor câmbio aduaneiro automaticamente.",
"P001": "Instrução documental doscampos05/06daedição recebida;sem renumeração automática pelos modelos antigos/2019."
},
"next": "P046/P059 formam conjunto compatível em QA. Entrega única após instrução,preservando concorrência e conferindo apenas delta instalado;sem push/instalação neste incremento.",
"qa_status_preserved": "QA_complete_P059_demonstrated_RSA_scope_not_delivered",
"delivery_followup": {
"served_commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"receipt": "l1-objective-miners-delivery-20261025.json",
"record": "iva_l1_objective_miners_P046_P059_homologation_20261025",
"counts": {
"delivered": 127,
"QA": 0,
"functional_pending": 5,
"documentary": 1,
"total": 133
},
"deduction_calculation": false,
"automatic_customs_concession": false,
"P104_closure": false,
"P084_P085_closure": false
}
}
@@ -0,0 +1,140 @@
{
"implementation_commit": "08072015174dcdf8e196f803b16903869af69a4d",
"status": "delivered_demonstrated_scope_QA_proofs_preserved",
"branch_count_complete": 1,
"treatments": 28,
"meaning": "Um ramoP046,28correspondências expressas;enumeração legal exemplificativa. Isenção naimportação distinta de venda,base aduaneira,direitos e dedução. Sem fecho integralL1.",
"verification": {
"frontend": {
"tests": 33,
"passed": 33
},
"privateAPI": {
"tests": 1,
"assertions": 105,
"database": "simulator_fiscal_delta_20261021_test:55441",
"transaction": "rollback"
},
"types": "passed",
"build": "passed",
"browser": "Edge:importação definitivaSim→Por esclarecer deixa IVA indeterminado;reposta condição e nova versão4/histórico3;gravação localQA,recovery,relatório real do dossier aberto. API privada conferida separadamente.",
"screenshot": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-import-source-review-20261025\\qa-recovered-report.png",
"preservation": "125fechos inventariados antes dos testes;nenhuma perda confirmada;comparação integral do snapshot congelado removendo apenas novo livro objectiveImports;provas a48e9749/f0596225 reutilizadas;nenhuma escrita noactivo"
},
"counts_current": {
"delivered": 125,
"QA": 1,
"functional_pending": 6,
"P001": 1,
"total": 133
},
"homologation_unchanged": "a48e9749",
"remaining_cases": {
"P046": {
"treatment": "Importação definitiva de bens com isenção objectiva interna",
"source": "CIVA12(1)a,redacçãoLei10/2025PDF12/p2180(12);art9 e anexosLei22/2022 já entregues",
"existing": "Implementação e QA neste incremento:28correspondências expressas;rascunho,gravação,recuperação,relatório e histórico",
"kind": "QA concluído;por disponibilizar",
"impediment": "Falta integrar numa entrega compatível;outras isenções objectivas não enumeradas não são declaradas excluídas",
"next": "Agrupar com próximo ramo compatível,sem entrega isolada apenas por estar emQA;reutilizar33testes/105asserções e conferir delta instalado"
},
"P047": {
"treatment": "Importações com benefício aduaneiro nas quatro remissões12(1)b",
"source": "Lei22/2022PDF2/p2252(26),12(1)b;Lei10/2025PDF13mantém:Lei7/91alterada14/92(partidos),Lei4/94(mecenato),normasdeveículosoficiaisdeMissõesDiplomáticas/Consulares,InstruçõesPreliminaresPauta",
"existing": "Remissões actualizadas cotejadas;12b não é qualquer benefício aduaneiro genérico",
"kind": "Documentação específica e desenvolvimento",
"impediment": "Falta cotejar as condições operativas de cada uma das quatro remissões e o âmbito do benefício de direitos nesta importação;redacção2016não pode substituir a de2022",
"next": "Obter/cotejar textos completos das quatro famílias e InstruçõesPreliminaresLei17/2022/Lei8/2025;mapear só os percursos demonstrados,sem atribuir IVA isento a toda redução aduaneira"
},
"P058": {
"treatment": "Regresso definitivo de emigrantes,funcionários civis/militares doEstado,estudantes ebolseiros",
"source": "CIVA12(2)a,2016PDF11/p1426(269),mantido2022/2025;legislaçãoaduaneiraremetida",
"existing": "Condição legal de regresso e proporcionalidade doIVA identificadas;nenhum benefício fechado",
"kind": "Cotejo documental específico e desenvolvimento",
"impediment": "Ainda não cotejados no texto integral aplicável os termos/limites aduaneiros por categoria,bens e regresso;orientação informativa genérica não fornece esses parâmetros",
"next": "Conferir RegrasGeraisDecreto37/2023 e alteração27/2026,art14/58/QuadrosV/VI,e legislação específica de cada categoria;conservar proporcionalidade da redução de direitos12(2),sem criar um limite comum inventado"
},
"P059": {
"treatment": "Mineiros moçambicanos em serviço naÁfrica doSul",
"source": "CIVA12(2)b;Lei2/2011arts1–4,BR1-I4suplemento11/01/2011PDF1;Decreto3/2011,BR11-I16/03/2011PDF2–3/p152–153,arts1–8;OS07/AT/DGA/411.1/2019,MCNetPDF1–5",
"existing": "Lei e regulamento concretos localizados;categorias,limites,regresso,separadosdebagagem e transmissão aherdeiros identificados. ProcedimentoDGA localizado paraKAWENA. Sem implementação fiscal nova neste incremento",
"kind": "Cotejo operacional e desenvolvimento por executar;fonte base já localizada",
"impediment": "Falta traduzir e verificar os percursos específicos e a proporcionalidade12(2),sem confundir limite mensal,acumulação,regresso ou benefício de veículo separado;OSKAWENA não demonstra procedimento universal",
"next": "Implementar percursos demonstradosLei2/2011/Decreto3/2011,com exclusão álcool/tabaco,quotas/histórico e condições próprias;registar correspondênciaIVA sem exigir novo despacho genérico apenas porque a matriz antiga o dizia. Não generalizar50%a todos os bens/mineiros"
},
"P084": {
"treatment": "Interesse público e fins sociais:preparação/pedido/decisão com âmbito",
"source": "CIVA14(2)a/14(3);cadeiaModelI.1→Despacho06/01/2010→Decreto56/2009art2→CBFLei4/2009 jácotejada",
"existing": "Rascunhos e cenário condicionado entregues78c9f4a3;estadospreparação/apresentado/deferido/indeferido;âmbitobens/operação/período/condições preservado",
"kind": "Correspondência regulamentar específica pendente",
"impediment": "Cadeia doModelI.1 não demonstra por si a regulamentação14(3);pesquisa delimitada desta ronda não localizou disposição de correspondência adicional",
"next": "Localizar norma ou instrução oficial aplicável a14(3) paraaquisição/importação14(2)a;preservar distinção pedido/decisão e não inventar aprovadores/certificados"
},
"P085": {
"treatment": "Aquisição de bens paraoferta aatenuar calamidadesnaturais",
"source": "CIVA14(2)b/14(3);mesma pesquisa documentalP084,condições distintas",
"existing": "Emergência,finalidade humanitária,bens,destinatário,documentos e simulação condicionada disponíveis;sem benefício confirmado",
"kind": "Correspondência regulamentar específica pendente",
"impediment": "Ainda não demonstrada norma/procedimento de emergência/doação correspondente14(2)b/14(3);ModelI.1 não é concessão. Não estender automaticamente aimportação/serviços",
"next": "Conferir procedimento oficial de emergência/doação e âmbito exacto;aplicar só correspondência demonstrada,sem impor o estado de pedido ordinárioP084 ao percurso de emergência"
},
"P104": {
"treatment": "Conversão de valores expressos emmoeda estrangeira",
"source": "CIVA15(8),2016PDF14/p1426(272),conferido visualmente;Lei2/2006 exemplar integral36p jáobtido,cotejo106(5),PDF18/p66",
"existing": "Conversão condicionada entreguee8b5ae43;original,moeda,taxa,direcção,data e fonte preservados",
"kind": "Parâmetro/norma de escolha de taxa e data pendente",
"impediment": "15(8)remeteLei2/2006;106(5)não estabelece escolha de taxa/data. Exemplar não está em falta;sem norma demonstrada não há base fiscal confirmada",
"next": "Localizar disposição/instrução aplicável à taxa/data para este valor tributável;distinguir câmbio aduaneiro doart16/Pauta e taxa de apresentação,sem os transpor automaticamente a15(8)"
},
"P001": {
"treatment": "Instrução documental doscampos05/06 daediçãoModeloA recebida",
"source": "DOCX62c198e9/63d45fa8/VATReturn9c0b99a8 jáaceites;novoBR72-I15/04/2019PDF1/3,Despacho26/06/2016 eModeloA,p749/751",
"existing": "Candidata544068e8 ecorrespondências recebidas preservadas;novomodelo oficial arquivado ecomparado,semrenumeração",
"kind": "Documental,fora dos132ramosfuncionais",
"impediment": "Modelo publicado2019 tem03vendas isentas comdireito,04remissão18(1)b,05sem direito e06imobilizado;não é a numeração05/06 daedição recebida. Não acompanha instrução que resolva essa distinção",
"next": "Localizar instruções correspondentes àedição recebida que distingam05/06;preservar originais e não copiar numeração de2019 ou daedição antigaAT"
}
},
"source_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-import-source-review-20261025\\source-archive-inventory.json",
"source_urls": {
"BR-11-I-2011-03-16.pdf": "https://archive.gazettes.africa/archive/mz/2011/mz-government-gazette-series-i-dated-2011-03-16-no-11.pdf",
"MCNet-miners-procedure.pdf": "https://jue.mcnet.co.mz/mcnet/portal/faq/category/154/faqsdoclink",
"BR-72-I-2019-04-15.pdf": "https://archive.gazettes.africa/archive/mz/2019/mz-government-gazette-series-i-dated-2019-04-15-no-72.pdf"
},
"additional_primary_sources": {
"Lei2_2011": "https://www.pgr.gov.mz/index.php/por/content/download/5617/40390/version/1/file/Lei%2Bdo%2BVoluntariado.pdf",
"Decreto27_2026_scope_notice": "https://inm.gov.mz/pt-br/content/sum%C3%A1rio-suplemento-n%C2%BA-1-de-010726-pag-1012-1-8-br-n%C2%BA-123-boletim-da-rep%C3%BAblica-i-serie-p%C3%A1g-1"
},
"runtime_delta": {
"resources/js/lib/iva-objective-imports.ts": "859e51700fffa8990b849f0763059e577b3d71fcf3e6c7294f39c944baee8181",
"resources/js/components/simulation-objective-imports.tsx": "b9b07a39f60cdea7e19dda7cac8fc7ad87cafb0972c09a7c747dbaddc7578e39",
"resources/js/components/simulation-monthly-iva.tsx": "c5df5759b742f03b13f1d7921c8cd4db51e71f5d9fa6eb05116c6f4188c3108a",
"resources/js/lib/project-dossier.ts": "b4e117efdcacb266ac1996ea99fc2e7f854d6b14ad7263779f969cee1810942a"
},
"limitations_balance": {
"digital": "P121/P130 formalidades regulamentares,modelos eprocedimentos deentrega/pagamento ainda nãoautomatizados;sem cobertura digital integral",
"travel": "P129/P133 âmbito margem/eventos;sem IVAdevido,dedução42/43d,regularização44,factura45oumodelooficial46(2);ligaçãoAUD-SIM-INT02",
"P104": "Conversão condicionada;sem taxa/data fiscal confirmadas",
"P084_P085": "Preparação/simulação condicionada;sembenefício oufecho",
"P001": "Apenas05/06",
"scope": "L1aberto;bebidasL2/L3;Estatísticas/IAadiadas"
},
"next": "ProsseguirP059comfontesconcretas eQAporramo;P046aguardaentregacompatível. Não efectuarentregaindividual apenasporqueP046ficouemQA. Pesquisaoutroscasosprossegue sembloquearindependentes.",
"qa_status_preserved": "QA_complete_P046_not_delivered",
"delivery_followup": {
"served_commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"receipt": "l1-objective-miners-delivery-20261025.json",
"record": "iva_l1_objective_miners_P046_P059_homologation_20261025",
"counts": {
"delivered": 127,
"QA": 0,
"functional_pending": 5,
"documentary": 1,
"total": 133
},
"deduction_calculation": false,
"automatic_customs_concession": false,
"P104_closure": false,
"P084_P085_closure": false
}
}
@@ -0,0 +1,253 @@
{
"status": "P047 delivered in demonstrated scope",
"base": "4f28fac5",
"homologation_unchanged": "e38aa749",
"receipt_preserved": "9019f766",
"counts": {
"delivered": 129,
"QA": 0,
"functional_pending": 3,
"documentary": 1,
"total": 133
},
"delivered_preserved": [
"AUD-SIM-L1-P002",
"AUD-SIM-L1-P003",
"AUD-SIM-L1-P004",
"AUD-SIM-L1-P005",
"AUD-SIM-L1-P006",
"AUD-SIM-L1-P007",
"AUD-SIM-L1-P008",
"AUD-SIM-L1-P009",
"AUD-SIM-L1-P010",
"AUD-SIM-L1-P011",
"AUD-SIM-L1-P012",
"AUD-SIM-L1-P013",
"AUD-SIM-L1-P014",
"AUD-SIM-L1-P015",
"AUD-SIM-L1-P016",
"AUD-SIM-L1-P017",
"AUD-SIM-L1-P018",
"AUD-SIM-L1-P019",
"AUD-SIM-L1-P020",
"AUD-SIM-L1-P021",
"AUD-SIM-L1-P022",
"AUD-SIM-L1-P023",
"AUD-SIM-L1-P024",
"AUD-SIM-L1-P025",
"AUD-SIM-L1-P026",
"AUD-SIM-L1-P027",
"AUD-SIM-L1-P028",
"AUD-SIM-L1-P029",
"AUD-SIM-L1-P030",
"AUD-SIM-L1-P031",
"AUD-SIM-L1-P032",
"AUD-SIM-L1-P033",
"AUD-SIM-L1-P034",
"AUD-SIM-L1-P035",
"AUD-SIM-L1-P036",
"AUD-SIM-L1-P037",
"AUD-SIM-L1-P038",
"AUD-SIM-L1-P039",
"AUD-SIM-L1-P040",
"AUD-SIM-L1-P041",
"AUD-SIM-L1-P042",
"AUD-SIM-L1-P043",
"AUD-SIM-L1-P044",
"AUD-SIM-L1-P045",
"AUD-SIM-L1-P046",
"AUD-SIM-L1-P048",
"AUD-SIM-L1-P049",
"AUD-SIM-L1-P050",
"AUD-SIM-L1-P051",
"AUD-SIM-L1-P052",
"AUD-SIM-L1-P053",
"AUD-SIM-L1-P054",
"AUD-SIM-L1-P055",
"AUD-SIM-L1-P056",
"AUD-SIM-L1-P057",
"AUD-SIM-L1-P059",
"AUD-SIM-L1-P060",
"AUD-SIM-L1-P061",
"AUD-SIM-L1-P062",
"AUD-SIM-L1-P063",
"AUD-SIM-L1-P064",
"AUD-SIM-L1-P065",
"AUD-SIM-L1-P066",
"AUD-SIM-L1-P067",
"AUD-SIM-L1-P068",
"AUD-SIM-L1-P069",
"AUD-SIM-L1-P070",
"AUD-SIM-L1-P071",
"AUD-SIM-L1-P072",
"AUD-SIM-L1-P073",
"AUD-SIM-L1-P074",
"AUD-SIM-L1-P075",
"AUD-SIM-L1-P076",
"AUD-SIM-L1-P077",
"AUD-SIM-L1-P078",
"AUD-SIM-L1-P079",
"AUD-SIM-L1-P080",
"AUD-SIM-L1-P081",
"AUD-SIM-L1-P082",
"AUD-SIM-L1-P083",
"AUD-SIM-L1-P086",
"AUD-SIM-L1-P087",
"AUD-SIM-L1-P088",
"AUD-SIM-L1-P089",
"AUD-SIM-L1-P090",
"AUD-SIM-L1-P091",
"AUD-SIM-L1-P092",
"AUD-SIM-L1-P093",
"AUD-SIM-L1-P094",
"AUD-SIM-L1-P095",
"AUD-SIM-L1-P096",
"AUD-SIM-L1-P097",
"AUD-SIM-L1-P098",
"AUD-SIM-L1-P099",
"AUD-SIM-L1-P100",
"AUD-SIM-L1-P101",
"AUD-SIM-L1-P102",
"AUD-SIM-L1-P103",
"AUD-SIM-L1-P104",
"AUD-SIM-L1-P105",
"AUD-SIM-L1-P106",
"AUD-SIM-L1-P107",
"AUD-SIM-L1-P108",
"AUD-SIM-L1-P109",
"AUD-SIM-L1-P110",
"AUD-SIM-L1-P111",
"AUD-SIM-L1-P112",
"AUD-SIM-L1-P113",
"AUD-SIM-L1-P114",
"AUD-SIM-L1-P115",
"AUD-SIM-L1-P116",
"AUD-SIM-L1-P117",
"AUD-SIM-L1-P118",
"AUD-SIM-L1-P119",
"AUD-SIM-L1-P120",
"AUD-SIM-L1-P121",
"AUD-SIM-L1-P122",
"AUD-SIM-L1-P123",
"AUD-SIM-L1-P124",
"AUD-SIM-L1-P125",
"AUD-SIM-L1-P126",
"AUD-SIM-L1-P127",
"AUD-SIM-L1-P128",
"AUD-SIM-L1-P129",
"AUD-SIM-L1-P130",
"AUD-SIM-L1-P131",
"AUD-SIM-L1-P132",
"AUD-SIM-L1-P133"
],
"families": {
"party": {
"source": "Lei7/91 art15(1)a/2,PDF11;Lei14/92 PDF23–24 não altera15",
"implemented": "Equipamento necessário ao funcionamento próprio; exclui actividade económica empresarial. Não acrescenta quota diplomática nem aprovação organizacional."
},
"patronage": {
"source": "Lei4/94 art7,PDF2;Decreto29/98 Regulamentoarts1–7,10/11,PDF7–9",
"implemented": "Livros culturais/científicos/escolares e insumos para produção nacional; percurso de liberalidade com comunicações,termo,incompatibilidades,irreversibilidade/confirmação da fonte. Outros bens apenas com disposição expressa,sem isenção por doação genérica. Não calcula incentivos ao rendimento."
},
"diplomatic": {
"source": "Decreto22/2021 arts2–9/11/12,PDF1–2/p425–426;revogação3/83 no13",
"implemented": "Sete categorias;reciprocidade,registo,pedido viaMINEC,limite próprio e histórico;quotas3/2/1,menor limite por reciprocidade,controlo conjunto e janela5anos;agências/organizações segundo acordo identificado,sem transplantar quotas."
},
"ipp": {
"source": "IPP22 Lei17/2022 PDF4–5;Lei8/2025 PDF2–3;Decreto37/2023 arts12(3),27/28/QuadroV;Decreto27/2026 art3PDF4",
"implemented": "30itens e disposição específica identificada;confirmação da correspondência e condições próprias,referências,pedido prévio,uso e decisão de âmbito. Taxa0%,redução e encargos suportados peloEstado não são tratados automaticamente como isenção. Competências pela data da decisão/previsão;transição31/07/2026,30dias após publicação;item30 anterior exige disposição de competência específica."
}
},
"examples": 42,
"verification": {
"frontend": {
"tests": 48,
"passed": 48
},
"API": {
"tests": 1,
"assertions": 208,
"guarded_database": "simulator_fiscal_delta_20261021_test:55441",
"rollback": true,
"all_previous_snapshot_members_equal": true
},
"types": "passed",
"build": "passed",
"UI": "Componente real: campos adaptados por família,quantidade oculta preservada,troca limpa confirmações,gravação/recuperação/relatório; ui-saved-state.json/report-dom.txt/P047-recovered-report.png"
},
"scope_limits": [
"Classifica IVA por remissão apenas com isenção de direitos demonstrada ou pressuposto expresso; não concede benefício aduaneiro.",
"Não automatiza classificação pautal nem todos os procedimentos de cada regime referido. Condições específicas ausentes permanecem indeterminadas.",
"Pedido apresentado não concede;deferimento previsto é apenas cenário condicionado.",
"Sem direitos,ICE,base aduaneira,dedução/campo11,alienação ou soma aos livros anteriores.",
"P058 quatro percursosQA4f28fac5 preservados;três questões residuais permanecem abertas.",
"P084/P085 procedimentoTempo entregue preservado;falta somente correspondência específica de formulário/instrução e mapeamento.",
"P001 limitado05/06 da edição recebida;sem renumeração a partir de outros modelos.",
"Formalidades digitais não automatizadas e cálculo fiscal restante de ramos com âmbito limitado conservados;L1aberto."
],
"source_records": [
{
"file": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"url": "https://www.ifes.org/sites/default/files/migrate/el00091.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"pages": 21,
"origin": "Texto legislativo oficial; IFES reproduz exemplar da Assembleia, BR preservado nos demais."
},
{
"file": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"url": "https://archive.gazettes.africa/archive/mz/1992/mz-government-gazette-series-i-supplement-dated-1992-10-14-no-42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"pages": 24,
"origin": "Texto legislativo oficial; IFES reproduz exemplar da Assembleia, BR preservado nos demais."
},
{
"file": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"url": "https://archive.gazettes.africa/archive/mz/1994/mz-government-gazette-series-i-supplement-no-3-dated-1994-09-13-no-37.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"pages": 4,
"origin": "Texto legislativo oficial; IFES reproduz exemplar da Assembleia, BR preservado nos demais."
},
{
"file": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"url": "https://archive.gazettes.africa/archive/mz/2021/mz-government-gazette-series-i-dated-2021-04-14-no-70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"pages": 4,
"origin": "Texto legislativo oficial; IFES reproduz exemplar da Assembleia, BR preservado nos demais."
},
{
"file": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"url": "https://fracessoriasa.co.mz/wp-content/uploads/2021/10/53-Lei-do-Mecenato-Regulamento-patrocinios-e-doacoes.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"pages": 9,
"origin": "BR22-I 5.º suplemento09/06/1998, exemplar completo9p;Decreto29/98 nasp7–9"
}
],
"active_writes": false,
"proposed_group": {
"P047": "um ramo concluído emQA no âmbito acima",
"P058": "quatro percursos de bagagem emQA parcial;semfecho",
"requirements": "Integração compatível commain,preservação concorrente,backup/restauro autenticado e conferência só do delta;nenhuma entrega executada neste incremento."
},
"qa_status_preserved": "Concluído em QA no âmbito demonstrado de CIVA12(1)b; por disponibilizar em conjunto compatível",
"qa_counts_preserved": {
"delivered": 128,
"QA": 1,
"functional_pending": 3,
"P001": 1,
"total": 133
},
"delivery_followup": {
"served_commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"receipt": "l1-p047-baggage-delivery-20261025.json",
"record": "iva_l1_P047_partial_P058_homologation_20261025",
"counts": {
"delivered": 129,
"QA": 0,
"functional_pending": 3,
"documentary": 1,
"total": 133
},
"P058_closure": false,
"L1": "open"
}
}
@@ -0,0 +1,279 @@
{
"implementation_commit": "5999e35fcbc19605d6037c33018ae0eb3d17854a",
"status": "delivered_with_QA_proofs_preserved",
"coverage": {
"AUD-SIM-L1-P087": [
"binding_lease"
],
"AUD-SIM-L1-P127": [
"business_onerous",
"business_free"
]
},
"branch_count": 2,
"treatment_count": 3,
"source": "CIVA Lei13/2016:3(3)a PDF6/p1426(264);3(5) PDF7/p1426(265);15(1) PDF13/p1426(271),páginas visualmente conferidas.Lei22/2022PDF3 mantém15(1);Lei10/2025PDF12 mantém3(3)a/3(5),não altera15.Rectificação2017 sem alteração destas disposições.Acervo seisPDF inventariado/hashes conferidos.",
"meaning": {
"P087": "Entrega material de bens em execução de contrato de locação com cláusula vinculante para ambas as partes de transferência da propriedade3(3)a. Classificação separada da base15(1):contraprestação obtida/a obter,sem próprioIVA,com composição/âmbito identificados. Não usar15(2)a da consignação,nem transformar mera opção de compra em cláusula vinculante.",
"P127": "Cessão onerosa ou gratuita de estabelecimento,totalidade ou parte de património susceptível de constituir ramo independente3(5). Adquirente é ou passa pela aquisição a sujeito passivo2(1)a e pratica operações com direito à dedução. Imposto não devido nem exigível no âmbito demonstrado;não isenção genérica,nem base/taxa zero ou nova dedução. Não impor condição autónoma de continuidade além dos factos da fonte."
},
"scope": "2026;P087baseMZN exacta,classificação pode manter-se com base indeterminada.P127classificação própria de não exigibilidade,sem preencher base/IVA comzero.Sem exigibilidade fiscal calculada,nova dedução,campo11,regularização ou totaisModeloA.P125categoria/elegibilidademargem eP123consignação mantidos separados.",
"pending_16_delivery_ids_with_obstacle_next_action": {
"P002": [
"Desenvolvimento/consolidação",
"Falta percurso transversal que reutilize a localização já entregue e distinga direito à dedução.",
"Consolidar6/19 com2025,ligar resultados existentes e implementar classificação estrangeiro sem reabrir provas."
],
"P046": [
"Desenvolvimento/cotejo documental",
"Falta correspondência executável12(1)a com isenções internas em2026.",
"Cotejar lista2025 e regras9 já entregues;implementar importação sem activar benefício só pela descrição."
],
"P047": [
"Dependência documental específica/desenvolvimento",
"Faltam diploma especial e âmbito de cada benefício aduaneiro invocado.",
"Inventariar diplomas aplicáveis12(1)b e recolher regime/documento/bens/limites;implementar só correspondências demonstradas."
],
"P058": [
"Dependência documental específica/desenvolvimento",
"Faltam termos e limites da legislação aduaneira para regresso definitivo12(2)a;isenção/redução na proporção da redução de direitos.",
"Localizar disposições aduaneiras de emigrantes/funcionários/estudantes/bolseiros,condições de regresso e proporção;reutilizar documentos."
],
"P059": [
"Dependência documental específica/desenvolvimento",
"Falta despacho do Ministro das Finanças que fixa termos e condições dos mineiros12(2)b;isenção/redução proporcional à redução de direitos.",
"Localizar despacho referido em12(2)b e implementar beneficiário/serviço no estrangeiro/bens/condições/proporção."
],
"P084": [
"Dependência regulamentar específica;parcial disponível",
"Correspondência14(3) ainda não demonstrada;ModeloI.1 não concede benefício.",
"Localizar diploma que acompanhaModeloI.1,demonstrar alcance aquisição/importação14(2)a;preservar estados/âmbito de decisão."
],
"P085": [
"Dependência regulamentar específica;parcial disponível",
"Correspondência14(3) com procedimento emergência/doação ainda não demonstrada.",
"Pesquisar conjuntamente comP084,demonstrar percurso calamidade14(2)b sem estender automaticamente à importação."
],
"P087": [
"QA concluído;entrega conjunta pendente",
"Desenvolvimento e QA concluídos;falta instalação.",
"Entregar candidata conjuntaP087/P127,reutilizar provas,backup/restauro fresco e delta instalado."
],
"P104": [
"Dependência cambial específica/desenvolvimento",
"Falta regra cambial aplicável15(8)/(9),momento/opção e fonte/data da taxa.",
"Cotejar texto e legislação cambial referida;implementar moeda/taxa/data rastreáveis sem taxa actual por defeito."
],
"P121": [
"Desenvolvimento/cotejo regulamentar digital",
"Falta percurso digital2025 e correspondência das obrigações26/32/33.",
"Consolidar6(7)k/6(9),residência/EP/utilização e responsável;implementar comP130 quando compatível."
],
"P127": [
"QA concluído;entrega conjunta pendente",
"Desenvolvimento e QA concluídos;falta instalação.",
"Entregar candidata conjuntaP087/P127,reutilizar provas,backup/restauro fresco e delta instalado."
],
"P129": [
"Dependência regulamentar específica/desenvolvimento",
"Falta correspondência do regime especial das agências4(5),com componentes da operação.",
"Cotejar RIVA/regulação especial,conta própria/terceiros e custos efectivos;implementar antes de apurar margem."
],
"P130": [
"Desenvolvimento/cotejo regulamentar digital",
"Definição3(7) disponível;falta percurso de transmissão/localização e obrigações aplicáveis.",
"Reutilizar6 e consolidar2025 comP121;separar bens de serviços e não activar tributação só pela categoria."
],
"P131": [
"Desenvolvimento/cotejo de eventos",
"Falta motor de eventos7/8 para entrega,serviço,importação,instalação e operações continuadas.",
"Cotejar datas/excepções e documento/pagamento;implementar por evento e ligar resultados já entregues."
],
"P132": [
"Desenvolvimento/cotejo de eventos",
"Falta exigibilidade dos eventos específicos de uso próprio/comissão/embalagens/adiantamentos.",
"Cotejar7/8 e referências de cada operação;reutilizarP123/P126 sem atribuir exigibilidade pela data de conferência."
],
"P133": [
"Desenvolvimento/dependência de regime",
"Falta motor de saída de regimes suspensivos e evento das viagens,no regime específico.",
"Cotejar7/8/14 e procedimento de saída;alinhar viagens comP129,sem bloquear eventos independentes."
]
},
"technical_choices": "propertyTransfers poroportunidade nosnapshot/API/dossier existentes;BigInt6casas,semfloat ouarredondamento;valorjácomposto semsomar/subtraircomponentesduasvezes.Trocaconservacamposocultos/referências,exigereverconfirmações.Reutilizardocumentos/pressupostos,não certificado/aprovador novo.",
"verification": {
"frontend": {
"tests": 6,
"passed": 6,
"failed": 0,
"coverage": "3tratamentos;condições/referências/datas;P087classificação/base separadas,decimalexacto/zero/desconhecido/semduplasubtracção;P127nãoexigibilidadenãozero;trocapreserva;persistência/histórico/relatório/preservação"
},
"privateAPI": {
"tests": 1,
"assertions": 25,
"target": "simulator_fiscal_delta_20261021_test:55441",
"transaction_rollback": true,
"xml": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-property-transfers-20261025\\phpunit.xml"
},
"types": "passed",
"build": "passed;existingplugin timingwarnings",
"UI": "Edge/CUAcomponente real:P087semcontraprestação mantémclassificação/baseindeterminada;restauro1250.123456MZN.P127conjuntoautónomoNão afasta3(5),semisenção/IVAzero;restaurofactos,gravação/recuperação/relatório3tratamentos e5versõesanteriores,VAT/ratenull.Dadossintéticos,nãoaceitaçãomanualTempo.",
"UI_screenshot": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-property-transfers-20261025\\qa-recovered-report.png"
},
"preservation": {
"base": "5999e35fcbc19605d6037c33018ae0eb3d17854a",
"delivered_ids": [
"AUD-SIM-L1-P003",
"AUD-SIM-L1-P004",
"AUD-SIM-L1-P005",
"AUD-SIM-L1-P006",
"AUD-SIM-L1-P007",
"AUD-SIM-L1-P008",
"AUD-SIM-L1-P009",
"AUD-SIM-L1-P010",
"AUD-SIM-L1-P011",
"AUD-SIM-L1-P012",
"AUD-SIM-L1-P013",
"AUD-SIM-L1-P014",
"AUD-SIM-L1-P015",
"AUD-SIM-L1-P016",
"AUD-SIM-L1-P017",
"AUD-SIM-L1-P018",
"AUD-SIM-L1-P019",
"AUD-SIM-L1-P020",
"AUD-SIM-L1-P021",
"AUD-SIM-L1-P022",
"AUD-SIM-L1-P023",
"AUD-SIM-L1-P024",
"AUD-SIM-L1-P025",
"AUD-SIM-L1-P026",
"AUD-SIM-L1-P027",
"AUD-SIM-L1-P028",
"AUD-SIM-L1-P029",
"AUD-SIM-L1-P030",
"AUD-SIM-L1-P031",
"AUD-SIM-L1-P032",
"AUD-SIM-L1-P033",
"AUD-SIM-L1-P034",
"AUD-SIM-L1-P035",
"AUD-SIM-L1-P036",
"AUD-SIM-L1-P037",
"AUD-SIM-L1-P038",
"AUD-SIM-L1-P039",
"AUD-SIM-L1-P040",
"AUD-SIM-L1-P041",
"AUD-SIM-L1-P042",
"AUD-SIM-L1-P043",
"AUD-SIM-L1-P044",
"AUD-SIM-L1-P045",
"AUD-SIM-L1-P048",
"AUD-SIM-L1-P049",
"AUD-SIM-L1-P050",
"AUD-SIM-L1-P051",
"AUD-SIM-L1-P052",
"AUD-SIM-L1-P053",
"AUD-SIM-L1-P054",
"AUD-SIM-L1-P055",
"AUD-SIM-L1-P056",
"AUD-SIM-L1-P057",
"AUD-SIM-L1-P060",
"AUD-SIM-L1-P061",
"AUD-SIM-L1-P062",
"AUD-SIM-L1-P063",
"AUD-SIM-L1-P064",
"AUD-SIM-L1-P065",
"AUD-SIM-L1-P066",
"AUD-SIM-L1-P067",
"AUD-SIM-L1-P068",
"AUD-SIM-L1-P069",
"AUD-SIM-L1-P070",
"AUD-SIM-L1-P071",
"AUD-SIM-L1-P072",
"AUD-SIM-L1-P073",
"AUD-SIM-L1-P074",
"AUD-SIM-L1-P075",
"AUD-SIM-L1-P076",
"AUD-SIM-L1-P077",
"AUD-SIM-L1-P078",
"AUD-SIM-L1-P079",
"AUD-SIM-L1-P080",
"AUD-SIM-L1-P081",
"AUD-SIM-L1-P082",
"AUD-SIM-L1-P083",
"AUD-SIM-L1-P086",
"AUD-SIM-L1-P088",
"AUD-SIM-L1-P089",
"AUD-SIM-L1-P090",
"AUD-SIM-L1-P091",
"AUD-SIM-L1-P092",
"AUD-SIM-L1-P093",
"AUD-SIM-L1-P094",
"AUD-SIM-L1-P095",
"AUD-SIM-L1-P096",
"AUD-SIM-L1-P097",
"AUD-SIM-L1-P098",
"AUD-SIM-L1-P099",
"AUD-SIM-L1-P100",
"AUD-SIM-L1-P101",
"AUD-SIM-L1-P102",
"AUD-SIM-L1-P103",
"AUD-SIM-L1-P105",
"AUD-SIM-L1-P106",
"AUD-SIM-L1-P107",
"AUD-SIM-L1-P108",
"AUD-SIM-L1-P109",
"AUD-SIM-L1-P110",
"AUD-SIM-L1-P111",
"AUD-SIM-L1-P112",
"AUD-SIM-L1-P113",
"AUD-SIM-L1-P114",
"AUD-SIM-L1-P115",
"AUD-SIM-L1-P116",
"AUD-SIM-L1-P117",
"AUD-SIM-L1-P118",
"AUD-SIM-L1-P119",
"AUD-SIM-L1-P120",
"AUD-SIM-L1-P122",
"AUD-SIM-L1-P123",
"AUD-SIM-L1-P124",
"AUD-SIM-L1-P125",
"AUD-SIM-L1-P126",
"AUD-SIM-L1-P128"
],
"confirmed_losses": [],
"accepted_delivery": "ce9d649f/4cacef23;174tables/369files;29published/28relations/408geometries;code/schema/data/config/permissions compared",
"frozen": "tests\\frontend\\fixtures\\iva-property-transfers-preserved.json",
"sha256": "dbf61446fc3d11dceff2bb5facc1bba8e91b176abc3ae9e4c30bbe7acebc9fb5",
"scope": "P087/P127QA;allpriorbooks/history immutable;noactivewrites"
},
"runtime_delta": {
"resources/js/lib/iva-property-transfers.ts": "0d92edaf29b37cbe58f4d60ad3c61756f4cfdf71b8165e47438e9e3d7c59041e",
"resources/js/components/simulation-property-transfers.tsx": "ca2e125cf814ea3f797db9befbccbe6df3d1e9d91118b10af0cd2302e0e307e8",
"resources/js/components/simulation-monthly-iva.tsx": "2b5a10dfd5a180d008403e5fe27333553d95c373c43c3ff629b4a1b4ff44bdfe",
"resources/js/lib/project-dossier.ts": "d59ab0d244d342d3c4167766529499c3cd0cb866e6680c7e4db0508b9c9e62cb"
},
"counts_current": {
"delivered": 116,
"QA": 2,
"functional_pending": 14,
"P001": 1,
"total": 133
},
"homologation_unchanged": "ce9d649f",
"remaining": "Uma entrega conjuntaP087/P127;14outrosIDs mantidos comimpedimento/próximaacção namesmamatriz/manual,nãonovobacklog.",
"limits": "L1aberto;P00105/06;P121digital/P084/P085pendentes;bebidasL2/L3;Estatísticas/IAadiadas",
"sources_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-property-transfers-20261025\\source-archive-inventory.json",
"qa_status_preserved": "QA_complete_not_delivered",
"delivery_followup": {
"served_commit": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"receipt": "l1-property-transfers-delivery-20261025.json",
"record": "iva_l1_property_transfers_P087_P127_homologation_20261025",
"counts": {
"delivered": 118,
"QA": 0,
"functional_pending": 14,
"documentary": 1,
"total": 133
}
}
}
@@ -0,0 +1,233 @@
{
"base": "9019f766",
"homologation_unchanged": "e38aa749",
"counts": {
"delivered": 129,
"QA": 0,
"functional_pending": 3,
"documentary": 1,
"total": 133
},
"scope": "QA parcial de P058; sem alterações no activo; sem encerramento de ramo",
"preserved_delivered_ids": [
"AUD-SIM-L1-P002",
"AUD-SIM-L1-P003",
"AUD-SIM-L1-P004",
"AUD-SIM-L1-P005",
"AUD-SIM-L1-P006",
"AUD-SIM-L1-P007",
"AUD-SIM-L1-P008",
"AUD-SIM-L1-P009",
"AUD-SIM-L1-P010",
"AUD-SIM-L1-P011",
"AUD-SIM-L1-P012",
"AUD-SIM-L1-P013",
"AUD-SIM-L1-P014",
"AUD-SIM-L1-P015",
"AUD-SIM-L1-P016",
"AUD-SIM-L1-P017",
"AUD-SIM-L1-P018",
"AUD-SIM-L1-P019",
"AUD-SIM-L1-P020",
"AUD-SIM-L1-P021",
"AUD-SIM-L1-P022",
"AUD-SIM-L1-P023",
"AUD-SIM-L1-P024",
"AUD-SIM-L1-P025",
"AUD-SIM-L1-P026",
"AUD-SIM-L1-P027",
"AUD-SIM-L1-P028",
"AUD-SIM-L1-P029",
"AUD-SIM-L1-P030",
"AUD-SIM-L1-P031",
"AUD-SIM-L1-P032",
"AUD-SIM-L1-P033",
"AUD-SIM-L1-P034",
"AUD-SIM-L1-P035",
"AUD-SIM-L1-P036",
"AUD-SIM-L1-P037",
"AUD-SIM-L1-P038",
"AUD-SIM-L1-P039",
"AUD-SIM-L1-P040",
"AUD-SIM-L1-P041",
"AUD-SIM-L1-P042",
"AUD-SIM-L1-P043",
"AUD-SIM-L1-P044",
"AUD-SIM-L1-P045",
"AUD-SIM-L1-P046",
"AUD-SIM-L1-P048",
"AUD-SIM-L1-P049",
"AUD-SIM-L1-P050",
"AUD-SIM-L1-P051",
"AUD-SIM-L1-P052",
"AUD-SIM-L1-P053",
"AUD-SIM-L1-P054",
"AUD-SIM-L1-P055",
"AUD-SIM-L1-P056",
"AUD-SIM-L1-P057",
"AUD-SIM-L1-P059",
"AUD-SIM-L1-P060",
"AUD-SIM-L1-P061",
"AUD-SIM-L1-P062",
"AUD-SIM-L1-P063",
"AUD-SIM-L1-P064",
"AUD-SIM-L1-P065",
"AUD-SIM-L1-P066",
"AUD-SIM-L1-P067",
"AUD-SIM-L1-P068",
"AUD-SIM-L1-P069",
"AUD-SIM-L1-P070",
"AUD-SIM-L1-P071",
"AUD-SIM-L1-P072",
"AUD-SIM-L1-P073",
"AUD-SIM-L1-P074",
"AUD-SIM-L1-P075",
"AUD-SIM-L1-P076",
"AUD-SIM-L1-P077",
"AUD-SIM-L1-P078",
"AUD-SIM-L1-P079",
"AUD-SIM-L1-P080",
"AUD-SIM-L1-P081",
"AUD-SIM-L1-P082",
"AUD-SIM-L1-P083",
"AUD-SIM-L1-P086",
"AUD-SIM-L1-P087",
"AUD-SIM-L1-P088",
"AUD-SIM-L1-P089",
"AUD-SIM-L1-P090",
"AUD-SIM-L1-P091",
"AUD-SIM-L1-P092",
"AUD-SIM-L1-P093",
"AUD-SIM-L1-P094",
"AUD-SIM-L1-P095",
"AUD-SIM-L1-P096",
"AUD-SIM-L1-P097",
"AUD-SIM-L1-P098",
"AUD-SIM-L1-P099",
"AUD-SIM-L1-P100",
"AUD-SIM-L1-P101",
"AUD-SIM-L1-P102",
"AUD-SIM-L1-P103",
"AUD-SIM-L1-P104",
"AUD-SIM-L1-P105",
"AUD-SIM-L1-P106",
"AUD-SIM-L1-P107",
"AUD-SIM-L1-P108",
"AUD-SIM-L1-P109",
"AUD-SIM-L1-P110",
"AUD-SIM-L1-P111",
"AUD-SIM-L1-P112",
"AUD-SIM-L1-P113",
"AUD-SIM-L1-P114",
"AUD-SIM-L1-P115",
"AUD-SIM-L1-P116",
"AUD-SIM-L1-P117",
"AUD-SIM-L1-P118",
"AUD-SIM-L1-P119",
"AUD-SIM-L1-P120",
"AUD-SIM-L1-P121",
"AUD-SIM-L1-P122",
"AUD-SIM-L1-P123",
"AUD-SIM-L1-P124",
"AUD-SIM-L1-P125",
"AUD-SIM-L1-P126",
"AUD-SIM-L1-P127",
"AUD-SIM-L1-P128",
"AUD-SIM-L1-P129",
"AUD-SIM-L1-P130",
"AUD-SIM-L1-P131",
"AUD-SIM-L1-P132",
"AUD-SIM-L1-P133"
],
"matrix_changed_rows": [
"AUD-SIM-L1-P001",
"AUD-SIM-L1-P047",
"AUD-SIM-L1-P058",
"AUD-SIM-L1-P084",
"AUD-SIM-L1-P085"
],
"residuals": {
"P047": {
"impediment": "Ainda não há implementação específica12(1)b. As quatro remissões estão identificadas;IPP22 integral e alterações2025/2026 já obtidas. Faltam condições executáveis e sua correspondência por família (partidos7/91+14/92,mecenato4/94,veículos oficiais diplomáticos/consulares,IPP),distinguindo isenção integral de direitos,redução e pedido.",
"close": "Percursos por família sustentados nos textos aplicáveis,com bens/beneficiário/operação/período,condições e âmbito do benefício aduaneiro demonstrados;isençãoIVA só na hipótese12(1)b correspondente;desconhecido não zero;gravação,recuperação,relatório eQA por ramo,seguida de entrega compatível.",
"next": "Começar pelos itensIPP22/QuadroV já cotejados;obter/cotejar os trechos específicos das outras três famílias sem condicionar o avanço independente."
},
"P058": {
"impediment": "Veículos já entregues; quatro percursos de bagagem dos artigos 57(2)c/d, 57(3) e 61 agora demonstrados em QA, ainda não instalados. Restam a remissão incoerente de 57(2)b para o próprio n.º 2, o caso de propriedade exactamente 180 dias e a delimitação do artigo 63(2) (arma de caça e até 100 cartuchos) no âmbito dos beneficiários de CIVA 12(2)a. Não falta o Decreto 37/2023 integral.",
"close": "Delimitar e implementar o âmbito residual por categoria e bens; resolver por referência expressa os parâmetros ambíguos ou conservar uma limitação de âmbito expressamente aceite. Demonstrar condições, prazos, cálculo/não aplicação, gravação, recuperação e relatório, sem aplicar exigências de veículos à bagagem; entregar o conjunto compatível. O novo QA parcial não fecha P058.",
"next": "Preparar os quatro percursos de bagagem já testados para entrega compatível; cotejar separadamente 57(2)b, propriedade de 180 dias e a correspondência de 63(2), sem presumir isenção."
},
"P084": {
"impediment": "Procedimento operacionalTempo e acompanhamento pedido→apresentado→decisão com despacho→formulário estão definidos,implementados eentregues. O gerador actual produz pedido/preparação textual ou associa exemplar preenchido;falta correspondência concreta do formulário por aquisição interna/importação e,quando demonstrada,preenchimento/exportação dos seus campos oficiais. ModeloI.1/CBF não demonstra sozinho essa correspondência.",
"close": "Demonstrar formulário/versão aplicável (ou instrução que dispense modelo específico) em cada cenário,com origem identificada;reutilização de entidade,justificação,bens,operação e despacho no exemplar/saída adequados;conservar âmbito e históricos,submissão externa explícita,hipótese antes de deferimento e aplicação só após decisão abrangente.Sem exigir despacho real de produção para substituirQA nem nova aprovação genérica.",
"next": "Cotejo delimitado do formulário/instrução e implementação do mapeamento que daí resultar;manter todo o procedimento operacional já aceite,sem o reabrir como desconhecido."
},
"P085": {
"impediment": "Mesma sequência operacionalTempo já entregue,com calamidade/finalidade humanitária e aquisição próprias. Falta identificar o formulário/instrução aplicável à aquisição para atenuar calamidades e demonstrar a preparação do exemplar concreto,em vez de apenas texto/anexo genérico.Formulário aduaneiro de emergência não prova aquisição interna14(2)b.",
"close": "Correspondência e preparação/exportação do formulário aplicável (ou dispensa de modelo demonstrada),reutilizando emergência,finalidade,bens,destinatário e despacho;pedido não concede e decisão não se estende a outros bens/operações/períodos.Sem importar condiçõesP084 ou estender automaticamente à importação.",
"next": "Pesquisa conjunta comP084 sobre o formulário,com conclusão separada para aquisição/calâmidade;implementar os campos demonstrados,sem inventar aprovadores ou certificados."
},
"P001": {
"impediment": "Falta instrução da edição recebida que distinga05/06. Nessa edição05 já identifica isenção com direito;06 tem remissão18(1)b,que noCIVA cotejado diz respeito aoIVA de importação. Os modelosAT/2019 têm outra numeração e não resolvem a edição recebida;originais e candidato544068e8 não estão em falta.",
"close": "Identificar na instrução correspondente o conteúdo próprio de05 e06 e a remissão aplicável,registar edição/página/trecho e actualizar apenas a correspondência afectada,com prova de não duplicação e preservação dos restantes campos/histórico.",
"next": "Localizar instruções/verso/metadados da edição recebida;conservar05/06 indeterminados onde houver conflito,não renumerar a partir de outra edição."
}
},
"new_baggage_paths": [
"civil_baggage",
"military_baggage",
"student_baggage",
"early_state_baggage"
],
"examples": 11,
"verification": {
"frontend": {
"passed": 21,
"new_baggage_tests": 13,
"previous_vehicle_tests": 8
},
"API": {
"tests": 1,
"assertions": 55,
"database": "simulator_fiscal_delta_20261021_test:55441",
"guarded": true,
"transactions_rolled_back": true
},
"typecheck": "passed",
"production_build": "passed",
"UI": "gravação, recuperação e relatório conferidos; ui-saved-state.json, report-dom.txt, baggage-recovered-report.png"
},
"source_scope": "CIVA12(2)a abrange beneficiários; Decreto37/2023 artigos57/61/63. Artigo63(2) não implementado nem presumido abrangido. Não importar quotas/prazos de veículos para bagagem.",
"limitations_preserved": [
"P047/P058/P084/P085 pendentes",
"P001 limitado a05/06",
"formalidades digitais não automatizadas",
"cálculo fiscal não implementado nos ramos entregues com âmbito limitado",
"deduções/regularizações/restituições em lotes próprios",
"Estatísticas e IA adiadas",
"L1 aberto"
],
"qa_status_preserved": "QA parcial de P058; sem alterações no activo; sem encerramento de ramo",
"qa_counts_preserved": {
"delivered": 128,
"complete_QA": 0,
"functional_pending": 4,
"documentary_P001": 1,
"total": 133
},
"status": "P058 partial baggage delivered without branch closure",
"delivery_followup": {
"served_commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"receipt": "l1-p047-baggage-delivery-20261025.json",
"record": "iva_l1_P047_partial_P058_homologation_20261025",
"counts": {
"delivered": 129,
"QA": 0,
"functional_pending": 3,
"documentary": 1,
"total": 133
},
"P058_closure": false,
"L1": "open"
}
}
@@ -1,6 +1,6 @@
{
"implementation_commit": "b0818c01633ed7eab7240fcec5fa4a0a87c15104",
"status": "QA_complete_not_delivered",
"status": "delivered_with_QA_proofs_preserved",
"coverage": {
"AUD-SIM-L1-P092": [
"reseller_margin"
@@ -184,5 +184,18 @@
"homologation_unchanged": "6c12aabb",
"remaining": "Uma entrega conjunta P092/P093/P125 pelo processoGit;backup/restauro isolado fresco e conferência apenas do delta instalado,reutilizando estas provas.",
"limits": "L1aberto;P00105/06;P121digital/P084/P085pendentes;bebidasL2/L3;Estatísticas/IAadiadas",
"sources_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-secondhand-20261025\\source-archive-inventory.json"
"sources_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-secondhand-20261025\\source-archive-inventory.json",
"qa_status_preserved": "QA_complete_not_delivered",
"delivery_followup": {
"served_commit": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"receipt": "l1-secondhand-delivery-20261025.json",
"record": "iva_l1_secondhand_P092_P093_P125_homologation_20261025",
"counts": {
"delivered": 114,
"QA": 0,
"functional_pending": 18,
"documentary": 1,
"total": 133
}
}
}
@@ -0,0 +1,282 @@
{
"date": "2026-10-25",
"status": "P104 delivered operational scope;partial P058/P084/P085 delivered without closure;QA proofs preserved",
"implementation_revision": "9536eb710b4b02650a80b9943e20b3f086dd0893",
"branch": "codex/iva-l1-returnees-qa-20261025",
"homologation_unchanged": "a665ee9c",
"accepted_receipt": "8b3ec2b0",
"counts": {
"delivered": 127,
"QA": 1,
"functional_pending": 4,
"P001": 1,
"total": 133
},
"QA_ids": [
"P104"
],
"partial_ids": [
"P058",
"P084",
"P085"
],
"origin": "Decisões expressas da Tempo25/10/2026 separadas das fontes legais;sem nova aprovação jurídica genérica",
"preserved_ids": [
"AUD-SIM-L1-P002",
"AUD-SIM-L1-P003",
"AUD-SIM-L1-P004",
"AUD-SIM-L1-P005",
"AUD-SIM-L1-P006",
"AUD-SIM-L1-P007",
"AUD-SIM-L1-P008",
"AUD-SIM-L1-P009",
"AUD-SIM-L1-P010",
"AUD-SIM-L1-P011",
"AUD-SIM-L1-P012",
"AUD-SIM-L1-P013",
"AUD-SIM-L1-P014",
"AUD-SIM-L1-P015",
"AUD-SIM-L1-P016",
"AUD-SIM-L1-P017",
"AUD-SIM-L1-P018",
"AUD-SIM-L1-P019",
"AUD-SIM-L1-P020",
"AUD-SIM-L1-P021",
"AUD-SIM-L1-P022",
"AUD-SIM-L1-P023",
"AUD-SIM-L1-P024",
"AUD-SIM-L1-P025",
"AUD-SIM-L1-P026",
"AUD-SIM-L1-P027",
"AUD-SIM-L1-P028",
"AUD-SIM-L1-P029",
"AUD-SIM-L1-P030",
"AUD-SIM-L1-P031",
"AUD-SIM-L1-P032",
"AUD-SIM-L1-P033",
"AUD-SIM-L1-P034",
"AUD-SIM-L1-P035",
"AUD-SIM-L1-P036",
"AUD-SIM-L1-P037",
"AUD-SIM-L1-P038",
"AUD-SIM-L1-P039",
"AUD-SIM-L1-P040",
"AUD-SIM-L1-P041",
"AUD-SIM-L1-P042",
"AUD-SIM-L1-P043",
"AUD-SIM-L1-P044",
"AUD-SIM-L1-P045",
"AUD-SIM-L1-P046",
"AUD-SIM-L1-P048",
"AUD-SIM-L1-P049",
"AUD-SIM-L1-P050",
"AUD-SIM-L1-P051",
"AUD-SIM-L1-P052",
"AUD-SIM-L1-P053",
"AUD-SIM-L1-P054",
"AUD-SIM-L1-P055",
"AUD-SIM-L1-P056",
"AUD-SIM-L1-P057",
"AUD-SIM-L1-P059",
"AUD-SIM-L1-P060",
"AUD-SIM-L1-P061",
"AUD-SIM-L1-P062",
"AUD-SIM-L1-P063",
"AUD-SIM-L1-P064",
"AUD-SIM-L1-P065",
"AUD-SIM-L1-P066",
"AUD-SIM-L1-P067",
"AUD-SIM-L1-P068",
"AUD-SIM-L1-P069",
"AUD-SIM-L1-P070",
"AUD-SIM-L1-P071",
"AUD-SIM-L1-P072",
"AUD-SIM-L1-P073",
"AUD-SIM-L1-P074",
"AUD-SIM-L1-P075",
"AUD-SIM-L1-P076",
"AUD-SIM-L1-P077",
"AUD-SIM-L1-P078",
"AUD-SIM-L1-P079",
"AUD-SIM-L1-P080",
"AUD-SIM-L1-P081",
"AUD-SIM-L1-P082",
"AUD-SIM-L1-P083",
"AUD-SIM-L1-P086",
"AUD-SIM-L1-P087",
"AUD-SIM-L1-P088",
"AUD-SIM-L1-P089",
"AUD-SIM-L1-P090",
"AUD-SIM-L1-P091",
"AUD-SIM-L1-P092",
"AUD-SIM-L1-P093",
"AUD-SIM-L1-P094",
"AUD-SIM-L1-P095",
"AUD-SIM-L1-P096",
"AUD-SIM-L1-P097",
"AUD-SIM-L1-P098",
"AUD-SIM-L1-P099",
"AUD-SIM-L1-P100",
"AUD-SIM-L1-P101",
"AUD-SIM-L1-P102",
"AUD-SIM-L1-P103",
"AUD-SIM-L1-P105",
"AUD-SIM-L1-P106",
"AUD-SIM-L1-P107",
"AUD-SIM-L1-P108",
"AUD-SIM-L1-P109",
"AUD-SIM-L1-P110",
"AUD-SIM-L1-P111",
"AUD-SIM-L1-P112",
"AUD-SIM-L1-P113",
"AUD-SIM-L1-P114",
"AUD-SIM-L1-P115",
"AUD-SIM-L1-P116",
"AUD-SIM-L1-P117",
"AUD-SIM-L1-P118",
"AUD-SIM-L1-P119",
"AUD-SIM-L1-P120",
"AUD-SIM-L1-P121",
"AUD-SIM-L1-P122",
"AUD-SIM-L1-P123",
"AUD-SIM-L1-P124",
"AUD-SIM-L1-P125",
"AUD-SIM-L1-P126",
"AUD-SIM-L1-P127",
"AUD-SIM-L1-P128",
"AUD-SIM-L1-P129",
"AUD-SIM-L1-P130",
"AUD-SIM-L1-P131",
"AUD-SIM-L1-P132",
"AUD-SIM-L1-P133"
],
"tests": {
"frontend": {
"passed": 75,
"includes": "P104,P058,ofertas,ZIP,legadoP131/P132/P129/P133"
},
"API": {
"passed": 2,
"assertions": 37,
"database": "simulator_fiscal_delta_20261021_test",
"port": 55441,
"rollback": true,
"scope": "upload privado,hash,deduplicação,quarentena/acesso,actor diferente,recuperação exactaP104 e127livros",
"latest_result": {
"tool": "phpunit",
"result": "passed",
"tests": 2,
"passed": 2,
"assertions": 37,
"duration_ms": 10448
}
},
"types": "passed",
"build": "passed",
"UI": {
"save_recover_report": "passed;DOM contains request,decision,form,scope,external submission",
"FX": "client opposite perspective selects Venda64.54 after impact confirmation;200USD→12908MZN;two earlier versions preserved",
"transport": "UI uses real components and synthetic local transport;real API tested separately in rolled-back QA;no authority submission"
}
},
"limits": [
"P104 é procedimento operacional da Tempo,não atribuição àLei2/2006 de uma regra cambial não demonstrada;excepção fiscal identificada por disposição/âmbito/taxa/data",
"Não activa cálculo de IVA,dedução ou reavaliação de livros anteriores;conversão reutiliza aritmética existente a seis casas decimais,sem nova regra de arredondamento fiscal",
"P084/P085 não são fechados por este avanço;ZIP contém preparação e anexos,não recibo de submissão nem formulário oficial inventado",
"Anexos privados reutilizamdocuments/scan existente;sem migração;pendente de scan impede descarga,sem criar certificado fiscal",
"P058 é parcial;bagagem e remissões por concluir;sem extensão das condiçõesP059",
"Formais digitais e cálculo fiscal de viagens/eventos mantêm limitações aceites;bebidasL2/L3,Estatísticas/IAadiadas;L1aberto"
],
"remaining": {
"P047": {
"type": "desenvolvimento e cotejo delimitado",
"exists": "CIVA12(1)b quatro famílias;IPP22 integral localizado no Parlamento,PDF4–5/p2238–2239;Lei8/2025item30 eDecreto27/2026 obtidos. MCNet5/BR251 é exemplar parcial dasIPP,não fonte doart22.",
"next": "Traduzir os âmbitos e condições das quatro famílias,começando pelos itens sustentados doQuadroV;distinguir isenção de direitos,redução e mero pedido;sem generalizar condições."
},
"P058": {
"type": "implementação parcial e cotejo",
"exists": "Três percursos de veículos63 emQA:isenção,80%,50%;60dias+30 excepcional;cincoanos;documentos de titularidade/residência euso28;fonte/hash/datas/valores/histórico. Não usa condiçõesP059.",
"next": "Concluir bagagem/outros bens e tratar a remissão incoerente57(2)b sem correcção presumida;marco do tempo de propriedade deve ser documentado,sem presumir chegada ou despacho;180dias exactos indeterminados."
},
"P084": {
"type": "continuidade operacional demonstrada;correspondência do formulário parcial",
"exists": "ProcedimentoTempo25/10 pedidoMF/AT→apresentado→decisão número/data/emitente/âmbito comanexo→conteúdo/formulário comdespacho;gravação/recuperação/relatório eZIP comhash;benefício só após decisão e linha abrangida.",
"next": "Concluir correspondência concreta do formulário aplicável;ModeloI.1 não é presumido por nome;preservar interesse público/fins sociais e aquisição/importação distintas."
},
"P085": {
"type": "continuidade operacional demonstrada;correspondência do formulário parcial",
"exists": "Mesma sequência operacional definida pelaTempo,com finalidade de atenuar calamidades,finalidade humanitária e aquisição. Pedido apresentado não concede;despacho aplica apenas ao seu âmbito.",
"next": "Concluir formulário/procedimento específico comfonte correspondente;sem estender à importação ou impor condições própriasP084."
},
"P001": {
"type": "dependência documental específica",
"exists": "Edição recebida e candidatos anteriores preservados;formulários2019/eDeclaração têm outra numeração.",
"next": "Instrução correspondente à edição recebida para distinguir apenas05/06;não reabrir outros campos."
}
},
"artifacts": {
"preservation": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-returnees-20261025\\preservation-before-tests.json",
"sources": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-returnees-20261025\\source-archive-inventory.json",
"frontend": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-returnees-20261025\\frontend.txt",
"API": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-returnees-20261025\\api.txt",
"UI_report": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-returnees-20261025\\offer-recovered-report.png",
"UI_FX": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-returnees-20261025\\P104-selection-history.png",
"package_P084": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-returnees-20261025\\P084-pedido-decisao-formulario.zip",
"package_P085": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-returnees-20261025\\P085-pedido-decisao-formulario.zip"
},
"active_actions": {
"push": false,
"migration": false,
"active_DB_write": false,
"new_publication": false
},
"runtime_hashes": {
"app/Http/Controllers/Api/V1/SimulationOfferDocumentController.php": "b7359dcd66fa01e76d55ad729615f7cd4f0eb45ed88ec7b32d7997b8cfcb89c9",
"app/Http/Middleware/EnsureSimulationRecoveryCookie.php": "d10c2f54772233fcffe4f8f24c62a2282537bff1085d43ca7c1e8774070f5316",
"resources/js/components/simulation-currency-events.tsx": "4c81d2cd7e6835ee8102a8323991b494d8b52a21198a816c9f93f973c0da55b6",
"resources/js/components/simulation-fx-selection.tsx": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf",
"resources/js/components/simulation-monthly-iva.tsx": "b695e87089b08f987847e28413cd9bacca12b25f1171db4915f4a5dd082f5180",
"resources/js/components/simulation-offer-preparations.tsx": "9e70725e707ff4236f8edbaa965cb72d42407e010053a23f0e86bae7bbc2eaf7",
"resources/js/components/simulation-offer-workflow.tsx": "4cf2354d01b1f6c60598f1a495ee02946c5e565434078c61928ec7d13fe43cc6",
"resources/js/components/simulation-returnees.tsx": "a8b457344ec93d0db6d7a169b2f0b77dacb916b4943324a19b2580a893191cd4",
"resources/js/components/simulation-travel-events.tsx": "d5690d7abbb2b70653ec6cb42e75260347e7190c5d3a474983e6fd318d0606c4",
"resources/js/lib/iva-currency-events.ts": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08",
"resources/js/lib/iva-fx-selection.ts": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998",
"resources/js/lib/iva-offer-package.ts": "240b274933e669a8c6def3b2324507c421bcd90ccbca82b58f6aab72cdeba5f5",
"resources/js/lib/iva-offer-preparations.ts": "b57abb97295493d0a9c3bb48941a7bb250f4fbec367a8b575afdbb14c32d1751",
"resources/js/lib/iva-offer-workflow.ts": "6ee9df722441639ab674b2457e5e9a075dc6ef326eab718d20295572297d5f86",
"resources/js/lib/iva-returnees.ts": "f91988669672e92527dba7e374fadebe71973f58a8459181d01e1684f10aab25",
"resources/js/lib/project-dossier.ts": "fc54a64b0e7bc218f30031355497c1ad98c84e5f2faf51945d5aa70e8f115864",
"routes/api.php": "f0b1b2b6943d23d27d54f6ffc58fd5caca46760ecec97a6da85faf477e5fef4e"
},
"artifact_hashes": {
"preservation": "0eb164a48edc3fae0af4b7a226254181e3abc741a8b3b3b79e50d3166d5e0eba",
"sources": "67dacdd502babd2e652d1195d1ce496323ed929a8527400141d8cb8e8ca864c2",
"frontend": "226b324ee59af3fbc1f2dd1ae39f4350fd3402870d26031e02d68b649f9577bd",
"API": "c99483738029ed9de91d493319b8cd3b08a546e2156a05404dc7a35995255c55",
"UI_report": "c3876f226656916fd3cab065346fa70f2f1b412eca13b4cfa4405eccfd24581c",
"UI_FX": "1ff954f1dde55440b9bfb5251856e78ee8504086f077a12422a2dc938496f416",
"package_P084": "65ad2aadbe5a59ddde566a0b5edb2125bdce221503a982bcc7c717235651abff",
"package_P085": "e447fe112b34466fcb7e3fe9c559b16edf6680a17e46c56f47425f4300d40c54"
},
"source_inventory_count": 19,
"qa_status_preserved": "P104 concluído em QA no procedimento operacional da Tempo;P058/P084/P085 parciais,sem fecho",
"delivery_followup": {
"served_commit": "e38aa74920412e545213b35b7585c847a0b8a969",
"receipt": "l1-tempo-offers-fx-delivery-20261025.json",
"record": "iva_l1_tempo_offers_fx_P104_partial_P058_P084_P085_homologation_20261025",
"counts": {
"delivered": 128,
"QA": 0,
"functional_pending": 4,
"documentary": 1,
"total": 133
},
"partial_ids": [
"P058",
"P084",
"P085"
],
"L1": "open"
}
}
@@ -0,0 +1,108 @@
{
"implementation_commit": "c309215d0f2c37ed8c5dfb6b04eb89a2d24a634e",
"implementation_initial": "7986d024",
"status": "delivered_margin_events_only_QA_proofs_preserved",
"coverage": {
"AUD-SIM-L1-P129": [
"third_party_package",
"mixed_means_special_part",
"own_means_general",
"other_name_general",
"retailer_simple_general",
"retailer_new_package",
"foreign_establishment_outside"
],
"AUD-SIM-L1-P133": [
"travel_integral_first",
"travel_start_first",
"same_day_order_not_inferred",
"partial_8c",
"partial_then_full_no_double_count",
"invoice_before_special_event",
"travel_not_started",
"suspensive_exit_14_a_b_c_d",
"regime_still_held"
]
},
"branch_count_complete": 2,
"meaning": {
"P129": "Natureza e âmbito do regime38/39; meios próprios/terceiros e retalhista; margem global por operador/período do registo simulado, custos directos e exclusões41(3), excesso anterior/seguinte e base positiva com divisor1.16 arredondada à unidade. Sem IVA devido, dedução43d/campo11, regularização44 ou factura/modelo oficial emitidos.",
"P133": "Cessação efectiva de regime7(8), distinta de mudança de armazém/transferência; viagens7(9)/RIVA40 pelo primeiro entre integral e início/primeiro serviço, sem subtrair dia nem inferir ordem intradiária. Exigibilidade8 por factura/recebimento separada, incluindo sinal e saldo integral sem dupla soma. Sem montante de imposto, desembaraço, direito ou ICE apurados."
},
"examples": {
"travel_rows": 10,
"global_periods": 5,
"special_event_rows": 12
},
"source": "RIVA Decreto7/2008,38–46,acervoBR16-I16/04/2008PDF6–8/p104–106 (6/7 conferidas visualmente,46(2) texto extraídoPDF8). CIVA Lei13/2016,4(5)/5(2),PDF7/p1426(265);7(8)/(9)/8,PDF9/p1426(267);14(1),PDF13/p1426(271),páginas visualmente conferidas. CIVA17(1),Lei22/2022PDF3,16% usado no divisor da base;Lei10/2025não altera4/7/8/17. Não confundir regime fiscal com licenciamento turístico.",
"source_inventory": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-travel-events-20261025\\source-archive-inventory.json",
"documentary_cotejo": {
"reporting_excess": "41(5) e43a referem excesso e custos de período anterior/seguinte;43bii usa expressão exercício seguinte. Implementado transporte entre períodos por41(5)/43a, sem criar crédito ou dedução anual, com origem e correcção referenciadas e confirmação de divergência.",
"remaining_research": "Pesquisa delimitada de14(3)/calamidades no domínio AT/Governo não localizou ligação regulamentar específica adicional. Resultados de outras jurisdições não foram usados. Não declara inexistência de procedimento; preserva a cadeia documental já aceite de ModeloI.1 e pendênciasP084/P085/P104/P001.",
"official_notice": "https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/",
"notice_scope": "Anúncio já registado de alteração regulamentar não substitui texto/modelos. Limitações digitais mantidas, sem bloquear viagens/eventos."
},
"verification": {
"frontend": {
"tests": 29,
"passed": 29,
"failed": 0,
"coverage": "Margem global entre pacotes; negativos e reporte; custos excluídos; meios mistos; regimes gerais; datas; parcial/integral/factura; cessação/permanência; desconhecidos; divergência de reporte; isolamento; história e conservação integral dos livros anteriores."
},
"privateAPI": {
"tests": 1,
"assertions": 68,
"database": "simulator_fiscal_delta_20261021_test:55441",
"transaction": "rollback"
},
"types": "passed",
"build": "passed",
"browser": "Edge: registo global completo→parcial deixa base indeterminada, origens/histórico conservados; reposição e nova versão invalidam evento antigo. Pagamento integral→por esclarecer não inventa evento; reposto, gravado, recuperado e relatório aberto. Viagens versão4/histórico3; eventos versão5/histórico4. Relatório omite factos sem aplicação, preservando-os no rascunho/histórico.",
"screenshot": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-travel-events-20261025\\qa-recovered-report.png",
"preservation": "123 fechos inventariados antes dos testes, nenhum perdido; comparação integral do snapshot congelado retirando apenas os dois novos livros. Nenhuma escrita no activo."
},
"technical_choices": "Livros travelOperations/travelSpecialEvents por oportunidade no snapshot privado existente. BigInt6casas; divisor16% apenas para base. Eventos reutilizam motor entregue nos percursos com evento conhecido/adiantamento8c; factura anterior a7(9)mantém facto geradornull. Datas UTC/calendário explicitamente parametrizado. Eventos independem dos montantes da margem, exigem natureza/âmbito fiscal identificados. Referências em falta podem ser reutilizadas sem sobrescrever edições existentes.",
"runtime_delta": {
"resources/js/lib/iva-travel.ts": "253efc133fd968cbec0e0f04530d8757eb5dbf686cc2baa34a92a0efe71ee2fd",
"resources/js/lib/iva-travel-events.ts": "862c2c7c584a10e51626b215b5e23cceda9ed29859180c009be41113e30d30e9",
"resources/js/components/simulation-travel.tsx": "f966a67ed58ad86e7c8f80d1dfd6df2603f291529659bc52c4f32373bfaab93c",
"resources/js/components/simulation-travel-events.tsx": "0d12f7ace5d5c1488756675aab075f957d3833e059e58963cf69e5b1ea315bda",
"resources/js/components/simulation-monthly-iva.tsx": "ed7b32c1838eebf33fbb31366dc313bcc6fe718b3ffca9a990f495fa7a0d253a",
"resources/js/lib/project-dossier.ts": "a63f9ee361b175718ce405a888b8fca4f1525980a3f14bcea53770f49df2aaa0"
},
"limitations_balance": {
"digital": "Formalidades P121/P130: modelos da declaração/mapa de retenções e procedimentos de entrega/pagamento ainda não automatizados; cobertura digital integral não declarada. Mantém-se o limite da entrega df43aeb1.",
"travel": "Cálculo limitado à base da margem do registo simulado declarado, não apuramento integral da organização. Não calcula IVA devido/dedução42/43d, não executa regularização44, não emite factura45 ou modelo oficial46(2).",
"P104": "Conversão condicionada preservada; falta regra aplicável à escolha da taxa/data.",
"P084_P085": "Rascunhos e simulação condicionada preservados; ModeloI.1 não demonstra ligação a14(3) nem benefício concedido.",
"P001": "Pendência documental limitada aos campos05/06.",
"scope": "L1 aberto; bebidas L2/L3; Estatísticas/IA adiadas."
},
"counts_current": {
"delivered": 123,
"QA": 2,
"functional_pending": 7,
"P001": 1,
"total": 133
},
"homologation_unchanged": "df43aeb1",
"remaining": "Uma entrega conjunta compatível após aceitação, provas por ramo reutilizadas e delta instalado apenas. Sem push ou instalação neste incremento.",
"preservation_before_tests": "C:\\laragon\\www\\portal-investidor\\outputs\\iva-l1-travel-events-20261025\\preservation-before-tests.json",
"qa_status_preserved": "QA_complete_P129_P133_demonstrated_scope_not_delivered",
"delivery_followup": {
"served_commit": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"receipt": "l1-travel-events-delivery-20261025.json",
"record": "iva_l1_travel_events_P129_P133_homologation_20261025",
"counts": {
"delivered": 125,
"QA": 0,
"functional_pending": 7,
"documentary": 1,
"total": 133
},
"IVA_due_calculation": false,
"deduction_calculation": false,
"fiscal_parent_requirement": "AUD-SIM-INT02",
"P104_closure": false
}
}
@@ -0,0 +1,384 @@
{
"status": "installed_P131_P132_partial_P104_delta_verified_L1_open",
"candidate": "0052cd42d2755753b7e54257db05df8fbd9f08bc",
"base_installed": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"coverage_complete_branches": {
"AUD-SIM-L1-P131": [
"goods_available",
"goods_transport",
"goods_installation",
"service_completed",
"service_early_charge",
"import_clearance",
"import_auction",
"continuous_period",
"contract_effects"
],
"AUD-SIM-L1-P132": [
"own_goods",
"own_services",
"commission_delivery",
"consignment_deadline",
"advance_payment"
]
},
"coverage_partial": {
"AUD-SIM-L1-P104": "Preparação e simulação cambial condicionada,gravação/recuperação/histórico/relatório;moeda original,taxa,direcção,data,fonte e pressuposto explícitos. Não fechaP104 e não confirma base fiscal. Falta obter/cotejar disposição de conversão da Lei2/2006 referida em15(8),seu momento/regra e correspondência em2026."
},
"branch_count_complete": 2,
"event_treatment_count": 14,
"conditional_scenario_count": 1,
"runtime_delta": [
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "7133d1df2cf4171495bd145f5b8350938f0a3b4230af824c223d2b03cf0d9bb1"
},
{
"path": "resources/js/components/simulation-currency-events.tsx",
"sha256_LF": "d103234361d57d0461d19a0f1fb9cbc5a714dbd566000478fad9aced585f32fa"
},
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "44901ef5fc9def8ebd6c251d4af65f36a1cb330f5ed7d44db4a52d98753f18ff"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "1712be726c868d182a2ddf405331dcc1f55bf0c3ce72ad32ab758c15afef2f4a"
},
{
"path": "resources/js/lib/business-financial-plan.ts",
"sha256_LF": "c20274722d1ffcd0360f041a6cacb5d868fe0621cb27a1aca6e06826612c3ebb"
}
],
"counts_before": {
"delivered": 118,
"QA": 2,
"functional_pending": 12,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 120,
"QA": 0,
"functional_pending": 12,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 120,
"QA": 0,
"functional_pending": 12,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-currency-events-qa-20261025.json"
],
"authorization": "Tempo explicitly requests one joint delivery0052cd42/P131/P132;P104 may accompany only as conditionalconversion,notfiscalclosure;concurrentchanges preserved,installeddeltaonly",
"scope": "2026contexto;facto gerador7 e exigibilidade8 por data/âmbito;uma parcela de recebimento e restante por linha,ou parcelas de âmbitos distintos,sem agregação de totais entre linhas. Prazo de emissão é parâmetro legal identificado,não calendário presumido;importação segue7c. P104parcial não aplica câmbio fiscal.Sem nova base/IVA,taxa,dedução,campo11,regularização ou totaisModeloA;P133regimes suspensivos/viagens mantém âmbito separado.",
"source": "CIVA Lei13/2016:7(1)–(7),PDF8/p1426(266);8,PDF9/p1426(267);15(8),PDF14/p1426(272),páginas visualmente conferidas.Lei22/2022 eLei10/2025 não alteram7/8;15(8)mantido.RIVADecreto7/2008,21,PDF4:regra histórica5dias úteis e excepções;prazo actual não automatizado,exige disposição/calendário/âmbito identificados.",
"meaning": {
"P131": "Eventos7(1)a/b/c,7(2),7(3),7(7):disponibilização,início transporte,instalação/montagem concluída,serviço realizado/cobrado ou debitado antecipadamente pelo montante respectivo,desembaraço/arrematação/venda na importação,termo do período sucessivo,efeitos translativos com excepções3(3)a/b. Facto gerador separado de exigibilidade8;factura comercial não desloca evento aduaneiro.",
"P132": "Eventos7(4)/(5)/(6) e8c:afectações/transmissões assimiladas3(3)e/f,serviços4(2),disponibilização pelo comissário,termo180dias de mercadorias à consignação3(3)d e pagamentos anteriores à factura. Corrigida remissão a consignação,não embalagensP102.8a/b/c separam parcela recebida e restante,sem dupla contagem."
},
"P104_partial_condition": "Conversão condicionada,sem base fiscal confirmada.Preserva moeda,taxa,direcção,data,fonte e regra/pressuposto.Exemplar/disposição cambialLei2/2006 deve ser cotejado antes de fecharP104.P104continua nos12pendentes.",
"documentary_research_delimited": {
"P104": {
"finding": "Remissão15(8) para Lei2/2006 identificada;artigo de conversão e parâmetros ainda não cotejados em exemplar íntegro.",
"attempts": [
"Acervo local seisPDF semLei2/2006",
"Pesquisa Lei2/2006/CIP identificaBR12-I22/03/2006",
"PDF primário platformchinaplp devolveu404;DLA recusou/timeout;archiveBR2006 devolveu403"
],
"next_action": "Obter exemplar íntegroLei2/2006 e identificar disposição de conversão/momento/regra;reutilizar rascunhos,sem validação jurídica genérica."
},
"RIVA21": {
"primary_notice": "https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/",
"finding": "Anúncio governamental inclui alteração21;anúncio não substitui texto normativo/publicação. Prazo não presumido5dias úteis por defeito;campo exige termo/disposição/calendário aplicáveis.",
"next_action": "Localizar texto publicado da alteração21 para eventual automatização do prazo;motor8já opera com parâmetro concreto identificado."
}
},
"preservation": "118priorclosures andpartialP084/P085 preserved;one integration/backup/realisolatedrestore/check;QAproofsreused",
"partial_P084_P085": "Preparation/conditional simulation only;benefits pending;no closure",
"limits": "L1aberto;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas",
"containment": "l1-currency-events-readonly-rollback-20261025.patch,checked only,not applied;blocks newP131/P132/conditionalP104calculations,preserves readers/history/otherbranches",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"release": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"previous_release": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"release_revision": {
"commit": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"branch": "main",
"built_at": "2026-10-24T22:52:27.789891+00:00",
"manifest_sha256": "52e638801184578d481f490734a4b98f8f557625e81fd942348a2067bfc0f58b"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-currency-events-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "3bf9ce6052b554884fc9073ef094df83e4061a4acf9698aa4b86746372a933b3",
"files_sha256": "bfdc60b76ce1da29199eeb9f21503350c94da165ba2458fcb26f57c96bde995b",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_currency_events_restore_20261024",
"port": 55441,
"source_dump_sha256": "3bf9ce6052b554884fc9073ef094df83e4061a4acf9698aa4b86746372a933b3",
"active_database_writes": 0
}
},
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"served_commit": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"release": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"previous_release": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 5,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "9ffc4c728b779ae65422ece807e747ce"
},
"after": {
"rows": 106,
"checksum": "eb794d5a5c04b738022d307f04aa5885"
}
},
"sessions": {
"before": {
"rows": 108,
"checksum": "6acbafdd2b5cb8f5388e4c45e1c1ec95"
},
"after": {
"rows": 109,
"checksum": "591338e88d2ef2a58a2c1954e7302167"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"branch": "main",
"built_at": "2026-10-24T23:06:53.694897+00:00",
"manifest_sha256": "8679ad3c79f08e7a9505fcff3d72821c924048cb8188c80bb0ad1332adedf248"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"currency-events/1": [
"assets/project-dossier-BNIZIALo.js"
],
"foreign_scenario": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"goods_available": [
"assets/project-dossier-BNIZIALo.js"
],
"goods_transport": [
"assets/project-dossier-BNIZIALo.js"
],
"goods_installation": [
"assets/project-dossier-BNIZIALo.js"
],
"service_completed": [
"assets/project-dossier-BNIZIALo.js"
],
"service_early_charge": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"import_clearance": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"import_auction": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"continuous_period": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"contract_effects": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"own_goods": [
"assets/project-dossier-BNIZIALo.js"
],
"own_services": [
"assets/project-dossier-BNIZIALo.js"
],
"commission_delivery": [
"assets/project-dossier-BNIZIALo.js"
],
"consignment_deadline": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"advance_payment": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"currencyEvents": [
"assets/project-dossier-BNIZIALo.js"
],
"dueEvents": [
"assets/project-dossier-BNIZIALo.js"
],
"scenarioAmount": [
"assets/project-dossier-BNIZIALo.js"
],
"mzn_per_unit": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"units_per_mzn": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"fxRuleRef": [
"assets/project-dossier-BNIZIALo.js",
"assets/services-D8qtC6wy.js"
],
"conversão apenas cenário condicionado": [
"assets/project-dossier-BNIZIALo.js"
],
"sem base fiscal confirmada": [
"assets/project-dossier-BNIZIALo.js"
]
},
"assets": [
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-BNIZIALo.js",
"status": 200,
"sha256": "4f735b3ce4315b6fc87afb9f8e30774e9dc664073fa775da9cec640eaa6f0fde"
},
{
"file": "assets/services-D8qtC6wy.js",
"status": 200,
"sha256": "240800ef9ba1c338ac6ceb6f6dbbffce11ce02f8bb52ce385c901632f1d6b681"
},
{
"file": "assets/project-dossier-document-CM7oUIMz.js",
"status": 200,
"sha256": "2a62e4f6e2d7b8058feb67cef817e2d677150e149a3ffe56d6c38120f810634d"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-DwkwtDdx.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"release": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"previous_release": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"release": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"previous_release": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"e8b5ae43add95be3a7fd437e4488befce76c0a97"
],
"finished_at": "2026-10-24T23:06:56.387937+00:00"
},
"log_file": "1792883102945866022.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 27.52s",
"OK (59 tests, 317 assertions)",
"# tests 463",
"# pass 463",
"# fail 0"
],
"log_bytes": 156709
},
"rollback_executed": false
},
"activation": "OnejointGit fast-forward/webhook/installer;zero migrations/imports",
"P104_closure": false
}
@@ -0,0 +1,9 @@
--- a/resources/js/lib/iva-currency-events.ts
+++ b/resources/js/lib/iva-currency-events.ts
@@ -90,5 +90,5 @@
}
function key(draft:Record<string,unknown>,book:CurrencyEventBook):string{return JSON.stringify({version:currencyEventVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},rows:book.rows});}
export function currencyEventCurrent(draft:Record<string,unknown>,book:CurrencyEventBook):boolean{return!!book.result&&book.result.sourceKey===key(draft,book);}
-export function recordCurrencyEvents(draft:Record<string,unknown>,book:CurrencyEventBook):CurrencyEventBook{if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Indique operações com identidades distintas;originais conservados.');const result:CurrencyEventCalculation={version:currencyEventVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),location:JSON.stringify(draft.selection_labels??{}),sourceKey:key(draft,book),source:currencyEventSource,inputs:structuredClone(book.rows),rows:book.rows.map(evaluateCurrencyEvent)};const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveCurrencyEventBook(draft,next);return next;}
+export function recordCurrencyEvents(draft:Record<string,unknown>,book:CurrencyEventBook):CurrencyEventBook{throw new Error('Novas versões P131/P132 e cenários condicionados P104 temporariamente suspensos;dados,histórico e relatórios preservados.');if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Indique operações com identidades distintas;originais conservados.');const result:CurrencyEventCalculation={version:currencyEventVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),location:JSON.stringify(draft.selection_labels??{}),sourceKey:key(draft,book),source:currencyEventSource,inputs:structuredClone(book.rows),rows:book.rows.map(evaluateCurrencyEvent)};const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveCurrencyEventBook(draft,next);return next;}
export function currencyEventReportRows(draft:Record<string,unknown>):Array<[string,string,string,string]>{try{const book=currencyEventBook(draft),r=book.result;if(!r)return[];return r.inputs.map((row,i)=>['IVA mensal',`${currencyEventTreatments.find(t=>t.id===row.treatment)?.branch??'Evento'} — ${row.period} — ${row.id}`,`${row.description};${r.rows[i].reason};facto gerador:${r.rows[i].eventDate??'Indeterminado/não apurado'};parcelas:${r.rows[i].dueEvents.map(p=>p.date+': '+(p.amount??'Montante indeterminado')+' '+row.currency+' ('+p.reason+')').join('; ')||'Nenhuma apurada'};restante pendente:${r.rows[i].status==='indeterminate'?'Indeterminado':r.rows[i].remainingPending?'Sim':'Não'};cenário condicionado:${r.rows[i].scenarioAmount??'Indeterminado'};base/IVA:Indeterminados`,`${r.opportunity};${r.location};${currencyEventCurrent(draft,book)?'Resultado actual':'Entradas alteradas;resultado histórico conservado'};versão${r.revision};${r.calculatedAt};${r.source};${row.origin};documento ${row.documentRef},${row.documentDate};ambito ${row.scope};${row.treatment==='foreign_scenario'?`origem ${row.amount} ${row.sourceCurrency};taxa ${row.fxRate},${row.fxDirection},${row.fxDate};fonte ${row.fxSource};pressuposto ${row.fxRuleRef}`:`evento ${row.eventDate},${row.eventRef};outra data ${row.otherDate};conferencia ${row.reviewDate};factura ${row.invoiceRequired},${row.invoiceState},${row.invoiceDate},${row.invoiceRef};prazo ${row.legalDeadline},${row.deadlineRef};recebimento ${row.paymentState},${row.paymentDate},${row.paymentAmount},${row.paymentRef};total do ambito ${row.amount} ${row.currency}`};fundamento ${row.evidence};sem nova dedução/campo11/IVA ou activação cambial nos livros anteriores.`]);}catch{return[['IVA mensal','Moeda/eventos','Dados não recuperáveis','Originais preservados;sem substituição porzero.']];}}
@@ -0,0 +1,392 @@
{
"status": "installed_P002_P121_P130_demonstrated_scope_only_L1_open",
"candidate": "de4b25bbd73f8c0d34549e455ade5639d37cd801",
"accepted_candidates": [
"e4c490b3",
"de4b25bb"
],
"base_installed": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"coverage_complete_branches": {
"AUD-SIM-L1-P002": [
"goods",
"services",
"listed_services",
"foreign_transport_portion"
],
"AUD-SIM-L1-P121": [
"web",
"software_service",
"information",
"media",
"teaching",
"analogous"
],
"AUD-SIM-L1-P130": [
"software_asset",
"content_asset",
"data_asset",
"crypto_asset",
"ebook_asset",
"profile_asset",
"access_asset",
"other_asset"
]
},
"coverage_label": "Três ramos no âmbito demonstrado: P002 enquadramento potencial; P121/P130 natureza/localização/responsável, rascunho/histórico/relatório. Não representa cobertura digital integral.",
"digital_coverage_integral": false,
"digital_formalities_not_automated": [
"Modelos da declaração mensal e do mapa de retenções25(7)",
"Formalidades/procedimentos de entrega e pagamento26(4) ainda não cotejados",
"Submissão, pagamento ou cálculo de imposto/dedução não executados neste incremento"
],
"digital_documentary_limits": {
"procedure": "Modelos/formalidades de25(7)/26(4) não cotejados neste incremento. A pesquisa oficial delimitada encontrou anúncio governamental de30/09/2026, não o texto normativo de execução. Isto não declara inexistência de regulamentação nem bloqueia classificação e preparação. Nenhum modelo, taxa de retenção, aprovador ou formulário inventado.",
"official_notice": "https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/",
"next_action": "Cotejar texto publicado e modelos aplicáveis antes de automatizar formalidades/submissão; manter preparação, localização e atribuição legal demonstrada.",
"P104": "Mantém pendência de escolha da taxa/data; conversão condicionada preservada, sem dependência efectiva destes percursos.",
"P084_P085": "Preparação/simulação condicionada preservadas; benefícios não encerrados."
},
"UI_delta_from_QA": "Texto explícito de cobertura limitada e formalidades não automatizadas, pedido pela Tempo; nenhuma alteração de regra ou cálculo.",
"branch_count_complete": 3,
"digital_treatment_count": 14,
"digital_examples": 46,
"P002_examples": 7,
"runtime_delta": [
{
"path": "resources/js/lib/iva-digital.ts",
"sha256_LF": "623165a4e36e161776fea115ee7f8b9b61b4e5766831daa404badf8397eae271"
},
{
"path": "resources/js/components/simulation-digital.tsx",
"sha256_LF": "5bf44510481d1739e0a81f0326c14c8e2f477ac9a7e02b694c3b3173a92dcd78"
},
{
"path": "resources/js/lib/iva-foreign-operations.ts",
"sha256_LF": "b2735b9071aac41f9ddf0ae0c81d3943c870adccfa315ec01432388fec4a7de8"
},
{
"path": "resources/js/components/simulation-foreign-operations.tsx",
"sha256_LF": "5276d81afd97cd40df63973fcfdca27d80903464af078f67deb3e45c7bb90948"
},
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "19269934dc83f2cb3c36b1677f0bcdf066dc0ffd2af889730bd92acb54532587"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "f0428b411146e030bbf952428faffab6ac26178d09aa3a6437daa9363bc75a46"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "fa99e217e96bc6601ebfe0ac48a8ad3395ce85d57218c23888e6eece5a7405fa"
}
],
"counts_before": {
"delivered": 120,
"QA": 3,
"functional_pending": 9,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 123,
"QA": 0,
"functional_pending": 9,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 123,
"QA": 0,
"functional_pending": 9,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-foreign-operations-qa-20261025.json",
"iva-l1-digital-qa-20261025.json"
],
"authorization": "Tempo solicita uma única disponibilização P002/P121/P130 no âmbito demonstrado, com alterações concorrentes preservadas e somente delta instalado conferido.",
"preservation": "120 fechos, P104 condicionado, P084/P085 parciais, dados, históricos, permissões e acessos preservados. P104 não encerrado.",
"scope": "Natureza digital, localização e responsável; gravação, recuperação, histórico e relatório. Não calcula taxa/base/IVA/dedução/campo11 ou totais; não envia declaração nem inicia pagamento. Software/acesso/licenciamento não decidem natureza apenas pelo título.",
"P104_closure": false,
"limits": "L1 aberto; P001 apenas05/06; P084/P085 benefícios pendentes; bebidas L2/L3; Estatísticas/IA adiadas.",
"containment": "l1-foreign-digital-readonly-rollback-20261025.patch; conferir sem aplicar: suspende apenas novas versões P002/digital, preservando leitores/histórico/outros ramos.",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"release": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"previous_release": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"release_revision": {
"commit": "e8b5ae43add95be3a7fd437e4488befce76c0a97",
"branch": "main",
"built_at": "2026-10-24T23:06:53.694897+00:00",
"manifest_sha256": "8679ad3c79f08e7a9505fcff3d72821c924048cb8188c80bb0ad1332adedf248"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-foreign-digital-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "4325b559ab0e7e4a2904a4dc2235b79260a04095e401a3d0231b46e64afb16a9",
"files_sha256": "d69622a7179b7bfdfc4599714a9093f47f28c6fcc96b38d1856cfbd38775ef4b",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_foreign_digital_restore_20261024",
"port": 55441,
"source_dump_sha256": "4325b559ab0e7e4a2904a4dc2235b79260a04095e401a3d0231b46e64afb16a9",
"active_database_writes": 0
}
},
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"served_commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"release": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"previous_release": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 7,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "72e3df5d5b6a9ae0a1711e5e7dba713e"
},
"after": {
"rows": 106,
"checksum": "b32e95b044290f27169a56415ade43f7"
}
},
"sessions": {
"before": {
"rows": 111,
"checksum": "ea3379188d08dd9e272dccd89cff3845"
},
"after": {
"rows": 112,
"checksum": "874bf4e3d6aef4a7d76d37bf0076c889"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"branch": "main",
"built_at": "2026-10-24T23:29:21.431835+00:00",
"manifest_sha256": "42fcfc7d2fa7e7adae795927245582d1d140dd2a4fdc77164056b33de94f21e1"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"digital-operations/1": [
"assets/project-dossier-CGYWZtgD.js"
],
"foreign-operations/1": [
"assets/project-dossier-CGYWZtgD.js"
],
"digitalOperations": [
"assets/project-dossier-CGYWZtgD.js"
],
"foreignOperations": [
"assets/project-dossier-CGYWZtgD.js"
],
"software_asset": [
"assets/project-dossier-CGYWZtgD.js"
],
"crypto_asset": [
"assets/project-dossier-CGYWZtgD.js"
],
"ebook_asset": [
"assets/project-dossier-CGYWZtgD.js"
],
"profile_asset": [
"assets/project-dossier-CGYWZtgD.js"
],
"access_asset": [
"assets/project-dossier-CGYWZtgD.js"
],
"other_asset": [
"assets/project-dossier-CGYWZtgD.js"
],
"software_service": [
"assets/project-dossier-CGYWZtgD.js"
],
"analogous": [
"assets/project-dossier-CGYWZtgD.js"
],
"digitalAsset": [
"assets/project-dossier-CGYWZtgD.js"
],
"digitalService": [
"assets/project-dossier-CGYWZtgD.js"
],
"declarationReferenceDate": [
"assets/project-dossier-CGYWZtgD.js"
],
"representativeRef": [
"assets/project-dossier-CGYWZtgD.js",
"assets/services-OpXmisSI.js"
],
"communicationPrior": [
"assets/project-dossier-CGYWZtgD.js",
"assets/services-OpXmisSI.js"
],
"businessUse": [
"assets/project-dossier-CGYWZtgD.js",
"assets/services-OpXmisSI.js"
],
"potential": [
"assets/project-dossier-CGYWZtgD.js"
],
"excluded_19_2": [
"assets/project-dossier-CGYWZtgD.js"
],
"Cobertura digital deste incremento:": [
"assets/services-OpXmisSI.js"
],
"não estão automatizadas": [
"assets/services-OpXmisSI.js"
],
"Não representa cobertura digital integral": [
"assets/services-OpXmisSI.js"
],
"modelos da declaração e do mapa de retenções": [
"assets/services-OpXmisSI.js"
],
"P104": [
"assets/project-dossier-CGYWZtgD.js",
"assets/services-OpXmisSI.js"
],
"sem base fiscal confirmada": [
"assets/project-dossier-CGYWZtgD.js"
]
},
"assets": [
{
"file": "assets/project-dossier-CGYWZtgD.js",
"status": 200,
"sha256": "14111c559c18321a5e70b8dfe0e4d1d774116bc8f43a4857a52a6d09b85758ba"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-document-C8UzSjvU.js",
"status": 200,
"sha256": "c165aa0ff95ac6dce620300b3e989f69f087fe85cd760a854874c1579c0d5a81"
},
{
"file": "assets/services-OpXmisSI.js",
"status": 200,
"sha256": "cd8ff9052961f612706806290f34b3823f18c67128cab2f23b9f3f5c611c4ce5"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-BJtmUrd_.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"release": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"previous_release": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"release": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"previous_release": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"df43aeb1e583e65af854ac71f46ddaa1f49b0b7c"
],
"finished_at": "2026-10-24T23:29:24.177941+00:00"
},
"log_file": "1792884448718297106.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 27.80s",
"OK (59 tests, 317 assertions)",
"# tests 520",
"# pass 520",
"# fail 0"
],
"log_bytes": 168294
},
"rollback_executed": false
},
"activation": "One joint Git fast-forward/webhook/installer; zero migrations/imports; accepted QA proofs reused"
}
@@ -0,0 +1,20 @@
--- a/resources/js/lib/iva-digital.ts
+++ b/resources/js/lib/iva-digital.ts
@@ -76,7 +76,7 @@
}
function key(draft:Record<string,unknown>,book:DigitalBook):string{return JSON.stringify({version:digitalVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},rows:book.rows});}
export function digitalCurrent(draft:Record<string,unknown>,book:DigitalBook):boolean{return!!book.result&&book.result.sourceKey===key(draft,book);}
-export function recordDigital(draft:Record<string,unknown>,book:DigitalBook):DigitalBook{
+export function recordDigital(draft:Record<string,unknown>,book:DigitalBook):DigitalBook{throw new Error('Novas versões P121/P130 temporariamente suspensas; dados, histórico e relatórios conservados.');
if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Identifique operações distintas; originais conservados.');
const result:DigitalCalculation={version:digitalVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),sourceKey:key(draft,book),source:digitalSource,inputs:structuredClone(book.rows),rows:book.rows.map(evaluateDigital)};
const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveDigitalBook(draft,next);return next;
--- a/resources/js/lib/iva-foreign-operations.ts
+++ b/resources/js/lib/iva-foreign-operations.ts
@@ -46,5 +46,5 @@
}
function key(draft:Record<string,unknown>,book:ForeignOperationBook):string{return JSON.stringify({version:foreignOperationVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},rows:book.rows,dependencies:book.rows.map(row=>({source:foreignSources(draft,row.sourceKind).find(s=>s.id===row.sourceRowId),event:row.eventRowId?foreignEvents(draft).find(e=>e.id===row.eventRowId):null}))});}
export function foreignOperationCurrent(draft:Record<string,unknown>,book:ForeignOperationBook):boolean{try{return!!book.result&&book.result.sourceKey===key(draft,book);}catch{return false;}}
-export function recordForeignOperations(draft:Record<string,unknown>,book:ForeignOperationBook):ForeignOperationBook{if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Indique identidades distintas;originais conservados.');const result:ForeignOperationCalculation={version:foreignOperationVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),sourceKey:key(draft,book),source:foreignOperationSource,inputs:structuredClone(book.rows),rows:book.rows.map(r=>evaluateForeignOperation(draft,r))};const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveForeignOperationBook(draft,next);return next;}
+export function recordForeignOperations(draft:Record<string,unknown>,book:ForeignOperationBook):ForeignOperationBook{throw new Error('Novas versões P002 temporariamente suspensas; dados, histórico e relatórios conservados.');if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Indique identidades distintas;originais conservados.');const result:ForeignOperationCalculation={version:foreignOperationVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),sourceKey:key(draft,book),source:foreignOperationSource,inputs:structuredClone(book.rows),rows:book.rows.map(r=>evaluateForeignOperation(draft,r))};const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveForeignOperationBook(draft,next);return next;}
export function foreignOperationReportRows(draft:Record<string,unknown>):Array<[string,string,string,string]>{try{const b=foreignOperationBook(draft),r=b.result;if(!r)return[];return r.inputs.map((row,i)=>{const line=r.rows[i];return['IVA mensal',`P002 — ${line.source?.period??'Período indeterminado'} — ${row.id}`,`${line.source?.description??'Origem por escolher'};${line.reason};dedução/IVA:Indeterminados`,`${r.opportunity};${foreignOperationCurrent(draft,b)?'Resultado actual':'Origens/entradas alteradas;resultado histórico conservado'};versão${r.revision};${r.calculatedAt};${r.source};localização${row.sourceKind}/${row.sourceRowId},versão${line.source?.revision??'indeterminada'};${line.source?.reason??''};operação${line.source?.operationRef??''};âmbito origem${line.source?.scope??''};parcela${row.territorialPart};evento${row.eventRowId||'Sem associação necessária'},${line.event?JSON.stringify(line.event):'Não apurado por esta análise'};hipótese interna${row.hypotheticalTaxable},fundamento${row.hypotheticalRef};exclusão19(2)${row.excluded19_2};âmbito${row.scope};factos${row.evidence};sem base/IVA/dedução/campo11/totaisModeloA.`];});}catch{return[['IVA mensal','P002','Dados não recuperáveis','Originais preservados;sem classificação por defeito.']];}}
@@ -0,0 +1,338 @@
{
"status": "installed_delta_verified_partial_L1",
"candidate": "a5b1ae66576f927a31d7917527fd8354e7c604eb",
"base_installed": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"coverage_complete_branches": {
"AUD-SIM-L1-P123": [
"consignment_180"
],
"AUD-SIM-L1-P126": [
"missing_goods",
"excess_consumption",
"found_goods"
]
},
"branch_count_complete": 2,
"treatment_count": 4,
"QA_example_count": 4,
"runtime_delta": [
{
"path": "resources/js/lib/iva-goods-presumptions.ts",
"sha256_LF": "16047a0a2e7c052a42e83e3983dab7465a2ae5f1d66966896220f27625ab6f17"
},
{
"path": "resources/js/components/simulation-goods-presumptions.tsx",
"sha256_LF": "1dcb1d5a057d3b7a3a33beb36a912b90ea258cbc00d74a8140512b82b9b5a589"
},
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "ec9b9ea5fa3f044fd76bf30cac2ee54304a58d502888bf28c705e189f4135d4c"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "2c8eb800c1366614521e33930e49b66c4c9efa4a48c90a784bd4d1bf80b06c7a"
}
],
"counts_before": {
"delivered": 114,
"QA": 2,
"functional_pending": 16,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 116,
"QA": 0,
"functional_pending": 16,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 116,
"QA": 0,
"functional_pending": 16,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-goods-presumptions-qa-20261025.json"
],
"authorization": "Tempo explicitly requests one joint delivery ofa5b1ae66,P123/P126,preserving concurrent changes and installeddelta only",
"scope": "2026,data de conferência/âmbito identificados;classificação da operação,prazo e presunções,não base/exigibilidade/taxa/IVA,nova dedução/regularização/campo11 ou totaisModeloA.P123 não são embalagensP102;P126 não comprova aquisição efectiva/factura ou elegibilidade para margemP092/P093/P125.Devoluções parciais separadas por conjunto;devolução posterior não apaga histórico.",
"source": "CIVA Lei13/2016,3(3)d,PDF6/p1426(264);3(4),PDF7/p1426(265),páginas digitalizadas visualmente conferidas.Lei22/2022 não altera3;Lei10/2025 PDF12 mantém3(3)d/3(4).Rectificação2017 não altera estas disposições. Acervo completo seisPDF inventariado e hashes conferidos.",
"meaning": {
"P123": "Mercadorias enviadas à consignação não devolvidas em180dias da entrega ao destinatário,3(3)d. Data de entrega/destinatário,conjunto não devolvido e data de conferência identificados;prazo de180dias calculado. No dia180 o prazo ainda decorre;após o prazo,a transmissão é identificada neste recorte,sem calcular exigibilidade/base/IVA.",
"P126": "Presunções ilidíveis3(4):transmissão de bens adquiridos/importados/produzidos não localizados nos estabelecimentos,ou consumo excessivo face ao volume de produção;e aquisição dos bens encontrados nesses locais. Levantamento,estabelecimentos,conjunto/período e prova em contrário separados. Desconhecido indeterminado;prova identificada afasta presunção apenas no âmbito declarado,sem concessão de isenção."
},
"classification_and_proof": "P123:goods sent onconsignment,notreturnedin180days;correctdesignation preservedininterface,matrix,reports.P102packaging preserved.P126:explicitcontraryproof andscope;rebuttablepresumption,unknownindeterminate;noautomaticVAT/deduction/margin.",
"preservation": "114priorclosures andpartialP084/P085 preserved;acceptedperbranchQA reused;one integration/backup/realisolatedrestore/check forwhole set",
"partial_P084_P085": "Preparation/conditional simulation only;benefits pending;no closure",
"limits": "L1aberto;P00105/06;P121digital/P084/P085pendentes;bebidasL2/L3;Estatísticas/IAadiadas",
"containment": "l1-goods-presumptions-readonly-rollback-20261025.patch,checked only,not applied;blocks newP123/P126calculations,preserves readers/history/otherbranches",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"release": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"previous_release": "/var/www/investmoz-homologacao/releases/6c12aabb3ac7f8296025a2af0408390bfe292bdb-4c33615a",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"release_revision": {
"commit": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"branch": "main",
"built_at": "2026-10-24T22:32:38.963919+00:00",
"manifest_sha256": "ee5b4b3aa24f1b2fabf6ee212c03211e085b05dab858693f80907b23569c0aab"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-goods-presumptions-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "9c0a4e214cd739e912230df4d43e14d2b182e2db85637b019f9dfcabc77c450c",
"files_sha256": "e6815f2a443beecdb9d3b61e2dbaec1ca9c53f394d07bc70c43021e1e20f9d11",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_goods_presumptions_restore_20261024",
"port": 55441,
"source_dump_sha256": "9c0a4e214cd739e912230df4d43e14d2b182e2db85637b019f9dfcabc77c450c",
"active_database_writes": 0
}
},
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"served_commit": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"release": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"previous_release": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "c0dd6744e2e177d6ba7e2ce937894302"
},
"after": {
"rows": 106,
"checksum": "3d56647108ef2943f9d8b801af02f1dd"
}
},
"sessions": {
"before": {
"rows": 102,
"checksum": "ea75de10c3067fe1f66919c87593fe6c"
},
"after": {
"rows": 103,
"checksum": "3cec3acac334a5eaf8c86d829b0f6184"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"branch": "main",
"built_at": "2026-10-24T22:42:39.117961+00:00",
"manifest_sha256": "eeab5319e220e8017f0f06e4b4ba2572ccadb5be465cde82d696ac0e64f5ae0c"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"goods-presumptions/1": [
"assets/project-dossier-C1yuxPwe.js"
],
"consignment_180": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"missing_goods": [
"assets/project-dossier-C1yuxPwe.js"
],
"excess_consumption": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"found_goods": [
"assets/project-dossier-C1yuxPwe.js"
],
"goodsPresumptions": [
"assets/project-dossier-C1yuxPwe.js"
],
"deliveryDate": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"recipientRef": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"inventoryRef": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"productionRef": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"quantityUnit": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"contraryProof": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"contraryProofRef": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
],
"consignment_transmission": [
"assets/project-dossier-C1yuxPwe.js"
],
"presumed_transmission": [
"assets/project-dossier-C1yuxPwe.js"
],
"presumed_acquisition": [
"assets/project-dossier-C1yuxPwe.js"
],
"rebutted": [
"assets/project-dossier-C1yuxPwe.js"
],
"elapsedDays": [
"assets/project-dossier-C1yuxPwe.js"
],
"deadline": [
"assets/simulation-form-CPZAFZU3.js",
"assets/project-dossier-C1yuxPwe.js"
],
"180dias": [
"assets/services-Bubf7sMl.js",
"assets/project-dossier-C1yuxPwe.js"
]
},
"assets": [
{
"file": "assets/services-Bubf7sMl.js",
"status": 200,
"sha256": "b45e8a98b6e272c55994e077d1e1f8f825e7687032c46fe83a35aee5fb46639c"
},
{
"file": "assets/simulation-form-CPZAFZU3.js",
"status": 200,
"sha256": "c6bcf64e60a5eeac0cafe3dc055dc5544162f21942ee08b34d51bc6d52947567"
},
{
"file": "assets/project-dossier-C1yuxPwe.js",
"status": 200,
"sha256": "0b35ced2415682b77495d9e18c4d4afa23c5e7271957627f3eea4fca6cc8b6bd"
},
{
"file": "assets/project-dossier-document-gMRsyT4a.js",
"status": 200,
"sha256": "7259c42829b749e13e512785606cd5704880e1f4d36b08275f10eb7f8a08f570"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-BQiJKvuL.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"release": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"previous_release": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"release": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"previous_release": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"ce9d649fbf631b584cb521ce120c98a4cb459c13"
],
"finished_at": "2026-10-24T22:42:42.292072+00:00"
},
"log_file": "1792881650040306932.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 28.09s",
"OK (59 tests, 317 assertions)",
"# tests 438",
"# pass 438",
"# fail 0"
],
"log_bytes": 152174
},
"rollback_executed": false
},
"activation": "OnejointGit fast-forward/webhook/installer;zero migrations/imports"
}
@@ -0,0 +1,10 @@
--- a/resources/js/lib/iva-goods-presumptions.ts
+++ b/resources/js/lib/iva-goods-presumptions.ts
@@ -47,6 +47,7 @@
function key(draft:Record<string,unknown>,book:GoodsPresumptionBook):string{return JSON.stringify({version:goodsPresumptionVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},rows:book.rows});}
export function goodsPresumptionCurrent(draft:Record<string,unknown>,book:GoodsPresumptionBook):boolean{return!!book.result&&book.result.sourceKey===key(draft,book);}
export function recordGoodsPresumptions(draft:Record<string,unknown>,book:GoodsPresumptionBook):GoodsPresumptionBook{
+ throw new Error('Novos cálculos P123/P126 temporariamente suspensos;dados,histórico,relatórios e restantes ramos preservados.');
if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Indique operações com identificadores distintos;originais conservados.');
const result:GoodsPresumptionCalculation={version:goodsPresumptionVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),location:JSON.stringify(draft.selection_labels??{}),sourceKey:key(draft,book),source:goodsPresumptionSource,inputs:structuredClone(book.rows),rows:book.rows.map(evaluateGoodsPresumption)};
const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveGoodsPresumptionBook(draft,next);return next;
@@ -0,0 +1,490 @@
{
"status": "installed_P046_P059_demonstrated_RSA_scope_L1_open",
"candidate": "2b130a66ec9c3f9de427e6dec3e124321d027b99",
"accepted_candidates": [
"34bbcfa7",
"2b130a66"
],
"base_installed": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"coverage_complete_branches": {
"AUD-SIM-L1-P046": "Um ramoP046,28correspondências expressas;enumeração legal exemplificativa. Isenção naimportação distinta de venda,base aduaneira,direitos e dedução. Sem fecho integralL1.",
"AUD-SIM-L1-P059": "Mineiros moçambicanos em serviço naRSA,no âmbito2026/MZN demonstrado:8percursos e transmissão aherdeiro;redução50%só no veículo separado6(4),com condições próprias."
},
"branch_count_complete": 2,
"coverage_label": "P046 importação definitiva com isenção objectiva interna;P059 limitado ao regimeRSA demonstrado,sem generalização da redução ou concessão automática.",
"treatments": {
"P046": 28,
"P059": 8,
"P059_examples": 9
},
"runtime_delta": [
{
"path": "resources/js/lib/iva-objective-imports.ts",
"sha256_LF": "859e51700fffa8990b849f0763059e577b3d71fcf3e6c7294f39c944baee8181"
},
{
"path": "resources/js/components/simulation-objective-imports.tsx",
"sha256_LF": "b9b07a39f60cdea7e19dda7cac8fc7ad87cafb0972c09a7c747dbaddc7578e39"
},
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "25b9ec77328c57ae787388d6222eb6e4df3e15e44be6b61bce90fc389931e024"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "d4dec167e09b7be9477e806d28a3490b620650909859c13da53109747c93cb09"
},
{
"path": "resources/js/lib/iva-miners.ts",
"sha256_LF": "96cade3d3b85dde4e098a802825d52b3abfbde66722f83348fc0f1ca0216138f"
},
{
"path": "resources/js/components/simulation-miners.tsx",
"sha256_LF": "40abf151b369b4dae599ca768fe8849466ce0a7122ef62c18e3b4179c095e90b"
}
],
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"state": "original archived in Git;not imported or publicly published by deployment"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"state": "original archived in Git;not imported or publicly published by deployment"
}
],
"compiled_delta_markers_expected": [
"objective-imports/1",
"miner-imports/1",
"objectiveImports",
"minerImports",
"internalApplicable",
"sameGoods",
"accumulationStart",
"accumulationMonths",
"periodTotal",
"quotaRef",
"previousBenefitDate",
"deadlineExtension",
"stayException",
"rightHolder",
"separate_vehicle",
"return_vehicle",
"noAlcoholTobacco",
"Regime Aduaneiro Aplicável aos Mineiros na República da África do Sul",
"arts1–4PDF1",
"50% das imposições",
"15.000MZN por mês",
"sem concessão administrativa automática",
"Continuidade do trabalho fiscal:",
"sem calcular IVA devido ou dedução",
"não ficam concluídas por esta entrega",
"Cobertura digital deste incremento:",
"Não representa cobertura digital integral"
],
"counts_before": {
"delivered": 125,
"QA": 2,
"functional_pending": 5,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 127,
"QA": 0,
"functional_pending": 5,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 127,
"QA": 0,
"functional_pending": 5,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-objective-imports-qa-20261025.json",
"iva-l1-miners-qa-20261025.json"
],
"authorization": "Tempo pede entrega conjuntaP046/P059 pelo processoGit existente,preservando alterações concorrentes e conferindo apenas delta instalado;âmbito territorialRSA e condições da redução explícitos.",
"preservation": "125fechos,livros/dados,acessos,relações,originais e históricos preservados;P084/P085/P104parciais e formalidades digitais/limites de viagens mantidos.",
"limitations_balance": {
"scope": "P059 demonstrado para mineiros moçambicanos naRSA,2026/MZN;outros países/fundamentos não são declarados automaticamente isentos nem excluídos de todo o CIVA.",
"monthly_limit": "Cobertura dos exemplares:15.000MZN/mês;valores superiores permanecem indeterminados,não se presume revisão do limite pelo Governo2(5),nem benefício parcial sobre o excesso.",
"customs": "Classificação segundo factos declarados/pressupostos expressos;portal não concede autorização,não emite DU,licença ou despacho,não calcula direitos/base aduaneira/ICE,sem dedução/campo11 ou lançamento automático no ModeloA.",
"temporary": "Licença temporária em férias5 não vira isenção definitiva;encaminhamento para o regime aduaneiro existente,com condições próprias.",
"internal_acquisition": "6(4)também refere aquisição no mercado interno;este incremento aplica apenas IVA informado da importação associada identificada,não calcula IVA da venda interna nem restitui imposições.",
"KAWENA": "OS07/AT/DGA/411.1/2019 permanece procedimento específico;contramarca/SAD500/armazém e outras exigências suas não foram impostas às outras vias.",
"digital": "Formalidades digitais P121/P130 ainda não automatizadas permanecem visíveis;sem cobertura digital integral.",
"travel": "P129/P133 preservados no âmbito margem/eventos,sem IVA devido,dedução42/43d,regularização44,facturação45/modelo46(2);ligação AUD-SIM-INT02 mantida.",
"others": "P084/P085 apenas preparação e simulação condicionada;P104 conversão condicionada;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas;L1aberto."
},
"P046_limits": {
"digital": "P121/P130 formalidades regulamentares,modelos eprocedimentos deentrega/pagamento ainda nãoautomatizados;sem cobertura digital integral",
"travel": "P129/P133 âmbito margem/eventos;sem IVAdevido,dedução42/43d,regularização44,factura45oumodelooficial46(2);ligaçãoAUD-SIM-INT02",
"P104": "Conversão condicionada;sem taxa/data fiscal confirmadas",
"P084_P085": "Preparação/simulação condicionada;sembenefício oufecho",
"P001": "Apenas05/06",
"scope": "L1aberto;bebidasL2/L3;Estatísticas/IAadiadas"
},
"source_reference_correction": [
{
"diploma": "Lei n.º 2/2011, de 11 de Janeiro",
"title": "Regime Aduaneiro Aplicável aos Mineiros na República da África do Sul",
"issue": "BR n.º 1, I Série, 4.º suplemento, 11/01/2011",
"file": "docs\\investmoz\\simulations\\source-archive\\Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899",
"url_working_copy": "https://tr-jue.mcnet.co.mz/mcnet/portal/faq/category/149/faqsdoclink",
"previous_url": "https://www.pgr.gov.mz/index.php/por/content/download/5617/40390/version/1/file/Lei%2Bdo%2BVoluntariado.pdf",
"previous_url_access": "PGR DNS unavailable to local download in this round;does not invalidate accepted official content. MCNet original obtained and rendered. No claim of byte equality with an unavailable PGR download.",
"articles": [
{
"articles": "1;2(1)(a–d);2(2–5);3;4",
"pdf_page": 1,
"printed_page": "not printed on this opening page",
"meaning": "Scope,goods,quotas,non-alienation,return,heirs,possible limit revision,alcohol/tobacco exclusion,regulation"
},
{
"articles": "5",
"pdf_page": 2,
"printed_page": "110-(8)",
"meaning": "Entry into force01/01/2011"
}
],
"other_acts": "Full original has10pages and also contains Lei7/2011(Legal Regime of Volunteering). Neither original filename nor that other act is the authority for P059."
},
{
"diploma": "Decreto n.º 3/2011, de 16 de Março",
"title": "Regulamento do Regime Aduaneiro Aplicável aos Mineiros Moçambicanos em Serviço na República da África do Sul",
"issue": "BR n.º11,I Série,16/03/2011",
"file": "docs\\investmoz\\simulations\\source-archive\\Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be",
"articles": [
{
"articles": "1(definitions),2(scope),3(benefits),4(beginning)",
"pdf_page": 2,
"printed_page": "152"
},
{
"articles": "4(continuation),5(temporary licence),6(return),7(heirs),8(procedural moment)",
"pdf_page": 3,
"printed_page": "153"
}
]
},
{
"diploma": "CIVA republicado pela Lei13/2016",
"article": "12(2),alínea b);proportionality in opening sentence12(2)",
"file": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"pdf_page": 11,
"printed_page": "1426-(269)",
"subsequent_cotejo": "Lei22/2022PDF2–3 andLei10/2025PDF13 maintain12(2) by reference;no new expanded text in these changes."
}
],
"remaining_ids": [
"P047",
"P058",
"P084",
"P085",
"P104",
"P001"
],
"P104_closure": false,
"P084_P085_closure": false,
"containment": "l1-objective-miners-readonly-rollback-20261025.patch,conferida sem aplicar;apenas suspende novas versõesP046/P059,conservando leitores,históricos eoutros ramos.",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"release": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"previous_release": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"release_revision": {
"commit": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"branch": "main",
"built_at": "2026-10-24T23:50:30.605375+00:00",
"manifest_sha256": "a20890098748b87f8920ab98577acd584ea1ad7e839f745fd23858666c35642a"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-objective-miners-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "3d5a5a9095dbf1979b7c4eb73f409c3fec67f8fcaed81b6343ef2c319bbde929",
"files_sha256": "c570de0b8308cd5fab616977a358a3459e7967460c3e1ccb808a96f1a0780971",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_objective_miners_restore_20261025",
"port": 55441,
"source_dump_sha256": "3d5a5a9095dbf1979b7c4eb73f409c3fec67f8fcaed81b6343ef2c319bbde929",
"active_database_writes": 0
}
},
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"served_commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"release": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"previous_release": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 6,
"documentary_files_verified": 2,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "f4020894854937bb59588270290d5ca2"
},
"after": {
"rows": 106,
"checksum": "ab691e51bcc3102b2253a587f4fb1bb2"
}
},
"sessions": {
"before": {
"rows": 120,
"checksum": "7668b80137db2d370aacb82c6909fbe6"
},
"after": {
"rows": 121,
"checksum": "6743f08790bb9302da48ffc0b8fb7943"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"branch": "main",
"built_at": "2026-10-25T08:24:49.843479+00:00",
"manifest_sha256": "4aa78f9db6db6dcf31222b9bff45f5dfbaa0dc071225fcc3de4f0f02f0d03cd8"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"objective-imports/1": [
"assets/project-dossier-DpZZLWgt.js"
],
"miner-imports/1": [
"assets/project-dossier-DpZZLWgt.js"
],
"objectiveImports": [
"assets/project-dossier-DpZZLWgt.js"
],
"minerImports": [
"assets/project-dossier-DpZZLWgt.js"
],
"internalApplicable": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"sameGoods": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"accumulationStart": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"accumulationMonths": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"periodTotal": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"quotaRef": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"previousBenefitDate": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"deadlineExtension": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"stayException": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"rightHolder": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"separate_vehicle": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"return_vehicle": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"noAlcoholTobacco": [
"assets/project-dossier-DpZZLWgt.js"
],
"Regime Aduaneiro Aplicável aos Mineiros na República da África do Sul": [
"assets/project-dossier-DpZZLWgt.js"
],
"arts1–4PDF1": [
"assets/project-dossier-DpZZLWgt.js"
],
"50% das imposições": [
"assets/project-dossier-DpZZLWgt.js"
],
"15.000MZN por mês": [
"assets/project-dossier-DpZZLWgt.js",
"assets/services-CKT8kwNs.js"
],
"sem concessão administrativa automática": [
"assets/project-dossier-DpZZLWgt.js"
],
"Continuidade do trabalho fiscal:": [
"assets/services-CKT8kwNs.js"
],
"sem calcular IVA devido ou dedução": [
"assets/services-CKT8kwNs.js"
],
"não ficam concluídas por esta entrega": [
"assets/services-CKT8kwNs.js"
],
"Cobertura digital deste incremento:": [
"assets/services-CKT8kwNs.js"
],
"Não representa cobertura digital integral": [
"assets/services-CKT8kwNs.js"
]
},
"assets": [
{
"file": "assets/project-dossier-DpZZLWgt.js",
"status": 200,
"sha256": "bd492385b73cdaa4b31ba4ed8a1f3835aec28fd3eacff625950de485eb0cf013"
},
{
"file": "assets/services-CKT8kwNs.js",
"status": 200,
"sha256": "18cc9b29024226d88121c524651947206534856a457f12adc5dbc3a0f024b483"
},
{
"file": "assets/project-dossier-document-CD793Irv.js",
"status": 200,
"sha256": "52576d773c360326de354469292dc7c9fc0521207f72d210c21e7063061fb427"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-B0s1g2CR.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"release": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"previous_release": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"release": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"previous_release": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"a665ee9c974adb48706027e66fdd71b773d7358c"
],
"finished_at": "2026-10-25T08:24:52.683786+00:00"
},
"log_file": "1792916570143696019.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 29.34s",
"OK (59 tests, 317 assertions)",
"# tests 597",
"# pass 597",
"# fail 0"
],
"log_bytes": 185197
},
"rollback_executed": false
},
"activation": "One joint Git fast-forward/webhook/installer;zero migrations/imports;accepted QA proofs reused;installed delta only",
"deduction_calculation": false,
"automatic_customs_concession": false
}
@@ -0,0 +1,20 @@
--- a/resources/js/lib/iva-objective-imports.ts
+++ b/resources/js/lib/iva-objective-imports.ts
@@ -38,5 +38,5 @@
}
function key(draft:Record<string,unknown>,book:ObjectiveImportBook):string{return JSON.stringify({version:objectiveImportVersion,catalog:objectiveImportTreatments,scope:acquisitionScope(draft),currency:draft.currency,location:draft.selection_labels??{},rows:book.rows});}
export function objectiveImportCurrent(draft:Record<string,unknown>,book:ObjectiveImportBook):boolean{return!!book.result&&book.result.sourceKey===key(draft,book);}
-export function recordObjectiveImports(draft:Record<string,unknown>,book:ObjectiveImportBook):ObjectiveImportBook{if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Indique linhas com identidades distintas;originais conservados.');const result:ObjectiveImportCalculation={version:objectiveImportVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),sourceKey:key(draft,book),source:objectiveImportSource,inputs:structuredClone(book.rows),rows:book.rows.map(r=>evaluateObjectiveImport(r,draft.currency))};const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveObjectiveImportBook(draft,next);return next;}
+export function recordObjectiveImports(draft:Record<string,unknown>,book:ObjectiveImportBook):ObjectiveImportBook{throw new Error('Novas versões P046 temporariamente suspensas; dados, histórico e relatórios conservados.');if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Indique linhas com identidades distintas;originais conservados.');const result:ObjectiveImportCalculation={version:objectiveImportVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),sourceKey:key(draft,book),source:objectiveImportSource,inputs:structuredClone(book.rows),rows:book.rows.map(r=>evaluateObjectiveImport(r,draft.currency))};const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveObjectiveImportBook(draft,next);return next;}
export function objectiveImportReportRows(draft:Record<string,unknown>):Array<[string,string,string,string]>{try{const b=objectiveImportBook(draft),r=b.result;if(!r)return[];return r.inputs.map((row,i)=>['IVA mensal',`P046 — ${row.period} — ${row.id}`,`${row.description};${r.rows[i].reason};IVA importação:${r.rows[i].importVat??'Indeterminado'};dedução:Não apurada`,`${r.opportunity};${objectiveImportCurrent(draft,b)?'Resultado actual':'Entradas alteradas;resultado histórico conservado'};versão${r.revision};${r.calculatedAt};${row.origin};importador${row.importer};documento${row.documentRef},${row.documentDate};âmbito${row.scope};factos${row.evidence};reutilização${row.reusedFrom||'Introdução directa'};correspondência${row.reference.treatment};condições internas confirmadas${row.reference.confirmed.join(',')}${row.reference.treatment==='annexI_goods'?`;AnexoI${row.reference.annexIItem??''},apenasAnexoI${String(row.reference.annexIOnly??'Por esclarecer')}`:row.reference.treatment==='pharma_manufacturing_inputs'?`;AnexoIII${row.reference.pharmaAnnexItem??''}`:''};${r.rows[i].source};sem alteração dos livros internos,ModeloA,campo11 ou totais.`]);}catch{return[['IVA mensal','P046','Dados não recuperáveis','Originais preservados;sem classificação por defeito.']];}}
--- a/resources/js/lib/iva-miners.ts
+++ b/resources/js/lib/iva-miners.ts
@@ -77,7 +77,7 @@
}
function key(draft:Record<string,unknown>,b:MinerBook):string{return JSON.stringify({version:minerVersion,scope:acquisitionScope(draft),currency:draft.currency,location:draft.selection_labels??{},rows:b.rows});}
export function minerCurrent(draft:Record<string,unknown>,b:MinerBook):boolean{return!!b.result&&b.result.sourceKey===key(draft,b);}
-export function recordMiners(draft:Record<string,unknown>,book:MinerBook):MinerBook{
+export function recordMiners(draft:Record<string,unknown>,book:MinerBook):MinerBook{throw new Error('Novas versões P059 temporariamente suspensas; dados, histórico e relatórios conservados.');
if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Identifique linhas distintas;originais preservados.');
const rows=book.rows.map(r=>evaluateMiner(r,draft.currency));
// Declarative quotas cover external operations too; detect contradictions inside this saved scope.
@@ -0,0 +1,386 @@
{
"status": "installed_P047_demonstrated_scope_partial_P058_L1_open",
"candidate": "6e1dc4104c4705908f88d3be64d8ef312c32d956",
"accepted_candidates": [
"6e1dc410"
],
"partial_candidate_preserved": "4f28fac5",
"base_installed": "e38aa74920412e545213b35b7585c847a0b8a969",
"coverage_complete_branches": {
"AUD-SIM-L1-P047": "Quatro famílias deCIVA12(1)b no âmbito demonstrado:partidos,mecenato,veículos diplomáticos/consulares eIPP;isenção de direitos demonstrada ou pressuposto expresso;pedido,redução e taxa0% distintos;sem concessão aduaneira automática."
},
"branch_count_complete": 1,
"coverage_partial_branches": {
"AUD-SIM-L1-P058": "Quatro percursos de bagagem:funcionário civil,militar,estudante/bolseiro e regresso antecipado por serviço doEstado;acompanhada/não acompanhada. Cobertura parcial,semfecho;57(2)b,propriedade exactamente180dias e delimitação63(2) continuam pendentes. Veículos anteriores preservados."
},
"coverage_label": "SóP047 conta como novo ramo entregue. P058 permanece pendente com avanço parcial explícito na interface e manifesto. Pressuposto de simulação não equivale a isenção concedida.",
"runtime_delta": [
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "bc1e0ef295b3b9de567126c8d414f990d05530ce4e39f48eb82189fe76da9c8c"
},
{
"path": "resources/js/components/simulation-remission-imports.tsx",
"sha256_LF": "af315ef59fcd152660fff5953d5ebcbbc67df6760723eb8ec7827cfd98d4e302"
},
{
"path": "resources/js/components/simulation-returnee-baggage-fields.tsx",
"sha256_LF": "a1d98f191c18334ce3125bffa5f18c2b30099406768768d5421873eede1c820a"
},
{
"path": "resources/js/components/simulation-returnees.tsx",
"sha256_LF": "c3fc9c14f5a8f0e992b8832ffbd3e936e057896d1c5ad60a7958c9ffc5d0dabc"
},
{
"path": "resources/js/lib/iva-remission-catalog.ts",
"sha256_LF": "9207aff882eaee7cca30f41e6521c5b28c8a9f5ca76a10ff90accc8b0320eab6"
},
{
"path": "resources/js/lib/iva-remission-imports.ts",
"sha256_LF": "f70b829d9873ada22391c839b8b030435cd56ccb8433310a2d26430c97657d30"
},
{
"path": "resources/js/lib/iva-returnee-baggage.ts",
"sha256_LF": "7af40b71a8e3e3e3ad0327529b549df715bda1eaec739de2e5c5eb06e6973409"
},
{
"path": "resources/js/lib/iva-returnees.ts",
"sha256_LF": "4e203d62fe3a758b0dfdfaf27988e84fd64dc1915f970e63141f1cd3506eccab"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "093ebb47f98fb132a370d54b3f93610e300cc4e4394bf390cb7867753c271736"
}
],
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d",
"state": "original archived;no automatic import,publication or fiscal activation"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56",
"state": "original archived;no automatic import,publication or fiscal activation"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e",
"state": "original archived;no automatic import,publication or fiscal activation"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5",
"state": "original archived;no automatic import,publication or fiscal activation"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8",
"state": "original archived;no automatic import,publication or fiscal activation"
}
],
"compiled_delta_markers_expected": [
"remissionImports",
"early_state_baggage",
"missionPlannedEnd",
"baggageRoute",
"Conferir quatro famílias e guardar versão",
"Regresso definitivo — veículos e bagagem (P058, cobertura parcial)",
"Aplicação legal directa; não é criada aprovação adicional",
"Cenário condicionado aos pressupostos expressos; não benefício concedido.",
"31/07/2026",
"fxSelection",
"formDecisionHash",
"sem calcular IVA devido ou dedução",
"Não representa cobertura digital integral"
],
"counts_before": {
"delivered": 128,
"QA": 1,
"functional_pending": 3,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 129,
"QA": 0,
"functional_pending": 3,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 129,
"QA": 0,
"functional_pending": 3,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-p047-families-qa-20261025.json",
"iva-l1-residuals-baggage-qa-20261025.json"
],
"authorization": "Tempo25/10 pede entrega agrupadaP047candidata6e1dc410 e avanço parcialP058;preservar concorrência e conferir só delta instalado.",
"preservation": "128fechos,dados,configuração,permissões,originais,relações e históricos conservados;inventário na matriz/manual existentes;provasQA aceites reutilizadas.",
"limitations_balance": [
"Classifica IVA por remissão apenas com isenção de direitos demonstrada ou pressuposto expresso; não concede benefício aduaneiro.",
"Não automatiza classificação pautal nem todos os procedimentos de cada regime referido. Condições específicas ausentes permanecem indeterminadas.",
"Pedido apresentado não concede;deferimento previsto é apenas cenário condicionado.",
"Sem direitos,ICE,base aduaneira,dedução/campo11,alienação ou soma aos livros anteriores.",
"P058 quatro percursosQA4f28fac5 preservados;três questões residuais permanecem abertas.",
"P084/P085 procedimentoTempo entregue preservado;falta somente correspondência específica de formulário/instrução e mapeamento.",
"P001 limitado05/06 da edição recebida;sem renumeração a partir de outros modelos.",
"Formalidades digitais não automatizadas e cálculo fiscal restante de ramos com âmbito limitado conservados;L1aberto."
],
"remaining_ids": [
"P058",
"P084",
"P085",
"P001"
],
"P058_closure": false,
"P084_P085_procedure": "Already delivered Tempo workflow preserved;not reopened;no additional approvals.",
"P001": "Only05/06 received edition",
"L1": "open",
"containment": "l1-p047-baggage-readonly-rollback-20261025.patch checked without applying;P047/newbaggage evaluation suspended on demand;readers/history,priorvehiclepaths and previous release retained",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "e38aa74920412e545213b35b7585c847a0b8a969",
"release": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"previous_release": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"release_revision": {
"commit": "e38aa74920412e545213b35b7585c847a0b8a969",
"branch": "main",
"built_at": "2026-10-25T09:07:12.105014+00:00",
"manifest_sha256": "9e01cbb05e4cc752f81a698bc88223dcbf5182b6eb2199e8f579ca2a11b6b2f3"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-p047-baggage-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "a554cd5c0a3bdbefaa66de744381c29202f796ad0d971923b5b6e77d0ae1ac66",
"files_sha256": "c48ae892aad058a3c5a6760f24bb001b910610b077734c7ecc075409fd67b71c",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_p047_baggage_restore_20261025",
"port": 55441,
"source_dump_sha256": "a554cd5c0a3bdbefaa66de744381c29202f796ad0d971923b5b6e77d0ae1ac66",
"active_database_writes": 0
}
},
"served_commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"release": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"previous_release": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 9,
"documentary_files_verified": 5,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "cd8cb9054a1e4f40d20ec85375f538fa"
},
"after": {
"rows": 106,
"checksum": "c4724af7e94f61b0d572cebfe639f7e0"
}
},
"sessions": {
"before": {
"rows": 129,
"checksum": "396e35b909de8fdb39e78ec10111536a"
},
"after": {
"rows": 130,
"checksum": "15db9e1b85d248073c1a91352ce9ad22"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"branch": "main",
"built_at": "2026-10-25T09:52:26.492458+00:00",
"manifest_sha256": "d74ef12d0fa825df158d7debd86e74939cf79c15be4f56663eceebde001f91c8"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"remissionImports": [
"assets/project-dossier-DNMY4ZC3.js"
],
"early_state_baggage": [
"assets/project-dossier-DNMY4ZC3.js",
"assets/services-R9ujphTN.js"
],
"missionPlannedEnd": [
"assets/project-dossier-DNMY4ZC3.js",
"assets/services-R9ujphTN.js"
],
"baggageRoute": [
"assets/project-dossier-DNMY4ZC3.js",
"assets/services-R9ujphTN.js"
],
"Conferir quatro famílias e guardar versão": [
"assets/services-R9ujphTN.js"
],
"Regresso definitivo — veículos e bagagem (P058, cobertura parcial)": [
"assets/services-R9ujphTN.js"
],
"Aplicação legal directa; não é criada aprovação adicional": [
"assets/services-R9ujphTN.js"
],
"Cenário condicionado aos pressupostos expressos; não benefício concedido.": [
"assets/project-dossier-DNMY4ZC3.js"
],
"31/07/2026": [
"assets/project-dossier-DNMY4ZC3.js"
],
"fxSelection": [
"assets/project-dossier-DNMY4ZC3.js",
"assets/services-R9ujphTN.js"
],
"formDecisionHash": [
"assets/project-dossier-DNMY4ZC3.js"
],
"sem calcular IVA devido ou dedução": [
"assets/services-R9ujphTN.js"
],
"Não representa cobertura digital integral": [
"assets/services-R9ujphTN.js"
]
},
"assets": [
{
"file": "assets/project-dossier-DNMY4ZC3.js",
"status": 200,
"sha256": "620f8a4c1404188313d86e27a3868f2e3b9f7b9dd1494518e452d7bf14498d2c"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-document-DjttKkD0.js",
"status": 200,
"sha256": "7e2d47538bf345c2a6bf095c256030df8633ae9eada1e0920f991598478be44f"
},
{
"file": "assets/services-R9ujphTN.js",
"status": 200,
"sha256": "1cd72c66c546d3761a3347872c709742fb5686300810376a44eba18c53fc9a4e"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-Bd3D7OAq.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"release": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"previous_release": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"release": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"previous_release": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"ada9629bb65ba186f54d970f0e41194888ebf53b"
],
"finished_at": "2026-10-25T09:52:29.511564+00:00"
},
"log_file": "1792921824175276336.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 30.38s",
"OK (59 tests, 317 assertions)",
"# tests 681",
"# pass 681",
"# fail 0"
],
"log_bytes": 199655
},
"rollback_executed": false
},
"activation": "Joint Git fast-forward/webhook/installer;no migrations/imports;accepted QA reused;installed delta only",
"simulation_assumptions": "Remain conditional;not administrative exemption grants",
"deduction_calculation": false
}
@@ -0,0 +1,20 @@
--- a/resources/js/lib/iva-remission-imports.ts
+++ b/resources/js/lib/iva-remission-imports.ts
@@ -29,6 +29,7 @@
const positive=(v:string)=>/^[1-9]\d{0,5}$/.test(v),nonnegative=(v:string)=>/^(0|[1-9]\d{0,5})$/.test(v);
export function evaluateRemission(r:RemissionRow,currency:unknown):RemissionLine{
const result:RemissionLine={id:r.id,status:'indeterminate',importVat:null,deduction:null,source:remissionSource,reason:''};const stop=(reason:string,status:RemissionLine['status']='indeterminate')=>({...result,status,reason});
+ return stop('Novas avaliaçõesP047 temporariamente suspensas;históricos e originais preservados.');
if(!remissionFamilies.some(([k])=>k===r.family))return stop('Escolha uma das quatro famílias documentadas.');
if(currency!=='MZN'||r.currency!==currency||!/^2026-(0[1-9]|1[0-2])$/.test(r.period)||!date(r.importDate)||r.importDate.slice(0,7)!==r.period)return stop('Indique moedaMZN e data/período2026 coerentes; não se presume conversão.');
if(!['projected','effective'].includes(r.origin)||![r.description,r.importer,r.scope,r.evidence,r.documentRef,r.rightsRef].every(v=>v.trim()))return stop('Identifique bens, importador, âmbito, documentos e fundamento da isenção de direitos ou pressupostos expressos.');
--- a/resources/js/lib/iva-returnee-baggage.ts
+++ b/resources/js/lib/iva-returnee-baggage.ts
@@ -19,6 +19,7 @@
function anniversary(s:string){const d=date(s)!;const month=d.getUTCMonth();d.setUTCFullYear(d.getUTCFullYear()+1);if(d.getUTCMonth()!==month)d.setUTCDate(0);return d.toISOString().slice(0,10);}
export function evaluateBaggage(row:ReturneeRow,currency:unknown):Line{
const rule=baggageTreatments.find(t=>t.id===row.treatment),base:Line={id:row.id,status:'indeterminate',importVat:null,deduction:null,reason:'',source:baggageSource+(rule?';'+rule.article:'')};const stop=(reason:string,status:Line['status']='indeterminate')=>({...base,status,reason});
+ return stop('Novas avaliações de bagagemP058 temporariamente suspensas;veículos,históricos e originais preservados.');
if(!rule)return stop('Percurso de bagagem não identificado;sem estender57(2)c/d à fixação de domicílio57(2)b.');
if(currency!=='MZN'||row.currency!==currency||!/^2026-(0[1-9]|1[0-2])$/.test(row.period)||!date(row.importDate)||row.importDate.slice(0,7)!==row.period)return stop('Indique importação2026 emMZN e data/período coerentes;sem conversão presumida.');
if(!['projected','effective'].includes(row.origin)||![row.description,row.beneficiary,row.scope,row.evidence,row.documentRef,row.missionRef??''].every(v=>v.trim()))return stop('Identifique beneficiário,bens,âmbito,documentos disponíveis e missão pública/estudo ou pressupostos expressos;reutilize referências,sem certificado adicional criado pelo portal.');
File diff suppressed because one or more lines are too long
@@ -0,0 +1,364 @@
{
"status": "installed_delta_verified_partial_L1",
"candidate": "d84883b801123664770ab6c69d7e7ddec148e352",
"base_installed": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"coverage_complete_branches": {
"AUD-SIM-L1-P087": [
"binding_lease"
],
"AUD-SIM-L1-P127": [
"business_onerous",
"business_free"
]
},
"branch_count_complete": 2,
"treatment_count": 3,
"QA_example_count": 3,
"runtime_delta": [
{
"path": "resources/js/lib/iva-property-transfers.ts",
"sha256_LF": "0d92edaf29b37cbe58f4d60ad3c61756f4cfdf71b8165e47438e9e3d7c59041e"
},
{
"path": "resources/js/components/simulation-property-transfers.tsx",
"sha256_LF": "ca2e125cf814ea3f797db9befbccbe6df3d1e9d91118b10af0cd2302e0e307e8"
},
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "2b5a10dfd5a180d008403e5fe27333553d95c373c43c3ff629b4a1b4ff44bdfe"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "d59ab0d244d342d3c4167766529499c3cd0cb866e6680c7e4db0508b9c9e62cb"
}
],
"counts_before": {
"delivered": 116,
"QA": 2,
"functional_pending": 14,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 118,
"QA": 0,
"functional_pending": 14,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 118,
"QA": 0,
"functional_pending": 14,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-property-transfers-qa-20261025.json"
],
"authorization": "Tempo explicitly requests one joint delivery ofd84883b8,P087/P127,preserving concurrent changes and installeddelta only",
"scope": "2026;P087baseMZN exacta,classificação pode manter-se com base indeterminada.P127classificação própria de não exigibilidade,sem preencher base/IVA comzero.Sem exigibilidade fiscal calculada,nova dedução,campo11,regularização ou totaisModeloA.P125categoria/elegibilidademargem eP123consignação mantidos separados.",
"source": "CIVA Lei13/2016:3(3)a PDF6/p1426(264);3(5) PDF7/p1426(265);15(1) PDF13/p1426(271),páginas visualmente conferidas.Lei22/2022PDF3 mantém15(1);Lei10/2025PDF12 mantém3(3)a/3(5),não altera15.Rectificação2017 sem alteração destas disposições.Acervo seisPDF inventariado/hashes conferidos.",
"meaning": {
"P087": "Entrega material de bens em execução de contrato de locação com cláusula vinculante para ambas as partes de transferência da propriedade3(3)a. Classificação separada da base15(1):contraprestação obtida/a obter,sem próprioIVA,com composição/âmbito identificados. Não usar15(2)a da consignação,nem transformar mera opção de compra em cláusula vinculante.",
"P127": "Cessão onerosa ou gratuita de estabelecimento,totalidade ou parte de património susceptível de constituir ramo independente3(5). Adquirente é ou passa pela aquisição a sujeito passivo2(1)a e pratica operações com direito à dedução. Imposto não devido nem exigível no âmbito demonstrado;não isenção genérica,nem base/taxa zero ou nova dedução. Não impor condição autónoma de continuidade além dos factos da fonte."
},
"classification_and_scope": "P087 bindinglease3(3)a,base15(1),notconsignment15(2)a;P127onerous/freebusiness3(5),autonomousscope/acquirer2(1)a/deductionactivities;nozero/genericexemption/newdeduction.",
"preservation": "116priorclosures andpartialP084/P085 preserved;acceptedperbranchQA reused;one integration/backup/realisolatedrestore/check forwhole set",
"partial_P084_P085": "Preparation/conditional simulation only;benefits pending;no closure",
"limits": "L1aberto;P00105/06;P121digital/P084/P085pendentes;bebidasL2/L3;Estatísticas/IAadiadas",
"containment": "l1-property-transfers-readonly-rollback-20261025.patch,checked only,not applied;blocks newP087/P127calculations,preserves readers/history/otherbranches",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"release": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"previous_release": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"release_revision": {
"commit": "ce9d649fbf631b584cb521ce120c98a4cb459c13",
"branch": "main",
"built_at": "2026-10-24T22:42:39.117961+00:00",
"manifest_sha256": "eeab5319e220e8017f0f06e4b4ba2572ccadb5be465cde82d696ac0e64f5ae0c"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-property-transfers-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "30ce2f710bb55e4222d598277fa92ecce8fc6064e49bca63dff2da128e233c2f",
"files_sha256": "13cd195e51574749c71ffff895d20b5d38044e0c38582af8e51e01fca4765540",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_property_transfers_restore_20261024",
"port": 55441,
"source_dump_sha256": "30ce2f710bb55e4222d598277fa92ecce8fc6064e49bca63dff2da128e233c2f",
"active_database_writes": 0
}
},
"next_dependency_groups_authorized": {
"transversal_first": [
"P104",
"P131",
"P132"
],
"transversal_then": [
"P002"
],
"digital": [
"P121",
"P130"
],
"travel_and_events": [
"P129",
"P133"
],
"imports_and_benefits": [
"P046",
"P047",
"P058",
"P059"
],
"specific_documentary_nonblocking": [
"P084",
"P085",
"P001"
]
},
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"served_commit": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"release": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"previous_release": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "f2f9da0d12aea236c33cdccfe3bbb124"
},
"after": {
"rows": 106,
"checksum": "966c487af6b59f1224527d7c6cfa474d"
}
},
"sessions": {
"before": {
"rows": 105,
"checksum": "486e34e2b2dab1f59fcc403f4b2741d8"
},
"after": {
"rows": 106,
"checksum": "e975b8b2e1359ec0273b5ebe826e395d"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"branch": "main",
"built_at": "2026-10-24T22:52:27.789891+00:00",
"manifest_sha256": "52e638801184578d481f490734a4b98f8f557625e81fd942348a2067bfc0f58b"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"property-transfers/1": [
"assets/project-dossier-DUE7gpGm.js"
],
"binding_lease": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
],
"business_onerous": [
"assets/project-dossier-DUE7gpGm.js"
],
"business_free": [
"assets/project-dossier-DUE7gpGm.js"
],
"propertyTransfers": [
"assets/project-dossier-DUE7gpGm.js"
],
"materialDelivery": [
"assets/project-dossier-DUE7gpGm.js"
],
"bindingProperty": [
"assets/project-dossier-DUE7gpGm.js"
],
"autonomousBusiness": [
"assets/project-dossier-DUE7gpGm.js"
],
"acquirer2a": [
"assets/project-dossier-DUE7gpGm.js"
],
"deductionActivities": [
"assets/project-dossier-DUE7gpGm.js"
],
"contractRef": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
],
"propertyClauseRef": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
],
"acquirerRef": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
],
"autonomousRef": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
],
"activitiesRef": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
],
"considerationRef": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
],
"compositionConfirmed": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
],
"goods_transmission": [
"assets/project-dossier-DUE7gpGm.js"
],
"tax_not_exigible_3_5": [
"assets/project-dossier-DUE7gpGm.js"
],
"consideration": [
"assets/project-dossier-DUE7gpGm.js",
"assets/services-B1VsA-Tn.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-Cq8oizup.js",
"status": 200,
"sha256": "27777ad09c9517041644bb2b7bfcd7f7058e4f6b0c1eec22722f3250aac3c7c9"
},
{
"file": "assets/project-dossier-DUE7gpGm.js",
"status": 200,
"sha256": "2fc2015b97935391a9db425d0a3431dcc9f1792d82053b97ffcefa31e2acabb3"
},
{
"file": "assets/simulation-form-CPZAFZU3.js",
"status": 200,
"sha256": "c6bcf64e60a5eeac0cafe3dc055dc5544162f21942ee08b34d51bc6d52947567"
},
{
"file": "assets/services-B1VsA-Tn.js",
"status": 200,
"sha256": "592b0a0dcb6b7338a9109238c89ce63630546fb92d7be213c49d28752574120e"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-Nmu2R55A.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"release": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"previous_release": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "92eaa93570b96561a0d2ab60787b7af8171c9529",
"release": "/var/www/investmoz-homologacao/releases/92eaa93570b96561a0d2ab60787b7af8171c9529-d4d7a2a2",
"previous_release": "/var/www/investmoz-homologacao/releases/ce9d649fbf631b584cb521ce120c98a4cb459c13-f7d31a27",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"92eaa93570b96561a0d2ab60787b7af8171c9529"
],
"finished_at": "2026-10-24T22:52:30.469110+00:00"
},
"log_file": "1792882239391904096.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 27.57s",
"OK (59 tests, 317 assertions)",
"# tests 444",
"# pass 444",
"# fail 0"
],
"log_bytes": 153295
},
"rollback_executed": false
},
"activation": "OnejointGit fast-forward/webhook/installer;zero migrations/imports"
}
@@ -0,0 +1,10 @@
--- a/resources/js/lib/iva-property-transfers.ts
+++ b/resources/js/lib/iva-property-transfers.ts
@@ -47,6 +47,7 @@
function key(draft:Record<string,unknown>,book:PropertyTransferBook):string{return JSON.stringify({version:propertyTransferVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},currency:draft.currency,rows:book.rows});}
export function propertyTransferCurrent(draft:Record<string,unknown>,book:PropertyTransferBook):boolean{return!!book.result&&book.result.sourceKey===key(draft,book);}
export function recordPropertyTransfers(draft:Record<string,unknown>,book:PropertyTransferBook):PropertyTransferBook{
+ throw new Error('Novos cálculos P087/P127 temporariamente suspensos;dados,histórico,relatórios e restantes ramos preservados.');
if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Indique operações com identificadores distintos;originais conservados.');
const result:PropertyTransferCalculation={version:propertyTransferVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),location:JSON.stringify(draft.selection_labels??{}),sourceKey:key(draft,book),source:propertyTransferSource,inputs:structuredClone(book.rows),rows:book.rows.map(row=>evaluatePropertyTransfer(row,draft.currency))};
const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};savePropertyTransferBook(draft,next);return next;
@@ -1,5 +1,5 @@
{
"status": "ready_after_fresh_authenticated_preflight_and_verified_backup_restore",
"status": "installed_delta_verified_partial_L1",
"candidate": "0ebb20c86a8cfcee9fae56c38f6bfdc6b2ab80ab",
"base_installed": "6c12aabb3ac7f8296025a2af0408390bfe292bdb",
"coverage_complete_branches": {
@@ -46,8 +46,8 @@
"total": 133
},
"counts_current": {
"delivered": 111,
"QA": 3,
"delivered": 114,
"QA": 0,
"functional_pending": 18,
"documentary": 1,
"total": 133
@@ -70,7 +70,7 @@
"P093": "Organizador em nome próprio por conta do comitente, contrato de comissão e venda em leilão: base = facturado ao comprador menos líquido do comitente menos IVA próprio identificado. Líquido = adjudicação menos comissão. IVA desconhecido não é zero.",
"P125": "Classificação própria: bem usado reutilizável, arte, colecção ou antiguidade superior a 100 anos; critérios de 3(6) conservados. Categoria identificada não activa automaticamente a margem. Tiragem limitada a 200 exemplares e cerâmica única executada/assinada pelo artista nos percursos respectivos."
},
"classification_margin_separation": "P125 classifies goods;P092/P093 independently require eligible supplier/principal,territorial and regimeconditions;no automaticmargineligibility",
"classification_margin_separation": "P125 category/characteristics are independent fromP092/P093eligibility;eligible supplier/principal,nationalacquisition,internal taxable operation andregimeconditions remain explicit. No automaticmargin fromcategory;no calculatedVAT,newdeduction,regularisation orfield11.",
"preservation": "111priorclosures andpartialP084/P085 preserved;acceptedperbranchQA reused;one integration/backup/realisolatedrestore/check forwhole set",
"partial_P084_P085": "Preparation/conditional simulation only;benefits pending;no closure",
"limits": "L1aberto;P00105/06;P121digital/P084/P085pendentes;bebidasL2/L3;Estatísticas/IAadiadas",
@@ -139,5 +139,206 @@
"source_dump_sha256": "d7c0767888ce08fcb078020cefe7a83634849939c6d436911475d6779a640c01",
"active_database_writes": 0
}
}
},
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"served_commit": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"release": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"previous_release": "/var/www/investmoz-homologacao/releases/6c12aabb3ac7f8296025a2af0408390bfe292bdb-4c33615a",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "fb154746804453a4cbcc03914de28537"
},
"after": {
"rows": 106,
"checksum": "6a5c1ffe44818f85d2b269d43fc21819"
}
},
"sessions": {
"before": {
"rows": 99,
"checksum": "a938b9c181045315f55009c1c63700ca"
},
"after": {
"rows": 100,
"checksum": "792acde047494f2f7d5434f365a41f24"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"branch": "main",
"built_at": "2026-10-24T22:32:38.963919+00:00",
"manifest_sha256": "ee5b4b3aa24f1b2fabf6ee212c03211e085b05dab858693f80907b23569c0aab"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"secondhand-individual-margin/1": [
"assets/project-dossier-DO_yn5hw.js"
],
"reseller_margin": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"auction_margin": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"regulatedSecondhands": [
"assets/project-dossier-DO_yn5hw.js"
],
"reusableUsed": [
"assets/project-dossier-DO_yn5hw.js"
],
"notRenewedTransformed": [
"assets/project-dossier-DO_yn5hw.js"
],
"notPreciousExcluded": [
"assets/project-dossier-DO_yn5hw.js"
],
"artistOriginal": [
"assets/project-dossier-DO_yn5hw.js"
],
"editionCount": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"ceramicUniqueSigned": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"postalNotCirculating": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"ageYears": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"grossSale": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"purchasePrice": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"principalCommission": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"principalNet": [
"assets/project-dossier-DO_yn5hw.js"
],
"baseDivisorRate": [
"assets/project-dossier-DO_yn5hw.js"
],
"ownVatRef": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"domesticPurchase": [
"assets/services-C_SP2bTq.js",
"assets/project-dossier-DO_yn5hw.js"
],
"IVA: Indeterminado": [
"assets/project-dossier-DO_yn5hw.js"
]
},
"assets": [
{
"file": "assets/services-C_SP2bTq.js",
"status": 200,
"sha256": "cd0f5eb7d3365562868efc88bbd08321418f2aafcc8148014cdabbffb7192690"
},
{
"file": "assets/simulation-form-CPZAFZU3.js",
"status": 200,
"sha256": "c6bcf64e60a5eeac0cafe3dc055dc5544162f21942ee08b34d51bc6d52947567"
},
{
"file": "assets/project-dossier-document-BHzhL-Pj.js",
"status": 200,
"sha256": "a06662377c922f93563c01d4f5d1bd33689fe816cff8b17a74c335363ffb7711"
},
{
"file": "assets/project-dossier-DO_yn5hw.js",
"status": 200,
"sha256": "9ef7557d63623da554cfeb37869e7af0e47764a6d4e18ddc118cff0e09e25e23"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-BektOE1s.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"release": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"previous_release": "/var/www/investmoz-homologacao/releases/6c12aabb3ac7f8296025a2af0408390bfe292bdb-4c33615a",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "019bcbad6c5a2371e4ca55f7b687447316606fb1",
"release": "/var/www/investmoz-homologacao/releases/019bcbad6c5a2371e4ca55f7b687447316606fb1-8865b05d",
"previous_release": "/var/www/investmoz-homologacao/releases/6c12aabb3ac7f8296025a2af0408390bfe292bdb-4c33615a",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"019bcbad6c5a2371e4ca55f7b687447316606fb1"
],
"finished_at": "2026-10-24T22:32:41.633729+00:00"
},
"log_file": "1792881052939787284.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 27.36s",
"OK (59 tests, 317 assertions)",
"# tests 431",
"# pass 431",
"# fail 0"
],
"log_bytes": 150822
},
"rollback_executed": false
},
"activation": "OnejointGit fast-forward/webhook/installer;zero migrations/imports"
}
@@ -0,0 +1,434 @@
{
"status": "installed_P104_operational_scope_partial_P058_P084_P085_L1_open",
"candidate": "7b6a95a7181be5af622b0b665a31010ce93d6d5c",
"accepted_candidates": [
"7b6a95a7"
],
"base_installed": "a665ee9c974adb48706027e66fdd71b773d7358c",
"coverage_complete_branches": {
"AUD-SIM-L1-P104": "Procedimento operacional daTempo25/10:compra/venda segundo natureza/perspectiva;média comercial de referênciaBM na submissão;fonte,boletim,taxa,sentido,original/convertido e histórico conservados;excepções fiscais identificadas.Sem activarIVA/dedução/base de outros livros."
},
"branch_count_complete": 1,
"coverage_partial_branches": {
"AUD-SIM-L1-P084": "PedidoMF/AT→apresentado→decisão com despacho privado,número/data/emitente/âmbito→formulário com despacho;interesse público/fins sociais;correspondência específica do formulário não é presumida.",
"AUD-SIM-L1-P085": "Mesmo acompanhamento operacional com finalidade de atenuar calamidades e aquisição;sem extensão automática à importação;correspondência de formulário permanece parcial.",
"AUD-SIM-L1-P058": "Três percursos de veículos no regresso63:isenção/80%/separado50%;sem transplantarP059;bagagem/outros bens e remissão57(2)b por concluir;180dias exactos indeterminados."
},
"coverage_label": "ApenasP104 conta como novo ramo entregue;P058/P084/P085 continuam pendentes com cobertura parcial explícita.",
"runtime_delta": [
{
"path": "app/Http/Controllers/Api/V1/SimulationOfferDocumentController.php",
"sha256_LF": "b7359dcd66fa01e76d55ad729615f7cd4f0eb45ed88ec7b32d7997b8cfcb89c9"
},
{
"path": "app/Http/Middleware/EnsureSimulationRecoveryCookie.php",
"sha256_LF": "d10c2f54772233fcffe4f8f24c62a2282537bff1085d43ca7c1e8774070f5316"
},
{
"path": "resources/js/components/simulation-currency-events.tsx",
"sha256_LF": "4c81d2cd7e6835ee8102a8323991b494d8b52a21198a816c9f93f973c0da55b6"
},
{
"path": "resources/js/components/simulation-fx-selection.tsx",
"sha256_LF": "39bb6d87d404745b0b66349bc11626545a3672ae27321ce9b4658416592059bf"
},
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "b695e87089b08f987847e28413cd9bacca12b25f1171db4915f4a5dd082f5180"
},
{
"path": "resources/js/components/simulation-offer-preparations.tsx",
"sha256_LF": "9e70725e707ff4236f8edbaa965cb72d42407e010053a23f0e86bae7bbc2eaf7"
},
{
"path": "resources/js/components/simulation-offer-workflow.tsx",
"sha256_LF": "4cf2354d01b1f6c60598f1a495ee02946c5e565434078c61928ec7d13fe43cc6"
},
{
"path": "resources/js/components/simulation-returnees.tsx",
"sha256_LF": "a8b457344ec93d0db6d7a169b2f0b77dacb916b4943324a19b2580a893191cd4"
},
{
"path": "resources/js/components/simulation-travel-events.tsx",
"sha256_LF": "d5690d7abbb2b70653ec6cb42e75260347e7190c5d3a474983e6fd318d0606c4"
},
{
"path": "resources/js/lib/iva-currency-events.ts",
"sha256_LF": "cc9f2045d302d7987310da4006cc250fc5c99a27397918d166d649bfc32fab08"
},
{
"path": "resources/js/lib/iva-fx-selection.ts",
"sha256_LF": "9aa07ad443bc777b80510a3b5bd6aff9ddb9814d2450f3c690e531e74d71d998"
},
{
"path": "resources/js/lib/iva-offer-package.ts",
"sha256_LF": "240b274933e669a8c6def3b2324507c421bcd90ccbca82b58f6aab72cdeba5f5"
},
{
"path": "resources/js/lib/iva-offer-preparations.ts",
"sha256_LF": "b57abb97295493d0a9c3bb48941a7bb250f4fbec367a8b575afdbb14c32d1751"
},
{
"path": "resources/js/lib/iva-offer-workflow.ts",
"sha256_LF": "6ee9df722441639ab674b2457e5e9a075dc6ef326eab718d20295572297d5f86"
},
{
"path": "resources/js/lib/iva-returnees.ts",
"sha256_LF": "f91988669672e92527dba7e374fadebe71973f58a8459181d01e1684f10aab25"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "fc54a64b0e7bc218f30031355497c1ad98c84e5f2faf51945d5aa70e8f115864"
},
{
"path": "routes/api.php",
"sha256_LF": "f0b1b2b6943d23d27d54f6ffc58fd5caca46760ecec97a6da85faf477e5fef4e"
}
],
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb",
"state": "original archived;no automatic import,publication or fiscal activation"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c",
"state": "original archived;no automatic import,publication or fiscal activation"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4",
"state": "original archived;no automatic import,publication or fiscal activation"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a",
"state": "original archived;no automatic import,publication or fiscal activation"
}
],
"compiled_delta_markers_expected": [
"submissionDate",
"bulletinPerspective",
"fxSelection",
"scopeConfirmed",
"formDecisionHash",
"returneeImports",
"ownershipAssessment",
"Pedido → decisão → formulário com despacho",
"Conferir selecção e impacto",
"Confirmar selecção nesta linha",
"Recuperar anexos privados desta gravação",
"Preparar formulário com despacho associado",
"Regresso definitivo — veículos (P058, cobertura parcial)",
"Sem cálculo de IVA ou dedução",
"Continuidade do trabalho fiscal:",
"sem calcular IVA devido ou dedução",
"Cobertura digital deste incremento:",
"Não representa cobertura digital integral"
],
"counts_before": {
"delivered": 127,
"QA": 1,
"functional_pending": 4,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 128,
"QA": 0,
"functional_pending": 4,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 128,
"QA": 0,
"functional_pending": 4,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-tempo-offers-fx-qa-20261025.json"
],
"authorization": "Tempo25/10 pede entrega conjunta da candidata7b6a95a7,separandoP104concluído deP058/P084/P085parciais;preservar históricos/conferir sódelta.",
"preservation": "127fechos/dados/configuração/permissões/originais/relações/históricos conservados;nenhuma perda confirmada;provasQA75frontend/API2/37,types/build/UI reutilizadas.",
"limitations_balance": [
"P104 é procedimento operacional da Tempo,não atribuição àLei2/2006 de uma regra cambial não demonstrada;excepção fiscal identificada por disposição/âmbito/taxa/data",
"Não activa cálculo de IVA,dedução ou reavaliação de livros anteriores;conversão reutiliza aritmética existente a seis casas decimais,sem nova regra de arredondamento fiscal",
"P084/P085 não são fechados por este avanço;ZIP contém preparação e anexos,não recibo de submissão nem formulário oficial inventado",
"Anexos privados reutilizamdocuments/scan existente;sem migração;pendente de scan impede descarga,sem criar certificado fiscal",
"P058 é parcial;bagagem e remissões por concluir;sem extensão das condiçõesP059",
"Formais digitais e cálculo fiscal de viagens/eventos mantêm limitações aceites;bebidasL2/L3,Estatísticas/IAadiadas;L1aberto"
],
"remaining_ids": [
"P047",
"P058",
"P084",
"P085",
"P001"
],
"P104_closure": "operational_scope_defined_by_Tempo_only",
"P084_P085_closure": false,
"P058_closure": false,
"L1": "open",
"containment": "l1-tempo-offers-fx-readonly-rollback-20261025.patch verified without applying;retains readers/history/downloads and unrelated branches;previous release retained",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"release": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"previous_release": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"release_revision": {
"commit": "a665ee9c974adb48706027e66fdd71b773d7358c",
"branch": "main",
"built_at": "2026-10-25T08:24:49.843479+00:00",
"manifest_sha256": "4aa78f9db6db6dcf31222b9bff45f5dfbaa0dc071225fcc3de4f0f02f0d03cd8"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-tempo-offers-fx-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "15f6d2f8bee7c1b21ba02406e311d1a6e203dfe3081aa84997c3057ea19c2a73",
"files_sha256": "bb0db583f66e8f890808573a7f63d36f67242306f90cab2a3dc07e412ee6edef",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_tempo_offers_fx_restore_20261025",
"port": 55441,
"source_dump_sha256": "15f6d2f8bee7c1b21ba02406e311d1a6e203dfe3081aa84997c3057ea19c2a73",
"active_database_writes": 0
}
},
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"served_commit": "e38aa74920412e545213b35b7585c847a0b8a969",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "e38aa74920412e545213b35b7585c847a0b8a969",
"release": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"previous_release": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 17,
"documentary_files_verified": 4,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "b9e4d79e3630947e4211403147f3205e"
},
"after": {
"rows": 106,
"checksum": "7d5f83ca87d426b646e62b3e7d94979e"
}
},
"sessions": {
"before": {
"rows": 125,
"checksum": "bc46e3ec1db00b4c7c0b5208afbdb625"
},
"after": {
"rows": 126,
"checksum": "e7acfdf24b4808f0168154e2bdacf1ab"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "e38aa74920412e545213b35b7585c847a0b8a969",
"branch": "main",
"built_at": "2026-10-25T09:07:12.105014+00:00",
"manifest_sha256": "9e01cbb05e4cc752f81a698bc88223dcbf5182b6eb2199e8f579ca2a11b6b2f3"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"submissionDate": [
"assets/services-D3hdAJ2p.js",
"assets/project-dossier-GNi9gCOX.js"
],
"bulletinPerspective": [
"assets/services-D3hdAJ2p.js",
"assets/project-dossier-GNi9gCOX.js"
],
"fxSelection": [
"assets/services-D3hdAJ2p.js",
"assets/project-dossier-GNi9gCOX.js"
],
"scopeConfirmed": [
"assets/services-D3hdAJ2p.js",
"assets/project-dossier-GNi9gCOX.js"
],
"formDecisionHash": [
"assets/project-dossier-GNi9gCOX.js"
],
"returneeImports": [
"assets/project-dossier-GNi9gCOX.js"
],
"ownershipAssessment": [
"assets/services-D3hdAJ2p.js",
"assets/project-dossier-GNi9gCOX.js"
],
"Pedido → decisão → formulário com despacho": [
"assets/services-D3hdAJ2p.js"
],
"Conferir selecção e impacto": [
"assets/services-D3hdAJ2p.js"
],
"Confirmar selecção nesta linha": [
"assets/services-D3hdAJ2p.js"
],
"Recuperar anexos privados desta gravação": [
"assets/services-D3hdAJ2p.js"
],
"Preparar formulário com despacho associado": [
"assets/services-D3hdAJ2p.js"
],
"Regresso definitivo — veículos (P058, cobertura parcial)": [
"assets/services-D3hdAJ2p.js"
],
"Sem cálculo de IVA ou dedução": [
"assets/services-D3hdAJ2p.js",
"assets/project-dossier-GNi9gCOX.js"
],
"Continuidade do trabalho fiscal:": [
"assets/services-D3hdAJ2p.js"
],
"sem calcular IVA devido ou dedução": [
"assets/services-D3hdAJ2p.js"
],
"Cobertura digital deste incremento:": [
"assets/services-D3hdAJ2p.js"
],
"Não representa cobertura digital integral": [
"assets/services-D3hdAJ2p.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-BfKP8U8W.js",
"status": 200,
"sha256": "d0a6dfe53169188f11fde6c8c7cec979035661fca32af4ed6722714b3df9896a"
},
{
"file": "assets/services-D3hdAJ2p.js",
"status": 200,
"sha256": "5c98a63f36d8b1c1898dce85f98025114bd1049395f3d0db3e094fed6e9bc670"
},
{
"file": "assets/project-dossier-GNi9gCOX.js",
"status": 200,
"sha256": "aea35e19d5ccf766185c3b85f271ae37131903ccc4106b876c56354c9dda3ad3"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-DPOFdqTY.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "e38aa74920412e545213b35b7585c847a0b8a969",
"release": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"previous_release": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "e38aa74920412e545213b35b7585c847a0b8a969",
"release": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"previous_release": "/var/www/investmoz-homologacao/releases/a665ee9c974adb48706027e66fdd71b773d7358c-67adcc0e",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"e38aa74920412e545213b35b7585c847a0b8a969"
],
"finished_at": "2026-10-25T09:07:14.749876+00:00"
},
"log_file": "1792919112275510355.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 30.07s",
"OK (59 tests, 317 assertions)",
"# tests 620",
"# pass 620",
"# fail 0"
],
"log_bytes": 190206
},
"rollback_executed": false
},
"activation": "Joint Git fast-forward/webhook/installer;no migrations/content imports;accepted QA proofs reused;installed delta only",
"deduction_calculation": false,
"automatic_historical_recalculation": false
}
@@ -0,0 +1,33 @@
--- a/resources/js/lib/iva-currency-events.ts
+++ b/resources/js/lib/iva-currency-events.ts
@@ -44,7 +44,7 @@
if(!/^2026-(0[1-9]|1[0-2])$/.test(row.period)||!['projected','effective'].includes(row.origin)||date(row.documentDate)===null||![row.description,row.operationRef,row.documentRef,row.scope,row.evidence].every(v=>!!v.trim()))return stop('Identifique mês de contexto2026,operação,documento/data,âmbito e factos ou pressupostos expressos.');
if(row.factsConfirmed==='no')return stop('Os factos declarados afastam este percurso;sem isenção ou IVA zero por defeito.','not_applicable');
if(row.factsConfirmed!=='yes')return stop('Factos do percurso por esclarecer;não usar datas ou câmbio por defeito.');
- if(row.treatment==='foreign_scenario'){
+ if(row.treatment==='foreign_scenario'){if(row.fxSelection)return stop('Novas conversões operacionaisP104 temporariamente suspensas;históricos e outros eventos conservados.');
const amount=decimal(row.amount),fx=decimal(row.fxRate,8);
if(row.currency!=='MZN'||!['USD','EUR','ZAR','GBP','CNY','BRL','JPY','CHF','AUD','CAD'].includes(row.sourceCurrency)||amount===null||fx===null||fx===0n||date(row.fxDate)===null||![row.fxSource,row.fxRuleRef].every(v=>!!v.trim())||!['mzn_per_unit','units_per_mzn'].includes(row.fxDirection))return stop('Indique moeda original,valor,taxa positiva,direcção,data,fonte e regra/pressuposto expresso.Sem substituir moeda original porMZN ou reutilizar taxa de apresentação como regra fiscal.');
result.scenarioAmount=money(row.fxDirection==='mzn_per_unit'?convertScaledAmount(amount,fx,100000000n):(amount*100000000n+fx/2n)/fx);
--- a/resources/js/lib/iva-offer-workflow.ts
+++ b/resources/js/lib/iva-offer-workflow.ts
@@ -8,7 +8,7 @@
export function offerWrittenRequest(row:OfferPreparation,w:OfferWorkflow):string{return`Ao ${w.recipient}\nAssunto:Pedido de isenção — ${row.branch}\nEntidade/destinatário:${row.beneficiary}\nFinalidade:${row.purpose}\n${row.branch==='P084'?'Justificação do interesse público/fins sociais:'+row.evidence:'Calamidade:'+row.disaster+';finalidade humanitária:'+row.humanitarianPurpose}\nBens:${row.description}\nOperação:${row.operation};período:${row.period};valor de referência:${row.amount} ${row.currency}\nDocumentos:${row.availableDocuments||row.documentRef}\n${w.writtenRequest}\nPreparação InvesteMoz;a apresentação ocorre fora do portal. Não constitui concessão.`;}
export function offerWorkflowApplied(row:OfferPreparation):{applied:boolean;reason:string}{const w=row.workflow,r=row.request;if(!w||!r||r.state!=='granted')return{applied:false,reason:'Sem despacho de deferimento registado;mantém-se hipótese condicionada.'};if(!r.decisionRef.trim()||!validDate(r.decisionOn)||!w.decisionIssuer.trim()||!offerAttachmentValid(w.decisionAttachment))return{applied:false,reason:'Despacho recebido incompleto:número,data,emitente e anexo por registar.'};if(w.scopeConfirmed!=='yes'||w.scopeKey!==offerScopeKey(row))return{applied:false,reason:'Correspondência desta linha ao âmbito do despacho não confirmada ou dados alterados;sem extensão automática.'};if((!r.operationScope?.trim()&&r.operation&&r.operation!==row.operation)||(!r.periodScope?.trim()&&/^\d{4}-\d{2}$/.test(row.period)&&(row.period<r.periodFrom.slice(0,7)||row.period>r.periodTo.slice(0,7))))return{applied:false,reason:'A operação ou o período desta linha está fora do âmbito expresso do despacho;sem extensão automática.'};const conditions=row.branch==='P084'?[row.nationalInstitution,row.publicSocialInstitution,row.goodsSuitable,row.publicInterestUse]:[row.mitigation];if(conditions.some(v=>v!=='yes')||!row.description||!row.beneficiary||!row.purpose||!row.operation||(row.branch==='P085'&&(row.operation!=='acquisition'||!row.disaster||!row.humanitarianPurpose)))return{applied:false,reason:'Condições próprias do tratamento por demonstrar;despacho não alarga o fundamento legal.'};return{applied:true,reason:`Tratamento deferido apenas nesta linha:${r.goods};${r.operationScope||r.operation};${r.periodScope||r.periodFrom+' a '+r.periodTo};condições:${r.conditions}. Despacho${r.decisionRef},${r.decisionOn},${w.decisionIssuer}. Sem extensão às restantes linhas,períodos ou oportunidades;sem dedução automática.`};}
function validDate(v:string){const d=new Date(v+'T00:00:00Z');return /^\d{4}-\d{2}-\d{2}$/.test(v)&&Number.isFinite(d.getTime())&&d.toISOString().slice(0,10)===v;}
-export function recordOfferWorkflow(row:OfferPreparation,stage:'request'|'presented'|'decision'|'form'):OfferPreparation{
+export function recordOfferWorkflow(row:OfferPreparation,stage:'request'|'presented'|'decision'|'form'):OfferPreparation{throw new Error('Novos estados do percurso de ofertas temporariamente suspensos;rascunhos,anexos e históricos conservados.');
const w=structuredClone(row.workflow??emptyOfferWorkflow()),r=structuredClone(row.request);if(!r)throw Error('Prepare primeiro o pedido.');
if(!w.recipient.trim()||!row.beneficiary.trim()||!row.description.trim()||!row.purpose.trim()||!row.operation)throw Error('Indique entidade,finalidade,bens,operação e destinatário do pedido;rascunho incompleto pode ser guardado.');
if(stage==='presented'&&(!r.reference.trim()||!validDate(r.presentedOn)||r.state!=='presented'))throw Error('Registe referência,data e estado apresentado;submissão fora do InvesteMoz.');
--- a/resources/js/lib/iva-returnees.ts
+++ b/resources/js/lib/iva-returnees.ts
@@ -41,7 +41,7 @@
}
function key(draft:Record<string,unknown>,b:ReturneeBook){return JSON.stringify({version:1,scope:acquisitionScope(draft),currency:draft.currency,location:draft.selection_labels??{},rows:b.rows});}
export function returneeCurrent(draft:Record<string,unknown>,b:ReturneeBook){return !!b.result&&b.result.sourceKey===key(draft,b);}
-export function recordReturnees(draft:Record<string,unknown>,b:ReturneeBook):ReturneeBook{
+export function recordReturnees(draft:Record<string,unknown>,b:ReturneeBook):ReturneeBook{throw new Error('Novas versões parciaisP058 temporariamente suspensas;histórico e originais conservados.');
if(!b.rows.length||new Set(b.rows.map(r=>r.id)).size!==b.rows.length)throw Error('Identifique linhas distintas;originais preservados.');
const rows=b.rows.map(r=>evaluateReturnee(r,draft.currency));for(let i=0;i<b.rows.length;i++){const r=b.rows[i];if(!['exempt','reduced'].includes(rows[i].status))continue;if(b.rows.some((peer,j)=>j!==i&&peer.beneficiary===r.beneficiary&&peer.origin===r.origin&&date(peer.importDate)&&evaluateReturnee(peer,draft.currency).status!=='not_applicable'&&(peer.importDate<=r.importDate?r.importDate<years(peer.importDate,5):peer.importDate<years(r.importDate,5))))rows[i]={...rows[i],status:'indeterminate',importVat:null,reason:'Mais de uma linha usa o mesmo direito de veículo em cinco anos;conferir o conjunto e histórico externo,sem dupla utilização.'};}
const result:Result={revision:(b.result?.revision??0)+1,calculatedAt:new Date().toISOString(),sourceKey:key(draft,b),inputs:structuredClone(b.rows),rows};const next={...b,result,history:[...(b.history??[]),...(b.result?[b.result]:[])]};saveReturneeBook(draft,next);return next;
@@ -0,0 +1,424 @@
{
"status": "installed_P129_P133_margin_events_only_L1_open",
"candidate": "1a5f72209e4cb1ec38543f9465c59b8159dec15d",
"accepted_candidates": [
"1a5f7220"
],
"base_installed": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"coverage_complete_branches": {
"AUD-SIM-L1-P129": [
"third_party_package",
"mixed_means_special_part",
"own_means_general",
"other_name_general",
"retailer_simple_general",
"retailer_new_package",
"foreign_establishment_outside"
],
"AUD-SIM-L1-P133": [
"travel_integral_first",
"travel_start_first",
"same_day_order_not_inferred",
"partial_8c",
"partial_then_full_no_double_count",
"invoice_before_special_event",
"travel_not_started",
"suspensive_exit_14_a_b_c_d",
"regime_still_held"
]
},
"branch_count_complete": 2,
"coverage_label": "P129/P133 no âmbito demonstrado: margem e eventos, sem calcular IVA devido ou dedução; sem apuramento fiscal integral.",
"meaning": {
"P129": "Natureza e âmbito do regime38/39; meios próprios/terceiros e retalhista; margem global por operador/período do registo simulado, custos directos e exclusões41(3), excesso anterior/seguinte e base positiva com divisor1.16 arredondada à unidade. Sem IVA devido, dedução43d/campo11, regularização44 ou factura/modelo oficial emitidos.",
"P133": "Cessação efectiva de regime7(8), distinta de mudança de armazém/transferência; viagens7(9)/RIVA40 pelo primeiro entre integral e início/primeiro serviço, sem subtrair dia nem inferir ordem intradiária. Exigibilidade8 por factura/recebimento separada, incluindo sinal e saldo integral sem dupla soma. Sem montante de imposto, desembaraço, direito ou ICE apurados."
},
"examples": {
"travel_rows": 10,
"global_periods": 5,
"special_event_rows": 12
},
"fiscal_continuity": {
"parent_requirement": "AUD-SIM-INT02",
"matrix": "docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv",
"manual": "docs/investmoz/unification/traceability-and-manual.md",
"implemented": "P129 margem/base global do período; P133 eventos/exigibilidade, sem calcular IVA devido ou dedução.",
"remaining": "Apuramento/liquidação fiscal restantes continuam ligados ao requisito integrado AUD-SIM-INT02; deduções, regularizações e restituições nos seus âmbitos/lotes próprios, incluindo L2/L3. A entrega P129/P133 não encerra esses trabalhos.",
"traceability": "Conserva base, moeda, operador, operação, período, datas, documentos/fontes e versões para utilização fiscal posterior; nenhuma regra/cálculo fiscal é activado por disponibilização."
},
"limitations_balance": {
"digital": "Formalidades P121/P130: modelos da declaração/mapa de retenções e procedimentos de entrega/pagamento ainda não automatizados; cobertura digital integral não declarada. Mantém-se o limite da entrega df43aeb1.",
"travel": "Cálculo limitado à base da margem do registo simulado declarado, não apuramento integral da organização. Não calcula IVA devido/dedução42/43d, não executa regularização44, não emite factura45 ou modelo oficial46(2).",
"P104": "Conversão condicionada preservada; falta regra aplicável à escolha da taxa/data.",
"P084_P085": "Rascunhos e simulação condicionada preservados; ModeloI.1 não demonstra ligação a14(3) nem benefício concedido.",
"P001": "Pendência documental limitada aos campos05/06.",
"scope": "L1 aberto; bebidas L2/L3; Estatísticas/IA adiadas."
},
"UI_delta_from_QA": "Esclarecimento textual da continuidade do trabalho fiscal, pedido pela Tempo; sem alteração de regra ou cálculo.",
"runtime_delta": [
{
"path": "resources/js/lib/iva-travel.ts",
"sha256_LF": "253efc133fd968cbec0e0f04530d8757eb5dbf686cc2baa34a92a0efe71ee2fd"
},
{
"path": "resources/js/lib/iva-travel-events.ts",
"sha256_LF": "862c2c7c584a10e51626b215b5e23cceda9ed29859180c009be41113e30d30e9"
},
{
"path": "resources/js/components/simulation-travel.tsx",
"sha256_LF": "3fc4aec2678ba8d39635affe2d1c8e1d0b8684be7532de1a45b12463789905a6"
},
{
"path": "resources/js/components/simulation-travel-events.tsx",
"sha256_LF": "0d12f7ace5d5c1488756675aab075f957d3833e059e58963cf69e5b1ea315bda"
},
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "ed7b32c1838eebf33fbb31366dc313bcc6fe718b3ffca9a990f495fa7a0d253a"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "a63f9ee361b175718ce405a888b8fca4f1525980a3f14bcea53770f49df2aaa0"
}
],
"compiled_delta_markers_expected": [
"travel-period-margin/1",
"travel-suspensive-events/1",
"travelOperations",
"travelSpecialEvents",
"grossReceipts",
"directCosts",
"excludedCosts",
"priorExcess",
"carryForward",
"baseDivisorRate",
"priorOverride",
"travel_special",
"suspensive_exit",
"fullPaymentState",
"fullPaymentDate",
"startState",
"regimeStatus",
"cessationConfirmed",
"eventTiming",
"Continuidade do trabalho fiscal:",
"sem calcular IVA devido ou dedução",
"não ficam concluídas por esta entrega",
"Cobertura digital deste incremento:",
"Não representa cobertura digital integral"
],
"counts_before": {
"delivered": 123,
"QA": 2,
"functional_pending": 7,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 125,
"QA": 0,
"functional_pending": 7,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 125,
"QA": 0,
"functional_pending": 7,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-travel-events-qa-20261025.json"
],
"authorization": "Tempo pede entrega conjunta P129/P133 pela via Git existente, preservando alterações concorrentes e verificando apenas delta instalado; manter limitação de IVA devido/dedução ligada ao trabalho fiscal restante.",
"preservation": "123 fechos, dados, acessos, relações e histórico preservados; P104/P084/P085 parciais e formalidades digitais não automatizadas mantidos.",
"P104_closure": false,
"limits": {
"digital": "Formalidades P121/P130: modelos da declaração/mapa de retenções e procedimentos de entrega/pagamento ainda não automatizados; cobertura digital integral não declarada. Mantém-se o limite da entrega df43aeb1.",
"travel": "Cálculo limitado à base da margem do registo simulado declarado, não apuramento integral da organização. Não calcula IVA devido/dedução42/43d, não executa regularização44, não emite factura45 ou modelo oficial46(2).",
"P104": "Conversão condicionada preservada; falta regra aplicável à escolha da taxa/data.",
"P084_P085": "Rascunhos e simulação condicionada preservados; ModeloI.1 não demonstra ligação a14(3) nem benefício concedido.",
"P001": "Pendência documental limitada aos campos05/06.",
"scope": "L1 aberto; bebidas L2/L3; Estatísticas/IA adiadas."
},
"source": "RIVA Decreto7/2008,38–46,acervoBR16-I16/04/2008PDF6–8/p104–106 (6/7 conferidas visualmente,46(2) texto extraídoPDF8). CIVA Lei13/2016,4(5)/5(2),PDF7/p1426(265);7(8)/(9)/8,PDF9/p1426(267);14(1),PDF13/p1426(271),páginas visualmente conferidas. CIVA17(1),Lei22/2022PDF3,16% usado no divisor da base;Lei10/2025não altera4/7/8/17. Não confundir regime fiscal com licenciamento turístico.",
"containment": "l1-travel-events-readonly-rollback-20261025.patch, conferida sem aplicar; suspende novas versões P129/P133 e conserva leitores/histórico/outros ramos.",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"release": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"previous_release": "/var/www/investmoz-homologacao/releases/e8b5ae43add95be3a7fd437e4488befce76c0a97-7ad802df",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"release_revision": {
"commit": "df43aeb1e583e65af854ac71f46ddaa1f49b0b7c",
"branch": "main",
"built_at": "2026-10-24T23:29:21.431835+00:00",
"manifest_sha256": "42fcfc7d2fa7e7adae795927245582d1d140dd2a4fdc77164056b33de94f21e1"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-travel-events-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "c1f4d332b1157a0676e7407f65d9fecf21acd21f172904619fb964010f1091d3",
"files_sha256": "a794dd0f469aaad13e9c12f43355bcf268f4e86b0122dec9ca4b48217996e01c",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_travel_events_restore_20261025",
"port": 55441,
"source_dump_sha256": "c1f4d332b1157a0676e7407f65d9fecf21acd21f172904619fb964010f1091d3",
"active_database_writes": 0
}
},
"delivery_local_date": "2026-10-25",
"delivery_timezone": "Africa/Johannesburg",
"served_commit": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"release": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"previous_release": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 6,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "afbafcea6281a58aa3caf990b973c04f"
},
"after": {
"rows": 106,
"checksum": "f4020894854937bb59588270290d5ca2"
}
},
"sessions": {
"before": {
"rows": 115,
"checksum": "f36dd405ca80729d500e62879a469862"
},
"after": {
"rows": 120,
"checksum": "7668b80137db2d370aacb82c6909fbe6"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"branch": "main",
"built_at": "2026-10-24T23:50:30.605375+00:00",
"manifest_sha256": "a20890098748b87f8920ab98577acd584ea1ad7e839f745fd23858666c35642a"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"travel-period-margin/1": [
"assets/project-dossier-D2432B9d.js"
],
"travel-suspensive-events/1": [
"assets/project-dossier-D2432B9d.js"
],
"travelOperations": [
"assets/project-dossier-D2432B9d.js"
],
"travelSpecialEvents": [
"assets/project-dossier-D2432B9d.js"
],
"grossReceipts": [
"assets/project-dossier-D2432B9d.js"
],
"directCosts": [
"assets/project-dossier-D2432B9d.js"
],
"excludedCosts": [
"assets/project-dossier-D2432B9d.js"
],
"priorExcess": [
"assets/project-dossier-D2432B9d.js"
],
"carryForward": [
"assets/project-dossier-D2432B9d.js"
],
"baseDivisorRate": [
"assets/project-dossier-D2432B9d.js"
],
"priorOverride": [
"assets/project-dossier-D2432B9d.js",
"assets/services-BCFwhEo3.js"
],
"travel_special": [
"assets/project-dossier-D2432B9d.js",
"assets/services-BCFwhEo3.js"
],
"suspensive_exit": [
"assets/project-dossier-D2432B9d.js",
"assets/services-BCFwhEo3.js"
],
"fullPaymentState": [
"assets/project-dossier-D2432B9d.js",
"assets/services-BCFwhEo3.js"
],
"fullPaymentDate": [
"assets/project-dossier-D2432B9d.js",
"assets/services-BCFwhEo3.js"
],
"startState": [
"assets/project-dossier-D2432B9d.js",
"assets/services-BCFwhEo3.js"
],
"regimeStatus": [
"assets/project-dossier-D2432B9d.js",
"assets/services-BCFwhEo3.js"
],
"cessationConfirmed": [
"assets/project-dossier-D2432B9d.js",
"assets/services-BCFwhEo3.js"
],
"eventTiming": [
"assets/project-dossier-D2432B9d.js"
],
"Continuidade do trabalho fiscal:": [
"assets/services-BCFwhEo3.js"
],
"sem calcular IVA devido ou dedução": [
"assets/services-BCFwhEo3.js"
],
"não ficam concluídas por esta entrega": [
"assets/services-BCFwhEo3.js"
],
"Cobertura digital deste incremento:": [
"assets/services-BCFwhEo3.js"
],
"Não representa cobertura digital integral": [
"assets/services-BCFwhEo3.js"
]
},
"assets": [
{
"file": "assets/project-dossier-D2432B9d.js",
"status": 200,
"sha256": "df9bca2385332d624360828dd37c07afbdd69a449fdc0b345f4b4d0e5eb2b1e5"
},
{
"file": "assets/services-BCFwhEo3.js",
"status": 200,
"sha256": "83e6989ef8e29146a8ec5d64b514b637d706d15c4cc91f04363bbcbce3a486a3"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-document-pJfkPQcV.js",
"status": 200,
"sha256": "150d63c98fbe3814ce7fe40f27af802af88e1b629302b7c630065479dbd58daf"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-DlWp3NMy.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"release": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"previous_release": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "a48e9749799b7ed0ad370e23c2fda2bab06150d0",
"release": "/var/www/investmoz-homologacao/releases/a48e9749799b7ed0ad370e23c2fda2bab06150d0-4bcb51fd",
"previous_release": "/var/www/investmoz-homologacao/releases/df43aeb1e583e65af854ac71f46ddaa1f49b0b7c-657a60cb",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"a48e9749799b7ed0ad370e23c2fda2bab06150d0"
],
"finished_at": "2026-10-24T23:50:33.760342+00:00"
},
"log_file": "1792885713880205022.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 28.68s",
"OK (59 tests, 317 assertions)",
"# tests 549",
"# pass 549",
"# fail 0"
],
"log_bytes": 173885
},
"rollback_executed": false
},
"activation": "One joint Git fast-forward/webhook/installer; zero migrations/imports; accepted QA proofs reused",
"IVA_due_calculation": false,
"deduction_calculation": false
}
@@ -0,0 +1,22 @@
--- a/resources/js/lib/iva-travel.ts
+++ b/resources/js/lib/iva-travel.ts
@@ -87,7 +87,7 @@
}
function key(draft:Record<string,unknown>,book:TravelBook):string{return JSON.stringify({version:travelVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},currency:draft.currency,rows:book.rows,periods:book.periods});}
export function travelCurrent(draft:Record<string,unknown>,book:TravelBook):boolean{return!!book.result&&book.result.sourceKey===key(draft,book);}
-export function recordTravel(draft:Record<string,unknown>,book:TravelBook):TravelBook{
+export function recordTravel(draft:Record<string,unknown>,book:TravelBook):TravelBook{throw new Error('Novas versões P129 temporariamente suspensas; dados, histórico e relatórios conservados.');
const costIds=book.rows.flatMap(r=>r.costs.map(c=>c.id));
if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length||new Set(book.rows.map(r=>r.operatorRef+'|'+r.period+'|'+r.operationRef)).size!==book.rows.length||new Set(costIds).size!==costIds.length||new Set(book.periods.map(p=>p.id)).size!==book.periods.length||new Set(book.periods.map(p=>p.operatorRef+'|'+p.period)).size!==book.periods.length)throw new Error('Identidades de operações/custos/períodos devem ser distintas; evite dupla soma, originais conservados.');
const rows=book.rows.map(row=>evaluateTravel(row,draft.currency));const result:TravelCalculation={version:travelVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),sourceKey:key(draft,book),source:travelSource,inputs:structuredClone(book.rows),periodInputs:structuredClone(book.periods),rows,periods:evaluateTravelPeriods(book,rows)};
--- a/resources/js/lib/iva-travel-events.ts
+++ b/resources/js/lib/iva-travel-events.ts
@@ -88,7 +88,7 @@
}
function key(draft:Record<string,unknown>,book:TravelEventBook):string{return JSON.stringify({version:travelEventVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},rows:book.rows,dependencies:book.rows.map(row=>row.treatment==='travel_special'?travelEventSources(draft).find(s=>s.id===row.travelRowId):null)});}
export function travelEventCurrent(draft:Record<string,unknown>,book:TravelEventBook):boolean{try{return!!book.result&&book.result.sourceKey===key(draft,book);}catch{return false;}}
-export function recordTravelEvents(draft:Record<string,unknown>,book:TravelEventBook):TravelEventBook{
+export function recordTravelEvents(draft:Record<string,unknown>,book:TravelEventBook):TravelEventBook{throw new Error('Novas versões P133 temporariamente suspensas; dados, histórico e relatórios conservados.');
if(!book.rows.length||new Set(book.rows.map(r=>r.id)).size!==book.rows.length)throw new Error('Identifique eventos distintos; originais conservados.');
const result:TravelEventCalculation={version:travelEventVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),sourceKey:key(draft,book),source:travelEventSource,inputs:structuredClone(book.rows),rows:book.rows.map(row=>evaluateTravelEvent(draft,row))};
const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveTravelEventBook(draft,next);return next;
@@ -0,0 +1,55 @@
{
"state": "L2-A concluído em QA no âmbito demonstrado; não instalado",
"matrix_anchor": "AUD-SIM-INT02",
"installed_revision": "ada9629b",
"installed_receipt": "7febb6f7",
"l1": {
"state": "operacional com limitações explícitas",
"delivered": 129,
"functional_residuals": [
"P058",
"P084",
"P085"
],
"documentary_residual": "P001 — exclusivamente correspondência05/06"
},
"scope": "Extensão dos livros de compras e da classificação existentes. Aquisições internas MZN/2026,afectação exclusiva,documento e dedução no mesmo período,sem despesas especiais. Vínculo explícito à operação; motivos e fontes individuais; elegível/sem direito/indeterminado. Projecção permanece pressuposto. Sem reconstruir o motor.",
"reuse": "Documento,valores,moeda,período e edições deliberadas preservados. Seleccionar origem existente reutiliza classificação,sem copiar valor da venda para compra nem criar segunda aquisição. Operação alterada exige adopção expressa e revisão da afectação.",
"preservation": "Histórico congelado,sem recálculo automático. Livros anteriores sem vínculo conservam cálculo e chaves anteriores. Livro que iniciaL2-A conserva essa versão ao remover vínculos: informação em falta permanece indeterminada. Todos os mapas anteriores da fixture comparados integralmente em frontend e API.",
"legal_delta": "Cotejo delimitado de fontes oficiais já aceites:Lei13/2016 PDF15/p1426(273),art19(1);Lei10/2025 PDF13/p2180(13),18(2)/19(2).17-A sem direito apesar de IVA liquidado. Não inferir direito pela caixa05/06/07 ou IVAzero. Correspondência não implementada fica indeterminada.",
"F": {
"accompanies": "L2-A",
"example_MZN": {
"base14": "500.00",
"deduction15": "48.00",
"output16": "21.00",
"difference17": "0.00",
"difference18": "27.00"
},
"missing_document": "Campos09/15/17/18 indeterminados,sem substituir porzero.",
"duplicate_guard": "Mesma linha de factura em projecção/efectivo bloqueada no livro; operações de outras oportunidades não são consolidadas silenciosamente.",
"not_included": "Campos19–27,créditos anteriores,pagamentos/reembolsosL3; diferenças17/18 não equivalem a ordem de pagamento/reembolso."
},
"validation": {
"frontend": "16 testes dirigidos, incluindo12 anteriores reutilizados de compras/continuidade e4 novos de direito",
"api": "1teste/74asserções;DatabaseTransactions rollback;guardcurrent_database=simulator_fiscal_delta_20261021_test,port55441",
"types": "npm.cmd run types:check passou",
"build": "npm.cmd run build passou",
"ui": "Componente real em127.0.0.1:18708;posse em falta→Indeterminado→gravarficheiroQA→recuperar→relatório com motivo/fonte;API privada conferida separadamente",
"ui_proof": "outputs/iva-l2-a-20261025/ui-recovered-report.png"
},
"remaining_dependencies": {
"B_C": "Preparar conjuntamente quando compatíveis:documento aduaneiro/importação e exclusões/excepções;não tratar fornecedor estrangeiro como fornecedor interno. Bebidas permanecem no âmbitoL2/L3.",
"D": "Afectação parcial/pro rata e proporções específicas18(6);não presumir dedução integral.",
"E": "Regularizações dependem de evento,documento e histórico original;sem recalcular versões anteriores.",
"F": "Repetir sódelta dos totais afectados em cada incremento."
},
"active_writes": false,
"schema_changes": false,
"hashes": {
"resources/js/lib/iva-acquisition-right.ts": "ba63b02a99f476ae035a9301fdab6558363c603470e3f5f1e8ee061a6fbf9ed5",
"resources/js/lib/iva-acquisitions.ts": "3eff66925378d81353b6c9d3dccf1ca53f9fc5ad5ba3eef963d7ce47c0b1d2b0",
"resources/js/components/acquisition-operation-link.tsx": "8cb2afa1048507733d1a8e26f99a982858c86749fa8595655e17195477e20c1c",
"resources/js/components/simulation-acquisitions.tsx": "2595d6667b3adebba631ff6aa56490d1fdb8c4fdc127aa54234318006d42d8eb"
}
}
@@ -0,0 +1,323 @@
{
"status": "installed_L2_ABC_demonstrated_scope_F_affected_totals",
"base_installed": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"base_receipt": "7febb6f7",
"accepted_A_candidate": "56c948ec",
"coverage_complete_in_demonstrated_scope": [
"L2-A",
"L2-B",
"L2-C"
],
"F": "Totais afectados incluídos emA eB/C;provas individuais reutilizadas.",
"reports": [
"docs/investmoz/simulations/l2-a-acquisition-right-qa-20261025.json",
"docs/investmoz/simulations/l2-bc-imports-exclusions-qa-20261025.json"
],
"runtime_delta": [
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "5c75d86e3cffda929fffc56a2613cebf26031c0c0bd466fab33887354ffb8281"
},
{
"path": "resources/js/lib/iva-acquisition-right.ts",
"sha256_LF": "1df109ef6eea9e370fa3ecb33993296e260cfb77b6adc8e4f414e5bda655c895"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "14035966df3c680df6ac1b03f2cef8083fa5f67533deb9d98905f51c0bc1110d"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "efdc16a84cc64f47b2c587651f966f9dcfd57f1fe534645725629973ce92e12e"
},
{
"path": "resources/js/components/acquisition-operation-link.tsx",
"sha256_LF": "e6894e4986a2293b0d2cd9743074f045dc8e5c50610cb9d09a625108b4561144"
},
{
"path": "resources/js/components/acquisition-imports-exclusions.tsx",
"sha256_LF": "8f84ffeeafc7afeefcf64cd99df7bf84c16a9cc92432e215f7b48feb24d5b7d1"
}
],
"preservation": {
"state": "operacional com limitações explícitas",
"delivered": 129,
"functional_pending": [
"P058",
"P084",
"P085"
],
"documentary_pending": "P001 — exclusivamente05/06",
"no_reopening": true
},
"excluded": {
"D": "Afectação mista/pro rata e proporções específicas18(6) não implementadas neste conjunto. Gasóleo50% é regraC,sem fecharD.",
"E": "Activos/regularizações por evento e resultado original ainda seguem dependências próprias.",
"L3": "Bebidas por restituição,créditos anteriores,saldo final e formulários continuam no âmbitoL3.",
"L1": "129fechos e quatro residuais preservados;Estatísticas/IA adiadas."
},
"delivery_process": "Uma integração/backup/restauro/conferência do delta pelo processoGit existente. Rever concorrência imediatamente antes da instalação. Não há instalação/backup novo efectuado nesta preparação.",
"schema_changes": false,
"active_writes": "Git release installation only;no migrations/imports/history recalculation",
"candidate": "fc7e590d4e56e28035e45aa9a7917da7d6c2890d",
"accepted_candidates": [
"56c948ec",
"fc7e590d"
],
"coverage_label": "L2-A/B/C no âmbito demonstrado;F nos totais afectados. Não fechaD/E,L3 ou os quatro residuaisL1.",
"compiled_delta_markers_expected": [
"acquisition-imports-exclusions/1",
"Bilhete de despacho de importação",
"Exigibilidade do IVA aduaneiro",
"Via de dedução13(2)",
"Gasóleo20(1)(b):dedução50%",
"Telefone fixo em nome do sujeito passivo",
"Documento/linha repetido entre projecção e efectivo",
"fxSelection",
"formDecisionHash",
"Não representa cobertura digital integral"
],
"authorization": "Tempo25/10 pede entrega agrupada da candidatafc7e590d,pelo processoGit existente,backup/restauro e delta instalado;depoisD eE pelas dependências.",
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
}
],
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"release": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"previous_release": "/var/www/investmoz-homologacao/releases/e38aa74920412e545213b35b7585c847a0b8a969-c2a813e8",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"release_revision": {
"commit": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"branch": "main",
"built_at": "2026-10-25T09:52:26.492458+00:00",
"manifest_sha256": "d74ef12d0fa825df158d7debd86e74939cf79c15be4f56663eceebde001f91c8"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l2-abc-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "75a4303a7c2099e6fa61a44ee3b6edb85c3245d5083976cf9c18960f927b15af",
"files_sha256": "4f44b96098893075b90ef52d1acb50faf52654a877c338518d3cd944bfad6712",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l2_abc_restore_20261025",
"port": 55441,
"source_dump_sha256": "75a4303a7c2099e6fa61a44ee3b6edb85c3245d5083976cf9c18960f927b15af",
"active_database_writes": 0
}
},
"served_commit": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"release": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"previous_release": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 6,
"documentary_files_verified": 3,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "c11b8f23025be92ba2d34051e3bc0a60"
},
"after": {
"rows": 106,
"checksum": "3843fb5b12061e89a660436cf6c1b56a"
}
},
"sessions": {
"before": {
"rows": 133,
"checksum": "082bb777cce1052323ed4611444d1510"
},
"after": {
"rows": 134,
"checksum": "7567a4db35e2daa0549d6dee60b60651"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"branch": "main",
"built_at": "2026-10-25T10:43:59.555868+00:00",
"manifest_sha256": "2585604e0619d796c3e1e541d316c66b267691ba83cc55b305721f2f50f197f1"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"acquisition-imports-exclusions/1": [
"assets/project-dossier-DlR10S8z.js"
],
"Bilhete de despacho de importação": [
"assets/services-DHnjZGhf.js",
"assets/project-dossier-DlR10S8z.js"
],
"Exigibilidade do IVA aduaneiro": [
"assets/project-dossier-DlR10S8z.js"
],
"Via de dedução13(2)": [
"assets/project-dossier-DlR10S8z.js"
],
"Gasóleo20(1)(b):dedução50%": [
"assets/project-dossier-DlR10S8z.js"
],
"Telefone fixo em nome do sujeito passivo": [
"assets/project-dossier-DlR10S8z.js"
],
"Documento/linha repetido entre projecção e efectivo": [
"assets/project-dossier-DlR10S8z.js"
],
"fxSelection": [
"assets/services-DHnjZGhf.js",
"assets/project-dossier-DlR10S8z.js"
],
"formDecisionHash": [
"assets/project-dossier-DlR10S8z.js"
],
"Não representa cobertura digital integral": [
"assets/services-DHnjZGhf.js"
]
},
"assets": [
{
"file": "assets/services-DHnjZGhf.js",
"status": 200,
"sha256": "dfa7c53df2877d80c413956fdff06261d657b7e719950f04b0321a45dce981a9"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-document-DklRdsBS.js",
"status": 200,
"sha256": "506bc83ce2827592b1511894d2f9c094798b8f699f1d71515fb0f9c3e908e8c1"
},
{
"file": "assets/project-dossier-DlR10S8z.js",
"status": 200,
"sha256": "0662c5f9c5f6885376ef083780520c62520edef93e4e7c81a21dac43a7a69352"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-Dn8xqseO.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"release": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"previous_release": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"release": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"previous_release": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"819ae791e9f3a7347ec8c804f58e6cc34a22cfaf"
],
"finished_at": "2026-10-25T10:44:02.825192+00:00"
},
"log_file": "1792924914229120853.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 29.22s",
"OK (59 tests, 317 assertions)",
"# tests 690",
"# pass 690",
"# fail 0"
],
"log_bytes": 202199
},
"rollback_executed": false
},
"next": "D:affectation partial/proportions;E by effective dependencies",
"L1": "operacional com limitações explícitas;129entregues+P058/P084/P085+P001=133;sem reabertura",
"beverage_refund": "L3,not delivered here"
}
@@ -0,0 +1,62 @@
{
"status": "prepared_not_installed",
"base_installed": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"base_receipt": "7febb6f7",
"accepted_A_candidate": "56c948ec",
"coverage_complete_in_demonstrated_scope": [
"L2-A",
"L2-B",
"L2-C"
],
"F": "Totais afectados incluídos emA eB/C;provas individuais reutilizadas.",
"reports": [
"docs/investmoz/simulations/l2-a-acquisition-right-qa-20261025.json",
"docs/investmoz/simulations/l2-bc-imports-exclusions-qa-20261025.json"
],
"runtime_delta": [
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "5c75d86e3cffda929fffc56a2613cebf26031c0c0bd466fab33887354ffb8281"
},
{
"path": "resources/js/lib/iva-acquisition-right.ts",
"sha256_LF": "1df109ef6eea9e370fa3ecb33993296e260cfb77b6adc8e4f414e5bda655c895"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "14035966df3c680df6ac1b03f2cef8083fa5f67533deb9d98905f51c0bc1110d"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "efdc16a84cc64f47b2c587651f966f9dcfd57f1fe534645725629973ce92e12e"
},
{
"path": "resources/js/components/acquisition-operation-link.tsx",
"sha256_LF": "e6894e4986a2293b0d2cd9743074f045dc8e5c50610cb9d09a625108b4561144"
},
{
"path": "resources/js/components/acquisition-imports-exclusions.tsx",
"sha256_LF": "8f84ffeeafc7afeefcf64cd99df7bf84c16a9cc92432e215f7b48feb24d5b7d1"
}
],
"preservation": {
"state": "operacional com limitações explícitas",
"delivered": 129,
"functional_pending": [
"P058",
"P084",
"P085"
],
"documentary_pending": "P001 — exclusivamente05/06",
"no_reopening": true
},
"excluded": {
"D": "Afectação mista/pro rata e proporções específicas18(6) não implementadas neste conjunto. Gasóleo50% é regraC,sem fecharD.",
"E": "Activos/regularizações por evento e resultado original ainda seguem dependências próprias.",
"L3": "Bebidas por restituição,créditos anteriores,saldo final e formulários continuam no âmbitoL3.",
"L1": "129fechos e quatro residuais preservados;Estatísticas/IA adiadas."
},
"delivery_process": "Uma integração/backup/restauro/conferência do delta pelo processoGit existente. Rever concorrência imediatamente antes da instalação. Não há instalação/backup novo efectuado nesta preparação.",
"schema_changes": false,
"active_writes": false
}
@@ -0,0 +1,103 @@
{
"status": "L2-B/C concluídos em QA no âmbito demonstrado;preparação de entrega conjunta comA,sem instalação",
"matrix_anchor": "AUD-SIM-INT02",
"base_installed": "ada9629bb65ba186f54d970f0e41194888ebf53b",
"base_receipt": "7febb6f7",
"included_A_candidate": "56c948ec",
"main_fetch": "git fetch origin main obtido com sucesso;main permaneceada9629b",
"L1": {
"state": "operacional com limitações explícitas",
"delivered": 129,
"functional_pending": [
"P058",
"P084",
"P085"
],
"documentary_pending": "P001 — exclusivamente05/06",
"no_reopening": true
},
"B": {
"coverage": "Documento aduaneiro próprio,campo11,titularidade/importador,bens/linha,fonte de IVA e exigibilidade no mês declarado;posse,forma legal,integridade,direito e afectação da aquisição. Não exige fornecedor estrangeiro inscrito no IVA interno nem regra17-A de factura interna.",
"amount": "IVA expresso no bilhete/pressuposto basta;líquido/bruto opcionais,conservados se conhecidos.Não infere IVA da diferença de custos nem da classificaçãoL1;IVA isento/zero só contribui0 com montante0 expresso.Montante desconhecido permanece indeterminado.Sem calcular direitosL13.",
"reuse": "Reutiliza importações dos livrosL1 da mesma oportunidade:descrição,importador,documento/data/período apenas se vazios;montantes e edições deliberadas conservados. Mudança da origem invalida cálculo actual e pede adopção expressa;histórico não é recalculado.",
"coverage_control": "Todas as importações do período precisam cobertura própria,distinta de08–10. Não declarar ausência11 quando há importações.",
"anti_duplication": "Documento/linha repetido entre efectivo/projecção impedido;IVA próprio dos bens separado do serviço incluído na base. OrigemL1 que seja serviço12(1)e não pode fornecer IVA próprio dos bens no campo11."
},
"C": {
"coverage": [
"20(1)a:veículos/bens abrangidos e excepção de venda/exploração20(3)a",
"20(1)b:combustíveis;gasóleo50%;integral nos quatro usos específicos confirmados;revenda com fundamento próprio",
"20(1)c:transportes/viagens do sujeito passivo/pessoal",
"20(1)d:alojamento/alimentação,bebidas/tabaco/recepção;excepção de viajante comercial por conta própria20(3)b restrita a alojamento/alimentação",
"20(1)e:comunicações telefónicas,excepto telefone fixo em nome do sujeito passivo",
"20(1)f:divertimento/luxo segundo natureza/montante e exploração normal declarados",
"20(2),redacçãoLei22/2022:IVA suportado em fornecimento17-A excluído,distinto do destino19(2)",
"Bebidas13(2):via de dedução ligada a origemL1 actualc/d/h,condições,afectação e parcela exclusivamente para dedução;d exige excluir provisões de pesca costeira. Não estende a e,tabaco ou recepção;sem isenção directa ou restituiçãoL3."
],
"precision": "Percentagens aplicadas à dedução,sem inventar taxaIVA/pro rata. Fracções exactas dedutível/não dedutível conservadas;totais não somam apresentações arredondadas.",
"unknown": "Facto/fonte/categoria por esclarecer permanece indeterminado;escolha de excepção não dispensa documento,direito ou afectação exclusiva.",
"source_cotejo": [
"Lei13/2016 PDF12,p1426(270),13(2–3);PDF14,p1426(272),18(1)b;PDF15,p1426(273),18–21",
"Lei22/2022 PDF3,p2252(27),20(2–3),renumeração das excepções",
"Lei10/2025 PDF13,p2180(13),18(2)/19(2)"
]
},
"F": {
"included_each_increment": true,
"example_MZN": {
"09": "24.00",
"11": "16.00",
"14": "1000.00",
"15": "40.00",
"16": "160.00",
"17": "120.00",
"18": "0.00"
},
"unknown_import": "11/15/17/18 indeterminados;semzero presumido.",
"exact_diesel_test": "Duas parcelas deIVA0.000001×50%=1/2000000 cada,total exacto1/1000000;sem dupla aproximação.",
"limit": "17/18 antes de créditos anteriores;19–27,restituição/pagamentoL3 fora deste incremento."
},
"validation": {
"frontend": "21testes dirigidos:16anteriores deA/compras/continuidade e5novosB/C,com múltiplos cenários por família",
"api": "1teste/80asserções,guardcurrent_database=simulator_fiscal_delta_20261021_test/port55441,DatabaseTransactions rollback;A e todos os mapas anteriores preservados integralmente",
"types": "npm.cmd run types:check passou",
"build": "npm.cmd run build passou após encerrar servidoresQA temporários e reduzir concorrência de memória",
"ui": "Componente real:origemL1 reutilizada sem sobrescrita;IVA desconhecido→11/totais indeterminados;reposição de montante identificado→calcular→gravar→recuperar→relatório dos totais",
"ui_proof": "outputs/iva-l2-bc-20261025/ui-recovered-totals.png",
"resource_incident": "Última repetição deAPI/build encontrou falta de memória do Windows;servidores de demonstraçãoA/B/C encerrados;API,tipos e build repetidos sequencialmente. Não alterou activo ou limites de memória/configuração do sistema."
},
"remaining": {
"D": "Afectação mista/pro rata e proporções específicas18(6) não implementadas neste conjunto. Gasóleo50% é regraC,sem fecharD.",
"E": "Activos/regularizações por evento e resultado original ainda seguem dependências próprias.",
"L3": "Bebidas por restituição,créditos anteriores,saldo final e formulários continuam no âmbitoL3.",
"L1": "129fechos e quatro residuais preservados;Estatísticas/IA adiadas."
},
"active_writes": false,
"schema_changes": false,
"runtime_delta": [
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "5c75d86e3cffda929fffc56a2613cebf26031c0c0bd466fab33887354ffb8281"
},
{
"path": "resources/js/lib/iva-acquisition-right.ts",
"sha256_LF": "1df109ef6eea9e370fa3ecb33993296e260cfb77b6adc8e4f414e5bda655c895"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "14035966df3c680df6ac1b03f2cef8083fa5f67533deb9d98905f51c0bc1110d"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "efdc16a84cc64f47b2c587651f966f9dcfd57f1fe534645725629973ce92e12e"
},
{
"path": "resources/js/components/acquisition-operation-link.tsx",
"sha256_LF": "e6894e4986a2293b0d2cd9743074f045dc8e5c50610cb9d09a625108b4561144"
},
{
"path": "resources/js/components/acquisition-imports-exclusions.tsx",
"sha256_LF": "8f84ffeeafc7afeefcf64cd99df7bf84c16a9cc92432e215f7b48feb24d5b7d1"
}
]
}
@@ -0,0 +1,101 @@
{
"status": "L2-D concluído em QA no âmbito demonstrado;F acompanha;sem instalação deD",
"matrix_anchor": "AUD-SIM-INT02",
"installed_revision": "819ae791",
"installed_receipt": "855ab066",
"L1": {
"delivered": 129,
"functional_residuals": [
"P058",
"P084",
"P085"
],
"documentary_residual": "P001 — exclusivamente05/06",
"state": "operacional com limitações explícitas;sem reabertura"
},
"implemented": {
"actual": "22(2):numerador/denominador,mesma unidade/critério,âmbito e fonte;comunicação prévia referenciada e condições concretamente aplicáveis. Sem aprovador novo. Fracção real exacta,sem arredondamento de pro rata.",
"pro_rata": "22(1)/(4)/(5)/(6)/(7)/(8):bases anuais semIVA,numerador com direito18/19,denominador de todas operações incluindo fora de campo;exclui vendas de activo usado e operações imobiliárias/financeiras acessórias. Provisório do ano anterior ou estimativa expressa de início/alteração substancial com referência da declaração. Quociente arredondado à centésima superior;original e aplicado conservados. Imposição concreta de afectação real22(3) não é substituída por pro rata.",
"specific_18_6": "Reutiliza origem actual e demonstradaP096/P097/P098/P099,no mesmo âmbito por oportunidade,com proporções62/85/40/75%. Aquisição exclusivamente afecta à origem;alteração/invalidação da origem pede adopção expressa,sem recalcular histórico. Sem segunda redução da base e sem taxaIVA inferida.",
"conditions_ABC": "Condições própriasA/B/C permanecem. ExclusãoC não é afastada porD;combustível50% compõe-se uma única vez com a afectaçãoD. Documento aduaneiro mantém titularidade,IVA próprio,exigibilidade/posse e cobertura11,sem fornecedor interno.",
"reuse": "Reutiliza livro/documento,valores,moeda,mês,condições e referências existentes;19(2) já declarado no vínculo pode ser reutilizado. Campos anuais/critério/comunicação apenas onde necessários;vínculoA conservado,sem o reinterpretar como âmbito misto. Mudanças deliberadas/históricos preservados."
},
"F": {
"example_MZN": {
"09": "13.44",
"11": "10.72",
"14": "1000.00",
"15": "24.16",
"16": "160.00",
"17": "135.84",
"18": "0.00"
},
"exact_composition": "16×1/3=16/3;gasóleo16×50%×1/3=8/3;pro rata1/3→34%,2/3→67%;somar fracções exactas antes da apresentação decimal.",
"incomplete_parameters": "Denominador ausente/zero,numerador maior que denominador,factos/fontes/ano por esclarecer→indeterminado,não0/100% presumidos.",
"output_limit": "Existindo bases reduzidas no mesmo âmbito/período,IVA liquidado ainda não consolidado impede totais14/16/17/18 completos,mesmo se não são a origem directa da aquisição seleccionada. Dedução15 conserva apuramento próprio. Adicionar/alterar essas origens invalida a versão actual do apuramentoD.",
"specific_example_MZN": {
"15": "6.40",
"14": null,
"16": null,
"17": null,
"18": null
},
"L3": "19–27,créditos anteriores,pagamento/reembolso e restituição de bebidas fora deste incremento."
},
"validation": {
"frontend": "26testes dirigidos no conjunto;21anteriores deABC/compras/continuidade reutilizados e5novosD. Os5D repetidos após os ajustes finais de fonte/guardaF:todos passaram.",
"api": "1teste/89asserções;current_database=simulator_fiscal_delta_20261021_test,port55441;DatabaseTransactions rollback. Gravação/recuperação conserva fracções,factos,método,referências,histórico e todos os mapas anterioresABC/L1.",
"types": "npm.cmd run types:check passou",
"build": "npm.cmd run build passou",
"ui": "Componente real;denominador0→totais indeterminados;reutilização de origem18(6);dois âmbitos sintéticos separados,gravar→recuperar→relatório.",
"proofs": [
"outputs/iva-l2-d-20261025/ui-recovered-totals.png",
"outputs/iva-l2-d-20261025/ui-reduced-output-limit.png"
],
"preservation": "129linhasL1 entregues e quatro residuais comparados sem alterações;livrosABC comparados integralmente e mantidos actuais."
},
"scope_limits": [
"Combinação de18(6)com afectação mista não demonstrada:não aplicar produto genérico de percentagens.",
"Bases reduzidas mantêm limitação de IVA liquidado/fecho integral dos totais explicitamente identificada.",
"Excepções ministeriais específicas22(9),ou condições/imposições concretas não identificadas,não são inventadas nem activadas genericamente.",
"Pro rata é provisório;regularização anual22(6) depende do resultado histórico e dos valores anuais efectivos emE.",
"Activos/outros motivos de regularização não são concluídos por este incrementoD."
],
"E_next_by_dependency": {
"first_executable": "Acerto anual22(6) do pro rata provisório:seleccionar resultadoD congelado,ano/âmbito e parcela original;registar bases anuais finais22(4–5)/quociente22(8);calcular diferença face ao efectivamente deduzido,no último período do ano,com evento único e sentidos12/13 separados. Não substituir o histórico.",
"reused_from_D": [
"Identidade da aquisição/documento/linha",
"Moeda/período/âmbito",
"IVA elegível antesD (já limitado porC)",
"Quociente original e aplicado",
"Deduções exactas e não dedutível",
"Revisão,data/fontes e resultados congelados"
],
"other_motives": "Activos e restantes regularizações seguem documento/evento/prazo e fonte específicos;não recebem regra genérica de percentagem anual. A divergência textual de remissões11/12 versus caixas12/13 permanece identificada separadamente deP001.",
"code_status": "E ainda não implementado;dependênciaD agora disponível emQA. Isto não declaraE entregue nem fechaL2."
},
"schema_changes": false,
"active_writes": false,
"runtime_delta": [
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "7933ca0a080af2b8ea3a8ee02f75dd4151a3452da161911960c877f5c404a2e1"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "4ce47274449e075e5e22a02f7bc497e4df6925c1d628f1e9cd057748d016012f"
},
{
"path": "resources/js/lib/iva-acquisition-allocation.ts",
"sha256_LF": "df960bab63e89c3b3cea3c61b5c57481194b19d5dd0894830a181cdbe10dc972"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c11971ff255db1faced4c5cd0f48587f66565a2c4d58f7e786bb8e01214be9e2"
},
{
"path": "resources/js/components/acquisition-allocation.tsx",
"sha256_LF": "222204ee4c699b2cbddb9cb921a37397f6be313a215905163ee135aa2b26f104"
}
]
}
@@ -0,0 +1,338 @@
{
"status": "installed_L2_DE_demonstrated_scope_F_affected_totals",
"baseline_installed": "819ae791",
"baseline_receipt": "855ab066",
"accepted_D": "2c2a2f20",
"candidate": "dde20c33481d81c9ebcbec84093cf93c7cc9cb9e",
"scope": [
"D afectação real/pro rata provisório/proporções18(6) exclusivas",
"E acerto anual22(6),controlo de activos27RCIVA e rectificação demonstrada51(4)",
"F sobre parcelas/totais afectados"
],
"reports": [
"docs/investmoz/simulations/l2-d-allocation-qa-20261025.json",
"docs/investmoz/simulations/l2-e-assets-regularizations-qa-20261025.json"
],
"reuse_proofs": true,
"fresh_at_delivery": [
"Conferir main remoto e compatibilidade/preservação de concorrência",
"Autenticar destino e conferir identidade/estado instalado",
"Backup fresco e restauro real em destino isolado antes de instalar",
"Manifesto do mergeefectivo e instalação pelo processoGit existente",
"Conferir apenas delta instalado,com identidades/contextos RLS equivalentes",
"Reconciliar código/schema/dados/configuração/permissões e emitir recibo"
],
"limitations": [
"Combinação18(6)+afectação mista continua pendente;sem produto genérico de percentagens.",
"E demonstrado:acerto anual22(6),controlo individual dos activos e redução/anulação documentada da dedução pelo adquirente51(4),emMZN/2026. Não equivale a automatização de todas as regularizações.",
"Sucessão de nota de crédito e acerto anual na mesma parcela requer reconciliação sequencial própria;não somar dois deltas independentes. Vários documentos rectificativos sobre a mesma parcela ainda não consolidados por este percurso.",
"Erros materiais51(6–7),incobráveis/recuperações51(8–9),mudanças de regime e regularizações plurianuais não automatizados. Não se inventa percentagem/prazo de activos. O registo27RCIVA não constitui esse cálculo.",
"O motor mensal mantém2026/MZN. Um prazo51(4) que alcance2027 é conservado no relatório;lançamento em2027 permanece fora do âmbito mensal demonstrado.",
"Origem de bases reduzidas sem IVA liquidado consolidado mantém14/16/17/18 indeterminados,também quando só existem eventosE no livro do período.",
"17/18 são diferenças antes de créditos anteriores;19–27,pagamento/reembolso e restituição de bebidas mantêmL3. Formalidades digitais não automatizadas e cálculo fiscal restante dos ramosL1 limitados continuam identificados.",
"Divergência de remissões textuais11/12 versus caixas12/13 mantém-se identificada;P001 continua exclusivamente05/06."
],
"L1": "operacional com limitações explícitas;129entregues+P058/P084/P085+P001=133;sem reabertura",
"runtime_delta": [
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "2bca130d43808e8e0b773d63591f9711462fc79ba7cc231821ce693d4bd010f9"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "4ce47274449e075e5e22a02f7bc497e4df6925c1d628f1e9cd057748d016012f"
},
{
"path": "resources/js/lib/iva-acquisition-allocation.ts",
"sha256_LF": "df960bab63e89c3b3cea3c61b5c57481194b19d5dd0894830a181cdbe10dc972"
},
{
"path": "resources/js/lib/iva-regularizations.ts",
"sha256_LF": "72f432ab11a09ff4a1893ca59c9f19b88d6e709ba59842b087630fd7623e24c9"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "0af55cadc0bf2cd0b88673653c6915fcb36e7f3ad61b34721e44b2865da29d42"
},
{
"path": "resources/js/components/acquisition-allocation.tsx",
"sha256_LF": "222204ee4c699b2cbddb9cb921a37397f6be313a215905163ee135aa2b26f104"
},
{
"path": "resources/js/components/acquisition-regularizations.tsx",
"sha256_LF": "9b551a10613410210e5106f8b2de5a9c1d596d1d793a12a4c0c6cae06d5b32e2"
}
],
"compatibility_at_preparation": {
"fetched_utc": "2026-10-25T11:21:49.097830+00:00",
"origin_main": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"main_is_ancestor": true,
"concurrent_main_delta_since_installed": false,
"next": "Repetir conferência no momento da entrega;nenhum reset/stash/sobrescrita de alterações concorrentes."
},
"accepted_candidates": [
"2c2a2f20",
"dde20c33"
],
"coverage_label": "L2 concluído no âmbito demonstrado após entregaD/E comF;limitações continuam trabalho pendente na mesma matriz;L1 preservado;L3 fora.",
"compiled_delta_markers_expected": [
"acquisition-allocation/1",
"E — activos e regularizações por evento",
"Preparar acerto anual do pro rata",
"Calcular e guardar regularizações E",
"Bem de investimento importado",
"Sem diferença;evento conservado,sem nova dedução",
"Denominador anual zero;sem percentagem por defeito.",
"Mesma aquisição/ano ou documento já incluído",
"fxSelection",
"formDecisionHash"
],
"authorization": "Tempo pede entrega conjuntaD/E,dde20c33,pelo processoGit existente;preservar819ae791,backup/restauro,delta instalado e limitaçõesL2 na mesma matriz.",
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
}
],
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"release": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"previous_release": "/var/www/investmoz-homologacao/releases/ada9629bb65ba186f54d970f0e41194888ebf53b-9238f6ba",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"release_revision": {
"commit": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"branch": "main",
"built_at": "2026-10-25T10:43:59.555868+00:00",
"manifest_sha256": "2585604e0619d796c3e1e541d316c66b267691ba83cc55b305721f2f50f197f1"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l2-de-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "79a1de882ae5af017ac68f9c7e376eac58349a1510e10ec63b6957ce970ca03d",
"files_sha256": "4eef3ac80f5a30e8f7e456f1d6a68148ed80b677dce5aa9835d9439d34931e5e",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l2_de_restore_20261025",
"port": 55441,
"source_dump_sha256": "79a1de882ae5af017ac68f9c7e376eac58349a1510e10ec63b6957ce970ca03d",
"active_database_writes": 0
}
},
"served_commit": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"release": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"previous_release": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 7,
"documentary_files_verified": 4,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "96a7a5dd51f6f9998900f48da99de5a4"
},
"after": {
"rows": 106,
"checksum": "4f1ca132b2c8771c4d245a64da79c20b"
}
},
"sessions": {
"before": {
"rows": 137,
"checksum": "8df00cee4ba1746dcd0f1e81fe52fd02"
},
"after": {
"rows": 138,
"checksum": "3fba0a0b63a66c44a6e46a0dfea806bd"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"branch": "main",
"built_at": "2026-10-25T11:34:19.713723+00:00",
"manifest_sha256": "3d77a70b77f2429d3f01603de5cbc667049652f7fda166168650a918269aa790"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"acquisition-allocation/1": [
"assets/project-dossier-CwUvjpYR.js"
],
"E — activos e regularizações por evento": [
"assets/services-BgiC448M.js"
],
"Preparar acerto anual do pro rata": [
"assets/services-BgiC448M.js"
],
"Calcular e guardar regularizações E": [
"assets/services-BgiC448M.js"
],
"Bem de investimento importado": [
"assets/services-BgiC448M.js"
],
"Sem diferença;evento conservado,sem nova dedução": [
"assets/project-dossier-CwUvjpYR.js"
],
"Denominador anual zero;sem percentagem por defeito.": [
"assets/project-dossier-CwUvjpYR.js"
],
"Mesma aquisição/ano ou documento já incluído": [
"assets/project-dossier-CwUvjpYR.js"
],
"fxSelection": [
"assets/services-BgiC448M.js",
"assets/project-dossier-CwUvjpYR.js"
],
"formDecisionHash": [
"assets/project-dossier-CwUvjpYR.js"
]
},
"assets": [
{
"file": "assets/services-BgiC448M.js",
"status": 200,
"sha256": "087f5e7aa65ebc9c9abda1ea95a115c4cd82174a0efe24cf87cf5c624cc68037"
},
{
"file": "assets/project-dossier-document-CkG3wTev.js",
"status": 200,
"sha256": "d9f3d94812e8a9e5ec373317a4aab838820309eae0868b26aaef14725dcec36c"
},
{
"file": "assets/project-dossier-CwUvjpYR.js",
"status": 200,
"sha256": "3529dc7d77fed7e39d28eba9be2f4ec575ad14b97abb9a65af3c894ad3611afc"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-B0kYv3vx.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"release": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"previous_release": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"release": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"previous_release": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"7a380b76904de50ba675f0b67e0aa949672dbc65"
],
"finished_at": "2026-10-25T11:34:22.728958+00:00"
},
"log_file": "1792927926285575552.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 30.66s",
"OK (59 tests, 317 assertions)",
"# tests 704",
"# pass 704",
"# fail 0"
],
"log_bytes": 206123
},
"rollback_executed": false
},
"active_writes": "Git release installation only;no migrations/imports/history recalculation",
"L2": "concluído no âmbito demonstrado;limitações continuam trabalho por concluir na mesma matriz",
"next": "L3 pelas dependências efectivas,conservando saldo residualL2 eL1",
"beverage_refund": "L3,not delivered here",
"historical_QA_preparation_note": "Não houve pushmain,instalação,backup activo ou migração neste incrementoQA. Estado histórico anterior à entrega;execução posterior comprovada no recibo de instalação."
}
@@ -0,0 +1,86 @@
{
"status": "installed_L2_demonstrated_scope_with_residual_work_preserved",
"baseline_installed": "819ae791",
"baseline_receipt": "855ab066",
"accepted_D": "2c2a2f20",
"candidate": "commit que contém este manifesto",
"scope": [
"D afectação real/pro rata provisório/proporções18(6) exclusivas",
"E acerto anual22(6),controlo de activos27RCIVA e rectificação demonstrada51(4)",
"F sobre parcelas/totais afectados"
],
"reports": [
"docs/investmoz/simulations/l2-d-allocation-qa-20261025.json",
"docs/investmoz/simulations/l2-e-assets-regularizations-qa-20261025.json"
],
"reuse_proofs": true,
"fresh_at_delivery": [
"Conferir main remoto e compatibilidade/preservação de concorrência",
"Autenticar destino e conferir identidade/estado instalado",
"Backup fresco e restauro real em destino isolado antes de instalar",
"Manifesto do mergeefectivo e instalação pelo processoGit existente",
"Conferir apenas delta instalado,com identidades/contextos RLS equivalentes",
"Reconciliar código/schema/dados/configuração/permissões e emitir recibo"
],
"limitations": [
"Combinação18(6)+afectação mista continua pendente;sem produto genérico de percentagens.",
"E demonstrado:acerto anual22(6),controlo individual dos activos e redução/anulação documentada da dedução pelo adquirente51(4),emMZN/2026. Não equivale a automatização de todas as regularizações.",
"Sucessão de nota de crédito e acerto anual na mesma parcela requer reconciliação sequencial própria;não somar dois deltas independentes. Vários documentos rectificativos sobre a mesma parcela ainda não consolidados por este percurso.",
"Erros materiais51(6–7),incobráveis/recuperações51(8–9),mudanças de regime e regularizações plurianuais não automatizados. Não se inventa percentagem/prazo de activos. O registo27RCIVA não constitui esse cálculo.",
"O motor mensal mantém2026/MZN. Um prazo51(4) que alcance2027 é conservado no relatório;lançamento em2027 permanece fora do âmbito mensal demonstrado.",
"Origem de bases reduzidas sem IVA liquidado consolidado mantém14/16/17/18 indeterminados,também quando só existem eventosE no livro do período.",
"17/18 são diferenças antes de créditos anteriores;19–27,pagamento/reembolso e restituição de bebidas mantêmL3. Formalidades digitais não automatizadas e cálculo fiscal restante dos ramosL1 limitados continuam identificados.",
"Divergência de remissões textuais11/12 versus caixas12/13 mantém-se identificada;P001 continua exclusivamente05/06."
],
"L1": {
"state": "operacional com limitações explícitas",
"delivered": 129,
"functional_residuals": [
"P058",
"P084",
"P085"
],
"documentary_residual": "P001 — exclusivamente05/06",
"reopened": false
},
"runtime_delta": [
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "2bca130d43808e8e0b773d63591f9711462fc79ba7cc231821ce693d4bd010f9"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "4ce47274449e075e5e22a02f7bc497e4df6925c1d628f1e9cd057748d016012f"
},
{
"path": "resources/js/lib/iva-acquisition-allocation.ts",
"sha256_LF": "df960bab63e89c3b3cea3c61b5c57481194b19d5dd0894830a181cdbe10dc972"
},
{
"path": "resources/js/lib/iva-regularizations.ts",
"sha256_LF": "72f432ab11a09ff4a1893ca59c9f19b88d6e709ba59842b087630fd7623e24c9"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "0af55cadc0bf2cd0b88673653c6915fcb36e7f3ad61b34721e44b2865da29d42"
},
{
"path": "resources/js/components/acquisition-allocation.tsx",
"sha256_LF": "222204ee4c699b2cbddb9cb921a37397f6be313a215905163ee135aa2b26f104"
},
{
"path": "resources/js/components/acquisition-regularizations.tsx",
"sha256_LF": "9b551a10613410210e5106f8b2de5a9c1d596d1d793a12a4c0c6cae06d5b32e2"
}
],
"compatibility_at_preparation": {
"fetched_utc": "2026-10-25T11:21:49.097830+00:00",
"origin_main": "819ae791e9f3a7347ec8c804f58e6cc34a22cfaf",
"main_is_ancestor": true,
"concurrent_main_delta_since_installed": false,
"next": "Repetir conferência no momento da entrega;nenhum reset/stash/sobrescrita de alterações concorrentes."
},
"served_commit": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"receipt_report": "docs/investmoz/simulations/l2-de-delivery-20261025.json",
"historical_QA_preparation_note": "Não houve pushmain,instalação,backup activo ou migração neste incrementoQA. Estado histórico anterior à entrega;execução posterior comprovada no recibo de instalação."
}
@@ -0,0 +1,136 @@
{
"status": "L2-E concluído em QA no âmbito demonstrado,comF;D/E preparados para entrega conjunta,sem instalação",
"matrix_anchor": "AUD-SIM-INT02",
"installed_revision": "819ae791",
"installed_receipt": "855ab066",
"D_accepted_candidate": "2c2a2f20",
"L1": {
"state": "operacional com limitações explícitas",
"delivered": 129,
"functional_residuals": [
"P058",
"P084",
"P085"
],
"documentary_residual": "P001 — exclusivamente05/06",
"reopened": false
},
"source_cotejo": [
{
"document": "Lei13/2016,CIVA republicado",
"file": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"articles": "22(4–8);51(1/4)",
"pdf_pages": [
16,
21
],
"printed_pages": [
"1426(274)",
"1426(279)"
],
"renders": [
"outputs/iva-l2-d-20261025/2016-16.png",
"outputs/iva-l2-e-20261025/2016-21.png"
]
},
{
"document": "Decreto7/2008,de16deAbril,Regulamento do CIVA",
"file": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"article": "27(1–3)",
"pdf_page": 5,
"printed_page": "103",
"render": "outputs/iva-l2-e-20261025/2008-5.png",
"scope": "registo individual de activos/data/IVA suportado/deduzido;sem criar regularização plurianual genérica"
}
],
"implemented": {
"annual": "Adopção expressa de resultadoD congelado e parcelas originais;reutiliza documento/linha,IVA elegível já limitado porC,quociente aplicado e dedução exacta. Bases finais anuais22(4–5),quociente à centésima superior22(8);delta=final−efectivamente deduzido;último período do ano22(6). Histórico original conservado na revisão seguinte,sem recálculo automático.",
"assets": "Reutiliza aquisiçõescampo08 e identifica expressamente bens de investimento importados,conservando campo11. Controlo27RCIVA:data,documento/linha,IVA suportado e deduzido,moeda/versão e natureza efectiva/projectada. Sem amortização ou periodicidade presumida.",
"purchase_correction": "51(4):uma parcela original,documento rectificativo do fornecedor,data de recepção,motivo/âmbito,dedução corrigida documentada e manutenção das condições de direito. Redução/anulação a favor do Estado;recepção ou período seguinte. Acréscimo,erro e mudança de direito conservam percursos próprios.",
"preservation": "ChavesE compactas de detecção de alterações,não autoridade fiscal;conservam integralmente os dados de origem sem repetição nas chaves. Gravação privada/API e recuperação exactas. Alterações desactualizam o resultado;originais e versões anteriores preservados.",
"deduplication": "Identidade por documento/linha e ano para acerto anual,mesmo com revisões diferentes. Não regularizar duas vezes a mesma parcela,nem empilhar nota de crédito e acerto anual sem reconciliação. Origem em falta/versão incoerente não vira zero.",
"reuse": "Mantém livros A/B/C/D e mapasL1;novos campos só para bases finais,eventos,documentos e condições em falta. Sem nova aprovação/certificado. E guarda resultado próprio;F é actualizado por acção expressa,sem tocar silenciosamente no resultadoD."
},
"F": {
"exact_example": {
"12": "132/25",
"13": "4/3",
"14": "1000/1",
"15": "736/25",
"16": "484/3",
"17": "9892/75",
"18": "0/1"
},
"presentation_MZN": {
"12": "5.28",
"13": "1.333333",
"14": "1000.00",
"15": "29.44",
"16": "161.333333",
"17": "131.893333",
"18": "0.00"
},
"negative_annual_example": "Base final1/2 contra provisórios34%/67%:delta−4/25MZN,campo13;sem nova dedução.",
"C_example": "IVA16,gasóleoC50%→8;pro rata34%→2.72;final67%→5.36;delta2.64,sem reaplicarC.",
"unknown": "Cobertura incompleta,denominadorzero,fonte/factos em falta,edição da aquisição original ou resultadoE desactualizado→12/13 e totais afectados indeterminados. Ausência12/13 contraditória exige reconciliação expressa.",
"precision": "Fracções exactas;decimais técnicos até6casas,sem regra declarativa presumida."
},
"validation": {
"frontend": "31testes dirigidos:22ABC/D/compras reutilizados e9E;todos passaram.",
"API": "1teste/94asserções;gravação→recuperação exacta de modelo_a_snapshot,origensD,históricos,activos e mapas anteriores;DatabaseTransactions rollback,base simulator_fiscal_delta_20261021_test,porta55441.",
"types": "types:check passou",
"build": "build passou",
"UI": "Componente real;denominadorzero mantém totais indeterminados;gravar→recuperar→relatório em dois âmbitos sintéticos;totais e activo conferidos. Provas válidas anteriores reutilizadas.",
"proofs": [
"outputs/iva-l2-e-20261025/ui-recovered-totals.png",
"outputs/iva-l2-e-20261025/ui-recovered-asset.png"
],
"logs": [
"outputs/iva-l2-e-20261025/frontend-tests-final.txt",
"outputs/iva-l2-e-20261025/types-final.txt",
"outputs/iva-l2-e-20261025/build-final.txt"
]
},
"scope_limits": [
"Combinação18(6)+afectação mista continua pendente;sem produto genérico de percentagens.",
"E demonstrado:acerto anual22(6),controlo individual dos activos e redução/anulação documentada da dedução pelo adquirente51(4),emMZN/2026. Não equivale a automatização de todas as regularizações.",
"Sucessão de nota de crédito e acerto anual na mesma parcela requer reconciliação sequencial própria;não somar dois deltas independentes. Vários documentos rectificativos sobre a mesma parcela ainda não consolidados por este percurso.",
"Erros materiais51(6–7),incobráveis/recuperações51(8–9),mudanças de regime e regularizações plurianuais não automatizados. Não se inventa percentagem/prazo de activos. O registo27RCIVA não constitui esse cálculo.",
"O motor mensal mantém2026/MZN. Um prazo51(4) que alcance2027 é conservado no relatório;lançamento em2027 permanece fora do âmbito mensal demonstrado.",
"Origem de bases reduzidas sem IVA liquidado consolidado mantém14/16/17/18 indeterminados,também quando só existem eventosE no livro do período.",
"17/18 são diferenças antes de créditos anteriores;19–27,pagamento/reembolso e restituição de bebidas mantêmL3. Formalidades digitais não automatizadas e cálculo fiscal restante dos ramosL1 limitados continuam identificados.",
"Divergência de remissões textuais11/12 versus caixas12/13 mantém-se identificada;P001 continua exclusivamente05/06."
],
"schema_changes": false,
"active_writes": false,
"runtime_delta": [
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "2bca130d43808e8e0b773d63591f9711462fc79ba7cc231821ce693d4bd010f9"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "4ce47274449e075e5e22a02f7bc497e4df6925c1d628f1e9cd057748d016012f"
},
{
"path": "resources/js/lib/iva-acquisition-allocation.ts",
"sha256_LF": "df960bab63e89c3b3cea3c61b5c57481194b19d5dd0894830a181cdbe10dc972"
},
{
"path": "resources/js/lib/iva-regularizations.ts",
"sha256_LF": "72f432ab11a09ff4a1893ca59c9f19b88d6e709ba59842b087630fd7623e24c9"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "0af55cadc0bf2cd0b88673653c6915fcb36e7f3ad61b34721e44b2865da29d42"
},
{
"path": "resources/js/components/acquisition-allocation.tsx",
"sha256_LF": "222204ee4c699b2cbddb9cb921a37397f6be313a215905163ee135aa2b26f104"
},
{
"path": "resources/js/components/acquisition-regularizations.tsx",
"sha256_LF": "9b551a10613410210e5106f8b2de5a9c1d596d1d793a12a4c0c6cae06d5b32e2"
}
]
}
@@ -0,0 +1,116 @@
{
"status": "L3-A/B concluído em QA no âmbito demonstrado;preparado para entrega conjunta,sem instalação",
"matrix_anchor": "AUD-SIM-INT02",
"installed_revision": "7a380b76",
"installed_receipt": "acbd1f33",
"L1": {
"delivered": 129,
"functional_residuals": [
"P058",
"P084",
"P085"
],
"documentary_residual": "P001 — exclusivamente05/06"
},
"L2_pending": [
"18(6)+afectação mista",
"regularizações sucessivas e plurianuais",
"regularizações por erros e incobráveis"
],
"L3_pending": [
"C — substituições",
"D — pedido/reembolso geral",
"E — restituição de bebidas"
],
"source_cotejo": {
"accepted_exemplar": "VAT Return.pdf SHA2569c0b99a810c7db53eb75d63c22ee22fb86a50ba57bd5509041ed80ee10f75741,p1–2;DOCX62c198e9/63d45fa8 preservados",
"articles": "CIVA21(2/5),Lei13/2016 PDF15/p1426(273);23(1),PDF16/p1426(274);RCIVA12/15,Decreto7/2008 PDF3/p101. Quadro8 créditos e10/11 fecho. Lei10/2025 não fornece autorização para copiar remissãoart20 do formulário para reembolso geral;D separado.",
"conclusions": "Primeira declaração,excesso deduzido nos períodos seguintes;crédito comunicado exige referência/data da comunicação;utilização anterior apenas em prazo.25/26 não equivalem a recebimento. Fora do prazo não usar crédito por presumirzero;conservar conta e indicar procedimento.",
"divergences": "Cabeçalho do exemplar refere18/19,mas caixas19/20 identificadas;divergência visível,sem renumerar original nem reabrirP00105/06.",
"no_repeated_research": true
},
"implemented": {
"frozen_L2": "Reutiliza17/18 exactos de resultado congelado com oportunidade,período,moeda,localização,revisão,data e impressão de alterações;não recalcula L2. Acrescentar versãoL2 não invalida automaticamente uma origem congelada ainda disponível. Origem ausente/fabricada/indeterminada impede o fecho dependente.",
"credits": "19:saldo de abertura do mês anterior com documento/período e montante disponível,ou26 do fecho imediatamente anterior adoptado expressamente.20:comunicação recebida,referência,origem,data e montante. Cobertura de todos os créditos confirmada;lista vazia não viraausência silenciosa. Documento não duplicado como abertura e comunicação nem entre linhas/períodos do âmbito recuperado.",
"closure": "22=max(17−19−20,0);25=max(18+19+20−17,0);24=22+23;26=25 por opção expressa de reporte integral e27=0 por ausência expressa de pedido nessa opção.21não aplicável à primeira declaração,sem declararCimplementado. Valores desconhecidos não viramzero.",
"payments": "Documento,data e montante registados separados de24 e26;saldo por liquidar e excedente pago calculados separadamente. Pagamento não altera IVA/creditotransportado. Excedente não cria crédito20 sem comunicação. Referência repetida exige reconciliação.",
"continuity": "Três períodos encadeados,fracções exactas sem somar aproximações. Alteração de crédito original preserva versão anterior e exige adopção expressa em cada dependente;botão disponível mesmo mantendo o mesmo identificador do fecho anterior. Editar apenas pagamentos não altera o crédito26.",
"reuse": "Reutiliza livro/modelo_a_snapshot,ETag/API privada,aritmética e relatório de dossier existentes. Entidade fiscal única já indicada reutilizada ao preparar outro mês. Valores ocultos preservados,sem novos aprovadores/certificados.",
"history": "Cada resultado congela entradas completas e resultados;recalcular acrescenta o anterior ao histórico. Relatório histórico lê os seus próprios documentos/créditos/pagamentos,não as novas entradas editadas. Originais e mapasL1/L2 comparados integralmente."
},
"demonstration_MZN": [
{
"period": "2026-01",
"L2_18": "100",
"19_opening": "50",
"25": "150",
"26": "150",
"paid": "0"
},
{
"period": "2026-02",
"L2_17": "80",
"19_from_Jan": "150",
"25": "70",
"26": "70",
"paid": "0"
},
{
"period": "2026-03",
"L2_17": "160",
"19_from_Feb": "70",
"20_communicated": "20",
"22": "70",
"23": "2",
"24": "72",
"paid": "30",
"outstanding": "42",
"26": "0"
}
],
"exact_fraction_example": "ResultadoL2 deIVA500×1/3 menos160=20/3;maisabertura50=170/3 transportados;no mês seguinte80−170/3=70/3 a entregar. Sem transporte de decimal arredondado.",
"validation": {
"frontend": "18testes dirigidos passaram:9A/B novos e9E reutilizados;após ajustes finais,9A/B repetidos com preservação/histórico/relatório e todos passaram.",
"API": "1teste/103asserções;simulator_fiscal_delta_20261021_test,porta55441,DatabaseTransactions rollback. modelo_a_snapshot recuperado byte a byte;origensL2,créditos,documentos,pagamentos,contextos,históricos e todos os mapasL1/L2 anteriores conservados.",
"types": "npm.cmd run types:check passou",
"build": "npm.cmd run build passou",
"UI": "Componente real:alterar50→60 invalida Fevereiro/Março;adopção expressa em cada mês recupera continuidade. Reposição do exemploAPI,gravar→recuperar→relatório confirma150→70→0 e72calculado/30registado/42porliquidar.",
"proof": "outputs/iva-l3-ab-20261025/ui-recovered-closure.png",
"logs": [
"outputs/iva-l3-ab-20261025/frontend-tests-final.txt",
"outputs/iva-l3-ab-20261025/frontend-ab-final.txt",
"outputs/iva-l3-ab-20261025/types-final.txt",
"outputs/iva-l3-ab-20261025/build-final.txt"
]
},
"limits": [
"Âmbito demonstrado2026/MZN,primeira declaração em prazo e opção expressa de reporte integral. Prazo/data são declarados com referência,sem calendário legal automático.",
"Juros23:montante documentado/pressuposto ou inexistência expressa com motivo;taxa/prazo de juros não automatizados.",
"C:substituições21;D:pedidos de reembolso27;E:restituição de bebidas13(2) continuam pendentes na mesma matriz.27zero neste caso decorre da opção expressa de reporte integral,não da conclusãoD.",
"Declaração fora do prazo conserva origem/conta mas não fecha19–27 neste percurso;procedimento próprio pendente,sem apagar o crédito.",
"Controlo de duplicação sobre livros/mapas recuperados neste rascunho e âmbito declarado;não é conta corrente central da AT nem reconciliação automática entre rascunhos privados diferentes. Cenários projectados de oportunidades diferentes não são consumos fiscais efectivos.",
"Registo de pagamento é informação declarada,sem execução de pagamento,certificação de arrecadação ou nova comunicação20 por excedente. Não sincroniza caixa silenciosamente.",
"L2 mantém18(6)+afectação mista,regularizações sucessivas/plurianuais e erros/incobráveis.17/18 indeterminados bloqueiam só o respectivo fecho;outros casos independentes avançam.",
"L1 mantém129fechos+P058/P084/P085+P001=133;P001 exclusivamente05/06. Estatísticas eIAadiadas."
],
"schema_changes": false,
"active_writes": false,
"runtime_delta": [
{
"path": "resources/js/lib/iva-closure.ts",
"sha256_LF": "542e75fde957a8b2ebbee8d66d17ca8c5663183f89b85e7b7819d86253dd22ea"
},
{
"path": "resources/js/components/acquisition-closure.tsx",
"sha256_LF": "2f745bd54c8753215ef6386e52d9e3ab1785330310c6b725e67bbfaef29ffd06"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "b94ead08dc13a89ffa0a1b89472b39836b20df73fbfe028dfe4ffa697cd7e29c"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "233999eea4d7ca86df8af58ed46cb026a5c9fd9a3e507e56e43fdaa801436510"
}
]
}
@@ -0,0 +1,307 @@
{
"status": "installed_L3_AB_first_timely_declaration_integral_carry",
"candidate": "f7b778cdcef774fea5065c035676422fff5f0123",
"baseline_installed": "7a380b76",
"baseline_receipt": "acbd1f33",
"report": "docs/investmoz/simulations/l3-ab-closure-qa-20261025.json",
"coverage": "L3-A/B no âmbito demonstrado;C/D/E e residuaisL1/L2 permanecem na mesma matriz.",
"compatibility_at_preparation": {
"origin_main": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"main_is_ancestor": true,
"checked_utc": "2026-10-25T12:00:29.072855+00:00"
},
"runtime_delta": [
{
"path": "resources/js/lib/iva-closure.ts",
"sha256_LF": "542e75fde957a8b2ebbee8d66d17ca8c5663183f89b85e7b7819d86253dd22ea"
},
{
"path": "resources/js/components/acquisition-closure.tsx",
"sha256_LF": "2f745bd54c8753215ef6386e52d9e3ab1785330310c6b725e67bbfaef29ffd06"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "b94ead08dc13a89ffa0a1b89472b39836b20df73fbfe028dfe4ffa697cd7e29c"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "233999eea4d7ca86df8af58ed46cb026a5c9fd9a3e507e56e43fdaa801436510"
}
],
"limits": [
"Âmbito demonstrado2026/MZN,primeira declaração em prazo e opção expressa de reporte integral. Prazo/data são declarados com referência,sem calendário legal automático.",
"Juros23:montante documentado/pressuposto ou inexistência expressa com motivo;taxa/prazo de juros não automatizados.",
"C:substituições21;D:pedidos de reembolso27;E:restituição de bebidas13(2) continuam pendentes na mesma matriz.27zero neste caso decorre da opção expressa de reporte integral,não da conclusãoD.",
"Declaração fora do prazo conserva origem/conta mas não fecha19–27 neste percurso;procedimento próprio pendente,sem apagar o crédito.",
"Controlo de duplicação sobre livros/mapas recuperados neste rascunho e âmbito declarado;não é conta corrente central da AT nem reconciliação automática entre rascunhos privados diferentes. Cenários projectados de oportunidades diferentes não são consumos fiscais efectivos.",
"Registo de pagamento é informação declarada,sem execução de pagamento,certificação de arrecadação ou nova comunicação20 por excedente. Não sincroniza caixa silenciosamente.",
"L2 mantém18(6)+afectação mista,regularizações sucessivas/plurianuais e erros/incobráveis.17/18 indeterminados bloqueiam só o respectivo fecho;outros casos independentes avançam.",
"L1 mantém129fechos+P058/P084/P085+P001=133;P001 exclusivamente05/06. Estatísticas eIAadiadas."
],
"required_at_delivery": [
"Fetchmain fresco e reconciliação de concorrência semreset/force",
"Autenticação de destino,backup novo e restauro isolado antes da instalação",
"Integração pelo processoGit existente,sem migração/importação",
"Conferir apenas delta instalado e preservação com mesmo contextoRLS;reutilizar provasQA aceites",
"Emitir recibo e conservarC/D/E e os residuais anteriores"
],
"active_writes": "Git release installation only;no migrations/imports/history recalculation",
"accepted_candidates": [
"f7b778cd"
],
"reports": [
"docs/investmoz/simulations/l3-ab-closure-qa-20261025.json"
],
"compiled_delta_markers_expected": [
"Preparar fecho de outro período",
"Calcular e guardar fecho A/B",
"Adoptar versão actual deste reporte",
"Pagamentos e reporte",
"Não aplicável (primeira declaração)",
"fxSelection",
"formDecisionHash"
],
"authorization": "Tempo pede entrega conjunta L3-A/B;preservar7a380b76,backup/restauro e delta;72calculados/30pagos/42porliquidar distintos;C apenas QA após entrega.",
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
}
],
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"release": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"previous_release": "/var/www/investmoz-homologacao/releases/819ae791e9f3a7347ec8c804f58e6cc34a22cfaf-1b2bd7df",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"release_revision": {
"commit": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"branch": "main",
"built_at": "2026-10-25T11:34:19.713723+00:00",
"manifest_sha256": "3d77a70b77f2429d3f01603de5cbc667049652f7fda166168650a918269aa790"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l3-ab-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "e5463bf6eab85974fb35bac468b52cb08bfb26da605f19474020dd0fa3b6c017",
"files_sha256": "ad1c649038eabcdfacbb5716a69977025cc02bfa1769c3fc7870b60e791ccbfd",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l3_ab_restore_20261025",
"port": 55441,
"source_dump_sha256": "e5463bf6eab85974fb35bac468b52cb08bfb26da605f19474020dd0fa3b6c017",
"active_database_writes": 0
}
},
"served_commit": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"release": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"previous_release": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 4,
"documentary_files_verified": 4,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "55bb706f02d988c7d87fba96c2729db8"
},
"after": {
"rows": 106,
"checksum": "5af96bfa1abf1bce20160c907529c4cc"
}
},
"sessions": {
"before": {
"rows": 141,
"checksum": "78c3cca9cfa91ef75998b6b51488722c"
},
"after": {
"rows": 142,
"checksum": "9ef0701db318222286160d5d781b6ede"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"branch": "main",
"built_at": "2026-10-25T12:12:55.013877+00:00",
"manifest_sha256": "b03c54cdb68bb7d22ad41183623d9a8c443656770a34e06cf9275da1cb1f68c9"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Preparar fecho de outro período": [
"assets/services-CM5nW1rB.js"
],
"Calcular e guardar fecho A/B": [
"assets/services-CM5nW1rB.js"
],
"Adoptar versão actual deste reporte": [
"assets/services-CM5nW1rB.js"
],
"Pagamentos e reporte": [
"assets/project-dossier-BkfBB-c2.js"
],
"Não aplicável (primeira declaração)": [
"assets/project-dossier-BkfBB-c2.js"
],
"fxSelection": [
"assets/services-CM5nW1rB.js",
"assets/project-dossier-BkfBB-c2.js"
],
"formDecisionHash": [
"assets/project-dossier-BkfBB-c2.js"
]
},
"assets": [
{
"file": "assets/services-CM5nW1rB.js",
"status": 200,
"sha256": "d60171fd87b383ba5315b85739eb1373ec25a8f536d3d64d0bfa12c705ad11ec"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-BkfBB-c2.js",
"status": 200,
"sha256": "06163463767eab9cb825bc9b0a985f1c8de883d434cec4706238e43dd074e6a8"
},
{
"file": "assets/project-dossier-document-Dv6Im3m-.js",
"status": 200,
"sha256": "20bbfb1051ec893c99648a67c09a59c053b2603e908c15d490ea3bf827633584"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-D1CD2Q0E.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"release": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"previous_release": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"release": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"previous_release": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"109cb0fe9e1530dd09b8277a422ae9c5e68e0674"
],
"finished_at": "2026-10-25T12:12:58.104979+00:00"
},
"log_file": "1792930234074393355.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 30.66s",
"OK (59 tests, 317 assertions)",
"# tests 713",
"# pass 713",
"# fail 0"
],
"log_bytes": 208502
},
"rollback_executed": false
},
"L3": "A/B entregue no âmbito demonstrado;C/D/E pendentes na mesma matriz",
"next": "L3-C substituições em QA,ligando anterior ao diferencial sem duplicar créditos/pagamentos",
"L1": "129entregues+P058/P084/P085+P001=133;sem reabertura",
"L2": "âmbito demonstrado entregue;18(6)+mista,sucessivas/plurianuais,erros/incobráveis pendentes",
"example": {
"calculated_MZN": 72,
"registered_paid_MZN": 30,
"outstanding_MZN": 42
}
}
@@ -0,0 +1,51 @@
{
"status": "installed_L3_AB_demonstrated_scope_CDE_pending",
"candidate": "commit que contém este manifesto",
"baseline_installed": "7a380b76",
"baseline_receipt": "acbd1f33",
"report": "docs/investmoz/simulations/l3-ab-closure-qa-20261025.json",
"coverage": "L3-A/B no âmbito demonstrado;C/D/E e residuaisL1/L2 permanecem na mesma matriz.",
"compatibility_at_preparation": {
"origin_main": "7a380b76904de50ba675f0b67e0aa949672dbc65",
"main_is_ancestor": true,
"checked_utc": "2026-10-25T12:00:29.072855+00:00"
},
"runtime_delta": [
{
"path": "resources/js/lib/iva-closure.ts",
"sha256_LF": "542e75fde957a8b2ebbee8d66d17ca8c5663183f89b85e7b7819d86253dd22ea"
},
{
"path": "resources/js/components/acquisition-closure.tsx",
"sha256_LF": "2f745bd54c8753215ef6386e52d9e3ab1785330310c6b725e67bbfaef29ffd06"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "b94ead08dc13a89ffa0a1b89472b39836b20df73fbfe028dfe4ffa697cd7e29c"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "233999eea4d7ca86df8af58ed46cb026a5c9fd9a3e507e56e43fdaa801436510"
}
],
"limits": [
"Âmbito demonstrado2026/MZN,primeira declaração em prazo e opção expressa de reporte integral. Prazo/data são declarados com referência,sem calendário legal automático.",
"Juros23:montante documentado/pressuposto ou inexistência expressa com motivo;taxa/prazo de juros não automatizados.",
"C:substituições21;D:pedidos de reembolso27;E:restituição de bebidas13(2) continuam pendentes na mesma matriz.27zero neste caso decorre da opção expressa de reporte integral,não da conclusãoD.",
"Declaração fora do prazo conserva origem/conta mas não fecha19–27 neste percurso;procedimento próprio pendente,sem apagar o crédito.",
"Controlo de duplicação sobre livros/mapas recuperados neste rascunho e âmbito declarado;não é conta corrente central da AT nem reconciliação automática entre rascunhos privados diferentes. Cenários projectados de oportunidades diferentes não são consumos fiscais efectivos.",
"Registo de pagamento é informação declarada,sem execução de pagamento,certificação de arrecadação ou nova comunicação20 por excedente. Não sincroniza caixa silenciosamente.",
"L2 mantém18(6)+afectação mista,regularizações sucessivas/plurianuais e erros/incobráveis.17/18 indeterminados bloqueiam só o respectivo fecho;outros casos independentes avançam.",
"L1 mantém129fechos+P058/P084/P085+P001=133;P001 exclusivamente05/06. Estatísticas eIAadiadas."
],
"required_at_delivery": [
"Fetchmain fresco e reconciliação de concorrência semreset/force",
"Autenticação de destino,backup novo e restauro isolado antes da instalação",
"Integração pelo processoGit existente,sem migração/importação",
"Conferir apenas delta instalado e preservação com mesmo contextoRLS;reutilizar provasQA aceites",
"Emitir recibo e conservarC/D/E e os residuais anteriores"
],
"active_writes": false,
"served_commit": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"receipt_report": "docs/investmoz/simulations/l3-ab-delivery-20261025.json"
}
@@ -0,0 +1,523 @@
{
"status": "installed_and_delta_verified",
"authorization": "Tempo25/10:entregarL3combackup/restaurofrescoeconferênciadodelta;L3mantémresiduaispróprios.",
"base_installed": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"source_QA": "b189d0fa",
"candidate_branch": "codex/l3-additional-delivery-20261025",
"candidate_path": "C:\\laragon\\www\\portal-investidor-l3-qa-20261025",
"runtime_delta": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "0d6f12b43a1137cbd8146e5d1beac960af48f4389f95c58dbd21505ca9635f46"
}
],
"accepted_QA_proofs_reused": {
"frontend_distinct_tests": 43,
"frontend_proof": [
"frontend-complete.txt:41 distinct passed",
"form-fields.txt:1 additional passed",
"fraction-test-final.txt:non-terminating exact fraction case passed;2 prior cases repeated only for changed parser"
],
"private_API": {
"tool": "phpunit",
"result": "passed",
"tests": 1,
"passed": 1,
"assertions": 105,
"duration_ms": 8525
},
"QA_database": "simulator_fiscal_delta_20261021_test:55441;DatabaseTransactions rollback;exact snapshot recovery",
"types": "passed",
"build": "passed",
"UI": [
"real component:5–16 overlaps previous0–6 and is rejected;restore6–16 gives10",
"save→recover→report confirms10 and gap/form sections",
"actual HTML download checked;C/D field mappings separately tested72,61,800000/200000/600000"
],
"UI_proof": "outputs\\iva-l3-e-partitions-20261025\\ui-reconciled-6-10.png",
"sources_unchanged": 37,
"prior_contexts_preserved_API_UI": true,
"matrix_other_rows_unchanged": true
},
"additional_residual_text_only": [
"resources/js/lib/iva-operations.ts:modeloA06Correspondence",
"resources/js/components/simulation-operations.tsx:residuallabels"
],
"P001_functional_changes_included": false,
"public_before": {
"revision": {
"commit": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"branch": "main",
"built_at": "2026-10-25T13:28:49.649888+00:00",
"manifest_sha256": "333c73acb7dc53c39e8cbfc244d23e589780f916edd8287ae4b538cc7d1df115"
},
"manifest_matches": true,
"simulator_status": 200
},
"compiled_delta_markers_expected": [
"Repartição do IVA documental em MZN",
"Reconciliação da dedução anterior",
"Cálculos indeterminados e condições para resolver",
"Preparação dos quadros L3 e formalidades",
"Calcular e guardar restituição E",
"Calcular e guardar acompanhamento D",
"Calcular e guardar substituições C"
],
"compiled_delta_markers": {
"Repartição do IVA documental em MZN": [
"assets/services-Yy7oCdim.js"
],
"Reconciliação da dedução anterior": [
"assets/services-Yy7oCdim.js"
],
"Cálculos indeterminados e condições para resolver": [
"assets/services-Yy7oCdim.js"
],
"Preparação dos quadros L3 e formalidades": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar restituição E": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar substituições C": [
"assets/services-Yy7oCdim.js"
]
},
"schema_changes": 0,
"PHP_configuration_dependency_changes": 0,
"new_functional_test_round": false,
"build": "passed_exit0",
"types": "passed_exit0",
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
}
],
"execution_remaining": [
"Reabrir ligação autenticada ao destino e confirmar revisão/serviço/configuração.",
"Executar backup novo e restauro real embaseisolada,com mesmaidentidade/contexto na comparação dos dadosprotegidos.",
"Integrar/apresentar apenas candidata compatível pelo processoGit existente;conferir revisão,manifesto,assets,12ficheirosalterados e preservação."
],
"L3_balance": {
"base_installed": "7ad187f9",
"QA_increment": "b189d0fa",
"items": [
{
"item": "Entrega do incremento b189d0fa",
"tipo": "disponibilização",
"estado": "QA demonstrada;não instalada",
"falta": "Entrega pelo processoGit existente,com comparação fresca do destino,backup/restauro e conferência do delta. Não repetir provas aceites sem alteração relevante."
},
{
"item": "Mudança/anulação de dedução anterior e versões divergentes",
"tipo": "desenvolvimento fiscal e dados da operação",
"estado": "a dedução estável e parcela complementar já estão demonstradas;reversão/sequência não estão",
"falta": "Vincular a dedução original às regularizações efectivamente aplicáveis,com motivo,fonte,período,montante e sequência;demonstrar saldo sem benefício duplicado. Uma preparação/edição não liberta IVA já utilizado."
},
{
"item": "IVA do fornecimento e apuramentos limitados de margem/viagens/eventos",
"tipo": "desenvolvimento de cálculos e integração",
"estado": "diagnóstico disponível emQA;cálculos identificados continuam indeterminados",
"falta": "Para cada cálculo aplicável,resolver base,regra,dados e momento próprios e demonstrar integração coerente nos totais. IVA documental16da aquisição não éIVA do fornecimento."
},
{
"item": "FormalidadesC",
"tipo": "correspondência documental delimitada e preenchimento",
"estado": "campos21–24 do exemplar preparados emQA;correspondência de edição pendente",
"falta": "Esclarecer ModeloB referido noRCIVA15 versus substituiçãoModeloA do exemplar recebido;demonstrar formulário aplicável sem alterar o original."
},
{
"item": "FormalidadesD",
"tipo": "exemplares/instruções específicos e preenchimento",
"estado": "25/26/27 preparados emQA;pedido regulamentar completo não demonstrado",
"falta": "Usar os exemplares/instruções especificamente identificados dosDecretos78/2017,30/2022,52/2025 quando disponíveis;corresponder campos e anexos. Sem repetir pesquisa sem nova evidência."
},
{
"item": "FormalidadesE",
"tipo": "modelo/instrução específica e preenchimento",
"estado": "dossier de apoio separado;modelo específico13(2) por identificar",
"falta": "Corresponder procedimento/formulário de restituição de bebidas13(2)quando disponibilizado;sem adoptar27,limiares ou prazos do reembolso geralD."
}
],
"scope_limit": "A prevenção de duplicação cobre os livros/históricos recuperados. Reconciliação central com aAT ou todos os dossiers não foi demonstrada;isto é limite técnico registado,não nova condição organizacional de fecho.",
"outside_L3": "L1:131entregues+P001QAparcial(casopositivo06pendente)+P058residual=133;P084/P085fechados.L2residuaispróprios;estatísticas/IAadiadas."
},
"limits": [
"P001residual,retomaapenascomesclarecimentoconcreto;sematribuiçãoautomática06.",
"P058parcial/exclusõespreservados;P084/P085fechados.",
"Eoriginal16documental/0dedução/12reconhecidos/7recebidos/5porreceber;incremento6deduzidos+10pedidoéoutrocenário,semconcessãopresumida.",
"L3continuaaberto:regularizaçõessequenciais/estornos,apuramentospróprios eformalidadesC/D/Edelimitadas.",
"SemcontacentralATpresumida,novaautoridadeoucondiçãoorganizacional.",
"Preparação não equivale ainstalação;backup antigo nãoéprovafresca."
],
"active_writes": 0,
"candidate_commit": "0f4df8a4d1cfd0d7b788e58d7f6af8d385384d82",
"candidate_build_proof": "outputs/l3-additional-delivery-20261025/candidate-build-final.txt",
"candidate_types_proof": "outputs/l3-additional-delivery-20261025/candidate-types.txt",
"requested_candidate": "0f4df8a4d1cfd0d7b788e58d7f6af8d385384d82",
"installed_commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"compatibility_correction": {
"requested_candidate": "0f4df8a4",
"actual_target": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"delta": "tests/frontend/iva-l1-delta.test.mjs only; obsolete text assertions updated to accepted P001 residual. No fiscal/runtime/schema/config/data changes.",
"new_evidence": "pipeline756/757;singlefailurelegacywording",
"directed_verification": "1passed;legacy-assertion.txt",
"P001": "remainsresidual;no functional expansion or research"
},
"authenticated_backup": {
"stage": "/var/backups/investmoz-l3-additional-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "ef95cc22d9c5c6b924309fa8c7654a42d7afe67e26b0c118903f507dd2693d0e",
"files_sha256": "b60d64adfc99ed51621ace3d8b273bf3c723978cf8dd08b16c61fab5a3dfb0e3",
"restore_verified": false
},
"isolated_restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l3_additional_restore_20261025",
"port": 55441,
"source_dump_sha256": "ef95cc22d9c5c6b924309fa8c7654a42d7afe67e26b0c118903f507dd2693d0e",
"active_database_writes": 0
},
"installed_preservation": {
"installed": {
"status": "installed",
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"release": "/var/www/investmoz-homologacao/releases/fa32a2b9e127da9c4d764dd99ef58ee43b770aa6-ad33eeab",
"previous_release": "/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 12,
"documentary_files_verified": 17,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "8ba41882cd8a7068c45619b3234af395"
},
"after": {
"rows": 106,
"checksum": "e2140cc9610defc5e64743159fb4df57"
}
},
"sessions": {
"before": {
"rows": 153,
"checksum": "66a8c21d1167a5c4ef27e205006736d4"
},
"after": {
"rows": 154,
"checksum": "6bd8d1311dcc20736dacc02873316399"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"installed_public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"branch": "main",
"built_at": "2026-10-25T15:12:37.806036+00:00",
"manifest_sha256": "cddac25dc66b3e555f2380cf3a9d4b2da6501cd03927c183c832a05b0ee5c993"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"Repartição do IVA documental em MZN": [
"assets/services-Yy7oCdim.js"
],
"Reconciliação da dedução anterior": [
"assets/services-Yy7oCdim.js"
],
"Cálculos indeterminados e condições para resolver": [
"assets/services-Yy7oCdim.js"
],
"Preparação dos quadros L3 e formalidades": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar restituição E": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-Yy7oCdim.js"
],
"Calcular e guardar substituições C": [
"assets/services-Yy7oCdim.js"
]
},
"assets": [
{
"file": "assets/project-dossier-document-DEYq4rSm.js",
"status": 200,
"sha256": "76e21fbdb32395a7208023b171208a278d966a726ca5da75616eb4895f900085"
},
{
"file": "assets/services-Yy7oCdim.js",
"status": 200,
"sha256": "fcccdac290664ac7ab03656f2b82fc412d558352611f96d356d0fa6b82eabee8"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-BFOK3ylo.js",
"status": 200,
"sha256": "ee9695ec2699120f5e9381d3e27384a6e4c969899f12659b75b47e7f8f3fa2ac"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-8LF5gm1q.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"build_dependency_archival": {
"status": "dependencies_archived_and_verified",
"versions": 11,
"free_before": 4627697664,
"free_after": 7521255424,
"receipt": "/var/backups/investmoz-build-dependencies-20261025/receipt.json",
"protected": [
"/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1"
],
"active_or_previous_release_modified": false,
"source_data_backups_deleted": 0
},
"operational_delta": {
"status": "operational_delta_reconciled",
"comparison_identity": "postgres before/after;isolated restored baseline;no RLS visibility inference",
"cache": "queue:restart value/expiry and request-throttle counter/timer pair;no deleted cache rows",
"sessions": "anonymous sessions created by exact delivery verification user-agent",
"delta": {
"cache": {
"before_rows": 106,
"after_rows": 106,
"changes": [
{
"key_sha256": "8d6ea77eb4b34d86d207362d583cfa8bf2880b907becd9b00398964482c6b4bd",
"kind": "updated",
"fields": [
"expiration"
],
"key_pattern": "investemoz-cache-{hash}",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "2f251473865d14b953236ab95b1521764754d76abd79b58ca7d38c96dfe2fab1",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-{hash}:timer",
"is_queue_restart_key": false,
"expiration_unchanged": false,
"throttle_timer_pair": true
},
{
"key_sha256": "7f7dd83f47f5bf404d55e6e9f1367948721579970b195680645e356031a070ff",
"kind": "updated",
"fields": [
"value",
"expiration"
],
"key_pattern": "investemoz-cache-illuminate:queue:restart",
"is_queue_restart_key": true,
"expiration_unchanged": false,
"throttle_timer_pair": false
}
]
},
"sessions": {
"before_rows": 153,
"after_rows": 156,
"changes": [
{
"key_sha256": "9e2b645a40c93a4975977fd394b80496ecabd7a5b8ae17c259b4105f342e5937",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "1fbd25a79d44d1826aa3b95e1bf19c4268a56b0398ec74f3d4e5b7d5bc44c752",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
},
{
"key_sha256": "65497833fad3b62fd5f3982ff4c6c2770ffb0599616e57f917d38762b87cc59a",
"kind": "added",
"fields": [
"id",
"ip_address",
"user_agent",
"payload",
"last_activity"
],
"anonymous_user": true,
"delivery_user_agent": true
}
]
}
},
"business_tables_unchanged": 172,
"active_data_writes_by_comparison": 0,
"restore_network": "none"
},
"remaining_balance_reference": "l3-e-additional-coverage-qa-20261025.json:current_L3_balance_20261025"
}
@@ -0,0 +1,46 @@
{
"status": "included_in_prepared_CD_group_not_installed",
"candidate": "commit que contém este manifesto",
"baseline_installed": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"baseline_receipt": "3aa851a4",
"report": "docs/investmoz/simulations/l3-c-substitution-qa-20261025.json",
"coverage": "L3-C no âmbito demonstrado;D/E e residuaisL1/L2 mantidos",
"runtime_delta": [
{
"path": "resources/js/lib/iva-substitution.ts",
"sha256_LF": "0ea914bf952ff053f7e6912705f80526aaed5a8b9f4b3bd5a27f737c4aef3977"
},
{
"path": "resources/js/components/acquisition-substitution.tsx",
"sha256_LF": "6a61f59bcbd493ca45e60a14fe3c67375f581581f9cbe882426fdbffa98399c2"
},
{
"path": "resources/js/lib/iva-closure.ts",
"sha256_LF": "3e6491a5e14ee36d264fac56ce1dd363044e2aa34e99fd8325ddf997b97afedb"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "8723882e67dcd6e1ac48b4e3d6602565331cc66295dd887381d50cfdeb072787"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "320440142dff8b26f3eb3c4760b1bbc475694a7e67934e3671cd7d085f30516a"
}
],
"limits": [
"Cobertura demonstrada2026/MZN com origensL2 e declarações anteriores congeladas recuperáveis. Cenários projectados permanecem pressupostos;nenhuma submissãoAT ou certificação de cobrança.",
"RCIVA15 refereModeloB;exemplar recebidoVAT Return assinala substituiçãoModeloA. Cálculo e dossier de apoio disponíveis;preenchimento/submissão do formulário regulamentar e correspondência de edição não automatizados. Não reabreP00105/06.",
"Juros adicionais:montante identificado ou inexistência expressa com fonte/motivo;sem cálculo de taxa/calendário/prazo. Pagamentos anteriores não abatidos novamente;excedente adicional não cria crédito20.",
"Diferencial credor aguarda comunicação dos serviços;não cria transporte26/reembolso27 nem compensa dívida anterior automaticamente. A comunicação20 futura é registada no percursoAB existente com documento/data;sem pedido/submissão automática ou conta corrente centralAT.",
"Controlo de duplicação limitado aos livros recuperados no mesmo rascunho/contextos efectivos;cenários de oportunidades distintas são independentes. Não é reconciliação global entre rascunhos privados diferentes.",
"Históricos permanecem intactos. Versão anterior é escolhida expressamente;alterações/preparações não substituem uma declaração apresentada. Uma mesma anterior não tem dois sucessores no mesmo âmbito recuperado;cadeias circulares recusadas.",
"L3-D reembolso geral eL3-E restituição de bebidas pendentes. L2 mantém18(6)+afectação mista,sucessivas/plurianuais,erros/incobráveis. L1 mantém129fechos+P058/P084/P085+P001=133. Estatísticas/IA adiadas."
],
"required_at_delivery": [
"fetchmain fresco,preservação de concorrência",
"backup/restauro autenticados antes da instalação",
"Git existente,conferência só do delta eprovasQA reutilizadas"
],
"active_writes": false,
"group_manifest": "docs/investmoz/simulations/l3-cd-prepared-delivery-20261025.json"
}
@@ -0,0 +1,94 @@
{
"status": "L3-C concluído em QA no âmbito demonstrado;sem instalação",
"matrix_anchor": "AUD-SIM-INT02",
"installed_revision": "109cb0fe",
"installed_receipt": "3aa851a4",
"implemented": {
"prior": "Vínculo expresso a resultadoAB/C congelado por identidade,versão e impressão de alterações,com âmbito/período/natureza,17/18,pagamentos/reporte e saldo anterior. Reutiliza data disponível e referência da substituição anterior;divergência exige reconciliação.",
"differential": "21=(17actual−18actual)−(17anterior−18anterior),fracções exactas;22=max(21,0);24=22+juros adicionais identificados. Crédito credor separado,aguarda comunicação20;19/20/25/26/27 não atribuídos porC.",
"payments": "Só pagamentos adicionais;documentosAB/C recuperados,incluindo versões históricas,impedem reutilização. ReciprocamenteABrecusa pagamento já congelado emC. Créditos já usados não são aplicados outra vez.",
"F": "Saldo adicional e anterior separados;total por liquidar é soma sem compensação automática do crédito pendente/excedente. Total registado conserva pagamentos anteriores mais adicionais;nenhuma alteração da declaração original.",
"history": "Novo mapaivaSubstitutions no snapshot existente;entradas/resultados congelados,histórico acrescentado,relatório usa próprias entradas. Cadeia de substituições liga versão anterior ao novo diferencial;sem ciclos/duplicação de sucessores. Todos os mapasL1/L2/AB preservados.",
"UI": "Percurso no componente existente de aquisições,preparação versus apresentada fora doInvesteMoz,origens congeladas,motivo,juros e pagamentos adicionais. Gravar/recuperar/relatório privado existentes reutilizados."
},
"source_cotejo": {
"accepted_exemplar": "VAT Return.pdf SHA2569c0b99a810c7db53eb75d63c22ee22fb86a50ba57bd5509041ed80ee10f75741,p2/quadro9;quatro combinações de17/18,positivo22,negativo só20 após comunicação.",
"regulation": "Decreto7/2008,RCIVA15,BR16,16/04/2008,PDF3/p101;distinção entre primeira declaração e substituição.",
"scope": "C substituição da declaração;rectificação de aquisições12/13 e regularizações/errosL2 mantêm âmbito próprio,sem repetir a mesma correcção como benefício adicional.",
"originals_unchanged": true,
"no_new_generic_research": true
},
"example_MZN": {
"original": {
"17": 160,
"19_used": 70,
"20_used": 20,
"24": 72,
"paid": 30,
"outstanding": 42
},
"corrected_L2_17": 220,
"substitution": {
"21": 60,
"22": 60,
"additional_interest23": 1,
"additional_calculated24": 61,
"additional_paid": 20,
"additional_outstanding": 41
},
"reconciliation": {
"total_registered_paid": 50,
"total_outstanding_without_offset": 83
},
"credit_example": "Actual18=40 versus anterior17=160→21=−200;crédito200 aguarda comunicação,não abate42anteriores nem cria26."
},
"validation": {
"frontend": "18dirigidos passaram na integraçãoAB/C (9AB+9C);após ajuste de actualidade,10C passaram;teste adicional de ciclo passou isoladamente. Total20casos dirigidos distintos(9AB+11C).",
"API": "1teste/109asserções;guarda DBsimulator_fiscal_delta_20261021_test/55441 eDatabaseTransactions rollback. Snapshot recuperado byte a byte,declaraçãoABoriginal72/30/42,mapasL1/L2/históricos preservados.",
"types": "npm.cmd run types:check passou",
"build": "npm.cmd run build passou",
"UI": "Componente real:recibo anteriorP1recusado como novo pagamento;reporP2 permite reconciliação;gravação→recuperação→relatório confirma61/20/41 adicionais,30/42 anteriores e50/83 totais. ComparaçãoAPI/UI confirma todos os mapas anteriores inalterados.",
"proof": "outputs/iva-l3-c-20261025/ui-recovered-substitution.png",
"logs": [
"outputs/iva-l3-c-20261025/frontend-final.txt",
"outputs/iva-l3-c-20261025/frontend-c-final.txt",
"outputs/iva-l3-c-20261025/frontend-cycle.txt",
"outputs/iva-l3-c-20261025/api-final.txt",
"outputs/iva-l3-c-20261025/types-final.txt",
"outputs/iva-l3-c-20261025/build-final.txt"
]
},
"limits": [
"Cobertura demonstrada2026/MZN com origensL2 e declarações anteriores congeladas recuperáveis. Cenários projectados permanecem pressupostos;nenhuma submissãoAT ou certificação de cobrança.",
"RCIVA15 refereModeloB;exemplar recebidoVAT Return assinala substituiçãoModeloA. Cálculo e dossier de apoio disponíveis;preenchimento/submissão do formulário regulamentar e correspondência de edição não automatizados. Não reabreP00105/06.",
"Juros adicionais:montante identificado ou inexistência expressa com fonte/motivo;sem cálculo de taxa/calendário/prazo. Pagamentos anteriores não abatidos novamente;excedente adicional não cria crédito20.",
"Diferencial credor aguarda comunicação dos serviços;não cria transporte26/reembolso27 nem compensa dívida anterior automaticamente. A comunicação20 futura é registada no percursoAB existente com documento/data;sem pedido/submissão automática ou conta corrente centralAT.",
"Controlo de duplicação limitado aos livros recuperados no mesmo rascunho/contextos efectivos;cenários de oportunidades distintas são independentes. Não é reconciliação global entre rascunhos privados diferentes.",
"Históricos permanecem intactos. Versão anterior é escolhida expressamente;alterações/preparações não substituem uma declaração apresentada. Uma mesma anterior não tem dois sucessores no mesmo âmbito recuperado;cadeias circulares recusadas.",
"L3-D reembolso geral eL3-E restituição de bebidas pendentes. L2 mantém18(6)+afectação mista,sucessivas/plurianuais,erros/incobráveis. L1 mantém129fechos+P058/P084/P085+P001=133. Estatísticas/IA adiadas."
],
"runtime_delta": [
{
"path": "resources/js/lib/iva-substitution.ts",
"sha256_LF": "0ea914bf952ff053f7e6912705f80526aaed5a8b9f4b3bd5a27f737c4aef3977"
},
{
"path": "resources/js/components/acquisition-substitution.tsx",
"sha256_LF": "6a61f59bcbd493ca45e60a14fe3c67375f581581f9cbe882426fdbffa98399c2"
},
{
"path": "resources/js/lib/iva-closure.ts",
"sha256_LF": "3e6491a5e14ee36d264fac56ce1dd363044e2aa34e99fd8325ddf997b97afedb"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "8723882e67dcd6e1ac48b4e3d6602565331cc66295dd887381d50cfdeb072787"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "320440142dff8b26f3eb3c4760b1bbc475694a7e67934e3671cd7d085f30516a"
}
],
"schema_changes": false,
"active_writes": false
}
@@ -0,0 +1,340 @@
{
"status": "installed_L3_CD_demonstrated_operational_scope",
"candidate": "9e2d90c88008410c038b5366ebf5e76cf779e284",
"baseline_installed": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"baseline_receipt": "3aa851a4",
"accepted_C_candidate": "b7a745e6",
"reports": [
"docs/investmoz/simulations/l3-c-substitution-qa-20261025.json",
"docs/investmoz/simulations/l3-d-refund-qa-20261025.json"
],
"coverage": "Csubstituições eDreembolso no âmbito operacional demonstrado;formalidades externas,E e residuaisL1/L2 permanecem explícitos",
"compatibility_at_preparation": {
"origin_main": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"main_is_ancestor": true,
"checked_utc": "2026-10-25T12:46:36.801875+00:00"
},
"runtime_delta": [
{
"path": "app/Http/Requests/StoreSimulationFormDraftRequest.php",
"sha256_LF": "61c79fd1735f54d8d1d964d521ec28613184e363dd07a95d619932ba30e9de68"
},
{
"path": "resources/js/lib/iva-refund.ts",
"sha256_LF": "a2f4c0567a0633ad4926c4b57d44c167eae3fc2d9ceb167ce000ffd945ba0bbb"
},
{
"path": "resources/js/components/acquisition-refund.tsx",
"sha256_LF": "72b0706f2d338f4a06a28f0f2a2fa1a29bbeff343b919727fa34465881ed6622"
},
{
"path": "resources/js/lib/iva-closure.ts",
"sha256_LF": "0a916c7e36bb76b853c65839aa18e597bc617efe7c4a003126e44eab4243a2cd"
},
{
"path": "resources/js/components/acquisition-closure.tsx",
"sha256_LF": "321883d3fcf6d761310c896ae9b0536f2b6a802f54c052462692931e14723cc3"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "ed0563fb4f39b1d71310e7b28a2d2aa570fae14ba97a14d55159f3fe96c42901"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "27893e0c9c393a217ece3401ab3e9f839aabdb26f1b62a1130399c2b8666d40d"
},
{
"path": "resources/js/lib/iva-substitution.ts",
"sha256_LF": "0ea914bf952ff053f7e6912705f80526aaed5a8b9f4b3bd5a27f737c4aef3977"
},
{
"path": "resources/js/components/acquisition-substitution.tsx",
"sha256_LF": "6a61f59bcbd493ca45e60a14fe3c67375f581581f9cbe882426fdbffa98399c2"
}
],
"limits": [
"Âmbito demonstrado2026/MZN,primeira declaração em prazo com parcela expressa27 e saldo26;D não submete pedido nem executa recebimento bancário. C conserva o seu âmbito demonstrado,sem cobertura fiscal integral.",
"Fundamentos21(6),21(7a) e21(7b) avaliados com factos e origem declarados/documentados. Composição cronológica completa dos créditos/extractos regulamentares não gerada automaticamente;ordem dos mais antigos confirmada expressamente,sem conta corrente centralAT ou novos aprovadores.",
"Regulamento78/2017,30/2022 e52/2025 identificados;exemplares não localizados no acervo17PDF nem obtidos na consulta delimitadaAT/INM. Formulários,anexos,garantias,compensações,formalidades,suspensões e calendário completo não automatizados. PropostaCTA/resumos não activam regras. Decisão externa documentada pode ser registada sem a avaliação automática do fundamento se tornar autoridade adicional.",
"150dias é prazo textual de reembolso devido,não previsão automática de caixa;10anos de21(15) avaliado pelas datas declaradas,com divergência visível. Obrigação50%/12meses revogada porLei10/2025,não aplicada.",
"Controlo de duplicação sobre livros e históricos recuperados neste rascunho/âmbitos efectivos. Não é reconciliação global entre rascunhos privados diferentes. Projecções de oportunidades diferentes não são consumos fiscais efectivos.",
"Afetação de preparação não altera declaração apresentada. Reporte efectivo já usado numa declaração posterior não pode ser reafectado retroactivamente;usar saldo disponível reconciliado. Pedido apresentado/decisão/recebimento preservam a parcela,inclusive após remoção da preparação actual. Indeferimento/parte não deferida não libertam crédito automaticamente;retorno exige procedimento documentado e reconciliação,sem criar20automaticamente.",
"Recebimento é registo declarado;divergências de valor/data/documento ficam identificadas,sem execução bancária,sincronização silenciosa de caixa ou eliminação do documento.",
"Erestituição de bebidas não demonstrado nesta ronda epermanece pendente,sem bloquearC/D. L1mantém129fechos+P058/P084/P085+P001=133;L2mantém18(6)+mista,sucessivas/plurianuais,erros/incobráveis. Estatísticas/IA adiadas."
],
"required_at_delivery": [
"fetchmain fresco e reconciliação de concorrência",
"backup novo/restauro isolado autenticados antes de instalar",
"uma entregaGit do conjuntoC/D,sem migrações/importações",
"conferir só delta instalado e reutilizar provas válidas",
"manterE e residuaisL1/L2 na mesma matriz"
],
"active_writes": "Git release installation only;no migrations/imports/history recalculation",
"compiled_delta_markers_expected": [
"L3-C — substituições e diferencial",
"L3-D — pedido,decisão e recebimento do reembolso",
"Calcular e guardar acompanhamento D",
"Destinar parcela ao pedido27 — acompanhar emD",
"Calcular e guardar substituições C",
"fxSelection",
"formDecisionHash"
],
"authorization": "Tempo pede entregaGit conjuntaC/D9e2d90c8,preservar109cb0fe,conferir delta e reutilizar provas;E avança emQA após entrega.",
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
}
],
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"release": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"previous_release": "/var/www/investmoz-homologacao/releases/7a380b76904de50ba675f0b67e0aa949672dbc65-7b2c06cb",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"release_revision": {
"commit": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"branch": "main",
"built_at": "2026-10-25T12:12:55.013877+00:00",
"manifest_sha256": "b03c54cdb68bb7d22ad41183623d9a8c443656770a34e06cf9275da1cb1f68c9"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l3-cd-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "b3ec1d7a7f1c5828762ab9e74560a4b1288c8d3724e41788104da3b65d6b6fb5",
"files_sha256": "d2b4a5da79ee27301ccd380aca3867a129264fa0484edf31c534fb1554bd57ec",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l3_cd_restore_20261025",
"port": 55441,
"source_dump_sha256": "b3ec1d7a7f1c5828762ab9e74560a4b1288c8d3724e41788104da3b65d6b6fb5",
"active_database_writes": 0
}
},
"served_commit": "de36f02880adf2337edf9f08c3eb424424adcca0",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "de36f02880adf2337edf9f08c3eb424424adcca0",
"release": "/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"previous_release": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 9,
"documentary_files_verified": 4,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "500e7c52e91e9911b0a1c70c798dfc2e"
},
"after": {
"rows": 106,
"checksum": "95d42dfc5dff3381e6f75cad767aec9f"
}
},
"sessions": {
"before": {
"rows": 145,
"checksum": "504a704b5b36774c10d97aa658879cf6"
},
"after": {
"rows": 146,
"checksum": "3700ee5080f9fb00f72c1816601aa31a"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "de36f02880adf2337edf9f08c3eb424424adcca0",
"branch": "main",
"built_at": "2026-10-25T12:53:05.095488+00:00",
"manifest_sha256": "a815a39818c3ffaca1b9bcb492a1c3aafe89a9badc7437816d7d2d46d44f2c5e"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"L3-C — substituições e diferencial": [
"assets/services-CV3QC6h3.js"
],
"L3-D — pedido,decisão e recebimento do reembolso": [
"assets/services-CV3QC6h3.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-CV3QC6h3.js"
],
"Destinar parcela ao pedido27 — acompanhar emD": [
"assets/services-CV3QC6h3.js"
],
"Calcular e guardar substituições C": [
"assets/services-CV3QC6h3.js"
],
"fxSelection": [
"assets/project-dossier-C09DWbUL.js",
"assets/services-CV3QC6h3.js"
],
"formDecisionHash": [
"assets/project-dossier-C09DWbUL.js"
]
},
"assets": [
{
"file": "assets/project-dossier-C09DWbUL.js",
"status": 200,
"sha256": "9a3a84b90f1e3f453814d873d0fd75200eb1db5bc4bec7c0c782459568872fd7"
},
{
"file": "assets/project-dossier-document-ClPqtcaM.js",
"status": 200,
"sha256": "1392d9385298b9f54ce4b3a386b8bfa10796a58c23513b1cc644c67ad2564e83"
},
{
"file": "assets/services-CV3QC6h3.js",
"status": 200,
"sha256": "ece0d4cfd8be5cf65eae98a1fd320e1f3c6e28574fddfa42e2ab7a3d3a246807"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-Cpdlf9PD.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "de36f02880adf2337edf9f08c3eb424424adcca0",
"release": "/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"previous_release": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "de36f02880adf2337edf9f08c3eb424424adcca0",
"release": "/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"previous_release": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"de36f02880adf2337edf9f08c3eb424424adcca0"
],
"finished_at": "2026-10-25T12:53:08.370288+00:00"
},
"log_file": "1792932617965531561.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 29.72s",
"OK (59 tests, 317 assertions)",
"# tests 737",
"# pass 737",
"# fail 0"
],
"log_bytes": 214805
},
"rollback_executed": false
},
"L3": "AB preservado;CD entregue no âmbito operacional demonstrado;E eformalidades pendentes",
"next": "L3-E restituição de bebidas emQA,sem dedução/restituição da mesma parcela",
"L1": "129entregues+P058/P084/P085+P001=133;sem reabertura",
"L2": "âmbito demonstrado entregue;18(6)+mista,sucessivas/plurianuais,erros/incobráveis pendentes",
"examples": {
"AB_calculated_paid_outstanding": [
72,
30,
42
],
"C_additional_calculated_paid_outstanding": [
61,
20,
41
],
"D_credit_report_request_approved_received_waiting": [
800000,
200000,
600000,
550000,
450000,
100000
]
}
}
@@ -0,0 +1,75 @@
{
"status": "installed_CD_demonstrated_operational_scope_E_formalities_pending",
"candidate": "commit que contém este manifesto",
"baseline_installed": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"baseline_receipt": "3aa851a4",
"accepted_C_candidate": "b7a745e6",
"reports": [
"docs/investmoz/simulations/l3-c-substitution-qa-20261025.json",
"docs/investmoz/simulations/l3-d-refund-qa-20261025.json"
],
"coverage": "Csubstituições eDreembolso no âmbito operacional demonstrado;formalidades externas,E e residuaisL1/L2 permanecem explícitos",
"compatibility_at_preparation": {
"origin_main": "109cb0fe9e1530dd09b8277a422ae9c5e68e0674",
"main_is_ancestor": true,
"checked_utc": "2026-10-25T12:46:36.801875+00:00"
},
"runtime_delta": [
{
"path": "app/Http/Requests/StoreSimulationFormDraftRequest.php",
"sha256_LF": "61c79fd1735f54d8d1d964d521ec28613184e363dd07a95d619932ba30e9de68"
},
{
"path": "resources/js/lib/iva-refund.ts",
"sha256_LF": "a2f4c0567a0633ad4926c4b57d44c167eae3fc2d9ceb167ce000ffd945ba0bbb"
},
{
"path": "resources/js/components/acquisition-refund.tsx",
"sha256_LF": "72b0706f2d338f4a06a28f0f2a2fa1a29bbeff343b919727fa34465881ed6622"
},
{
"path": "resources/js/lib/iva-closure.ts",
"sha256_LF": "0a916c7e36bb76b853c65839aa18e597bc617efe7c4a003126e44eab4243a2cd"
},
{
"path": "resources/js/components/acquisition-closure.tsx",
"sha256_LF": "321883d3fcf6d761310c896ae9b0536f2b6a802f54c052462692931e14723cc3"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "ed0563fb4f39b1d71310e7b28a2d2aa570fae14ba97a14d55159f3fe96c42901"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "27893e0c9c393a217ece3401ab3e9f839aabdb26f1b62a1130399c2b8666d40d"
},
{
"path": "resources/js/lib/iva-substitution.ts",
"sha256_LF": "0ea914bf952ff053f7e6912705f80526aaed5a8b9f4b3bd5a27f737c4aef3977"
},
{
"path": "resources/js/components/acquisition-substitution.tsx",
"sha256_LF": "6a61f59bcbd493ca45e60a14fe3c67375f581581f9cbe882426fdbffa98399c2"
}
],
"limits": [
"Âmbito demonstrado2026/MZN,primeira declaração em prazo com parcela expressa27 e saldo26;D não submete pedido nem executa recebimento bancário. C conserva o seu âmbito demonstrado,sem cobertura fiscal integral.",
"Fundamentos21(6),21(7a) e21(7b) avaliados com factos e origem declarados/documentados. Composição cronológica completa dos créditos/extractos regulamentares não gerada automaticamente;ordem dos mais antigos confirmada expressamente,sem conta corrente centralAT ou novos aprovadores.",
"Regulamento78/2017,30/2022 e52/2025 identificados;exemplares não localizados no acervo17PDF nem obtidos na consulta delimitadaAT/INM. Formulários,anexos,garantias,compensações,formalidades,suspensões e calendário completo não automatizados. PropostaCTA/resumos não activam regras. Decisão externa documentada pode ser registada sem a avaliação automática do fundamento se tornar autoridade adicional.",
"150dias é prazo textual de reembolso devido,não previsão automática de caixa;10anos de21(15) avaliado pelas datas declaradas,com divergência visível. Obrigação50%/12meses revogada porLei10/2025,não aplicada.",
"Controlo de duplicação sobre livros e históricos recuperados neste rascunho/âmbitos efectivos. Não é reconciliação global entre rascunhos privados diferentes. Projecções de oportunidades diferentes não são consumos fiscais efectivos.",
"Afetação de preparação não altera declaração apresentada. Reporte efectivo já usado numa declaração posterior não pode ser reafectado retroactivamente;usar saldo disponível reconciliado. Pedido apresentado/decisão/recebimento preservam a parcela,inclusive após remoção da preparação actual. Indeferimento/parte não deferida não libertam crédito automaticamente;retorno exige procedimento documentado e reconciliação,sem criar20automaticamente.",
"Recebimento é registo declarado;divergências de valor/data/documento ficam identificadas,sem execução bancária,sincronização silenciosa de caixa ou eliminação do documento.",
"Erestituição de bebidas não demonstrado nesta ronda epermanece pendente,sem bloquearC/D. L1mantém129fechos+P058/P084/P085+P001=133;L2mantém18(6)+mista,sucessivas/plurianuais,erros/incobráveis. Estatísticas/IA adiadas."
],
"required_at_delivery": [
"fetchmain fresco e reconciliação de concorrência",
"backup novo/restauro isolado autenticados antes de instalar",
"uma entregaGit do conjuntoC/D,sem migrações/importações",
"conferir só delta instalado e reutilizar provas válidas",
"manterE e residuaisL1/L2 na mesma matriz"
],
"active_writes": false,
"served_commit": "de36f02880adf2337edf9f08c3eb424424adcca0",
"receipt_report": "docs/investmoz/simulations/l3-cd-delivery-20261025.json"
}
@@ -0,0 +1,85 @@
{
"status": "L3-D concluído em QA no âmbito operacional demonstrado;preparado comC,sem instalação",
"matrix_anchor": "AUD-SIM-INT02",
"installed_revision": "109cb0fe",
"installed_receipt": "3aa851a4",
"C_QA_preserved": "b7a745e6",
"implemented": {
"allocation": "Reutiliza25de resultadoAB congelado e afectação explícita:26=25−27. Parcela27positiva,não excede25;apenas26 segue para o próximo mês por adopção expressa. Origem antiga/histórica não financia um novo pedido se a afectação actual mudou. Reportes dependentes indeterminados precisam de reconciliação;reporte efectivo já usado em declaração posterior não é reafectado retroactivamente.",
"lifecycle": "Preparação→apresentado fora doInvesteMoz→decisão pendente/integral/parcial/indeferida→recebimentos identificados. Referência/data/entidade e âmbito do montante da decisão preservados. Pedido não cria reconhecimento;decisão não cria recebimento.",
"basis": "21(6):quatro meses desde período de início e crédito superior100000;21(7a):superior500000;21(7b):cessação identificada. Origem/data nascimento/suporte e créditos mais antigos declarados.21(15):limite10anos com datas fornecidas. Compatibilidade de factos não equivale a concessão. Decisão externa documentada é registada independentemente de fundamento ainda não automatizado,com divergência visível.",
"no_duplicate": "Um pedido por parcela/âmbito recuperado;mesma origem não repetida por nova versão ou após apagar preparação actual. Parcela apresentada/decidida/recebida bloqueia retorno silencioso a26. Recibos repetidos,anteriores à decisão ou montantes incompatíveis exigem reconciliação;sem criar caixa/crédito20 por inferência.",
"F": "800000de crédito=200000reporte+600000pedido;550000reconhecidos;450000recebidos;100000aguardam recebimento;50000não deferidos. Valores distintos na gravação/recuperação/relatório. Fracções exactas:799681/3de crédito−200000de pedido=199681/3de reporte.",
"preservation": "Mesmo snapshot/API e relatório existentes;ivaRefunds acrescido sem alterar mapas anteriores. Cada cálculo congela entradas/resultados e acrescenta histórico. C continua actual eAB72/30/42 intacto.",
"technical_limit": "Escolha técnica identificada:limite de transporte do snapshot4M→6Mcaracteres;amostra preservada4055677caracteres excedia o anterior. Sem truncar/apagar históricos;novo limite mantido e rejeição acima dele demonstrada."
},
"source_cotejo": {
"CIVA2016": "Lei13/2016 PDF15–16,p1426(273–274),art21(5/6/7),fundamentos e reporte.",
"CIVA2022": "Lei22/2022 PDF3–4,p2252(27–28),art21.",
"CIVA2025": "Lei10/2025,BR248suplemento1,PDF13/p2180(13),21(7a),revogação21(8),150dias21(10),suspensões21(13),10anos21(15).",
"exemplar": "VAT Return.pdf SHA2569c0b99a810c7db53eb75d63c22ee22fb86a50ba57bd5509041ed80ee10f75741,p2/quadro11. Remissãoart20 no formulário conservada como divergência,sem a transpor para regime2026.",
"regulation": "78/2017,30/2022,52/2025 identificados;formalidades não automatizadas,sem transformar pista/resumo em parâmetro.",
"bounded_lookup": [
"https://www.at.gov.mz/legislacao/fiscal",
"https://www.inm.gov.mz/pt-br/content/conselho-de-ministros-suplemento-n%C2%BA-3-de-281217-pag-2602-9-16-br-n%C2%BA-202-boletim-da-rep%C3%BAblica"
],
"all17originals_unchanged": true
},
"validation": {
"frontend": "33dirigidos passaram:9AB+11C+13D;incluem limites estritos,fracções,duplicação,transporte efectivo já consumido,decisão independente da avaliação automática e preservação completa.",
"API": "1teste/109asserções passou;simulator_fiscal_delta_20261021_test/55441,DatabaseTransactions rollback;modelo_a_snapshot recuperado byte a byte. Teste do limite6M:1teste/5asserções,rejeição acima do limite.",
"types": "npm.cmd run types:check passou",
"build": "npm.cmd run build passou",
"UI": "Componente real:recebimento excedente assinala divergência;repor valores600000/550000/450000/100000;gravação→recuperação→relatório conferidos. Todos os contextos anterioresAPI/UI idênticos;exemploD mantém mesmos valores.",
"proof": "outputs/iva-l3-d-20261025/ui-recovered-refund.png",
"logs": [
"outputs/iva-l3-d-20261025/frontend-final.txt",
"outputs/iva-l3-d-20261025/api-final.txt",
"outputs/iva-l3-d-20261025/api-boundary.txt",
"outputs/iva-l3-d-20261025/types-final.txt",
"outputs/iva-l3-d-20261025/build-final.txt"
]
},
"limits": [
"Âmbito demonstrado2026/MZN,primeira declaração em prazo com parcela expressa27 e saldo26;D não submete pedido nem executa recebimento bancário. C conserva o seu âmbito demonstrado,sem cobertura fiscal integral.",
"Fundamentos21(6),21(7a) e21(7b) avaliados com factos e origem declarados/documentados. Composição cronológica completa dos créditos/extractos regulamentares não gerada automaticamente;ordem dos mais antigos confirmada expressamente,sem conta corrente centralAT ou novos aprovadores.",
"Regulamento78/2017,30/2022 e52/2025 identificados;exemplares não localizados no acervo17PDF nem obtidos na consulta delimitadaAT/INM. Formulários,anexos,garantias,compensações,formalidades,suspensões e calendário completo não automatizados. PropostaCTA/resumos não activam regras. Decisão externa documentada pode ser registada sem a avaliação automática do fundamento se tornar autoridade adicional.",
"150dias é prazo textual de reembolso devido,não previsão automática de caixa;10anos de21(15) avaliado pelas datas declaradas,com divergência visível. Obrigação50%/12meses revogada porLei10/2025,não aplicada.",
"Controlo de duplicação sobre livros e históricos recuperados neste rascunho/âmbitos efectivos. Não é reconciliação global entre rascunhos privados diferentes. Projecções de oportunidades diferentes não são consumos fiscais efectivos.",
"Afetação de preparação não altera declaração apresentada. Reporte efectivo já usado numa declaração posterior não pode ser reafectado retroactivamente;usar saldo disponível reconciliado. Pedido apresentado/decisão/recebimento preservam a parcela,inclusive após remoção da preparação actual. Indeferimento/parte não deferida não libertam crédito automaticamente;retorno exige procedimento documentado e reconciliação,sem criar20automaticamente.",
"Recebimento é registo declarado;divergências de valor/data/documento ficam identificadas,sem execução bancária,sincronização silenciosa de caixa ou eliminação do documento.",
"Erestituição de bebidas não demonstrado nesta ronda epermanece pendente,sem bloquearC/D. L1mantém129fechos+P058/P084/P085+P001=133;L2mantém18(6)+mista,sucessivas/plurianuais,erros/incobráveis. Estatísticas/IA adiadas."
],
"runtime_delta": [
{
"path": "app/Http/Requests/StoreSimulationFormDraftRequest.php",
"sha256_LF": "61c79fd1735f54d8d1d964d521ec28613184e363dd07a95d619932ba30e9de68"
},
{
"path": "resources/js/lib/iva-refund.ts",
"sha256_LF": "a2f4c0567a0633ad4926c4b57d44c167eae3fc2d9ceb167ce000ffd945ba0bbb"
},
{
"path": "resources/js/components/acquisition-refund.tsx",
"sha256_LF": "72b0706f2d338f4a06a28f0f2a2fa1a29bbeff343b919727fa34465881ed6622"
},
{
"path": "resources/js/lib/iva-closure.ts",
"sha256_LF": "0a916c7e36bb76b853c65839aa18e597bc617efe7c4a003126e44eab4243a2cd"
},
{
"path": "resources/js/components/acquisition-closure.tsx",
"sha256_LF": "321883d3fcf6d761310c896ae9b0536f2b6a802f54c052462692931e14723cc3"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "ed0563fb4f39b1d71310e7b28a2d2aa570fae14ba97a14d55159f3fe96c42901"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "27893e0c9c393a217ece3401ab3e9f839aabdb26f1b62a1130399c2b8666d40d"
}
],
"schema_changes": false,
"active_writes": false
}
@@ -0,0 +1,177 @@
{
"status": "QA_demonstrated_not_installed",
"installed_E": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"installation_receipt": "dbeaf886",
"installed_example_MZN": {
"documentary_VAT": 16,
"deduction_this_route": 0,
"recognised": 12,
"received": 7,
"awaiting_receipt": 5
},
"demonstrated_increment": {
"partition": "Non-overlapping VAT intervals on the same documentary line;6+10=16;bounds/support required;remaining portion has no presumed destination.",
"prior_deduction": "Positive effective deductions inventoried by context/revision/exact amount. Stable deduction6 assigned explicitly to[0,6[;E requests only[6,16[=10. Prior deduction preserved;no new deduction/reversal or AT submission. Exact rational boundaries also supported:prior16/3 and E32/3;rounded5.333333 boundary overlaps and is rejected.",
"anti_duplication": "Overlap and legacy whole-line conflicts refused;effective cross-context uses and determined submitted histories retained. Editing/removing current preparation does not release committed portions. Invalid recalculation does not commit rejected boundaries;reference/decimal presentation edits do not create new allocations.",
"shared_L2_delta": "Existing actual allocation22 can compose with the independently verified beverage link13(2);it still requires all allocation/documentary conditions. Removed technical exclusion of the specific link in the partial-evaluation branch.",
"calculation_gaps": "Read-only inventory of applicable saved results:reason,missing monetary fields,required data and concrete resolution route. Frozen labels survive deliberate current edits;unrecoverable books produce visible errors.",
"formal_preparation": "Identified fields19/20/21–27 from received exemplar prepared for review/HTML export by applicable A/B,C,D. E remains separate supporting dossier;no field27 assigned. Unknown values stay unknown;frozen inputs/results reused,not recalculated on export."
},
"verification": {
"frontend_distinct_tests": 43,
"frontend_proof": [
"frontend-complete.txt:41 distinct passed",
"form-fields.txt:1 additional passed",
"fraction-test-final.txt:non-terminating exact fraction case passed;2 prior cases repeated only for changed parser"
],
"private_API": {
"tool": "phpunit",
"result": "passed",
"tests": 1,
"passed": 1,
"assertions": 105,
"duration_ms": 8525
},
"QA_database": "simulator_fiscal_delta_20261021_test:55441;DatabaseTransactions rollback;exact snapshot recovery",
"types": "passed",
"build": "passed",
"UI": [
"real component:5–16 overlaps previous0–6 and is rejected;restore6–16 gives10",
"save→recover→report confirms10 and gap/form sections",
"actual HTML download checked;C/D field mappings separately tested72,61,800000/200000/600000"
],
"UI_proof": "outputs\\iva-l3-e-partitions-20261025\\ui-reconciled-6-10.png",
"sources_unchanged": 37,
"prior_contexts_preserved_API_UI": true,
"matrix_other_rows_unchanged": true
},
"runtime_delta": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "6f44897b8b12569314551df0022c26da57a165634087942a724293e66837558d"
},
{
"path": "resources/js/components/fiscal-calculation-gaps.tsx",
"sha256_LF": "1dab6ceb73756d4e023096b3b2ba767aaa843ff6cc69046ea630ab449a00b0dd"
},
{
"path": "resources/js/components/fiscal-l3-preparation.tsx",
"sha256_LF": "e84a7b1ccadaa1b5bd78d778a3287f96ccaf530855eef404786cd7aa3d321b73"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "c206d4cfe575d6ba007aa2b425b5f898efa97e4162b8710e358b6ecfd9458542"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "b0ef55e0917bdb79f14b53ba9e95d73c08153befeb7d4ce73f81e6fb13992225"
},
{
"path": "resources/js/lib/iva-beverage-allocation.ts",
"sha256_LF": "32968d198c7fe0c53ca89641c22d5749be6636be2c79127b867e4e3afd0dd40d"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "5c650cbd9469d5f99001f56fc4ff99ac973eb368036d4e96c6d171f1b220bd9e"
},
{
"path": "resources/js/lib/iva-calculation-gaps.ts",
"sha256_LF": "2e7d84a0c196bd5b56fd67cc1a389d43d5041894184e675680a4de3cd10b31a2"
},
{
"path": "resources/js/lib/l3-form-preparation.ts",
"sha256_LF": "fc47f5fa5ec1420fbd847d0d081f00d99ebbb524164eef785b20877e0562f704"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "0d6f12b43a1137cbd8146e5d1beac960af48f4389f95c58dbd21505ca9635f46"
}
],
"inventory_evidence": "outputs\\iva-l3-e-partitions-20261025\\calculation-inventory.json",
"inventory_limits": "67 synthetic QA contexts,331 occurrences including deliberately incomplete/negative fixtures;not331newbusinessrequirements or a replacement matrix. Each record retains exact reason/data/resolution;no tax calculation activated.",
"formalities_dependencies": {
"C": "ModeloB/RCIVA15 versus substituteModeloA exemplar;need corresponding edition/instruction.",
"D": "Regulatory exemplars/instructions Decretos78/2017,30/2022,52/2025;no new evidence,so previous research not repeated.",
"E": "Specific model/procedure13(2) not identified;do not reuse general refund forms/thresholds/deadlines."
},
"remaining": [
"Changing/reversing a prior deduction,especially whole-line16,requires supported sequential regularization and its effective fiscal treatment;not automated by choosingE or by a supplier-correction route requiring unchanged right.",
"Divergent historical positive deductions require sequence reconciliation;no choice of a convenient revision and no release from an unexecuted correction.",
"No central AT/cross-dossier account reconciliation beyond recovered maps. The unused part does not obtain a deduction automatically.",
"Supply13(2),margin/travel/event VAT and integrations that remain indeterminate need their own rule,base,data and implementation;purchaseVAT16 is never substituted for outputVAT.",
"Formalities remain delimited as above;HTML preparations do not certify current electronic edition or replace external submission.",
"L1:P058 funcional;P001 QAparcial:correspondência positiva/caso06pendentes;L2:18(6)+mixed,successive/pluriennial,errors/baddebts remain in original matrix.",
"Tempo request→decision→form procedure preserved;statistics/AI remain deferred."
],
"schema_changes": 0,
"active_writes_for_increment": 0,
"L3": "open",
"P084_P085_followup": {
"status": "closed_in_Tempo_operational_scope",
"report": "docs/investmoz/simulations/l1-p084-p085-tempo-operational-closure-20261025.json",
"L1_closed": 131,
"L1_remaining": [
"P058",
"P001"
]
},
"current_L3_balance_20261025": {
"base_installed": "fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"QA_increment": "b189d0fa",
"items": [
{
"item": "Entrega do incremento b189d0fa",
"tipo": "disponibilização",
"estado": "Entregue e conferido no activo em fa32a2b9e127da9c4d764dd99ef58ee43b770aa6",
"falta": "Nenhuma neste delta;backup/restauro fresco e conferência pública/protegida concluídos. Demais itensL3 mantidos com âmbitos próprios."
},
{
"item": "Mudança/anulação de dedução anterior e versões divergentes",
"tipo": "desenvolvimento fiscal e dados da operação",
"estado": "a dedução estável e parcela complementar já estão demonstradas;reversão/sequência não estão",
"falta": "Vincular a dedução original às regularizações efectivamente aplicáveis,com motivo,fonte,período,montante e sequência;demonstrar saldo sem benefício duplicado. Uma preparação/edição não liberta IVA já utilizado."
},
{
"item": "IVA do fornecimento e apuramentos limitados de margem/viagens/eventos",
"tipo": "desenvolvimento de cálculos e integração",
"estado": "diagnóstico disponível emQA;cálculos identificados continuam indeterminados",
"falta": "Para cada cálculo aplicável,resolver base,regra,dados e momento próprios e demonstrar integração coerente nos totais. IVA documental16da aquisição não éIVA do fornecimento."
},
{
"item": "FormalidadesC",
"tipo": "correspondência documental delimitada e preenchimento",
"estado": "campos21–24 do exemplar preparados emQA;correspondência de edição pendente",
"falta": "Esclarecer ModeloB referido noRCIVA15 versus substituiçãoModeloA do exemplar recebido;demonstrar formulário aplicável sem alterar o original."
},
{
"item": "FormalidadesD",
"tipo": "exemplares/instruções específicos e preenchimento",
"estado": "25/26/27 preparados emQA;pedido regulamentar completo não demonstrado",
"falta": "Usar os exemplares/instruções especificamente identificados dosDecretos78/2017,30/2022,52/2025 quando disponíveis;corresponder campos e anexos. Sem repetir pesquisa sem nova evidência."
},
{
"item": "FormalidadesE",
"tipo": "modelo/instrução específica e preenchimento",
"estado": "dossier de apoio separado;modelo específico13(2) por identificar",
"falta": "Corresponder procedimento/formulário de restituição de bebidas13(2)quando disponibilizado;sem adoptar27,limiares ou prazos do reembolso geralD."
}
],
"scope_limit": "A prevenção de duplicação cobre os livros/históricos recuperados. Reconciliação central com aAT ou todos os dossiers não foi demonstrada;isto é limite técnico registado,não nova condição organizacional de fecho.",
"outside_L3": "L1:131entregues+P001residual+P058parcial/residual=133;P084/P085fechados. P001retomasócomnovoesclarecimentoconcreto;L2limitespróprios;estatísticas/IAadiadas.",
"prepared_candidate": "0f4df8a4d1cfd0d7b788e58d7f6af8d385384d82",
"delivered_increment": "0f4df8a4 + fa32a2b9(test-only)"
},
"P001_followup": {
"status": "residual_preserved_resume_only_on_concrete_clarification",
"counts": {
"delivered": 131,
"residuals": [
"P001",
"P058"
],
"total": 133
},
"proofs": "preserved;no repeat research/tests"
},
"additional_delivery_preparation": "docs/investmoz/simulations/l3-additional-delivery-20261025.json"
}
@@ -0,0 +1,165 @@
{
"status": "QA_operacional_demonstrada_nao_instalada",
"installed_CD": "de36f02880adf2337edf9f08c3eb424424adcca0",
"receipt_CD": "46944402",
"coverage": "CIVA13(2), condições próprias c/d/h, linha documental integral exclusiva, pedido/decisão/recebimento; sem isenção directa",
"source": {
"file": "source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"pdf_page": 12,
"printed_page": "1426(270)",
"articles": "13(1)c/d/h e 13(2–3)"
},
"proof": {
"documentary_VAT": "16.00",
"deduction_this_route": "0.00",
"recognised": "12.00",
"received": "7.00",
"waiting_receipt": "5.00",
"not_granted": "4.00",
"currency": "MZN",
"frontend_distinct_tests": 27,
"API_tests": 1,
"API_assertions": 109,
"types": "passed",
"build": "passed",
"UI": "outputs/iva-l3-e-20261025/ui-recovered-beverages.png",
"database": "QA isolada 55441, transacções revertidas"
},
"preservation": {
"L1_delivered": 129,
"L1_functional_pending": [
"P058",
"P084",
"P085"
],
"P001": "05/06",
"all_prior_snapshot_maps_equal_after_UI": true,
"original_sources_unchanged": 17,
"schema_changes": 0,
"active_data_writes_for_E": 0
},
"runtime_delta": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "b91f2a0ecf2c939b3a52b7084465a79ccb31aa27a016676f5ccd63e02ab70587"
},
{
"path": "resources/js/components/acquisition-imports-exclusions.tsx",
"sha256_LF": "bb1324ec71722cb50bdf068ac23c3a871673f2cdf3feae8453496cde6a194043"
},
{
"path": "resources/js/components/acquisition-operation-link.tsx",
"sha256_LF": "f08de2c463b4c68c67a61545aece89c2fd6bda8eee6614b625b5ed5f4c86e4be"
},
{
"path": "resources/js/components/fiscal-claim-events.tsx",
"sha256_LF": "cf3a9c9edce64726e62369a3a89ff59ef66d9a17fe3c6a341b46b5699186207f"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "d3ab598e6798962ac9dc6f95419b40cfcd4de76529e8dbdb47e908c535497072"
},
{
"path": "resources/js/lib/fiscal-claim-events.ts",
"sha256_LF": "b1f8e9288989239871ead179fc0934935c72a675551c7d7831a8ad8ef7a89b80"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "e805a6a9134e851d490d26ce8fc367c6014f4c025a14345352e8987889117861"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-beverage-parcels.ts",
"sha256_LF": "3af5afa57faa0f014f59b00152ddd7a2fddd308c5c7a82d8e755022647d278ce"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "3d34613146e19715aa0bae7a1472a2eecd5aac53b7552b2a3186225ae46351bc"
},
{
"path": "resources/js/lib/iva-refund.ts",
"sha256_LF": "37398e02e5710d18f8ab3c61b4c9de8f03640eedebda70eef995aa1be7328903"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "af4e387d1a98195d8e8d5d00d408f67b7dc09f04ebff1041edfd94d89fcc2b98"
}
],
"remaining": [
{
"ids": "L3-E entrega",
"tipo": "entrega",
"accao": "Integrar a candidata QA pelo processo Git, com comparação fresca, backup/restauro e conferência apenas do delta.",
"fecho": "Revisão instalada e recibo; C/D e históricos preservados."
},
{
"ids": "L3-E cobertura adicional",
"tipo": "código e parâmetros documentais específicos",
"accao": "Tratar repartição dentro da mesma linha e reconciliação de dedução efectiva anterior, pelas regularizações aplicáveis. A via demonstrada usa uma linha documental integral exclusiva.",
"fecho": "Parcelas conciliadas, sem benefício duplicado, gravação/recuperação/relatório e totais coerentes."
},
{
"ids": "L3-C/D/E formalidades",
"tipo": "dependência documental delimitada e implementação posterior",
"accao": "Mapear edição e campos do formulário de substituição; exemplares regulamentares do reembolso geral; procedimento/formulário específico de restituição de bebidas. Não transportar automaticamente limiares ou prazos de D para E.",
"fecho": "Correspondência demonstrada, preparação/exportação aplicável e referência à submissão externa; pedido, decisão e recebimento separados."
},
{
"ids": "Apuramento fiscal ainda indeterminado",
"tipo": "código e dados aplicáveis",
"accao": "Completar os cálculos ainda limitados dos fornecimentos, margem/viagens/eventos, quando aplicáveis. Na prova E, os 16 MZN são IVA documental da aquisição; o IVA da operação L1 continua indeterminado.",
"fecho": "Apuramento suportado pela regra e dados próprios, sem copiar IVA de aquisição como IVA devido nem substituir desconhecido por zero."
},
{
"ids": "L2 — 18.º(6) com afectação mista",
"tipo": "código",
"accao": "Combinar base reduzida e afectação parcial reutilizando as proporções existentes.",
"fecho": "Cálculo exacto, sem dupla afectação, totais afectados e histórico preservado."
},
{
"ids": "L2 — sucessivas/plurianuais",
"tipo": "código e parâmetros aplicáveis",
"accao": "Encadear eventos e anos por activo a partir da dedução congelada.",
"fecho": "Diferenciais por evento/ano, sem repetição nem reescrita de históricos."
},
{
"ids": "L2 — erros/incobráveis",
"tipo": "código e condições documentais específicas",
"accao": "Separar fundamentos, documentos, momento e recuperação posterior.",
"fecho": "Regularizações rastreáveis, sem duplicar rectificações da declaração."
},
{
"ids": "P058",
"tipo": "três questões documentais delimitadas; código subsequente",
"accao": "Resolver a remissão de 57.º(2)b do Decreto 37/2023, a fronteira exacta dos 180 dias de propriedade e 63.º(2), arma de caça/até 100 cartuchos, no âmbito dos beneficiários CIVA12.º(2)a. Preservar os percursos já entregues.",
"fecho": "Condições explícitas dos três casos, cálculo quando aplicável, gravação/recuperação/relatório."
},
{
"ids": "P084/P085",
"tipo": "correspondência documental de formulários e código de preenchimento/exportação",
"accao": "Identificar o formulário aplicável a cada finalidade, distinguindo aquisição interna e importação. O percurso Tempo pedido → decisão → formulário com despacho já está entregue; manter o dossier de apoio disponível.",
"fecho": "Exemplar e instruções ligados aos campos de cada cenário, reutilização de dados e despacho limitado aos bens/operações/períodos/condições autorizados."
},
{
"ids": "P001",
"tipo": "dependência documental externa da edição recebida",
"accao": "Resolver exclusivamente a correspondência dos campos 05/06, sem preenchimento presumido nem usar outra edição como equivalência automática.",
"fecho": "Instrução aplicável à edição recebida e mapeamento comprovado de 05/06."
},
{
"ids": "Formalidades digitais dos ramos entregues",
"tipo": "documentação e automatização ainda limitada",
"accao": "Conservar visíveis as formalidades não automatizadas e a submissão fora do portal.",
"fecho": "Cobertura demonstrada por procedimento, sem declarar cobertura digital integral."
}
],
"limits": [
"Sem submissão AT nem execução bancária automática.",
"Guarda contra duplicação nos livros/históricos recuperados; não equivale a reconciliação central de todos os dossiers ou da AT.",
"Via demonstrada 2026/MZN; sem extensão automática a outras condições ou períodos.",
"Estatísticas e IA adiadas pela Tempo."
]
}
@@ -0,0 +1,426 @@
{
"status": "installed_E_demonstrated_scope_L3_open",
"baseline": "de36f028",
"report": "docs\\investmoz\\simulations\\l3-e-beverages-qa-20261025.json",
"runtime_delta": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "b91f2a0ecf2c939b3a52b7084465a79ccb31aa27a016676f5ccd63e02ab70587"
},
{
"path": "resources/js/components/acquisition-imports-exclusions.tsx",
"sha256_LF": "bb1324ec71722cb50bdf068ac23c3a871673f2cdf3feae8453496cde6a194043"
},
{
"path": "resources/js/components/acquisition-operation-link.tsx",
"sha256_LF": "f08de2c463b4c68c67a61545aece89c2fd6bda8eee6614b625b5ed5f4c86e4be"
},
{
"path": "resources/js/components/fiscal-claim-events.tsx",
"sha256_LF": "cf3a9c9edce64726e62369a3a89ff59ef66d9a17fe3c6a341b46b5699186207f"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "d3ab598e6798962ac9dc6f95419b40cfcd4de76529e8dbdb47e908c535497072"
},
{
"path": "resources/js/lib/fiscal-claim-events.ts",
"sha256_LF": "b1f8e9288989239871ead179fc0934935c72a675551c7d7831a8ad8ef7a89b80"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "e805a6a9134e851d490d26ce8fc367c6014f4c025a14345352e8987889117861"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-beverage-parcels.ts",
"sha256_LF": "3af5afa57faa0f014f59b00152ddd7a2fddd308c5c7a82d8e755022647d278ce"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "3d34613146e19715aa0bae7a1472a2eecd5aac53b7552b2a3186225ae46351bc"
},
{
"path": "resources/js/lib/iva-refund.ts",
"sha256_LF": "37398e02e5710d18f8ab3c61b4c9de8f03640eedebda70eef995aa1be7328903"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "af4e387d1a98195d8e8d5d00d408f67b7dc09f04ebff1041edfd94d89fcc2b98"
}
],
"migrations": 0,
"imports": 0,
"accepted_CD_proofs": "reutilizadas; 13 testes D conferem apenas o auxiliar partilhado alterado",
"delivery": "Conferência fresca de main, backup/restauro e delta instalado pelo processo Git existente.",
"candidate": "47086625327db66495c76d2d6df216df31d12918",
"authorization": "Tempo 25/10/2026: entregar E no âmbito demonstrado, com backup/restauro e conferência do delta;L3 permanece aberto.",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "de36f02880adf2337edf9f08c3eb424424adcca0",
"release": "/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"previous_release": "/var/www/investmoz-homologacao/releases/109cb0fe9e1530dd09b8277a422ae9c5e68e0674-7d3f5413",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"release_revision": {
"commit": "de36f02880adf2337edf9f08c3eb424424adcca0",
"branch": "main",
"built_at": "2026-10-25T12:53:05.095488+00:00",
"manifest_sha256": "a815a39818c3ffaca1b9bcb492a1c3aafe89a9badc7437816d7d2d46d44f2c5e"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l3-e-delivery-20261025/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "024dc2a56c6b4b9420afcdb8431d3dba61d9160b32ac3cc000c771191694bc37",
"files_sha256": "17630b5353042172e2e1e9f570ce26045dda3f86fb7b2f3733cb76a2868b3ead",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l3_e_restore_20261025",
"port": 55441,
"source_dump_sha256": "024dc2a56c6b4b9420afcdb8431d3dba61d9160b32ac3cc000c771191694bc37",
"active_database_writes": 0
}
},
"compiled_delta_markers_expected": [
"L3-E — restituição de bebidas13(2)",
"Calcular e guardar restituição E",
"Preparar restituição de bebidas",
"L3-C — substituições e diferencial",
"Calcular e guardar acompanhamento D"
],
"documentary_delta": [
{
"path": "docs/investmoz/simulations/source-archive/BR-16-I-Serie-2008-04-16.pdf",
"sha256": "fc373ff5637edf75ec6a9595dec8763a8503d4ee786e3b7d8f1c742eae9d80ee"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-248-I-Suplemento-1-2025.pdf",
"sha256": "ccf2a8deeca820f2dd076b4b2141b1efe3f6a806568c3a587ca59a8e92f4c251"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-89-I-Serie-2017-06-08.pdf",
"sha256": "11f0cab15eb6e51010952203ffa24fdc533a24fd642e19525fe4f46b17a1f5e5"
},
{
"path": "docs/investmoz/simulations/source-archive/BR-95-I-Suplemento-2025-05-21.pdf",
"sha256": "e0e682e2c027c3cd9c1d46a73a3f48bc5f6bdbf05667fd97314d7a3f6a456358"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-22-2021-BR70.pdf",
"sha256": "a8fac38dcfe08f9c7a8e46254cff10e1ec82fc4f7a8d88ad6e4fe7d91ffc21a5"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-27-2026-BR123.pdf",
"sha256": "26249c3fa58f149c81de36e99d1aac2819a4771379d9e8833159660dabf539bb"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-29-1998-BR22-5-suplemento.pdf",
"sha256": "6242cbe675faadf085f43f95ec8c7e8868aafe67c3b2ab2bb010992288f954f8"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-3-2011-BR-11-I-mineiros.pdf",
"sha256": "5bca1133666ba9c69870b89823420175b7b5b8d0eccb667ecdf5c29716f3b6be"
},
{
"path": "docs/investmoz/simulations/source-archive/Decreto-37-2023-BR124.pdf",
"sha256": "7e680b191481faa0e2e9057fa5053587eb2a29d1d8c819e0eb9f02814255a04c"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf",
"sha256": "b90dc7c14ecea2e378c4a62e8e5a47d54a5644c457baeb8b8053b92fd2a5710b"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-14-1992-BR42.pdf",
"sha256": "089fff7423e99a70a230a73ca379e4ea3a91d124703f91016e57ff82794b9e56"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-BR251-exemplar-MCNet5.pdf",
"sha256": "14eb34f0af91a8f5cb1770c7b52d6ff839c6818302d1ed96d79afbfb9fe999d4"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-17-2022-IPP-BR250-Parlamento.pdf",
"sha256": "978cd22403ffd336a631704ecd7a5bbd814a427c815b9acdaca5515591dd9e2a"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf",
"sha256": "a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf",
"sha256": "ea1b0dc6f5cf6e595f6d9a19e7042f398999e0087caef1785f6e8fac571b5f53"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-4-1994-BR37-3-suplemento.pdf",
"sha256": "210df9db8980d0a5690cd187a6eeec7e37a900d743e39062c16f4e0d12215c7e"
},
{
"path": "docs/investmoz/simulations/source-archive/Lei-7-1991-Partidos-IFES.pdf",
"sha256": "6b783a0bb3330688ef10660a58060d9724aa2da6a873d234fe902f0eaaeda42d"
}
],
"examples": {
"documentary_VAT": 16,
"deduction_this_route": 0,
"recognised": 12,
"received": 7,
"awaiting_receipt": 5
},
"remaining": [
{
"ids": "L3-E entrega",
"tipo": "entrega",
"accao": "Integrar a candidata QA pelo processo Git, com comparação fresca, backup/restauro e conferência apenas do delta.",
"fecho": "Revisão instalada e recibo; C/D e históricos preservados."
},
{
"ids": "L3-E cobertura adicional",
"tipo": "código e parâmetros documentais específicos",
"accao": "Tratar repartição dentro da mesma linha e reconciliação de dedução efectiva anterior, pelas regularizações aplicáveis. A via demonstrada usa uma linha documental integral exclusiva.",
"fecho": "Parcelas conciliadas, sem benefício duplicado, gravação/recuperação/relatório e totais coerentes."
},
{
"ids": "L3-C/D/E formalidades",
"tipo": "dependência documental delimitada e implementação posterior",
"accao": "Mapear edição e campos do formulário de substituição; exemplares regulamentares do reembolso geral; procedimento/formulário específico de restituição de bebidas. Não transportar automaticamente limiares ou prazos de D para E.",
"fecho": "Correspondência demonstrada, preparação/exportação aplicável e referência à submissão externa; pedido, decisão e recebimento separados."
},
{
"ids": "Apuramento fiscal ainda indeterminado",
"tipo": "código e dados aplicáveis",
"accao": "Completar os cálculos ainda limitados dos fornecimentos, margem/viagens/eventos, quando aplicáveis. Na prova E, os 16 MZN são IVA documental da aquisição; o IVA da operação L1 continua indeterminado.",
"fecho": "Apuramento suportado pela regra e dados próprios, sem copiar IVA de aquisição como IVA devido nem substituir desconhecido por zero."
},
{
"ids": "L2 — 18.º(6) com afectação mista",
"tipo": "código",
"accao": "Combinar base reduzida e afectação parcial reutilizando as proporções existentes.",
"fecho": "Cálculo exacto, sem dupla afectação, totais afectados e histórico preservado."
},
{
"ids": "L2 — sucessivas/plurianuais",
"tipo": "código e parâmetros aplicáveis",
"accao": "Encadear eventos e anos por activo a partir da dedução congelada.",
"fecho": "Diferenciais por evento/ano, sem repetição nem reescrita de históricos."
},
{
"ids": "L2 — erros/incobráveis",
"tipo": "código e condições documentais específicas",
"accao": "Separar fundamentos, documentos, momento e recuperação posterior.",
"fecho": "Regularizações rastreáveis, sem duplicar rectificações da declaração."
},
{
"ids": "P058",
"tipo": "três questões documentais delimitadas; código subsequente",
"accao": "Resolver a remissão de 57.º(2)b do Decreto 37/2023, a fronteira exacta dos 180 dias de propriedade e 63.º(2), arma de caça/até 100 cartuchos, no âmbito dos beneficiários CIVA12.º(2)a. Preservar os percursos já entregues.",
"fecho": "Condições explícitas dos três casos, cálculo quando aplicável, gravação/recuperação/relatório."
},
{
"ids": "P084/P085",
"tipo": "correspondência documental de formulários e código de preenchimento/exportação",
"accao": "Identificar o formulário aplicável a cada finalidade, distinguindo aquisição interna e importação. O percurso Tempo pedido → decisão → formulário com despacho já está entregue; manter o dossier de apoio disponível.",
"fecho": "Exemplar e instruções ligados aos campos de cada cenário, reutilização de dados e despacho limitado aos bens/operações/períodos/condições autorizados."
},
{
"ids": "P001",
"tipo": "dependência documental externa da edição recebida",
"accao": "Resolver exclusivamente a correspondência dos campos 05/06, sem preenchimento presumido nem usar outra edição como equivalência automática.",
"fecho": "Instrução aplicável à edição recebida e mapeamento comprovado de 05/06."
},
{
"ids": "Formalidades digitais dos ramos entregues",
"tipo": "documentação e automatização ainda limitada",
"accao": "Conservar visíveis as formalidades não automatizadas e a submissão fora do portal.",
"fecho": "Cobertura demonstrada por procedimento, sem declarar cobertura digital integral."
}
],
"served_commit": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"installation": {
"protected": {
"installed": {
"status": "installed",
"commit": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"release": "/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1",
"previous_release": "/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"database_migrations": 0,
"content_imports": 0
},
"runtime_files_verified": 12,
"documentary_files_verified": 17,
"persistent_files_and_env_verified": 369,
"tables_compared": 174,
"changed_tables": {
"cache": {
"before": {
"rows": 106,
"checksum": "3249448fc5bd77e20d7cb8c3d30c5b8f"
},
"after": {
"rows": 106,
"checksum": "60d933e228211e448bdbe8c9d48012b9"
}
},
"sessions": {
"before": {
"rows": 149,
"checksum": "88de8bce6bf1aaed6650c1289c7011af"
},
"after": {
"rows": 150,
"checksum": "e22a22d10f4d0b4aa8adabaa445c7dec"
}
}
},
"preserved_counts": {
"published_fiches": 29,
"relations": 28,
"geometries": 408
},
"migration_count": 0,
"content_imports": 0,
"comparison_role": "postgres_before_and_after;sameexportedsnapshotbaseline;noapplicationRLSvisibilityinference",
"writes_by_verification": 0
},
"public": {
"status": "installed_delta_verified",
"served_revision": {
"commit": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"branch": "main",
"built_at": "2026-10-25T13:28:49.649888+00:00",
"manifest_sha256": "333c73acb7dc53c39e8cbfc244d23e589780f916edd8287ae4b538cc7d1df115"
},
"manifest_hash_matches": true,
"compiled_delta_markers": {
"L3-E — restituição de bebidas13(2)": [
"assets/services-Cl2X2eoE.js"
],
"Calcular e guardar restituição E": [
"assets/services-Cl2X2eoE.js"
],
"Preparar restituição de bebidas": [
"assets/services-Cl2X2eoE.js"
],
"L3-C — substituições e diferencial": [
"assets/services-Cl2X2eoE.js"
],
"Calcular e guardar acompanhamento D": [
"assets/services-Cl2X2eoE.js"
]
},
"assets": [
{
"file": "assets/services-Cl2X2eoE.js",
"status": 200,
"sha256": "1ccb2fde3314ecd3278167914965a95ecc5585255254e0d506bec2ee6ee5e3e7"
},
{
"file": "assets/simulation-form-BqVD91Ek.js",
"status": 200,
"sha256": "85cbd533c5bc92af5a448db71da006d4346d2d0adb09dde825db0aa19ad5048c"
},
{
"file": "assets/project-dossier-document-BdKtQpQG.js",
"status": 200,
"sha256": "37e3de2672094ddad384dfd2812aeff49f01e2529c8c7e049dc9188832d5f2a2"
},
{
"file": "assets/project-dossier-FI2eGmCA.js",
"status": 200,
"sha256": "cc239ff194108047a13edabac724914a34a46618d7397cc430e3aa04f2f4860f"
}
],
"simulator_status": 200,
"simulator_entry": "assets/app-Bo6ZnfMy.js",
"existing_fiscal_availability": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
},
"synthetic_private_writes": 0,
"method": "Read-only installedrevision/manifest/newcompiledcatalogueandreaders/simulatorentry;acceptedQAproofsreused"
},
"installer": {
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"installed": {
"status": "installed",
"commit": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"release": "/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1",
"previous_release": "/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"database_migrations": 0,
"content_imports": 0
},
"latest_report": {
"status": "installed",
"commit": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"release": "/var/www/investmoz-homologacao/releases/7ad187f9f0745245268e3ed5317547a96b4700f3-066618f1",
"previous_release": "/var/www/investmoz-homologacao/releases/de36f02880adf2337edf9f08c3eb424424adcca0-b247ef3c",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"7ad187f9f0745245268e3ed5317547a96b4700f3"
],
"finished_at": "2026-10-25T13:28:52.674050+00:00"
},
"log_file": "1792934757791473204.log",
"summaries": [
"OK (1 test, 3106 assertions)",
"built in 28.55s",
"OK (59 tests, 317 assertions)",
"# tests 746",
"# pass 746",
"# fail 0"
],
"log_bytes": 217306
}
},
"limits": [
"Restituição demonstrada da linha integral;parcelas e reconciliação subsequentes apenas em QA.",
"16IVA documental/0dedução/12reconhecidos/7recebidos/5porreceber;sem inferir IVA do fornecimento.",
"Sem migrações/importações/submissão AT/execução bancária.",
"L3 aberto;residuaisL1/L2 e procedimentoTempo preservados;estatísticas/IA adiadas."
]
}
@@ -0,0 +1,61 @@
{
"status": "installed_demonstrated_scope",
"baseline": "de36f028",
"report": "docs\\investmoz\\simulations\\l3-e-beverages-qa-20261025.json",
"runtime_delta": [
{
"path": "resources/js/components/acquisition-beverage-restitution.tsx",
"sha256_LF": "b91f2a0ecf2c939b3a52b7084465a79ccb31aa27a016676f5ccd63e02ab70587"
},
{
"path": "resources/js/components/acquisition-imports-exclusions.tsx",
"sha256_LF": "bb1324ec71722cb50bdf068ac23c3a871673f2cdf3feae8453496cde6a194043"
},
{
"path": "resources/js/components/acquisition-operation-link.tsx",
"sha256_LF": "f08de2c463b4c68c67a61545aece89c2fd6bda8eee6614b625b5ed5f4c86e4be"
},
{
"path": "resources/js/components/fiscal-claim-events.tsx",
"sha256_LF": "cf3a9c9edce64726e62369a3a89ff59ef66d9a17fe3c6a341b46b5699186207f"
},
{
"path": "resources/js/components/simulation-acquisitions.tsx",
"sha256_LF": "d3ab598e6798962ac9dc6f95419b40cfcd4de76529e8dbdb47e908c535497072"
},
{
"path": "resources/js/lib/fiscal-claim-events.ts",
"sha256_LF": "b1f8e9288989239871ead179fc0934935c72a675551c7d7831a8ad8ef7a89b80"
},
{
"path": "resources/js/lib/iva-acquisition-bc.ts",
"sha256_LF": "e805a6a9134e851d490d26ce8fc367c6014f4c025a14345352e8987889117861"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977"
},
{
"path": "resources/js/lib/iva-beverage-parcels.ts",
"sha256_LF": "3af5afa57faa0f014f59b00152ddd7a2fddd308c5c7a82d8e755022647d278ce"
},
{
"path": "resources/js/lib/iva-beverage-restitution.ts",
"sha256_LF": "3d34613146e19715aa0bae7a1472a2eecd5aac53b7552b2a3186225ae46351bc"
},
{
"path": "resources/js/lib/iva-refund.ts",
"sha256_LF": "37398e02e5710d18f8ab3c61b4c9de8f03640eedebda70eef995aa1be7328903"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "af4e387d1a98195d8e8d5d00d408f67b7dc09f04ebff1041edfd94d89fcc2b98"
}
],
"migrations": 0,
"imports": 0,
"accepted_CD_proofs": "reutilizadas; 13 testes D conferem apenas o auxiliar partilhado alterado",
"delivery": "Conferência fresca de main, backup/restauro e delta instalado pelo processo Git existente.",
"served_commit": "7ad187f9f0745245268e3ed5317547a96b4700f3",
"receipt_report": "docs/investmoz/simulations/l3-e-delivery-20261025.json"
}
@@ -106,3 +106,14 @@ A pesquisa read-only no catálogo oficial da INM voltou a localizar o BR n.º 18
Fontes oficiais: [catálogo INM — BR 186/187 e aviso de indisponibilidade gratuita](https://inm.gov.mz/pt-br/bulletin?field_tipo_de_produto_tid_br=43), [ficha BR 186](https://inm.gov.mz/pt-br/content/br-n%C2%BA-186-de-300926-boletim-da-rep%C3%BAblica-i-serie), [ficha BR 187](https://inm.gov.mz/pt-br/content/br-n%C2%BA-187-de-011026-boletim-da-rep%C3%BAblica-i-serie).
Estado: confirmação oficial apenas de existência, datas e modalidade de acesso; textos, diplomas, artigos, vigência, transição e âmbito fiscal continuam por confirmar. Manter IRPC, IRPS, ISPC, IVA regulamentar, pautas/cálculos aduaneiros e regras contributivas sem activação até obtenção, análise e aprovação competente.
## 25/10/2026 — fontes adicionais dos residuais ISPC
Inventários oficiais AT guardados antes da selecção:39formulários,189documentos legislativos e4comunicados. O Comunicado9/2026 e os exemplares B–Geral/Modelo30 foram recuperados pela ligação pública do próprio portalAT. A republicaçãoIRPS19/2017 é exemplar do BR202/7.ºsuplemento,disponibilizado pelaOCAM;arts8/9naPDF4 e57naPDF13 foram conferidos visualmente,com alteração2026confrontada naLei11/2025. O código local mais antigo não foi usado para a numeração dos actos isolados. A aceitação oficial mantém-se,sem segunda validação de proveniência.
- `AT-Comunicado-9-2026-ISPC.pdf` — SHA256 `106f8a9ce9255c03549c70bf07fe999d32e6e55302d009b509862aa74ccb4973`;original preservado emsource-archive,sem publicação/activação automática.
- `AT-Modelo-B-Geral.pdf` — SHA256 `bd977c7c59d4d98befd92e2c566b1bf168cb1343bb519f51b41a3807f431fc57`;original preservado emsource-archive,sem publicação/activação automática.
- `AT-Modelo-30-ISPC.pdf` — SHA256 `6802edd06b6ff638a0b851a3ec7ecf69af8f07840faa47446becad67d35d445c`;original preservado emsource-archive,sem publicação/activação automática.
- `Lei-19-2017-IRPS-BR-OCAM.pdf` — SHA256 `c3a0186cb9ad090d7a9533006295dc9bb6a62ad0d6150173cbd49dba4ee4b52d`;original preservado emsource-archive,sem publicação/activação automática.
Uso:comunicadoATindicaB–Geraltransitório;campos correspondidos por quadro. Modelo30aindacontém75.000/3%antigos epermaneceexcluído dos cálculos2026. IRPS57(2k,4)suporta20%sobre rendimentoilíquido de acto isolado qualificado,nãotaxagenérica de compras excedentes. Citações,URLs ehashes completos no recibo ispc-residuals-qa-20261025.json. Scan/vigência global não foram certificados por esta importação privada.
@@ -0,0 +1,134 @@
{
"status": "P001_partial_QA_positive_field06_case_missing_not_functionally_closed",
"origin": "Tempo nesta sessão25/10/2026 conferiuVATReturn(1).pdf,quadro8:identificação05/06/07 e14=01+03+05+06+07. Não é necessária pesquisa de outro modelo.",
"scope": "Reconciliar os tratamentos já implementados com a correspondência do exemplar;05/06separados eoperação única sem soma duplicada em14. Não classificar automaticamente operação estrangeira como06.",
"source_trace": {
"user_named": "VAT Return(1).pdf",
"accessible_local": {
"path": "\\\\Mac\\Home\\Documents\\TEMPO\\Portal Tempo\\Servicos Tempo\\Modelos\\VAT Return.pdf",
"bytes": 285475,
"sha256": "fbbbd2ac437da1a0fc335e5e5bb32df150e5819d0c831e05d80cabe044b8a652"
},
"original_DOCX": "Novo Modelo A.docx62c198e9,imagem incorporada7ae7f02e,preservados",
"identity_note": "User namesVATReturn(1).pdf;accessible authorized Models folder containsVATReturn.pdf. Record the actual local filename/hash independently;accepted user correspondence is not blocked by filename."
},
"catalogue_reconciled": {
"count": 109,
"field_counts": {
"05": 47,
"indeterminate": 9,
"07": 45,
"01": 4,
"03": 4
},
"inventory": "outputs\\p001-reconciliation-20261025\\treatment-field-inventory.json",
"field06": "Nenhum tratamento do catálogo actual atribuído06;nenhuma regra nova foi inventada. Linhas estrangeiras/desconhecidas mantêm classificação indeterminada. Zero apenas com período completo sem linhas06.",
"other_consumers": "A execução mensal geral01/02 e a classificaçãoL1 são reutilizadas/substituídas conforme o consumidor existente,não somadas novamente. L2lê os campos classificados e soma14uma vez."
},
"changes": [
"Texto/interface ecorrespondência05/06/07 alinhados com identificação aceite;removida a alegação de que falta outro modelo.",
"06deixa de receberzero literal;é agregado exclusivamente como01/03/05/07pelas linhas do campo,com guarda de identidade duplicada.",
"Campo14mantém01+03+05+06+07,sem repetição;operações desconhecidas não viram06nemzero.",
"Aviso de falta01/02não é apresentado quando existe apuramentoL1actual com01/02conhecidos,mesmo sem aquisições;camadas não somadas em duplicado.",
"Históricos/entradas deliberadas preservados;nenhuma reclassificação de snapshots antigos."
],
"example_MZN": {
"01": 100,
"03": 200,
"05": 300,
"06": 0,
"07": 400,
"14": 1000
},
"verification": {
"frontend_tests": 23,
"new_targeted_cases": 8,
"types": "passed",
"build": "passed;exit0",
"UI": "Componentes reais;05=300/06=0/07=400/14=1000;gravar→recuperar→relatório confirmados;sem aviso legado falso de01/02emfalta.",
"UI_proof": "outputs\\p001-reconciliation-20261025\\ui-recovered-fields-total14.png",
"snapshots_UI_recovered_equal": true,
"private_API": "Contrato epermissões existentes reutilizados;sem mudança de formato/endpoint ou nova rondaAPI. Teste desta passagem:aritmética,livros,gravação/recuperação locais ecomponentes reais.",
"sources_unchanged": 37,
"prior_131_closures_preserved": true,
"P084_P085": "closed;not reopened"
},
"runtime_delta": [
{
"path": "resources/js/lib/iva-operations.ts",
"sha256_LF": "e25872a7d321f475ee77f63051b379722fac89469773021ae1fee43cd2cdff5c"
},
{
"path": "resources/js/lib/iva-acquisitions.ts",
"sha256_LF": "639c666a9813229dca0f95cd591c1e6b4edc12538da0f0a63eda4c4e3a79b524"
},
{
"path": "resources/js/lib/iva-modelo-a.ts",
"sha256_LF": "1ae10ac574cc0dcf2c5f6d2cda1aefa221f6aa717086971aecbfbf30553d0823"
},
{
"path": "resources/js/components/simulation-operations.tsx",
"sha256_LF": "f7a2dfd16ed7fea33a4d15398f07fced7e8db46dcf07cd1bb1d85552ebe23d40"
}
],
"delivery": "Não apresentar como funcionalmente concluído ou pronto para encerramento apenas com prova de exclusão. Completar exclusivamente a correspondência positiva e o caso dirigido06;depois preparar entregaQA no processo existente.",
"L1_counts": {
"delivered": 131,
"QA_in_progress": [
"P001 — falta correspondência positiva e caso dirigido06"
],
"functional_remaining": [
"P058"
],
"total": 133
},
"limits": [
"Demonstração parcial:identificação/separação/anti-duplicação demonstradas;correspondência positiva06não demonstrada. A sonda mecânica e06=0não fechamP001.",
"Identificação do formulário não resolve bases/taxas/cálculos indeterminados de outros percursos;mantêm os seus âmbitosL2/L3.",
"P058continua com os três casos residuais;P084/P085mantêm fecho operacionalTempo.",
"E7ad187f9entregue;b189d0faemQA;L3aberto;estatísticas/IAadiadas."
],
"active_writes": 0,
"schema_changes": 0,
"new_source_search": false,
"scope_correction_20261025": {
"origin": "Pedido expressoTempo nesta sessão:identificar operações que legitimamente alimentam06;exclusão indevida/anti-duplicação não demonstram preenchimento positivo.",
"previous_status": "P001_correspondence_reconciled_QA_not_installed",
"previous_counts": {
"delivered": 131,
"QA_completed": [
"P001"
],
"functional_remaining": [
"P058"
],
"total": 133
},
"previous_receipt_sha256": "79c83b8140d581ceb89d6c9887dee7d37ae0ccfd6650fede6313977302dfd210",
"previous_receipt_preserved": "outputs/p001-positive-case-audit-20261025/receipt-before.json",
"accepted_evidence_preserved": "23testes,tipos/build,identificação05/06/07,guardas de duplicação eUI existentes permanecem válidos no seu âmbito;sem os repetir.",
"responsibility_correction": "A pergunta anterior que exigia àTempo identificar a operação foi indevida como condição de prosseguimento. Não há decisão adicional daTempo pendente;identificação do exemplar ecritério deaceitação já estão definidos."
},
"positive_field06_case": {
"demonstrated": false,
"legitimate_operations_identified": [],
"existing_probe": "tests/frontend/iva-p001-correspondence.test.mjs:aggregation-only-06 — cópia sintética de um resultado com field06 para ensaiar agregação. Não deriva de tratamento fiscal identificado e não prova legitimidade do preenchimento.",
"catalogue": "109tratamentos;nenhumdestinado06. OexemploUItem06=0. Não existe prova positiva recuperada.",
"specific_mapping_gap": "O formulário identifica06por18(1)b. Noacervo conferido,CIVA republicadoLei13/2016,PDF14/p1426(272),art18(1)b descreve imposto devido pelaimportação de bens;isto não fornece,por si,a correspondência de uma base de operação no06doquadro8. Remissão preservada,sem a corrigir para19 nem converter importação/estrangeiro automaticamente em06.",
"existing_source_evidence": [
"docs/investmoz/simulations/source-archive/Lei-13-2016-CIVA-BR-156-10-suplemento.pdf:PDF14/p1426(272)",
"outputs/iva-l2-a-20261025/Lei-13-2016-CIVA-BR-156-10-suplemento-14.png",
"docs/investmoz/simulations/iva-l1-foreign-operations-qa-20261025.json:meaning — enquadramento potencial19(1)bii,não campo06"
],
"needed_input": "Não há nova decisão organizacional ou informação exigida à Tempo. Compete ao Codex reconciliar tecnicamente a remissão do exemplar com o acervo e as instruções disponíveis e identificar a operação positiva demonstrável. A pendência não fica atribuída ao responsável.",
"single_directed_case": "Depois de identificada essa correspondência,usar uma base sintética positiva:06recebeessaoperação;05nãoareconta;14incluiabasenumaúnicavez;guardar/recuperar/relatar com documentos e histórico preservados. Reutilizar provas anteriores;conferir apenas este delta.",
"functional_closure": "Não declararP001encerradofuncionalmenteenquantoessecasopositivonãoestiverdemonstrado.",
"responsibility": "Codex — trabalho técnico de correspondência e caso dirigido;sem devolver a identificação da operação àTempo."
},
"current_orientation_20261025": {
"origin": "Tempo:seguircomdesenvolvimentoindependente",
"status": "residual_preserved",
"resume_only": "Esclarecimentoconcreto novo;semvoltarapesquisaroutestarosmesmospontossemnovainformação.",
"delivery_scope": "Fora da entrega adicionalL3;sem atribuiçãoautomática06."
}
}
File diff suppressed because one or more lines are too long
@@ -1,5 +1,788 @@
# Rastreabilidade, utilização e formação
## 25/10/2026 — L3 C/D entregues; E em QA; trabalho restante
C/D instalados em `de36f028`, recibo `46944402`. E permanece em QA, sem instalação. Reutilizar a aquisição e a classificação L1/L2; seleccionar a via exclusiva da linha documental e registar pedido, decisão e recebimentos. A prova guardada/recuperada/relatada conserva 16 MZN de IVA documental, zero de dedução nesta via, 12 reconhecidos, 7 recebidos e 5 por receber. Não representa apuramento do IVA do fornecimento, concessão automática ou pagamento bancário. As condições c/d/h permanecem distintas; a pesca costeira não herda o tratamento. Históricos conservam reservas e deduções anteriores; editar ou apagar a preparação actual não liberta uma parcela já utilizada.
27 testes frontend específicos, API 1/109 asserções em QA isolada com rollback, TypeScript e build passaram. Todos os mapas anteriores e os originais oficiais foram preservados. Relatório: [L3-E e pendências](../simulations/l3-e-beverages-qa-20261025.json).
Trabalho restante, na mesma matriz:
- **L3-E entrega — entrega**: Integrar a candidata QA pelo processo Git, com comparação fresca, backup/restauro e conferência apenas do delta. Critério de fecho: Revisão instalada e recibo; C/D e históricos preservados.
- **L3-E cobertura adicional — código e parâmetros documentais específicos**: Tratar repartição dentro da mesma linha e reconciliação de dedução efectiva anterior, pelas regularizações aplicáveis. A via demonstrada usa uma linha documental integral exclusiva. Critério de fecho: Parcelas conciliadas, sem benefício duplicado, gravação/recuperação/relatório e totais coerentes.
- **L3-C/D/E formalidades — dependência documental delimitada e implementação posterior**: Mapear edição e campos do formulário de substituição; exemplares regulamentares do reembolso geral; procedimento/formulário específico de restituição de bebidas. Não transportar automaticamente limiares ou prazos de D para E. Critério de fecho: Correspondência demonstrada, preparação/exportação aplicável e referência à submissão externa; pedido, decisão e recebimento separados.
- **Apuramento fiscal ainda indeterminado — código e dados aplicáveis**: Completar os cálculos ainda limitados dos fornecimentos, margem/viagens/eventos, quando aplicáveis. Na prova E, os 16 MZN são IVA documental da aquisição; o IVA da operação L1 continua indeterminado. Critério de fecho: Apuramento suportado pela regra e dados próprios, sem copiar IVA de aquisição como IVA devido nem substituir desconhecido por zero.
- **L2 — 18.º(6) com afectação mista — código**: Combinar base reduzida e afectação parcial reutilizando as proporções existentes. Critério de fecho: Cálculo exacto, sem dupla afectação, totais afectados e histórico preservado.
- **L2 — sucessivas/plurianuais — código e parâmetros aplicáveis**: Encadear eventos e anos por activo a partir da dedução congelada. Critério de fecho: Diferenciais por evento/ano, sem repetição nem reescrita de históricos.
- **L2 — erros/incobráveis — código e condições documentais específicas**: Separar fundamentos, documentos, momento e recuperação posterior. Critério de fecho: Regularizações rastreáveis, sem duplicar rectificações da declaração.
- **P058 — três questões documentais delimitadas; código subsequente**: Resolver a remissão de 57.º(2)b do Decreto 37/2023, a fronteira exacta dos 180 dias de propriedade e 63.º(2), arma de caça/até 100 cartuchos, no âmbito dos beneficiários CIVA12.º(2)a. Preservar os percursos já entregues. Critério de fecho: Condições explícitas dos três casos, cálculo quando aplicável, gravação/recuperação/relatório.
- **P084/P085 — correspondência documental de formulários e código de preenchimento/exportação**: Identificar o formulário aplicável a cada finalidade, distinguindo aquisição interna e importação. O percurso Tempo pedido → decisão → formulário com despacho já está entregue; manter o dossier de apoio disponível. Critério de fecho: Exemplar e instruções ligados aos campos de cada cenário, reutilização de dados e despacho limitado aos bens/operações/períodos/condições autorizados.
- **P001 — dependência documental externa da edição recebida**: Resolver exclusivamente a correspondência dos campos 05/06, sem preenchimento presumido nem usar outra edição como equivalência automática. Critério de fecho: Instrução aplicável à edição recebida e mapeamento comprovado de 05/06.
- **Formalidades digitais dos ramos entregues — documentação e automatização ainda limitada**: Conservar visíveis as formalidades não automatizadas e a submissão fora do portal. Critério de fecho: Cobertura demonstrada por procedimento, sem declarar cobertura digital integral.
L1 conserva 129 entregues + P058/P084/P085 + P001 = 133. L2 mantém as três famílias residuais; L3 permanece aberto. Não repetir pesquisas sem nova evidência nem provas aceites sem delta relevante. Estatísticas e IA continuam adiadas.
## 25/10/2026 — inventário anterior aL3-E
CD entregue de36f028/46944402;AB72/30/42,C/D eL1129fechos/quatroresiduais preservados,sem perdas confirmadas. E reutiliza documentos/classificação13(2) deL1/L2,parcela exclusivamente para dedução ou restituição. Cotejo delimitadoLei13/2016 PDF12/art13(2–3);formalidades,procedimento e formulário específicos não demonstrados nesta ronda. Não transportar automaticamente condições/prazos do reembolso geralD. L2três famílias e residuaisL1 mantidos.
## 25/10/2026 — entrega conjunta L3-C/D
Instalado de36f028,candidata9e2d90c8,incluiCb7a745e6;109cb0fe preservada na ancestralidade ebackup/restauro anterior. Uma integraçãoGit,backup novo e restauroDocker real isolado semrede antes de instalar. Delta:9ficheiros de execução,4originais fiscais inalterados,7marcadores compilados,manifesto/revisão e simuladorHTTP200. Comparação174tabelas e369ficheiros/configuração com mesma identidadepostgres;apenas cache/sessions podem variar. Sem migrações/importações ou recálculo de históricos;provasQA aceites reutilizadas.
C:anterior→diferencial21,sem repetir19/20/pagamentos;crédito credor aguarda comunicação. D:25=26+27,pedido/decisão/recebimento separados,sem reutilizar parcela ou reporte efectivo já consumido. AB72calculados/30pagos/42porliquidar intactos;C61adicionais/20novos pagos/41adicionais porliquidar;D800000crédito=200000reporte+600000pedido,550000reconhecidos,450000recebidos,100000aguardam recebimento. Limite de transporte6Mcaracteres preserva todos os livros/históricos,sem truncagem ecom rejeição acima do limite.
L3 permanece aberto:Erestituição de bebidas eformalidades regulamentares externas não automatizadas. Próximo:E emQA,reutilizando documentos eclassificaçõesL1/L2,sem deduzir e restituir a mesma parcela. L1 conserva129fechos+P058/P084/P085+P001=133;P001 apenas05/06. L2 mantém18(6)+afectação mista,sucessivas/plurianuais,erros/incobráveis. Estatísticas/IAadiadas. Recibo:docs/investmoz/simulations/l3-cd-delivery-20261025.json.
## 25/10/2026 — L3-D emQA operacional;C/D preparado para entrega conjunta
Homologação109cb0fe,recibo3aa851a4;C QAb7a745e6 preservado. Sem instalação,migração/importação ou escrita activa. L3 permanece aberto:formalidades de submissão eErestituição de bebidas pendentes;L1129fechos+P058/P084/P085+P001=133 eL2três famílias pendentes mantidos. Estatísticas/IAadiadas.
No fecho existente,escolher «Destinar parcela ao pedido27 — acompanhar emD» e indicar montante. Calcular afectação explícita25=26+27;27positiva e não superior25. Apenas26pode seguir para o mês seguinte. Origem/reportes dependentes alterados exigem adopção expressa e reconciliação;reporte efectivo já utilizado em declaração posterior não é reafectado retroactivamente. Afetação preparada não altera uma declaração apresentada.
Abrir «L3-D — pedido,decisão e recebimento do reembolso». Reutiliza afectação congelada actual de27,âmbito,período e natureza. Pedir apenas fundamento/origem/data nascimento,suporte e referência/data em falta.21(6):quatro meses e crédito superior100000;21(7a):superior500000 e considerar créditos mais antigos;21(7b):cessação identificada. A origem e ordem são factos declarados/documentados,não conta correnteAT reconstruída nem extracto regulamentar automático.21(15)usa datas declaradas para limite10anos. Não aplicar antiga obrigação50%/12meses,revogada pelaLei10/2025.
Preparação→pedido apresentado fora doInvesteMoz→decisão pendente/integral/parcial/indeferida→recebimento identificado. Pedido não gera decisão;decisão não gera caixa. Guardar número/data/entidade da decisão e respectivo montante;registar recibos/data/montante separadamente. A avaliação automática do fundamento fica independente da decisão externa documentada:fundamento desconhecido/não automatizado não cria aprovador adicional nem impede registar documento recebido. Divergência fica explícita;sem presumir direito numa preparação sem fundamento.
Mesma parcela não pode sustentar dois pedidos. Depois de pedido apresentado/decisão/recebimento,a parcela continua reservada,inclusive ao remover a preparação actual;histórico preservado. Indeferimento e parte não deferida não libertam crédito automaticamente:retorno exige procedimento documentado e reconciliação,sem criar20porinferência. Duplicações,recebimentos sem decisão/data ou acima do reconhecido ficam indeterminados;documentos conservados. Sem executar banco ou alterar caixa silenciosamente.
F acompanhaD:800000MZNdecrédito=200000reporte+600000pedido;550000reconhecidos;450000recebidos;100000aguardam recebimento;50000não deferidos. Relatório guarda cada contexto e as mesmas referências/valores. Fracção exacta799681/3menos200000depedido=199681/3de reporte. Gravar→recuperar→relatório conferido no componente real;AB72/30/42 eC intactos.
Cotejo:Lei13/2016 PDF15–16;Lei22/2022 PDF3–4;Lei10/2025 PDF13,art21;exemplarModeloA quadro11. Remissãoart20 do formulário conservada como divergência. Regulamentos78/2017,30/2022 e52/2025 identificados,mas respectivos exemplares não obtidos no acervo/consulta delimitadaAT/INM nesta ronda;propostas/resumos não activam regras. Formulários,anexos,garantias,compensações,suspensões e calendário completos continuam não automatizados e externos.150dias não constitui previsão de caixa;E não foi demonstrado nesta ronda e não bloqueiaC/D.
Escolha técnica delimitada:transporte do snapshot4M→6Mcaracteres para preservar todos os livros/históricos aceites ao acrescentarD;sem truncagem. API109asserções recupera exactamente a amostra;teste5asserções mantém rejeição acima6M.33dirigidosAB/C/D,tipos/build eUI passaram. Prova:outputs/iva-l3-d-20261025/ui-recovered-refund.png. Relatório:docs/investmoz/simulations/l3-d-refund-qa-20261025.json;manifesto conjunto:docs/investmoz/simulations/l3-cd-prepared-delivery-20261025.json.
## 25/10/2026 — inventário anterior aL3-D
AB instalado109cb0fe/3aa851a4 eC QAb7a745e6 preservados,sem perdas confirmadas. L1129fechos/quatroresiduais,L2três famílias eErestituição de bebidas mantidos. D reutiliza crédito congelado,separando26reporte/27pedido,pedido/decisão/recebimento. Cotejo limitadoCIVA21 comredacção2025 eModeloA11;regra50%/12meses revogada,não activar. Formalidades regulamentares externas não automatizadas,não reinventar aprovadores/certificados.
## 25/10/2026 — L3-C emQA no âmbito demonstrado;homologaçãoAB preservada
AB entregue109cb0fe,recibo3aa851a4;72calculados/30pagos registados/42porliquidar intactos. C não está instalado. L3 continua aberto,Dreembolso geral eErestituição de bebidas pendentes;L1 mantém129fechos+P058/P084/P085+P001=133 eL2 mantém18(6)+mista,sucessivas/plurianuais,erros/incobráveis. Estatísticas/IAadiadas.
No componente existente de aquisições,abrir «L3-C — substituições e diferencial». Escolher versão congelada da declaração anteriorAB/C e versão corrigidaL2 do mesmo período2026/MZN. A origem conserva entidade,natureza,17/18,pagamentos,reporte e saldo por liquidar. Reutilizar data disponível e referência da substituição anterior;pedir referência em falta. Indicar motivo e referência/data da preparação ou apresentação externa. Editar não submete àAT nem altera a declaração anterior. Formulário/registo externo não automatizados:RCIVA15 refereModeloB eexemplar recebido assinala substituiçãoModeloA;divergência conservada,sem impedir o cálculo/dossier e sem reabrirP00105/06.
C calcula21=(17actual−18actual)−(17anterior−18anterior) por fracções exactas,22positivo e24comjuros adicionais identificados. Não reutiliza créditos19/20 nem atribui25/26/27. Diferencial credor aguarda comunicação dos serviços para20 numa declaração posterior em prazo;não cria reporte/refund ou compensa dívida anterior automaticamente. Comunicação recebida continua documentada no percursoAB existente. Juros:montante identificado ou inexistência expressa com motivo,sem taxa/calendário presumidos.
Registar apenas novos pagamentos. Referência já congelada emAB/C ou repetida noutro âmbito efectivo recuperado exige reconciliação. AB também recusa documento já congelado emC;tentativa inválida não apaga o pagamento anterior. Excedente adicional não cria comunicação20. O controlo refere-se aos livros recuperados,não a conta corrente centralAT ou outros rascunhos privados. Preservam-se cenários projectados independentes.
Exemplo:MZN17anterior160→corrigido220,diferencial60;juros adicionais1→61calculados;novo pagamento20→41adicionais porliquidar. Declaração anterior conserva72calculados,30pagos,42porliquidar. Reconciliação mostra50registados e83porliquidar sem compensação automática. Caso credor:actual18=40 versus anterior17=160 gera−200;200aguardam comunicação,sem abater42anteriores ou criar26. Cadeia seguinte220→250gera apenas30novos;sem cobrar novamente os60anteriores. Sucessores repetidos/ciclos recusados.
Calcular e guardar substituiçõesC,gravar rascunho privado,recuperar,abrir relatório. Resultado congela as suas entradas e origens;recalcular acrescenta histórico,não o reescreve. Relatório recuperado usa documentos/valores da versão guardada. Todos os mapas anteriores comparados integralmente;20casos dirigidos distintos,API1/109asserções na baseQA55441 comrollback,tipos/build e componente real passaram. Prova:outputs/iva-l3-c-20261025/ui-recovered-substitution.png. Relatório:docs/investmoz/simulations/l3-c-substitution-qa-20261025.json.
## 25/10/2026 — inventário antes de L3-C
AB entregue109cb0fe/3aa851a4,72calculados/30pagos/42porliquidar preservados. Sem perdas confirmadas;L1129fechos/quatroresiduais eL2três famílias pendentes mantidos. Cotejo delimitado ao quadro9 do exemplar eRCIVA15. C prepara diferencial da substituição sem duplicar19/20,pagamentos ou alterar a declaração anterior. D/E permanecem pendentes.
## 25/10/2026 — entrega conjunta L3-A/B
Instalado 109cb0fe, candidata f7b778cd;7a380b76 preservada na ancestralidade e no backup/restauro anterior. IntegraçãoGit única,backup novo e restauroDocker isolado real antes da instalação. Delta:4ficheiros de execução,4originais fiscais inalterados,7marcadores compilados,manifesto/revisão e simuladorHTTP200. Comparação de dados/schema/ficheiros/configuração com identidadepostgres equivalente;apenas cache/sessions podem variar. Sem migrações/importações/recálculo de históricos;provasQA aceites reutilizadas.
Âmbito:primeira declaração em prazo,2026/MZN,reporte integral explícito;crédito anterior com origem/período,comunicação20 identificada e continuidade congelada. **72MZN calculados,30pagos registados,42porliquidar** conservam conceitos distintos;registo não certifica arrecadação. L3-C substituições,D reembolso,E restituição de bebidas continuam pendentes. Próximo:C emQA,declaração anterior ligada ao diferencial sem duplicar créditos/pagamentos.
L1 conserva129fechos+P058/P084/P085+P001=133;P001 apenas05/06. L2 conserva18(6)+afectação mista,regularizações sucessivas/plurianuais e erros/incobráveis como trabalho pendente. Estatísticas/IA adiadas. Recibo:docs/investmoz/simulations/l3-ab-delivery-20261025.json.
## 25/10/2026 — L3-A/B concluído emQA no âmbito demonstrado;entrega conjunta preparada
Homologação permanece7a380b76,reciboacbd1f33.Sem instalação,migração/importação ou recálculo de dados activos.L1129fechos+P058/P084/P085+P001=133 preservados;P001 só05/06.L2 mantém18(6)+afectação mista,regularizações sucessivas/plurianuais,erros/incobráveis.Csubstituições,Dreembolso eErestituição de bebidas continuam pendentes;Estatísticas/IAadiadas.
No bloco existente de aquisições,abrir «L3-A/B — crédito,fecho e pagamentos por período». Preparar mês escolhendo resultadoL2 congelado:17/18 exactos,contexto,moeda,revisão/data ficam identificados;nenhuma compra é recalculada. Âmbito fiscal único já indicado reutiliza-se no novo mês. Oportunidades são cenários distintos,sem consolidação automática de dossiers/entidades.
**A:**identificar saldo de abertura disponível do mês imediatamente anterior,documento e montante;ou reutilizar26do fecho anterior por adopção expressa. Crédito20 exige comunicação recebida com referência,data,origem e montante. Confirmar cobertura de todos os créditos;lista vazia não viraausência sem confirmação. Evita repetir origem como abertura/comunicação ou noutro período. Origem anterior alterada/indeterminada/gap exige revisão,não transporte silencioso;usar «Adoptar versão actual deste reporte» e calcular novamente em cada dependente.
**B:**primeira declaração,dentro do prazo declarado com data/fundamento,2026/MZN,reporte integral expressamente escolhido.22=max(17−19−20,0);25=max(18+19+20−17,0);24=22+23;26=25. Juros23 são montante documentado/pressuposto ou inexistência expressa com motivo;sem calendário/taxa presumidos.21 é não aplicável à primeira declaração,sem concluirC.27 ézero pela escolha expressa de reporte integral,sem concluirD. Fora de prazo conserva dados/conta e pede procedimento próprio;nenhum crédito apagado ou reutilizado indevidamente.
**Pagamentos:**registar referência,data e valor;calcular montante registado,restante e excedente,separados de24 e26. Excedente pago não cria crédito20 sem comunicação. Sem pagamentos registados significa lista vazia,não certificado de inexistência de pagamentos externos. Documento/data repetidos ou informação em falta pedem reconciliação. Não executa pagamentos nem certifica cobrança/submissãoAT;em projecções,todos estes valores são pressupostos.
**Histórico e relatório:**guardarfecho,gravar rascunho privado,recuperar e abrir relatório. Cada versão conserva entradas e resultados completos;relatório histórico usa documentos/valores dessa versão. Alterarcrédito50→60 conserva a anterior,invalida os reportes dependentes e permite adopção expressa. Editar só pagamento não altera o crédito transportado. Frações permanecem exactas;20/3+50=170/3,seguido de80−170/3=70/3,sem transportar aproximação decimal. Acrescentar versãoL2 não força recálculo de origem congelada ainda disponível.
Exemplo por períodoMZN:Janeiro18=100+abertura19=50→25/26=150;Fevereiro17=80,19=150→25/26=70;Março17=160,19=70,20comunicado=20→22=70;juros23=2→24=72;pagamento registado30→restante42;26=0. Relatório recuperado conserva os três meses e oportunidade373,origens,referências e valores.
Cotejo limitado a A/B:quadros8/10/11 doVAT Return9c0b99a8p1–2,CIVA21(2/5)/23(1),RCIVA12/15. Cabeçalho18/19 versus caixas19/20 mantido visível,sem alterar original ou reabrirP001. Reembolso27 e restituição13(2) não herdam esta fórmula de reporte.
9testesA/B novos,9Edirigidos reutilizados(18passaram);9A/B repetidos após ajustes finais,todos passaram.API1/103asserções,baseQA55441 com guarda e rollback;modelo_a_snapshot recuperado exactamente,origensL2 e todos os mapas anteriores conservados.Tipos/build e componente real conferidos.Prova:outputs/iva-l3-ab-20261025/ui-recovered-closure.png.
Limites:controlo de duplicação no rascunho/livros recuperados,não conta corrente centralAT nem reconciliação automática de rascunhos privados independentes. Períodos/parcelas dependentes de residuaisL2 continuam indeterminados;casos independentes avançam. Não sincronizar caixa silenciosamente. Entrega conjunta preparada emdocs/investmoz/simulations/l3-ab-prepared-delivery-20261025.json;requer fetchmain fresco,preservação de concorrência,backup/restauro e conferência do delta instalado pelo processoGit existente,quando autorizada.Relatório:docs/investmoz/simulations/l3-ab-closure-qa-20261025.json.
## 25/10/2026 — inventário anterior à implementação/testesL3-A/B
Homologação7a380b76/acbd1f33 preservada;L1129fechos/quatroresiduais eL2três famílias pendentes conservados. Nenhuma perda confirmada. Reutiliza resultadosL2 congelados,fracções eAPI/relatórios existentes. Cotejo apenas A/B:quadros8/10/11 do exemplar,VAT Return9c0b99a8 p1–2,CIVA21(2/5)/23(1),RCIVA12/15. Primeira declaração em prazo;crédito,pagamento e reporte distintos. Juros apenas montante documentado/pressuposto ou inexistência expressa com motivo,sem taxa presumida. C/D/E permanecem próprios.
## 25/10/2026 — L3:delimitação do fecho do IVA,antes de implementar
L2 entregue no âmbito demonstrado7a380b76,reciboacbd1f33.L1 conserva129fechos+P058/P084/P085+P001=133;P001 só05/06. Nenhuma reabertura.L2 conserva trabalho por concluir:18(6)+afectação mista;regularizações sucessivas/plurianuais;erros/incobráveis.Só bloqueiam as parcelas/períodos dependentes,sem impedir casos independentes deL3.Estatísticas/IAadiadas.
### Inventário reconciliado
Existem resultadosL1/L2 por oportunidade/período,fracções exactas,origens/históricos e12/13 nos motivos demonstrados;APIprivada/ETag e relatórios existentes. Os campos19–27 têm correspondência descritiva no ModeloA,sem motor de fecho demonstrado. Estados antigos do catálogo01–18 não anulam as entregas posteriores:consultar relatóriosL1/L2 actuais. Tesouraria já separa crédito estimado,pedido,reconhecimento e recebimento previsto;calendário de imposto assumido não é pagamento efectuado. Reutilizar componentes e não reconstruir motor. Excesso de custos de viagens não é crédito de IVA;reembolso de capital não é restituição de imposto.
**L3-A — crédito anterior e conta de utilização19/20**
Já existe: L2 guarda resultados exactos e congelados por oportunidade/período;26/19/20 estão mapeados no exemplar. Tesouraria já distingue crédito estimado,pedido,reconhecimento e recebimento previsto. Não foi encontrado livro fiscal executável de saldos19/20 ou transporte26→19.
Reutilizar: AcquisitionCalculation/periods/exactFields/history e sourceKey; modelo_a_snapshot e acquisitionScope; entidade/perfil/organização e referências válidas já existentes; fiscal-rational.ts.
Código em falta: Conta de crédito com origem documental,período,âmbito fiscal,natureza efectiva/projectada,valor disponível/utilizado/reservado e destino. Saldo inicial explícito quando não houver anterior;reutilizar resultado26 fechado anterior,sem copiar18 ou estimativa como crédito efectivo.20 exige comunicação identificada,sem inferir de um pedido.
Cotejo documental específico: Cotejo delimitado do quadro8/11 e utilização/prazos do crédito:RCIVA12/15 e CIVA21 na redacção aplicável. Fontes disponíveis,correspondência executável ainda a concluir;não é falta genérica de autenticidade.
Dependências efectivas: Origem/valor utilizável e âmbito identificados; Período anterior fechado para transporte automático;saldo de abertura documentado permite começar sem reconstruir toda a história.
Critério de fecho: Recuperar abertura,movimentos,consumo e saldo seguinte com reconciliação;mesma origem não utilizada duas vezes;lacuna temporal/origem incerta permanece indeterminada. Oportunidades preservam cenários separados,sem duplicar consumo fiscal efectivo ou consolidar dossiers implicitamente.
Agrupamento: Agrupar comB quando compatíveis;F acompanha desde o primeiro incremento.
**L3-B — fecho da primeira declaração e pagamentos**
Já existe: L1/L2 calculam parcelas01–18 apenas no âmbito demonstrado,com fracções exactas e causas de indeterminação. Fórmula24=22+23 consta da correspondência do exemplar. Tesouraria tem calendário mensal de imposto assumido;isto não é pagamento fiscal efectuado.
Reutilizar: calculateAcquisitions/result.periods e versões congeladas; mapeamentoModeloA22–26; monthly-cashflow.ts:monthlyTaxSchedule e estados de imposto em falta.
Código em falta: Fechar saldo devedor/credor após créditos aplicáveis;guardar22/25 e distribuição26/27 conforme instruções,sem inventar fórmula antes do cotejo.23 separa juros conhecidos,não aplicáveis e indeterminados,com fonte/taxa/datas quando calculáveis.24 só determinado com22/23 conhecidos. Registar pagamento efectuado por referência,data,valor e imputação,distinto de valor a pagar e de pressuposto de caixa.
Cotejo documental específico: Cotejo dirigido dos quadros10/11,ordem de utilização19/20 e regras de CIVA23/32/21 e RCIVA6–15. Juros dependem da regra/taxa e datas concretas;não usar taxa de juros de financiamento ou prazo genérico.
Dependências efectivas: Resultado actual e completo das parcelas necessáriasL1/L2; CréditosA quando existam;ausência expressa/fundamentada permite caso independente; Juros apenas para23/24 e casos em que sejam aplicáveis,sem bloquear saldo credor independente.
Critério de fecho: Reconciliação exacta antes/depois dos créditos,valor a pagar,crédito,reporte e afectação a pedido;pedido não duplica reporte disponível. Pagamento não reduz novamente o IVA apurado nem altera o histórico. Parcela necessária desconhecida mantém total afectado indeterminado.
Agrupamento: Primeiro conjuntoA/B comF;nenhuma ordem de pagamento ou submissãoAT é executada pelo simulador.
**L3-C — declaração de substituição e diferencial**
Já existe: Históricos congelados e revisões existem;12/13 já recebem acerto anual e rectificação de aquisição no âmbitoE. Campo21 tem correspondência descritiva,sem diferencial executável de declaração de substituição.
Reutilizar: Históricos de L2/E e documentos de origem; ETag e recuperação privada; quadros9/10/11 do ModeloA e RCIVA15/rectificações aplicáveis.
Código em falta: Vincular declaração substituída,versão/período e nova declaração;calcular cada caso de sinal do quadro9 após cotejo. Conservar pagamentos/créditos já utilizados e apresentar impactos nos períodos dependentes para adopção expressa. Ajustamento de aquisição12/13 não é automaticamente diferencial21.
Cotejo documental específico: Mapear as fórmulas/casos do quadro9 à edição/instruções recebidas e procedimento de substituição;sem extrapolar da simples subtracção de17/18. P00105/06 não é reaberto para isto.
Dependências efectivas: A/B e versão congelada da declaração efectivamente substituída; ResidualL2 só se o evento corrigido depender dele.
Critério de fecho: Débito/crédito diferencial recuperável,referência à substituída,pagamentos/movimentos anteriores conservados;nenhuma dupla regularização nem propagação silenciosa de nova versão para meses seguintes.
Agrupamento: Conjunto posteriorA/B;primeiras declarações não esperam pela substituição.
**L3-D — pedido de reembolso,decisão e recebimento**
Já existe: Campo27 mapeado;monthly-cashflow e respectivo componente já separam estimativa,pedido,reconhecimento e recebimento previsto,com exportação. Crédito/pedido/reconhecimento não entram automaticamente em caixa. Falta vínculo ao saldo fiscal e ao pedido por oportunidade/período.
Reutilizar: vatCreditEstimated/vatRefundRequested/vatRefundRecognized/vatRefundExpectedReceipt/vatRefundExpectedMonth; simulation-cashflow-planner.tsx e relatório/CSV existentes; saldo e movimentosA/B.
Código em falta: Dossier e pedido por saldo/origem,estado em preparação/apresentado/decisão/recebimento,documentos e datas. Reservar a parcela pedida para não a reportar/consumir de novo;tratar deferimento parcial,indeferimento/retirada e recebimentos com movimentos referenciados,sem libertar ou criar caixa por presunção.
Cotejo documental específico: Cotejo específico de CIVA21 redacçãoLei10/2025:condições,prazos,regime e exclusões aplicáveis. Remissão do exemplar aoart20 permanece registada,sem copiar números/prazos de versão anterior. Identificar formulário/anexos efectivamente aplicáveis,sem criar certificados/aprovadores.
Dependências efectivas: Crédito e reserva reconciliadosA/B; Procedimento correspondente ao caso;C só para pedido ligado a substituição.
Critério de fecho: Montantes pedido,reconhecido,compensado/recebido e ainda disponível reconciliados;pedido não equivale a decisão,decisão não equivale a recebimento. Recebimento efectivo e previsão de tesouraria são estados distintos,com moeda,data e fonte.
Agrupamento: Compatível comE no mecanismo comum de pedidos/decisões,conservando fundamentos e condições distintos.
**L3-E — restituição de bebidas13(2)**
Já existe: L1 identifica natureza de abastecimento e c/d/h. L2 conhece beveragePath=deduction/refund e onlyDeduction,liga documento/linha e via de dedução demonstrada. Escolherrefund conserva percursoL3 indeterminado;restituição não está implementada. Pesca costeira mantém exclusão de provisões,sem estender a outros destinatários.
Reutilizar: iva-onboard-supplies.ts e classificaçãoL1 actual; Acquisition/bc:documento,linha,IVA indicado,beveragePath e vínculo de origem; linkedBeverageDeductionRight apenas como referência das condições já tratadas,não como restituição executada; mecanismo comum de dossier/pedido/decisão/recebimentoD.
Código em falta: Identificar parcela e titular/destino,origemL1,documento/IVA e pedido de restituição. Guardar exclusividade da via por parcela através de revisões/dossiers;dedução anterior exige reconciliação expressa antes de mudar de via. Separar preparação,apresentação,decisão e recebimento. Adaptar a avaliaçãoA/B/C que hoje conserva indeterminação ao escolherrefund:consumir um estado de via de restituição exclusivamente demonstrada,sem converter desconhecido emzero apenas para fechar totais.
Cotejo documental específico: Mapear procedimento/formulário e condições específicos de13(2–3) aos cenários c/d/h. A previsão legal de restituição já está identificada;não falta revalidar a fonte. Não presumir que este pedido usa automaticamente as regras/caixa27 do reembolso geral21.
Dependências efectivas: Origem e condições própriasL1 e documento/IVA identificado; Ausência de dupla utilização da parcela com deduçãoL2; D fornece infra-estrutura comum;enquadramento13(2) permanece próprio e pode ser preparado independentemente do reembolso geral.
Critério de fecho: Parcela exclusivamente atribuída à via demonstrada,sem dedução+restituição simultâneas;âmbito e fonte próprios;dossier→pedido→decisão→recebimento recuperáveis e relatados,sem restituição presumida pela selecção da via.
Agrupamento: Preparação independente enquanto decorre cotejo específico;agruparD/E apenas quando houver compatibilidade real.
**L3-F — gravação,recuperação,relatório e preservação em cada incremento**
Já existe: API de rascunhos privados/ETag,modelo_a_snapshot por oportunidade,históricos,resultados exactos e leitores de relatórios;cashflow_snapshot separado. Provas L1/L2 e relatórios da entrega7a380b76/acbd1f33 disponíveis.
Reutilizar: SimulationFormDraftController/StoreSimulationFormDraftRequest; project-dossier-report.ts e relatóriosAquisicoes/E/tesouraria; fiscal-rational.ts e controlo de versões/fontes.
Código em falta: Estender estruturas/leitores existentes com saldos,movimentos,pedidos,declarações e vínculos de versões. Conferir tamanho do rascunho sem truncar históricos;sincronizar efeitos de caixa só por adopção expressa. Mostrar período,oportunidade,âmbito fiscal,origem,estado e próxima acção.
Cotejo documental específico: Sem dependência documental genérica;somente regras dos incrementos que estejam a ser integrados.
Dependências efectivas: Acompanha cada incremento,sem esperar pelo fimL3.
Critério de fecho: Gravar→recuperar→relatar conserva valores,fracções,origens,revisões e estados;cenários não partilham consumo efectivo implicitamente. Falta/indeterminação não virazero;mudanças mostram impactos,sem alterar históricos. QA isolada e apenas delta relevante;entregaGit agrupada com backup/restauro e conferência instalada quando autorizada.
Agrupamento: Transversal a todos os conjuntos;reutilizar provas válidas e conferir somente novas parcelas/fluxos afectados.
### Sequência e preservação
Primeiro conjuntoA/B comF,para créditos e primeira declaração nos casos suficientemente sustentados.Csegue pelas dependências de substituição,não bloqueia primeira declaração.D/E partilham infra-estrutura de pedidos/decisões,conservando regime geral21 e restituição13(2) distintos;dossierE pode avançar durante o cotejo específico.Ajustamentos12/13deL2 não se confundem com diferencial21.A origem fiscal do sujeito passivo e o cenário da oportunidade ficam identificados,sem consolidar automaticamente dossiers nem duplicar utilização efectiva do crédito.
O cotejo seguinte é dirigido aos quadros8–11,à redacção aplicável21e aos procedimentosRCIVA12/15,pagamento/substituição e restituição13(2);fontes já aceites,não nova validação genérica de proveniência. Parâmetros/documentos realmente ausentes mantêm causa e próxima acção.Não importar prazos/limiares de outra versão nem regra17% do regulamento histórico. Remissãoart20 no exemplar versus21na lei posterior fica explícita;P00105/06 não é reaberto.
Esta passagem altera apenas documentação e a linhaAUD-SIM-INT02 na mesma matriz3556×49;129fechos,todos os outros requisitos e quatro residuaisL1 preservados.Nenhum teste/prova aceite repetido,sem nova pesquisa externa,escrita activa,implementação,migração ou entrega.A delimitação não declaraL3concluído nem a estimativa histórica48–80hactualizada. Registo estruturado no recibo integrado existente,chave`l3_closure_delimitation_20261025`;não foi criado outro backlog.
## 25/10/2026 — entrega conjuntaD/E;L2 concluído no âmbito demonstrado
Instalado7a380b76,candidata dde20c33,incluiD2c2a2f20.Preservada819ae791 na ancestralidade e no backup/restauro anterior. Uma integração pelo processoGit existente,backup novo e restauroDocker real isolado semrede,antes da instalação;sem migrações/importações. Delta:7ficheiros de execução,4originais fiscais conservados,10marcadores compilados,manifesto/revisão e simuladorHTTP200. Dados/schema/ficheiros persistentes/configuração comparados com identidadepostgres equivalente;apenas cache/sessions variaram. ProvasQA aceites reutilizadas.
**L2 concluído no âmbito demonstrado**:ABC já instalado;D afectação/proporções eE acerto anual,controlo de activos e rectificação pelo adquirente,comF nos totais afectados. Não representa cobertura fiscal integral. Permanecem trabalho por concluir **na mesma matriz**:artigo18(6) combinado com afectação mista;regularizações sucessivas e plurianuais;regularizações por erros e incobráveis. Conservar fonte/evento/prazo e reconciliação próprios,sem percentagem genérica ou alteração silenciosa de históricos. Os limites de IVA liquidado,2026/MZN e eventos demonstrados mantêm o relatórioE;19–27/créditos anteriores/pagamento/reembolso seguemL3.
L1 operacional com limitações:129entregues+P058/P084/P085+P001=133;P001 exclusivamente05/06. As formalidades digitais e cálculo fiscal ainda não automatizado dos ramos limitados conservam-se. Restituição de bebidas permaneceL3. Avançar paraL3 não elimina nem reclassifica estes residuais como concluídos.
Recibo:docs/investmoz/simulations/l2-de-delivery-20261025.json.
## 25/10/2026 — L2-E emQA;D/E preparados conjuntamente,comF
ABC/F permanece instalado819ae791,recibo855ab066.D aceite emQA2c2a2f20.E concluído emQA **no âmbito abaixo**,sem afirmar automatização de todas as regularizações.L1 conserva129fechos+P058/P084/P085+P001=133,todas as linhas preservadas;P001 apenas05/06.Restituição de bebidas continuaL3.
Na aquisição existente,«E — activos e regularizações por evento» permite escolher resultado original congelado e parcelas,conservando documento/linha,moeda,mês,dedução exacta e condiçõesC/D. Escolher outra versão é adopção expressa;os restantes dados do evento mantêm-se.Pressupostos de projecção continuam identificados;submissão fiscal ocorre fora do portal.
**Acerto anual22(6):**indicar bases anuais finais22(4–5),semIVA,incluindo fora de campo e excluindo vendas de activo usado/imobiliárias-financeiras acessórias;confirmar âmbito. Quociente final à centésima superior22(8).Diferença entre IVA elegível antesD,já limitado porC,vezes proporção final,e o deduzido congelado. Último período do ano;campo12 se positiva,campo13 se negativa. Não recalcular nem substituir a dedução original.Não se aplica genericamente a afectação real ou18(6)+mista,que continua pendente.
**Activos:**controlo individual27RCIVA,Decreto7/2008,BR16PDF5,p103:documento/linha,data,IVA suportado/deduzido e versão. Reutiliza08;numa importação,pode identificar expressamente «Bem de investimento importado»,mantendo11 e condições aduaneiras. O registo de activos não inventa amortização ou regularização plurianual.
**Rectificação pelo adquirente51(4):**seleccionar uma parcela,documento rectificativo do fornecedor,data de recepção,motivo e dedução corrigida documentada;confirmar manutenção das condições de direito.Reduções/anulações corrigem a dedução a favor do Estado,na recepção ou período seguinte. Acréscimos,erros,mudança de direito e múltiplos documentos sucessivos exigem percurso próprio. O prazo que alcance2027 conserva-se no relatório;motor mensal ainda2026/MZN.
**Guardar e conferirF:**guardarE;retirar declarações contraditórias de ausência12/13 e confirmar cobertura de todas as regularizações do período;actualizar expressamente o apuramento parcial. F soma fracções exactas,12em15 e13em16,sem dupla dedução. Aquisição editada após a origem congelada pede reconciliação;dados incompletos/resultados desactualizados não viramzero. Evita repetir documento/linha/ano mesmo mudando revisão;acerto anual+nota de crédito na mesma parcela não são somados sem reconciliação sequencial.
ExemploMZN:12=5,28;13=4/3;14=1000;15=29,44;16=484/3;17=9892/75;18=0. Decimais até6casas são apresentação técnica,sem arredondamento declarativo presumido. Bases reduzidas semIVA liquidado consolidado mantêm14/16/17/18 indeterminados,inclusive quando apenas há eventosE no livro.17/18 antecedem créditos anteriores;19–27/pagamento/reembolso permanecemL3.
**LimitesE:**erros51(6–7),incobráveis/recuperações51(8–9),mudanças de regime,regularização plurianual e sequência de vários eventos na mesma parcela não estão automatizados. Mantêm fonte/evento/prazo e trabalho fiscal próprios;nenhum fecho silencioso. Divergência textual11/12 versus caixas12/13 conservada,sem reabrirP001.
31testes dirigidos(22anteriores+9E),API1/94asserções com guardaQA55441/rollback,tipos/build e componente real conferidos. API conserva exactamente o rascunho,origensD,históricos e mapas anteriores. Chaves compactas evitam repetir o conteúdo congelado e mantêm o exemplo dentro do limite existente;nenhum limite de validação foi alargado.
Manifesto único:docs/investmoz/simulations/l2-de-delivery-manifest-20261025.json.A entrega exige conferência fresca de main/concorrência,autenticação,backup/restauro e delta instalado pelo processoGit existente.Não executados neste incrementoQA.Relatório:docs/investmoz/simulations/l2-e-assets-regularizations-qa-20261025.json.Provas:outputs/iva-l2-e-20261025/ui-recovered-totals.png eui-recovered-asset.png.
## 25/10/2026 — inventário anterior à implementação/testesE
ABC/F instalado819ae791,recibo855ab066.L1129fechos/quatroresiduais preservados,sem perdas confirmadas. E reutiliza livro/resultadosD congelados,sem recalcular históricos;inventário de activos e regularizações por evento. Cotejo dirigido22(1–8),Lei13/2016PDF16/p1426(274),e18(6),Lei10/2025PDF13;sem reconstruir motor. Comunicação prévia22(2) é condição da fonte,sem novo aprovador. Regularização anual22(6) segueE.
## 25/10/2026 — L2-D emQA,comF e dependências deE
ABC/F entregue819ae791,recibo855ab066.D concluído emQA no âmbito demonstrado,sem instalação nova.L1 operacional com limitações:129entregues+P058/P084/P085+P001=133;nenhuma linhaL1 alterada.LivrosABC e históricos preservados,actuais e comparados integralmente.
Na aquisição existente,use «Preparar afectação parcial e proporções — D».Conserva documento,montantes,moeda,mês e condiçõesB/C.Escolher afectação real/pro rata identifica afectação mista;18(6),afectação exclusiva à origem. O vínculo individualA conserva-se,sem definir silenciosamente o âmbito misto.A falta de condiçãoC/documento não é suprida por uma proporçãoD.
**Afectação real22(2):** indicar parte com direito/total na mesma unidade e critério,âmbito/fonte,repartição real,comunicação prévia referenciada e condições concretamente aplicáveis.Não existe novo aprovador do portal.Usa fracção exacta,sem arredondamento do pro rata.
**Pro rata provisório22:** bases anuais semIVA,numerador com direito18/19,denominador com todas as operações incluindo fora de campo;excluir vendas de activo usado e imobiliárias/financeiras acessórias22(4–5).Ano anterior22(6),ou estimativa expressa de início/alteração substancial22(7) com referência da declaração.Não usar só vendas de um mês/opção individual como total anual.O quociente é arredondado à centésima superior22(8),conservando original e aplicado:1/3→34%,2/3→67%.Imposição concreta de afectação real22(3) não é substituída por pro rata.Montantes anuais em falta/denominadorzero não recebem percentagem presumida.
**18(6):** reutilizar origem demonstradaP096–P099 no mesmo âmbito,adoptando expressamente alterações e confirmando correspondência.Reutiliza62/85/40/75%,sem taxaIVA presumida ou segunda redução da base.Afectação mista combinada com18(6) não está demonstrada neste percurso;fica indeterminada.Condições/fonte de origem alteradas invalidam o resultado actual;históricos não são recalculados.
**F:** preservar parcela dedutível/não dedutível e composiçãoC antesD.Gasóleo16×50%×1/3=8/3,sem dupla aplicação.Exemplo de afectação real/pro rata:09=13,44;11=10,72;14=1000,00;15=24,16;16=160,00;17=135,84;18=0,00MZN.Quando existem bases reduzidas no mesmo âmbito/período,IVA liquidado não consolidado mantém14/16/17/18 indeterminados,mesmo sem vínculo directo da compra a essas bases.Exemplo18(6):dedução15=6,40,sem imposto de saída presumido0. Não se conclui cálculo fiscal integral.L3 mantém créditos anteriores,restituição de bebidas,pagamento/reembolso.
Guardar versão,gravar privadamente,recuperar e abrir relatório conserva método,bases,quocientes,fonte,comunicação,fracções exactas e histórico. Alterar entradas/origens assinala resultado desactualizado,sem substituir o original.ProvaAPI:1teste/89asserções,baseQA55441 com guarda e rollback;26testes dirigidos,5D repetidos após ajustes finais;tipos/build e componente real com dois âmbitos recuperados.ProvasABC/L1 válidas reutilizadas.
**E,por dependência efectiva:** primeiro motivo executável é o acerto anual22(6),usando resultadoD congelado,IVA elegível antesD,quociente aplicado e montante efectivamente deduzido. Recolher bases anuais finais e aplicar22(4–5)/(8),calcular diferença no último período do ano,com identidade única do evento e sentidos12/13 separados;jamais alterar dedução histórica.Activos/outros motivos precisam evento,documento,prazo e fonte específicos.A divergência textual11/12 versus caixas12/13 continua identificada separadamente deP001.E ainda não implementado;este registo não fechaE ouL2.
Relatório:docs/investmoz/simulations/l2-d-allocation-qa-20261025.json.Provas:outputs/iva-l2-d-20261025/ui-recovered-totals.png eui-reduced-output-limit.png.
## 25/10/2026 — inventário anterior à implementação/testesD
ABC/F instalado819ae791,recibo855ab066.L1129fechos/quatroresiduais preservados,sem perdas confirmadas. D reutiliza livro de compras,condiçõesB/C,fracções exactas e bases reduzidasP096–P099. Cotejo dirigido22(1–8),Lei13/2016PDF16/p1426(274),e18(6),Lei10/2025PDF13;sem reconstruir motor. Comunicação prévia22(2) é condição da fonte,sem novo aprovador. Regularização anual22(6) segueE.
## 25/10/2026 — entrega conjunta L2-A/B/C comF
Instalado819ae791,candidatafc7e590d,incluiA56c948ec. Uma integração pelo processoGit,backup novo e restauroDocker real isolado semrede antes da instalação;sem migrações/importações. Delta instalado:6ficheiros de execução,3originais fiscais,10marcadores compilados,manifesto/revisão e simuladorHTTP200;dados/tabelas/ficheiros persistentes/configuração comparados com identidadepostgres equivalente. Apenascache/sessions podem variar.ProvasQA aceites reutilizadas,sem repetirL1. L1 operacional com limitações:129entregues+P058/P084/P085+P001=133. Via de dedução de bebidas no recorte demonstrado;restituição continuaL3. PróximoD:afectação parcial/proporções;E pelas dependências efectivas.F acompanha cada incremento.
Recibo:docs/investmoz/simulations/l2-abc-delivery-20261025.json.
## 25/10/2026 — L2-B/C emQA e entrega A/B/C preparada
L2-A56c948ec permanece aceite emQA.B/C concluídos emQA no âmbito demonstrado,comF,preparados para uma única entrega compatível comA.Homologação/main obtido porfetch:ada9629b/recibo7febb6f7,sem instalação nova.L1 operacional com limitações:129entregues+P058/P084/P085+P001=133;linhas dos129fechos e quatro residuais comparadas sem alterações.Nenhuma nova matriz/backlog.
**B — importações/campo11.** No livro de compras,abrir «Preparar importação — B/campo11».Conserva valores e documento;reutilizar origemL1 preenche apenas descrição/importador/documento/data/período vazios,sem copiar montante aduaneiro comoIVA.Indicar bilhete de despacho,importador/titularidade,bens/linha,posse/forma legal,IVA próprio devido e sua fonte;confirmar exigibilidade no período declarado21(1),sem inferir só da emissão do bilhete.Não exige fornecedor estrangeiro inscrito emIVA interno nem questão17-A própria da factura interna.IVA identificado no documento basta;custos líquido/bruto opcionais,montantes anteriores preservados.Não depende de direitosL13 nem da conclusão de outros regimes deL1.Isento/zero exige montantezero expresso;desconhecido não vira0.Confirme cobertura de todas as importações,distinta de08–10.Mesma linha repetida entre projecção/efectivo é impedida;serviço incluído12(1)e não fornece IVA próprio dos bens e não é somado novamente.
**C — exclusões/excepções.** Escolher a natureza da despesa e completar apenas condições aplicáveis,com factos/referência.Veículos20(1)a:abrangência própria e venda/exploração como actividade20(3)a.Combustíveis20(1)b:gasóleo50%,ou integral nos quatro usos específicos confirmados;revenda tem fundamento próprio.Transportes/viagens20(1)c,alojamento/alimentação/bebidas/tabaco/recepção20(1)d,telefone20(1)e e luxo20(1)f conservam diferenças.Excepções:viajante comercial por conta própria20(3)b apenas alojamento/alimentação;telefone fixo em nome do sujeito passivo.O IVA suportado17-A é excluído20(2),redacção2022,independentemente do destino19(2).Mudar a categoria conserva respostas anteriores,sem aplicar factos de outro tratamento.
**Bebidas13(2).** Via de dedução com origemL1 actualc/d/h,condições,afectação e parcela documentada exclusivamente para dedução;d não abrange provisões de pesca costeira.Não estender à alíneae,tabaco ou recepção;não conceder isenção directa.Benefício conhecido não dispensa documento/direito/condições próprios.A escolha de restituição permanece emL3 e não produz dedução nesta via,nem duplica a mesma parcela.Não altera classificação ou resultadosL1 aceites.
**Gravação eF.** Calcular e guardar versão;gravação privada/recuperação/relatório conservam condições/fontes,montantes,fracções exactas e histórico.Origens alteradas pedem adopção expressa sem sobrescrever edições.Livros deA e todos os mapas anteriores preservados.ExemploMZN:09=24,00;11=16,00;14=1000,00;15=40,00;16=160,00;17=120,00;18=0,00.IVA importado desconhecido deixa11/15/17/18 indeterminados.Gasóleo50% usa fracções exactas,sem somar aproximações;17/18 continuam antes dos créditos anteriores,sem ordem de pagamento/reembolso.
Validação:21testesfrontend dirigidos,API1teste/80asserções naQA55441 com rollback,tipos/build,componente real→gravar→recuperar→relatório.Tentativa final deAPI/build encontrou falta de memória doWindows;demonstrações temporárias encerradas e verificações repetidas em sequência,sem alterar configuração ou activo.D segue afectação mista/pro rata/proporções18(6);E,eventos/histórico originais.F acompanha cada incremento.Restituição/créditos finais permanecemL3.
Relatório:docs/investmoz/simulations/l2-bc-imports-exclusions-qa-20261025.json.Manifesto único preparado:docs/investmoz/simulations/l2-abc-prepared-delivery-20261025.json.Provas anteriores válidas reutilizadas;instalação futura requer o processoGit existente,com uma integração/backup/restauro/conferência do delta e nova verificação de concorrência.
## 25/10/2026 — preparação QA de L2-B/C: aquisição e direito à dedução
Inventário antes dos testes:129fechos e quatro residuais L1 preservados;L1 operacional com limitações explícitas,homologação ada9629b/recibo7febb6f7.L2-B/C estende os livros de compras/classificação existentes,sem reconstruir motor e sem alteração no activo.Cotejo restrito de18/19 para mapear direito da operação versus condições da aquisição;17-A não confere direito apesar de existir imposto.Não calcular pro rata,proporções18(6),direitosL13 ou regularizaçõesD/E.Provas anteriores reutilizadas e delta novo dirigido.
## 25/10/2026 — L2-A em QA: aquisição → direito à dedução
L1 permanece operacional com limitações explícitas:129entregues+P058/P084/P085+P001=133,sem reabertura dos fechos.Homologaçãoada9629b/recibo7febb6f7 inalterada.L2-A está preparado emQA,no âmbito de aquisição internaMZN/2026,afectação exclusiva e dedução no mês do documento;não representa conclusão deL2.
No livro de compras existente,abra a aquisição e reutilize a operação já classificada. Confirme a afectação exclusiva e registe o motivo/referência. Montantes,documento,moeda,período e edições anteriores não são substituídos pela venda ligada.Não é criada outra compra.O direito resulta da classificação e das condições próprias da aquisição:Elegível,Sem direito ouIndeterminado,sempre com motivo e fonte.O caso17-A não ganha direito por ter IVA liquidado.Isenção não implica automaticamente ausência de direito;os fundamentos expressos19(1)(b) são distinguidos.
Complete apenas informação em falta sobre documento,fornecedor,posse,afectação e exclusões. Uma classificação alterada exige adopção expressa e nova conferência da afectação;históricos permanecem congelados.Retirar um vínculo num livroL2-A deixa o direito indeterminado,sem recuperar silenciosamente dedução anterior.Livros anteriores conservam comportamento e versões existentes.Não se calcula importação,despesa especial,afectação mista/proporção18(6),dedução posterior ou regularização neste incremento.
Use «Calcular e guardar versão do apuramento parcial» e a gravação privada do simulador.A recuperação conserva origem,estado,motivo,fonte,montantes e histórico.O relatório usa o resultado congelado,assinalando entradas desactualizadas.Sem documento/posse completos,não aplicar montante dedutível;sem correspondência do direito,não inferir pelas caixas05/06/07.Mesma linha de factura repetida entre projecção e efectivo é impedida neste livro.
F acompanha este incremento:exemploQA base14=500,00;dedução15=48,00;IVA16=21,00;diferença17=0,00;diferença18=27,00MZN.Retirar a posse de um documento deixa09/15/17/18 indeterminados,semzero presumido.Campos19–27,créditos e restituições continuam fora deste incremento,com ligação aL3.
Validação dirigida:16testesfrontend;API1teste/74asserções na baseQA isolada55441 com transacção revertida;tipos e build;componente real com gravação→recuperação→relatório.Os129fechos e os quatro residuais foram comparados sem alterações;mapas anteriores da fixture preservados integralmente.Próximo conjuntoB/C por dependências compatíveis;D/E seguem afectação e eventos originais;F acompanha cada entrega.Sem novas pesquisasL1 ou repetição das suas provas aceites.
ReciboQA:docs/investmoz/simulations/l2-a-acquisition-right-qa-20261025.json.Prova visual:outputs/iva-l2-a-20261025/ui-recovered-report.png.
## 25/10/2026 — preparação QA de L2-A: aquisição e direito à dedução
Inventário antes dos testes:129fechos e quatro residuais L1 preservados;L1 operacional com limitações explícitas,homologação ada9629b/recibo7febb6f7.L2-A estende os livros de compras/classificação existentes,sem reconstruir motor e sem alteração no activo.Cotejo restrito de18/19 para mapear direito da operação versus condições da aquisição;17-A não confere direito apesar de existir imposto.Não calcular proporção18(6),pro rata,importações,excepções ou regularizações neste incremento.Provas anteriores reutilizadas e delta novo dirigido.
## 25/10/2026 — L1 operacional com limitações explícitas; delimitação executável de L2
**Estado registado: L1 operacional com limitações explícitas**, sobre `ada9629b`, recibo `7febb6f7`. **129 entregues + 3 ramos funcionais pendentes + P001 = 133**. Não significa133itens concluídos. Os quatro residuais permanecem abertos na mesma matriz; o registo permite avançar comL2 independente. Origem:instrução do utilizador nesta conversa. A apreciação não constitui conferência independente dos anexos nem aceitação em nome daTempo; não se acrescenta validação organizacional a esse registo.
### Quatro residuais e condições concretas de retoma
**P058** — Disponível: Veículos anteriores e quatro percursos de bagagem instalados em ada9629b;ramo continua parcial. Residual: 57(2)b:remissão incoerente;propriedade exactamente180dias:sem tratamento presumido;63(2):delimitação do âmbito e percurso específico não implementado. Natureza: Documental específica nos dois primeiros casos;delimitação/desenvolvimento específico em63(2). Retoma: Retomar57(2)b/180dias somente com nova evidência aplicável que resolva o parâmetro,sem inventar isenção. Para63(2),delimitar beneficiários/bens no âmbito e implementar percurso próprio com condições demonstradas. Sem benefício presumido nem fecho automáticoP058. A disponibilidade parcial não bloqueiaL2.
**P084** — Disponível: ProcedimentoTempo entregue:pedido→apresentado→decisão/despacho com âmbito→preparação do formulário;dossier de apoio e anexos reutilizáveis,submissão externa explícita. Residual: Correspondência concreta de modelo/versão/instruções para aquisição interna/importação e mapeamento dos campos oficiais;texto preparado ou associação de exemplar preenchido não são preenchimento automático do modelo adequado. Natureza: Dependência documental específica;depois desenvolvimento do mapeamento/exportação. Retoma: Retomar correspondência apenas quando houver novo exemplar/instrução aplicável ou evidência de dispensa de modelo específico,com conclusão por cenário. Mapear entidade,justificação,bens,operação e despacho,conservando âmbito autorizado. Manter dossier de apoio disponível;pedido não concede. Não reabrir procedimentoTempo,não acrescentar aprovadores/certificados.
**P085** — Disponível: ProcedimentoTempo entregue com emergência,finalidade humanitária,bens,destinatário,pedido/decisão e dossier de apoio;submissão externa identificada. Residual: Modelo/versão/instruções para aquisição destinada a atenuar calamidades e mapeamento dos campos oficiais;formulário aduaneiro de emergência não demonstra sozinho a aquisição interna nem alarga automaticamente à importação. Natureza: Dependência documental específica;depois desenvolvimento do mapeamento/exportação. Retoma: Retomar com nova evidência de correspondência ou dispensa de modelo aplicável ao cenário. Reutilizar dados/despacho no exemplar adequado,com bens,operação,período e condições abrangidos. Preservar o percursoTempo já entregue e o dossier de apoio;sem novos aprovadores ou extensão automática à importação.
**P001** — Disponível: Restantes correspondências e funcionalidades aceites preservadas. Residual: Exclusivamente correspondência05/06 da edição recebida;sem preenchimento ou renumeração presumidos. Natureza: Dependência documental externa:instrução da edição recebida. Retoma: Retomar apenas com instrução/verso/trecho correspondente à edição recebida que distinga05/06 e a remissão aplicável;registar exemplar,página e alteração delimitada. Conservar indeterminação onde houver conflito. Não reabrir restantes campos,nem bloquear trabalhoL2 independente.
Não repetir pesquisas sem nova evidência nem provas aceites sem alteração relevante. Dossier de apoio deP084/P085 mantém-se utilizável;pedido não concede,decisão conserva âmbito e pressuposto de simulação permanece condicionado. Não reconstruir esses percursos nem preencher05/06porpresunção.
### L2 — reconciliação do que já existe
Aquisições internas08–10 e totais parciais14–18 já entregues em1655f57e:líquido/IVA/bruto sem taxa presumida,documento/linha/fornecedor,regime normal,mesmo período2026/MZN,afectação exclusiva e ausência de exclusões.Há controlo de duplicação,origem de orçamento,moeda,contexto por oportunidade,API/ETag,gravação/recuperação,versões e relatório.A continuidade da disposição eliminadaP086foi entregue em6f056359;dedução anteriorP088/P124continua facto histórico.
O motor actual não calcula importações/mistos/especialidades/dedução posterior;calculateAcquisitionsconserva08–10indeterminados quando outras operaçõesL1 exigem afectação específica.Essa guarda não deve ser retirada sem substituição demonstrada.O móduloiva-reduced-basesjá conserva deductionProportionparaP096–P099,mas não executa dedução.Os livros de importaçãoL1 classificamIVA/isenção,não alimentam automaticamente11;P050separaIVAdo serviço e dos bens.12/13carecem de eventos de regularização;19–27permanecemL3.
### Incrementos por dependência, reutilização e critério de fecho
**L2-A — ligação da aquisição ao direito à dedução**
Dependências: recorte08–10 entregue; classificaçãoL1 actual quando necessária. Reutilização: iva-acquisitions.ts:Acquisition,evaluateAcquisition,sourceKey; iva-operations.ts:salesBook/salesCurrent; contexto por oportunidade,moeda,documento,período,API/ETag/histórico.
Lacuna: Afectação actual é uma escolha geral;calculateAcquisitions mantém08–10 indeterminados perante outras operaçõesL1. Não basta retirar essa guarda ou interpretar toda isenção como ausência de direito. Trabalho: Acrescentar vínculo rastreável entre aquisição e operação/actividade/direito,com âmbito temporal e condições;reutilizar dados sem sobrescrever edições. Identificar condições de dedução por percurso a partir das fontes já aceites,sem resolver05/06porpresunção.
Critério de fecho: Linha elegível,sem direito e indeterminada distintas;origem e direito explicados;nenhuma dedução inferida só do rótuloisento ouP002;guarda geral só substituída pela avaliação demonstrada;mesmo livro/documento/histórico recuperáveis. Natureza: Código executável por extensão do motor;correspondência específica de condições antes de activar cada percurso.
**L2-B — dedução nas importações/campo11**
Dependências: contrato de elegibilidade/documentoL2-A. Reutilização: documentos/bens/importador/datas/âmbito nos livros de importaçãoL1; iva-acquisitions.ts:livros,duplicações,moeda/meses; parcelasModeloA e fiscal-rational.ts.
Lacuna: Classificação de importação/isenção emL1 não alimenta dedução;evaluateAcquisition mantém importações fora do recorte e11 só admite ausência expressa. Trabalho: Percurso próprio de documento aduaneiro e IVA indicado/pressuposto,mantendo titularidade,importador,operação e condições próprias;não exigir requisitos de factura/fornecedor interno por transplante. Conferir período de exercício e prova aplicável;reutilizar classificação sem presumir montante ou direito.
Critério de fecho: IVA isento/zero,montante desconhecido e imposto elegível distintos;nenhuma dupla dedução por documento/linha ou entre serviço incluído e bens;11 só conhecido com cobertura declarada;gravação/recuperação/relatório com origem. Não depende de recalcular direitos emL13 quando o montante/documento já existe. Natureza: Desenvolvimento executável;dependência real é documento/montante/condições da operação,não cálculo novo de direitos.
**L2-C — exclusões e excepções específicas**
Dependências: elegibilidade/documentoL2-A. Reutilização: allocation/no_right e exclusion/excluded/special existentes; compras,activos,despesas e documentos; percurso13(2) de bebidas e fontes/L1 já registadas.
Lacuna: Exclusão expressa já produz deduçãozero;casos especiais continuam indeterminados. Não há motor específico para cada excepção. Trabalho: Discriminar natureza da despesa,exclusão e excepção documentada por operação;veículos,combustível,viagens/alojamento,comunicações/luxo e bebidas só no âmbito aplicável. Uma resposta genérica de exclusão não substitui os critérios próprios.
Critério de fecho: Regra e excepção identificadas por fonte/período/âmbito;IVA não dedutível separado de desconhecido;alterar classificação não altera montantes originais;dedução de bebidas permaneceL2 e restituiçãoL3,sem dupla contagem. Natureza: Código por famílias com cotejo dirigido das condições já aceites;parâmetros concretamente ausentes ficam delimitados,sem pesquisa genérica.
**L2-D — afectação parcial e proporções específicas**
Dependências: L2-A; L2-C para excluir despesas sem direito. Reutilização: allocation/mixed; fiscal-rational.ts e fracções exactas; iva-reduced-bases.ts:deductionProportion,condições e históricoP096–P099.
Lacuna: Uso misto/pro rata ainda não calculado;proporção específica já identificada no módulo de bases reduzidas não é dedução executada. Trabalho: Separar afectação directa,dados comuns e método de repartição aplicável;guardar numerador/denominador,origem,exercício e condições quando usados. Aplicar proporções específicas a aquisições relativas às operações abrangidas,sem confundi-las com taxaIVA ou pro rata geral e sem as aplicar duas vezes.
Critério de fecho: Parcela dedutível/não dedutível reconciliada sem arredondamento inventado;método e bases rastreáveis;denominador ausente/zero ou parâmetros por esclarecer não recebem percentagem presumida;regularização posterior liga ao resultado histórico. Natureza: Desenvolvimento executável com parâmetros e método especificamente sustentados;reutiliza o motor numérico existente.
**L2-E — activos e regularizações12/13**
Dependências: documento/resultado de origemL2-A; L2-B/C/D apenas conforme motivo. Reutilização: aquisições08,documento/linha/data e activos existentes; histórico congelado e versões anteriores; correspondênciaModeloA12/13 e aritmética exacta.
Lacuna: Regularizações individualizadas e de activos não implementadas;exemplar tem remissão textual11/12 divergente das caixas12/13. Esta divergência é distinta deP001. Trabalho: Registar evento/motivo,documento/resultado de origem,período,direcção,valor e fundamento;conferir regra/prazo próprio de cada motivo antes de automatizar. Usar referência de caixa inequívoca e manter divergência textual visível,sem alterar original.
Critério de fecho: Ajustamento ligado ao original,nunca alteração retroactiva silenciosa;sentidos12/13 separados;mesmo evento não aplicado duas vezes;saldo antes/depois recuperável e explicável. Cálculo de motivo documentado pode avançar sem esperar por todos os outros motivos. Natureza: Código por motivo;eventual dependência documental limitada ao parâmetro/remissão desse motivo,não aL2 inteiro.
**L2-F — consolidação e entrega dos incrementos compatíveis**
Dependências: parcelasL2 concluídas necessárias ao caso. Reutilização: calculateAcquisitions:campos14–18/exactFields; API privada/ETag,recordAcquisitions,históricos e relatório; mecanismoGit existente e provas aceites.
Lacuna: Totais já existem no recorte aceite;falta consumir as novas parcelas determinadas sem substituir ausências porzero nem recontarimposto. Trabalho: Integrar deduções08–11 e ajustamentos12/13 no agregador actual;versionar as novas entradas e conservar leitores antigos. AgruparA/B/C quando compatíveis;D/E entram por dependência real,F acompanha cada entrega.
Critério de fecho: Totais14–18 só com parcelas necessárias determinadas;cenário projectado distinto de efectivos;dívida/crédito antes de saldos anteriores não equivale a pagamento/reembolso. QA apenas do delta e preservação;uma entrega por conjunto compatível. Natureza: Integração do motor existente;créditos/reporte/reembolso19–27 e recebimento ficamL3,sem declaraçãoAT automática.
Sequência inicial:Aestabelece o vínculo e contrato comum;B/Cpodem avançar por percursos compatíveis;Ddepende da elegibilidade e exclusões aplicáveis;Eavança por motivo com os resultados de origem necessários;Facompanha cada conjunto entregue.Não esperar porL13quando o IVA/documento de importação já existe,nem pelos residuaisL1semdependência efectiva.
Conferência desta passagem:leitura dirigida de código/registos/provas existentes,sem novos testes,pesquisas externas,migrações,alteração de regras ou escrita activa.129linhas entregues inalteradas;apenasAUD-SIM-INT02e quatro linhas residuais actualizadas.Nenhuma matriz oubacklog novos.O registo estruturado fica no recibo integrado existente,chave`l1_operational_limits_l2_delimitation_20261025`.As48–72hda tabela histórica não são uma estimativa nova do saldo actual.L2foi delimitado,não implementado nem declarado concluído nesta passagem.Estatísticas/IAcontinuam adiadas.
## 25/10/2026 — entrega agrupada P047 e avanço parcial de P058
Homologação **`ada9629b`**, sobre `e38aa749`;candidataP047`6e1dc410` eP058parcial`4f28fac5`. Uma integraçãoGit,backup/restauro real semrede e conferência só do delta instalado;provasQA aceites reutilizadas. **128fechos anteriores preservados**.
**P047 entregue no âmbito demonstrado**:partidos,mecenato,veículos diplomáticos/consulares eIPP;isenção de direitos demonstrada,ou pressuposto expresso.Pedido apresentado,redução e taxa pautal0% não se confundem com isenção integral.Deferimento previsto continua cenário condicionado,sem benefício concedido peloportal.Aplicação legal directa não recebe novo aprovador.Sem classificação pautal ou automatização integral dos procedimentos de cada regime,concessão aduaneira,cálculo de direitos,ICE,alienação ou dedução.
**P058 entregue apenas como avanço parcial**:quatro percursos de bagagem de funcionário civil,militar,estudante/bolseiro e regresso antecipado por serviço doEstado,com vias acompanhada/não acompanhada e condições próprias57/61.Sem transplantar limites/prazos de veículos ouP059. Os percursos anteriores e históricos são preservados.P058continua pendente;restam exactamente remissão57(2)b,propriedade exactamente180dias e delimitação63(2).A interface e o manifesto mantêm cobertura parcial explícita.
Conferência instalada:9hashes funcionais,5originais porbytes/hash,13marcadores compilados,manifesto/revisão e simuladorHTTP200;174tabelas e369ficheiros/configuração comparados com mesmoactorPostgreSQL antes/depois.Diferenças apenas cache/sessões;29fichas publicadas,28relações,408geometrias preservadas.Zero migrações,importações,alterações de permissões ou ensaios sintéticos no activo.Contenção verificada sem aplicar;release anterior e leitores/históricos mantidos.
[Manifesto/recibo](../simulations/l1-p047-baggage-delivery-20261025.json),registo`iva_l1_P047_partial_P058_homologation_20261025`. **129entregues+3funcionais pendentes(P058,P084,P085)+P001=133**;sem candidatasQA completas por disponibilizar.P084/P085mantêm procedimentoTempo já entregue,sem novas aprovações;falta formulário/instrução específico e mapeamento.P001limitado05/06.Formalidades digitais e cálculo fiscal restante dos ramos com âmbito limitado mantidos;bebidasL2/L3,Estatísticas/IAadiadas. **L1aberto**.
## 25/10/2026 — entrega agrupada P047/P058 preparada
Inventário antes da instalação:128fechos preservados,P047emQA6e1dc410,P058quatropercursosQAparciais4f28fac5;nenhuma perda confirmada,sem repetição das provas aceites. Homologaçãoe38aa749 conferida publicamente eporligaçãoSSH autenticada;maincompatível porancestralidade,sem alterações concorrentes para sobrescrever.
Manifesto`docs/investmoz/simulations/l1-p047-baggage-delivery-20261025.json`:somenteP047 conta como ramo completo no âmbito demonstrado;P058 é avanço parcial,semfecho,e conserva57(2)b/180dias/63(2) pendentes.Pressupostos de simulação continuam condicionados,sem equivaler aisenção concedida.Interface deP058 assinala cobertura parcial;P047 distingue pedido,redução e taxa0%.P084/P085/procedimentoTempo eP00105/06 preservados.
Pré-instalação autenticada ebackup:174tabelas/369ficheiros econfiguração;restauroDockerrealsemrede,com contagens/checksums iguais ezeroescritas na baseactiva.Ver`outputs/l1-p047-baggage-delivery-20261025/`.Contenção parcial verificada porGitsem aplicar,preservando leitores,históricos,veículos anteriores eoutrosramos.Entrega única peloGitexistente,conferindo sódelta9ficheirosfuncionais/5originais/13marcadores;sem migrações,importações ou publicação automática de fontes.
Antes da entrega:128entregues+1QA+3funcionais pendentes+P001=133.Depois da entrega conferida:129entregues+3funcionais pendentes+P001=133.L1aberto;limitações fiscais/digitais anteriores mantidas,Estatísticas/IAadiadas.
## 25/10/2026 — P047: quatro famílias em QA, entrega agrupada preparada
Inventário anterior aos testes:128fechos preservados,nenhuma perda confirmada;P058parcialQA4f28fac5 preservado.Homologaçãoe38aa749/recibo9019f766;nenhuma alteração no activo.
P047:partidos com equipamento necessário ao funcionamento próprio,excluindo actividade empresarial;mecenato com livro/insumos próprios e percurso regulamentar separado para liberalidades;veículos diplomáticos com reciprocidade,registo,pedido viaMINEC,limites e histórico;IPP30itens e disposição específica com condições próprias e isenção de direitos demonstradas.Pedido não concede;taxa0%,redução e encargo suportado peloEstado não equivalem automaticamente a isenção.Na projecção,o deferimento previsto é hipótese condicionada.A aplicação legal directa não recebe novo aprovador.
A competênciaIPP depende da data da decisão/previsão,não da importação.O Decreto27/2026,art3/PDF4/p1012(4),entra30dias após publicação01/07/2026:transição31/07/2026.O item30 anterior aessa data exige disposição de competência própria,sem retroagir a nova delegação.Datas,referências,bens,operação,período,condições e históricos ficam conservados.
QA:48testesfrontend;42exemplos;API1teste/208asserções comguarda de baseisolada55441 e rollback;tipos ecompilação aprovados.Interface:troca de família oculta campos sem apagar quantidades,limpa confirmações,guarda nova versão,recupera egera relatório da gravação.Sem direitos,ICE,baseaduaneira,dedução/campo11,alienação ou soma aos livros anteriores.Não automatiza todos os procedimentos dos regimes referidos.
Entrega compatível preparada:P047 concluído emQA no âmbito demonstrado;P058 apenas quatro percursos de bagagem emQAparcial,semfecho.P058mantém exactamente as três questões57(2)b,180dias e63(2).P084/P085mantêm procedimentoTempo entregue;pesquisa delimitada nesta ronda não demonstrou nova correspondência de formulário,logo não se importam condiçõesCBF nem se acrescentam aprovações.P001continua exclusivamente05/06da edição recebida.Sem renumeração por outro modelo.
Saldo:**128entregues+1QA(P047)+3funcionais pendentes(P058/P084/P085)+P001=133**.L1aberto.Formalidades digitais não automatizadas e cálculo fiscal restante dos ramos com âmbito limitado permanecem identificados.Evidência:`docs/investmoz/simulations/iva-l1-p047-families-qa-20261025.json`;inventário,hashes e provas em`outputs/iva-l1-p047-families-20261025/`.Não se repetem os128fechos.
## 25/10/2026 — impedimentos residuais e QA parcial de bagagem
128 fechos inventariados antes dos testes e preservados sem alterações nas respectivas linhas da matriz. Homologação e38aa749, recibo 9019f766; nenhuma alteração no activo.
**P047** — Residual: Ainda não há implementação específica12(1)b. As quatro remissões estão identificadas;IPP22 integral e alterações2025/2026 já obtidas. Faltam condições executáveis e sua correspondência por família (partidos7/91+14/92,mecenato4/94,veículos oficiais diplomáticos/consulares,IPP),distinguindo isenção integral de direitos,redução e pedido. Critério de fecho: Percursos por família sustentados nos textos aplicáveis,com bens/beneficiário/operação/período,condições e âmbito do benefício aduaneiro demonstrados;isençãoIVA só na hipótese12(1)b correspondente;desconhecido não zero;gravação,recuperação,relatório eQA por ramo,seguida de entrega compatível. Próxima acção: Começar pelos itensIPP22/QuadroV já cotejados;obter/cotejar os trechos específicos das outras três famílias sem condicionar o avanço independente.
**P058** — Residual: Veículos já entregues; quatro percursos de bagagem dos artigos 57(2)c/d, 57(3) e 61 agora demonstrados em QA, ainda não instalados. Restam a remissão incoerente de 57(2)b para o próprio n.º 2, o caso de propriedade exactamente 180 dias e a delimitação do artigo 63(2) (arma de caça e até 100 cartuchos) no âmbito dos beneficiários de CIVA 12(2)a. Não falta o Decreto 37/2023 integral. Critério de fecho: Delimitar e implementar o âmbito residual por categoria e bens; resolver por referência expressa os parâmetros ambíguos ou conservar uma limitação de âmbito expressamente aceite. Demonstrar condições, prazos, cálculo/não aplicação, gravação, recuperação e relatório, sem aplicar exigências de veículos à bagagem; entregar o conjunto compatível. O novo QA parcial não fecha P058. Próxima acção: Preparar os quatro percursos de bagagem já testados para entrega compatível; cotejar separadamente 57(2)b, propriedade de 180 dias e a correspondência de 63(2), sem presumir isenção.
**P084** — Residual: Procedimento operacionalTempo e acompanhamento pedido→apresentado→decisão com despacho→formulário estão definidos,implementados eentregues. O gerador actual produz pedido/preparação textual ou associa exemplar preenchido;falta correspondência concreta do formulário por aquisição interna/importação e,quando demonstrada,preenchimento/exportação dos seus campos oficiais. ModeloI.1/CBF não demonstra sozinho essa correspondência. Critério de fecho: Demonstrar formulário/versão aplicável (ou instrução que dispense modelo específico) em cada cenário,com origem identificada;reutilização de entidade,justificação,bens,operação e despacho no exemplar/saída adequados;conservar âmbito e históricos,submissão externa explícita,hipótese antes de deferimento e aplicação só após decisão abrangente.Sem exigir despacho real de produção para substituirQA nem nova aprovação genérica. Próxima acção: Cotejo delimitado do formulário/instrução e implementação do mapeamento que daí resultar;manter todo o procedimento operacional já aceite,sem o reabrir como desconhecido.
**P085** — Residual: Mesma sequência operacionalTempo já entregue,com calamidade/finalidade humanitária e aquisição próprias. Falta identificar o formulário/instrução aplicável à aquisição para atenuar calamidades e demonstrar a preparação do exemplar concreto,em vez de apenas texto/anexo genérico.Formulário aduaneiro de emergência não prova aquisição interna14(2)b. Critério de fecho: Correspondência e preparação/exportação do formulário aplicável (ou dispensa de modelo demonstrada),reutilizando emergência,finalidade,bens,destinatário e despacho;pedido não concede e decisão não se estende a outros bens/operações/períodos.Sem importar condiçõesP084 ou estender automaticamente à importação. Próxima acção: Pesquisa conjunta comP084 sobre o formulário,com conclusão separada para aquisição/calâmidade;implementar os campos demonstrados,sem inventar aprovadores ou certificados.
**P001** — Residual: Falta instrução da edição recebida que distinga05/06. Nessa edição05 já identifica isenção com direito;06 tem remissão18(1)b,que noCIVA cotejado diz respeito aoIVA de importação. Os modelosAT/2019 têm outra numeração e não resolvem a edição recebida;originais e candidato544068e8 não estão em falta. Critério de fecho: Identificar na instrução correspondente o conteúdo próprio de05 e06 e a remissão aplicável,registar edição/página/trecho e actualizar apenas a correspondência afectada,com prova de não duplicação e preservação dos restantes campos/histórico. Próxima acção: Localizar instruções/verso/metadados da edição recebida;conservar05/06 indeterminados onde houver conflito,não renumerar a partir de outra edição.
P058: quatro percursos adicionais de bagagem em QA, 11 exemplos; 21 testes frontend (13 novos e 8 anteriores), API 1 teste/55 asserções com guarda QA e rollback, tipos e compilação aprovados. Gravação, recuperação e relatório conferidos na interface. Os campos de veículos ficam ocultos na bagagem, preservando os valores existentes. Evidência: `docs/investmoz/simulations/iva-l1-residuals-baggage-qa-20261025.json` e `outputs/iva-l1-residuals-baggage-20261025/`.
Saldo: **128 entregues + 4 funcionais pendentes + P001 = 133**; nenhuma candidata de ramo completo por disponibilizar. P084/P085 já têm o procedimento operacional Tempo entregue; resta a correspondência específica de formulário/instrução e o mapeamento decorrente. L1 aberto; mantêm-se as limitações fiscais e digitais anteriormente registadas.
## 25/10/2026 — entrega conjunta P104 operacional e percursos parciais
Homologação **`e38aa749`**, sobre `a665ee9c`; candidata `7b6a95a7` aceite pelaTempo. Uma integraçãoGit,backup/restauro real semrede e conferência apenas do delta instalado;provasQA75frontend/API2/37asserções,types/build/UI reutilizadas. **127fechos anteriores preservados**.
**P104 entregue no procedimento operacional definido pelaTempo25/10/2026**:compra/venda interpretadas pela perspectiva do boletim;média comercial de referênciaBM na data de submissão indicada;fonte/boletim,taxa,perspectiva,sentido,data,montante original/convertido e históricos conservados.Excepções fiscais têm disposição/âmbito/data/taxa próprios.Não atribuir esta orientação àLei2/2006;sem activação de base/IVA/dedução ou recálculo automático de históricos e livros anteriores.
**P084/P085 continuam parciais**:pedido escritoMF/AT→pedido apresentado→decisão com despacho privado,número/data/emitente e âmbito→preparação do formulário com despacho;submissão externa explícita.P084 mantém interesse público/fins sociais e aquisição/importação distintas;P085 finalidade de atenuar calamidades e aquisição.Pedido não é concessão;aplicação após despacho restringe-se aos bens,operação,período e condições confirmados.Alterações invalidam a correspondência;formulário não a renova automaticamente.ZIP inclui pedido,preparação/formulário e despacho porhash;não inventaModeloI.1 aplicável nem recibo da autoridade.Anexos privados reutilizam autenticação,documents e análise antimalware,sem nova certificação fiscal.
**P058 permanece parcial**,com três percursos de veículos no regresso:isenção,redução80%,separado50%,condições próprias63/28 doDecreto37/2023;sem transplantarP059.Bagagem/outros bens e remissão incoerente57(2)b por concluir;tempo de propriedade usa marco documentado,sem escolher automaticamente chegada/despacho;180dias exactos indeterminados.Originais37/2023,27/2026 e exemplaresIPP2022 preservados porbytes/hash,sem importação/publicação automática.P047 continua pendente.
Verificação instalada:17hashes funcionais,4originais,18marcadores compilados,manifesto/revisão e simuladorHTTP200;174tabelas e369ficheiros/configuração comparados;mesmoactorPostgreSQL antes/depois,diferenças apenas cache/sessões;29fichas publicadas,28relações,408geometrias conservadas.Zero migrações,importações,alterações de permissões ou ensaios sintéticos no activo.Contenção conferida sem aplicar;leitores,históricos e release anterior preservados.
[Manifesto/recibo](../simulations/l1-tempo-offers-fx-delivery-20261025.json),registo `iva_l1_tempo_offers_fx_P104_partial_P058_P084_P085_homologation_20261025`. **128entregues+4funcionais pendentes(P047,P058,P084,P085)+P001=133**,sem candidatasQApor disponibilizar. **L1aberto**;P001limitado05/06,formalidades digitais e cálculo fiscal restante conservam limites aceites,bebidasL2/L3;Estatísticas/IAadiadas.
## 25/10/2026 — conclusão QA do procedimento P104 e continuidade das ofertas
P104 concluído emQA no procedimento operacional fornecido pela Tempo;runtime `9536eb710b4b02650a80b9943e20b3f086dd0893`. Compra/venda respeitam a perspectiva do boletim;média comercial usa referênciaBM na data de submissão indicada.Exemplar oficial arquivado é aceite com origemBM identificada,sem exigirURL ou segunda certificação.Excepções fiscais conservam disposição,âmbito,taxa/data próprios.Original,convertido,taxa,sentido,fonte,versão e histórico preservados;sem recálculo automático ou activação deIVA/dedução/base noutros livros.Aritmética reutilizada a seis casas decimais é escolha técnica,não nova regra de arredondamento fiscal.
P084/P085:pedido escritoMF/AT→apresentação externa→decisão com número,data,emitente,âmbito e despacho privado→preparação do formulário aplicável com despacho.O cenário anterior ao despacho é condicionado;deferimento só aplica à linha expressamente abrangida.Alterar bens,operação,período,destinatário ou despacho invalida a correspondência;preparar formulário não a renova automaticamente.ZIP confereSHA256 dos anexos e conserva âmbito.Não é formulário oficial inventado nem recibo de submissão;correspondência específica ainda delimitada,sem fechar os ramos.
P058 mantém três percursos de veículos emQA parcial,sem contar como fecho.Marco do tempo de propriedade deve ser documentado,não presumido como chegada/despacho.P047:IPP22 integral localizado no exemplarParlamentoBR250,PDF4–5/p2238–2239;exemplarMCNet5/BR251 só contémIPP1/2.Nomes,edições eoriginais preservados porhash;próximo trabalho é implementar condições específicas comLei8/2025/Decreto27/2026,sem confundir redução com isenção.
Validação:75frontend,API2/37asserções emDBQA55441 comrollback,types/build aprovados;UIguardou,recuperou egerou relatório com pedido,despacho,formulário eâmbito.Sem migração,push,publicação ou escrita activa.Os127fechos e restantes linhas da matriz foram comparados ao recibo8b3ec2b0 e preservados.Saldo:127entregues+1QA(P104)+4funcionais pendentes(P047/P058/P084/P085)+P001=133.L1aberto.Homologação permanecea665ee9c.
Relatório:`docs\investmoz\simulations\iva-l1-tempo-offers-fx-qa-20261025.json`.
## 25/10/2026 — procedimentos operacionais da Tempo e preservação dos127fechos
Inventário anterior aos testes:127IDs entregues,nenhuma perda confirmada;recibo `8b3ec2b0`,homologação `a665ee9c`. Prova congelada em `outputs/iva-l1-returnees-20261025/preservation-before-tests.json`;reutilizar provas aceites e conferir apenas o delta. O avanço seguinte éQA,sem escrita no activo.
**P047** — Cotejo:12(1)b na redacção2022/2025 distingue quatro famílias. Decreto27/2026 integral obtido naMCNet357:altera14/58 eQuadrosV/VI;QuadroV30/competências actuais conferidos. Próxima acção:obter IPLei17/2022 integral e conferir condições da família aplicável;redução de direitos não equivale a isençãoIVA12(1)b.
**P058** — Avanço parcial emQA:art63(3)–(5)Decreto37/2023,PDF11/p1475,veículos no regresso;isenção/redução80%/separado50% distintos deP059. Art28uso/alienação;60dias+prorrogação30;histórico5anos. Decreto27/2026 não altera63. Ramo não fechado:bagagem/outros bens e remissão literal incoerente57(2)b por concluir;exactamente180dias não presumido. Tempo de propriedade usa início e marco documentados,sem escolher automaticamente chegada ou despacho.
**P084** — Decisão expressaTempo25/10/2026:pedido escritoMF/AT → apresentado → decisão recebida,despacho com número/data/emitente/âmbito → formulário aplicável com despacho. ImplementaçãoQA em curso;interesse público/fins sociais conserva condições próprias;submissão externa explícita;sem certificados/aprovações adicionais. ModeloI.1 não presumido aplicável;correspondência regulamentar permanece delimitada. Avanço não constitui fecho.
**P085** — Decisão expressaTempo25/10/2026:mesma sequência operacional pedido→decisão→formulário,com finalidade própria de atenuar calamidades e aquisição;sem extensão automática à importação. Despacho limitado a bens/operação/período/condições. ImplementaçãoQA em curso;correspondência do formulário por demonstrar;avanço não constitui fecho.
**P104** — Decisão expressaTempo25/10/2026:compra→compra,venda→venda,comercial→média de referênciaBM na submissão indicada;interpretar perspectiva do boletim/cliente. ImplementaçãoQA de selecção explícita,taxa/fonte/data/sentido/original/convertido e histórico sem recálculo;excepção fiscal com disposição/âmbito próprios não bloqueia regra geral. Distinguir procedimento operacional da remissão CIVA15(8)/Lei2/2006;sem activarIVA/dedução ou livros anteriores.
P001 continua restrito à instrução da edição recebida dos campos05/06;ModelosA2019/eDeclaração com numeração diferente não resolvem a correspondência. Permanecem as limitações digitais e de cálculo fiscal dos ramos entregues em âmbito limitado. Saldo não alterado por preparação parcial:127entregues+5funcionais pendentes+P001=133;L1aberto.
Origem das restrições:procedimento/seleção definidos expressamente pela Tempo;âmbitos materiais das fontes legais conferidas;limite10MB/tiposPDF,texto,PNG/JPEG,armazenamento privado e análise antimalware reutilizam escolhas técnicas existentes de anexos,não condições adicionais do benefício. O formulário não é inventado:designação,fonte da aplicabilidade,conteúdo/exemplar e despacho associado são conservados;submissão externa continua explícita.
## 25/10/2026 — P046/P059 entregues conjuntamente
Homologação **`a665ee9c`**, sobre `a48e9749`; candidatas `34bbcfa7`/`2b130a66` aceites pela Tempo. Uma integração, backup/restauro isolado, instalação e conferência apenas do delta; provas QA por ramo reutilizadas, **125 fechos anteriores preservados**.
P046: 28 correspondências expressas do artigo 12(1)a, na importação definitiva dos bens cuja transmissão interna hipotética beneficia de isenção objectiva. A enumeração legal é exemplificativa; outros enquadramentos não são declarados excluídos. Sem venda interna criada, dupla soma, direitos/base aduaneira ou dedução/campo11.
**P059 limitado ao âmbito demonstrado da África do Sul, 2026/MZN**, para mineiros moçambicanos abrangidos pela Lei n.º2/2011 e Decreto n.º3/2011. Oito percursos e opção transversal de transmissão de direitos não usados a herdeiros; condições próprias de bens, quotas, histórico, prazos e âmbito. **A redução de50% aplica-se ao tratamento excepcional de veículo separado da bagagem6(4), não a todas as importações nem como taxa deIVA.** Exige o âmbito e pressupostos/condições identificados, com IVA normal informado e referenciado. Não calcula IVA da venda interna nem restitui imposições. Limite15.000MZN/mês dos exemplares cotejados não é ampliado silenciosamente; excesso/condição desconhecida mantém valor indeterminado. Sem concessão aduaneira automática,DU/licença/despacho emitidos,ou dedução. Procedimento KAWENA não generalizado.
Originais locais, sem importação/publicação automática: Lei n.º2/2011, artigos1–4 na página1 doPDF(sem número impresso), artigo5 na página2/p110-(8); Decreto n.º3/2011,artigos1–8,PDF2–3/p152–153. Identidade por diploma/artigos/páginas e hash, não pelo nome do ficheiro conjunto «Lei do Voluntariado». Os dois originais instalados foram comparados por bytes/hash com os exemplares arquivados.
`main` e destino autenticado conferidos; push normal fast-forward, sem força. Backup novo e restauro real sem rede:174tabelas/369ficheiros e configuração. Delta instalado: revisão/manifesto/hash,27marcadores compilados incluindo território,condições e limitações;6hashes funcionais e2originais documentais;simuladorHTTP200. Mesma identidade PostgreSQL antes/depois;diferenças apenas cache/sessões;29fichas publicadas,28relações e408geometrias conservadas. Zero migrações/importações, alterações de permissões ou ensaios sintéticos no activo. Contenção conferida e não aplicada;leitores,históricos,outros ramos e release anterior preservados.
[Manifesto/recibo](../simulations/l1-objective-miners-delivery-20261025.json), registo `iva_l1_objective_miners_P046_P059_homologation_20261025`. **127 entregues +5 funcionais pendentes +P001=133**, sem candidatas QA por disponibilizar. Restam P047,P058,P084,P085,P104 e P001. **L1 continua aberto.** Formalidades digitais ainda não automatizadas;viagens/eventos mantêm limites de IVA devido,dedução,regularização,facturação e modelos oficiais ligados aAUD-SIM-INT02. P084/P085 eP104 condicionados;P001 limitado05/06;bebidasL2/L3;Estatísticas/IAadiadas.
## 25/10/2026 — P059 em QA no âmbito RSA; conjunto compatível P046/P059
**125 entregues + 2 em QA (P046/P059) + 5 funcionais pendentes + P001 = 133**. Homologação `a48e9749` inalterada; nenhum push ou instalação. Implementação `4e550c38`; recibo `docs\investmoz\simulations\iva-l1-miners-qa-20261025.json`. Os 125 fechos e P046 em QA foram inventariados antes dos testes; nenhuma perda confirmada. Comparação integral do snapshot,retirando apenas o novo livro`minerImports`,preserva todos os livros,históricos e limitações anteriores. QA isolada 55441 com guarda e rollback.
**Referência P059 corrigida:** Lei n.º 2/2011, de 11 de Janeiro,Regime Aduaneiro Aplicável aos Mineiros na República da África do Sul,BR n.º 1, I Série, 4.º suplemento. Artigos 1–4 na página 1 do PDF (sem número impresso); artigo 5 na página 2, página impressa 110-(8). O original conjunto contém 10 páginas e outros diplomas,incluindo a Lei n.º 7/2011 do Voluntariado. O nome «Lei do Voluntariado.pdf» não é a identidade da norma aplicada. Cópia acessível da MCNet (149) arquivada,sem alterar bytes,em`docs\investmoz\simulations\source-archive\Lei-2-2011-BR-1-4-suplemento-MCNet.pdf`;SHA256 `a7543a68cc3287a46a83c39a04821b40f649dd06c4e9b5dc51ff0b47fba08899`. A indisponibilidade DNS do endereço PGR nesta ronda não invalida a fonte oficial aceite; não foi afirmada igualdade de bytes com um ficheiro PGR que não se conseguiu descarregar.
Regulamento:Decreto n.º 3/2011, de 16 de Março, BR n.º 11, I Série, artigos 1–4 (início) na página 2 do PDF/p.152 e artigos 4 (continuação)–8 na página 3/p.153,original em`docs\investmoz\simulations\source-archive\Decreto-3-2011-BR-11-I-mineiros.pdf`. CIVA 12(2)b, página 11 do PDF/p.1426-(269), mantido nas alterações de 2022/2025. O recibo conserva mapa de artigos/páginas por fonte,hashes e ligações. A OS 07/AT/DGA/411.1/2019 é específica da KAWENA; contramarca, SAD500, armazéns e outras exigências suas não foram impostas às outras vias.
Abrir «Importações dos mineiros — regime da África do Sul (P059)». Os oito percursos são: bagagem; remessa mensal;remessas acumuladas até seis meses;electrodoméstico por tipo/ano;veículo/tractor em cinco anos;bagagem no regresso;veículo como bagagem no regresso;veículo separado da bagagem com redução específica de 50%. Transmissão a herdeiro é opção transversal:direito não usado,bens adquiridos em vida,qualidade de herdeiro e pedido dentro de um ano do óbito. Não transpor automaticamente ao pedido do herdeiro7 o prazo90 dias do pedido do mineiro6(5).
Dados comuns válidos de um único beneficiário/contrato podem preencher nova linha sem copiar pressupostos dos bens distintos. Identificar âmbito aduaneiro e factos/pressupostos,não novo certificado. As quotas declaradas incluem operações externas ao dossier;linhas guardadas que sobreponham direitos ou saldos ficam indeterminadas,sem apagar originais. Um veículo e um tractor são direitos distintos identificados;não dois veículos do mesmo direito. O período actual da importação pode usar meses acumulados de 2025 quando a janela de até seis meses termina em 2026. Não se presumem limite revisto pelo Governo, autorizações excepcionais,prorrogações ou ausência de benefício por o dossier não conter histórico.
Cobertura monetária dos exemplares:15.000 MZN/mês;total acima da cobertura permanece indeterminado,sem conceder benefício ao excesso ou presumir revisão2(5). O tratamento de 50% é apenas o veículo separado (6(4)), não taxa de IVA nem benefício geral. Usa IVA normal informado e referenciado;por exemplo160.123456 × 50% = 80.061728 MZN,sem arredondamento fiscal presumido.6(4)também menciona aquisição interna:este incremento não calcula IVA da venda interna nem restitui imposições;exige a importação associada identificada para o valor informado. Licença temporária em férias (5) não vira isenção definitiva;usar o percurso aduaneiro existente,com as condições próprias.
Passaram 15 testes frontend, API privada com 1 teste/51 asserções, tipos/build e Edge. Nove exemplos (8 percursos + herdeiro). No navegador,total mensal 15000 → 15001 deixa IVA indeterminado;condição excepcional Sim → Por esclarecer deixa redução indeterminada;repostos os dados,versão 6/histórico 5,gravação,recuperação e relatório real do dossier. Campos de excepção/prorrogação e anexos sem aplicação não são pedidos/mostrados como requisitos universais;dados ocultos e resultados históricos conservados.
P058: Decreto n.º 37/2023, artigo 57, página 10 do PDF/p.1474, obtido e conferido visualmente;57(2)c e d delimitam funcionários/estudantes com estadia superior a um ano e regresso antecipado por serviço do Estado.57(2)b remete literalmente para bens do n.º2,enquanto a lista de bens está no n.º3. Divergência concreta preservada,sem correcção silenciosa ou novo fecho. Prosseguir percursos sustentados e concluir correspondência;bens de bagagem57(3)não incluem automaticamente veículos. P047 mantém cotejo das quatro remissões12(1)b;P084/P085 ligação ao artigo 14(3);P104 taxa/data;P001 instrução 05/06 da edição recebida.
**Limitações preservadas:**sem concessão administrativa,DU/licença/despacho emitidos,direitos/baseaduaneira/ICE,dedução/campo11 ou lançamento automático nos totaisModeloA. Formalidades digitais continuam não automatizadas. P129/P133apenas margem/eventos,sem IVA devido, dedução 42/43d, regularização 44, facturação 45/modelo 46(2), ligados a AUD-SIM-INT02. P084/P085 e P104 condicionados; P001 05/06; bebidas L2/L3; Estatísticas/IA adiadas. L1aberto. P046/P059 aguardam uma entrega conjunta compatível pela via Git,com provas reutilizadas e conferência somente do delta instalado.
## 25/10/2026 — preparação P059 e referência documental explícita
125 fechos e P046 em QA inventariados antes dos testes; nenhuma perda confirmada. Lei n.º 2/2011, de 11 de Janeiro: Regime Aduaneiro Aplicável aos Mineiros na República da África do Sul, BR1-I,4.º suplemento, artigos1–4 na página1doPDF (sem número impresso), artigo5 na página2/p110-(8). O ficheiro reúne também a Lei7/2011 do Voluntariado; o seu nome não identifica o diploma usado. Original MCNet149 guardado em `docs/investmoz/simulations/source-archive/Lei-2-2011-BR-1-4-suplemento-MCNet.pdf`, sem alterar bytes ou publicar automaticamente. Decreto3/2011,arts1–8,PDF2–3/p152–153;CIVA12(2)b,2016PDF11/p1426(269). OS07/AT/DGA/411.1/2019 é específica da KAWENA e não vira exigência universal. Decreto37/2023art57PDF10/p1474 também obtido para cotejoP058; não declara esse ramo concluído. P046 preservado para conjunto compatível;homologaçãoa48e9749inalterada.
## 25/10/2026 — P046 concluído em QA; cotejo dos casos finais
**125 entregues +1QA(P046) +6funcionais pendentes +P001=133**. Homologação`a48e9749`inalterada;sem push/instalação. Candidata`08072015`;33testes frontend,API1/105asserções,tipos/build eEdge comgravação/recuperação/relatório.125fechos e todos oslivros/históricos preservados,comparação integral do snapshot congelado.
Abrir «Importações definitivas — isenção objectiva interna(P046)». Escolher correspondência dosmesmos bens,importação definitiva ehipótese interna explícita;confirmar condições do tratamento/anexo aplicáveis. Não é necessário criar venda interna. Reutilização preenche apenas campos emfalta e não copia confirmações;edições deliberadas conservadas. Desconhecido mantémIVAindeterminado,condição nãoaplicável não presume imposto normal.28correspondências expressas12(1)a:9(1)b/c/e/f/g,9(9)b,9(10),9(11),9(12)g/h/i. Enumeração legal exemplificativa;outras não são declaradas excluídas. Sem direitos/base aduaneira/dedução/campo11 ou alteração dos totais internos. Anexos semaplicação ocultos no relatório,conservados no rascunho/histórico.
|ID|Situação concreta|Próxima acção|
|---|---|---|
|P046|QA concluído;por disponibilizar — Falta integrar numa entrega compatível;outras isenções objectivas não enumeradas não são declaradas excluídas|Agrupar com próximo ramo compatível,sem entrega isolada apenas por estar emQA;reutilizar33testes/105asserções e conferir delta instalado|
|P047|Documentação específica e desenvolvimento — Falta cotejar as condições operativas de cada uma das quatro remissões e o âmbito do benefício de direitos nesta importação;redacção2016não pode substituir a de2022|Obter/cotejar textos completos das quatro famílias e InstruçõesPreliminaresLei17/2022/Lei8/2025;mapear só os percursos demonstrados,sem atribuir IVA isento a toda redução aduaneira|
|P058|Cotejo documental específico e desenvolvimento — Ainda não cotejados no texto integral aplicável os termos/limites aduaneiros por categoria,bens e regresso;orientação informativa genérica não fornece esses parâmetros|Conferir RegrasGeraisDecreto37/2023 e alteração27/2026,art14/58/QuadrosV/VI,e legislação específica de cada categoria;conservar proporcionalidade da redução de direitos12(2),sem criar um limite comum inventado|
|P059|Cotejo operacional e desenvolvimento por executar;fonte base já localizada — Falta traduzir e verificar os percursos específicos e a proporcionalidade12(2),sem confundir limite mensal,acumulação,regresso ou benefício de veículo separado;OSKAWENA não demonstra procedimento universal|Implementar percursos demonstradosLei2/2011/Decreto3/2011,com exclusão álcool/tabaco,quotas/histórico e condições próprias;registar correspondênciaIVA sem exigir novo despacho genérico apenas porque a matriz antiga o dizia. Não generalizar50%a todos os bens/mineiros|
|P084|Correspondência regulamentar específica pendente — Cadeia doModelI.1 não demonstra por si a regulamentação14(3);pesquisa delimitada desta ronda não localizou disposição de correspondência adicional|Localizar norma ou instrução oficial aplicável a14(3) paraaquisição/importação14(2)a;preservar distinção pedido/decisão e não inventar aprovadores/certificados|
|P085|Correspondência regulamentar específica pendente — Ainda não demonstrada norma/procedimento de emergência/doação correspondente14(2)b/14(3);ModelI.1 não é concessão. Não estender automaticamente aimportação/serviços|Conferir procedimento oficial de emergência/doação e âmbito exacto;aplicar só correspondência demonstrada,sem impor o estado de pedido ordinárioP084 ao percurso de emergência|
|P104|Parâmetro/norma de escolha de taxa e data pendente — 15(8)remeteLei2/2006;106(5)não estabelece escolha de taxa/data. Exemplar não está em falta;sem norma demonstrada não há base fiscal confirmada|Localizar disposição/instrução aplicável à taxa/data para este valor tributável;distinguir câmbio aduaneiro doart16/Pauta e taxa de apresentação,sem os transpor automaticamente a15(8)|
|P001|Documental,fora dos132ramosfuncionais — Modelo publicado2019 tem03vendas isentas comdireito,04remissão18(1)b,05sem direito e06imobilizado;não é a numeração05/06 daedição recebida. Não acompanha instrução que resolva essa distinção|Localizar instruções correspondentes àedição recebida que distingam05/06;preservar originais e não copiar numeração de2019 ou daedição antigaAT|
P047:usar redacção2022dasquatro remissões,mantida2025;não conservar artigos antigos2016como limite actual semcotejo. P059:Lei2/2011/Decreto3/2011já localizados;isto remove «norma base desconhecida» como descrição genérica.Não declarar inexistente o regime nem exigir nova validação jurídica genérica.OS07/AT/DGA/411.1/2019é específica demercadorias distribuídas pelaKAWENA;sem transpor contramarca/SAD500/armazém/procedimentos para todos os cenários.50%nãoé benefício geral dosmineiros. P001:BR72-I2019PDF3/p751conferido visualmente,campos03/04/05para bases e06imobilizado;essa numeração não resolve05/06daedição recebida.
**Limitações preservadas:**formalidadesdigitais ainda nãoautomatizadas;P129/P133apenas margem/eventos,semIVAdevido,dedução,regularização/facturação/modelos oficiais;trabalho fiscal restante ligado aAUD-SIM-INT02.P104condicionado;P084/P085preparação/simulação;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas. L1continuaaberto.P046aguarda próximo conjunto compatível;sem entrega isolada porconclusãoQA.Recibo`docs\investmoz\simulations\iva-l1-objective-imports-qa-20261025.json`.
## 25/10/2026 — preparação QA P046 e cotejo final L1
125 fechos inventariados antes dos testes; nenhuma perda confirmada. Provas a48e9749/f0596225 reutilizadas; snapshot integral congelado. P046:12(1)a, redacção Lei10/2025,PDF12/p2180(12), cotejado com catálogo9 e anexos já entregues; a enumeração é exemplificativa. Não exigir venda interna efectiva para analisar a importação. P047/P058/P059/P084/P085/P104/P001 conservam fontes e impedimentos específicos; rascunhos condicionados preservados. Formalidades digitais não automatizadas e cálculo fiscal de viagens/eventos ainda não implementado continuam ligados a AUD-SIM-INT02; sem fecho transversal de L1. Nenhuma escrita no activo.
## 25/10/2026 — P129/P133 entregues conjuntamente: margem e eventos
Homologação **`a48e9749`**, sobre`df43aeb1`; candidata`1a5f7220` aceite pela Tempo. Uma integração, backup/restauro isolado, instalação e conferência apenas do delta; provas QA individuais reutilizadas,123fechos anteriores preservados.
P129 trata regime/meios próprios/terceiros, margem global por operador/período, custos directos, exclusões, excesso negativo e base no âmbito declarado. P133 trata eventos de viagens e cessação efectiva de regimes suspensivos, com facto gerador/exigibilidade separados, sem dupla contagem de parcelas. **Sem calcular IVA devido ou dedução.** Também não executa regularização, factura/modelo oficial ou liquidação aduaneira.
**Continuidade fiscal:** a base e os eventos, com moeda, operador, operação/período, datas, documentos e versões, mantêm ligação ao trabalho integrado **AUD-SIM-INT02**, na [matriz existente](../v2/auditoria-portal/matriz-requisitos.csv). Apuramento/liquidação fiscal restantes e deduções/regularizações/restituições dos seus lotes próprios, incluindoL2/L3, não são encerrados por esta entrega. A interface explicita essa continuidade; o manifesto conserva `fiscal_continuity`. Não foi criada nova matriz nem activado cálculo por publicação.
Origin/main e destino autenticado conferidos; push normal fast-forward, sem força. Backup novo/restauro real sem rede:174tabelas/369ficheiros e configuração. Delta instalado: revisão/manifesto/hash,24marcadores compilados incluindo o limite/continuidade fiscal,6hashes funcionais e simuladorHTTP200. Mesma identidade PostgreSQL antes/depois; diferenças apenas cache/sessões;29fichas publicadas,28relações e408geometrias conservadas. Zero migrações/importações, alterações de permissões ou ensaios sintéticos no activo. Contenção conferida e não aplicada; leitores/histórico/outros ramos e release anterior preservados.
[Manifesto/recibo](../simulations/l1-travel-events-delivery-20261025.json), registo`iva_l1_travel_events_P129_P133_homologation_20261025`. **125 entregues +7 funcionais pendentes +P001=133**, sem candidatas QA por disponibilizar. Pendentes: P046/P047/P058/P059, importações/benefícios; P084/P085, ligação regulamentar; P104, regra taxa/data cambial; P001 limitado05/06. **Saldo de limitações:** formalidades digitais P121/P130 ainda não automatizadas, cobertura digital integral não declarada; IVA devido/dedução e restantes limites de viagens acima não concluídos. L1 aberto; bebidasL2/L3; Estatísticas/IA adiadas.
## 25/10/2026 — P129/P133 concluídos em QA no âmbito demonstrado
**123 entregues +2 em QA(P129/P133) +7 funcionais pendentes +P001=133**. Homologação`df43aeb1` inalterada, sem push/instalação. Os123 fechos, originais, relações, dados, acessos e históricos foram preservados; provas aceites reutilizadas. QA isolada55441 com guarda e rollback.
P129: abrir «Agências de viagens — pacote, meios utilizados e margem do período». Identificar preço único, nome próprio, meios próprios/terceiros, venda retalhista/novo conjunto e sede prestadora. Meios mistos conservam contraprestação da parte geral separada; repartição depende de referência concreta. Custos directos de terceiros distinguem-se das exclusões41(3), sem dedução criada. O registo global exige âmbito completo declarado por operador/período, sem misturar efectivo e projectado nem apresentar parcela como toda a organização. A margem positiva é dividida por1.16, base arredondada à unidade; o excesso negativo é custo transportável, não crédito/reembolso fiscal. Diferença entre excesso indicado e anterior calculado mostra impacto e exige confirmação da correcção referenciada, conservando ambos os valores/histórico.
O reporte entre períodos segue41(5) e43a;43bii usa a expressão «exercício seguinte», conservada na citação sem criar crédito/dedução anual. Sem apuramento de IVA devido, dedução42/43d, regularização44, emissão de factura45 ou modelo oficial46(2). Facturação com menção IVA incluído não equivale a factura emitida pelo simulador.
P133: abrir «Eventos de viagens e cessação de regimes suspensivos». Associar viagem classificada da mesma oportunidade, reutilizando apenas referências em falta. O período do evento pode diferir do registo da margem. O primeiro entre integral e imediatamente antes do início/primeiro serviço determina7(9); não subtrair um dia ou presumir ordem intradiária se datas coincidem. Factura, sinal e saldo integral mantêm exigibilidade8 distinta e sem dupla soma. Montante da margem por esclarecer não bloqueia evento de natureza/âmbito fiscal demonstrados. Origem alterada invalida resultado actual, preservando a versão anterior. Regime7(8) só produz evento pela cessação efectiva documentada; permanência ou mudança de armazém/transferência não vira saída. Sem liquidação aduaneira, direitos/ICE ou IVA calculados.
Passaram29 testes frontend, API privada1teste/68asserções, tipos/build e Edge: alteração de registo completo para parcial, restabelecimento, alteração de pagamento integral para desconhecido, reposição, gravação/recuperação e relatório. Dez operações de viagens, cinco períodos globais e doze eventos. Viagens versão4/histórico3 e eventos versão5/histórico4 na prova visual. Relatório omite factos sem aplicação, conservando-os no rascunho/histórico. Implementação`c309215d`; recibo`docs/investmoz/simulations/iva-l1-travel-events-qa-20261025.json`.
Fontes: RIVA Decreto7/2008,38–46,BR16-I16/04/2008PDF6–8/p104–106; CIVA2016PDF7/9/13,4(5)/5(2)/7(8)/(9)/8/14(1); taxa17(1)na redacção2022 apenas no divisor da base. Sete exemplares inventariados por hash. Regime fiscal não confundido com licenciamento turístico. A pesquisa delimitada de14(3)/calamidades não trouxe ligação regulamentar específica adicional; fontes estrangeiras não foram transpostas. P084/P085 continuam preparação e simulação condicionada, sem benefício concedido.
**Saldo de limitações:** formalidades digitais P121/P130 — modelos da declaração/mapa de retenções e procedimentos de entrega/pagamento — continuam não automatizadas; não se declara cobertura digital integral. Mantêm-se também os limites do incremento de viagens acima. L1 aberto; P001 campos05/06; P104 taxa/data cambial pendente; bebidasL2/L3; Estatísticas/IA adiadas.
Restantes IDs por impedimento/próxima acção: P046, correspondência12(1)a/lista2025 com isenções internas já entregues; P047, diplomas/âmbito de benefícios aduaneiros12(1)b; P058, condições/limites aduaneiros de regresso e proporcionalidade12(2)a; P059, despacho/condições dos mineiros12(2)b; P084/P085, ligação regulamentar14(3) para cenários distintos; P104, norma de selecção da taxa/data; P001, instrução documental05/06. Dependências documentais não bloqueiam grupos independentes. Próxima entrega compatível deve agrupar P129/P133, reutilizando provas por ramo e conferindo somente o delta instalado.
## 25/10/2026 — preparação QA P129/P133
123 fechos inventariados antes dos testes; sem perdas confirmadas. Provas df43aeb1/91c40633 reutilizadas, livros/históricos congelados. RIVA38–46,PDF6–7/p104–105, e CIVA4(5)/5(2)/7(8)/(9)/8/14(1),PDF7/9/13, conferidos visualmente. Margem das viagens é global por período, não por pacote; meios próprios seguem regime geral. Eventos especiais conservam a distinção do facto gerador e exigibilidade; sem presumir saída aduaneira, datas ou autorizações. Formalidades digitais não automatizadas continuam no saldo de limitações; P104/P084/P085/P001 permanecem documentais específicos, sem bloquear este grupo. Sem escrita no activo.
## 25/10/2026 — P002/P121/P130 entregues conjuntamente no âmbito demonstrado
Homologação **`df43aeb1`**, sobre`e8b5ae43`; candidatas`e4c490b3`/`de4b25bb` aceites pela Tempo. Uma integração, backup/restauro real isolado, instalação e conferência do delta. Provas individuais reutilizadas;120fechos anteriores preservados.
P002: enquadramento potencial, reutilizando localização e eventos, incluindo a origem digital da mesma oportunidade; sem concessão/cálculo de dedução. P121/P130: natureza do bem/serviço digital, localização e responsável, rascunho, gravação/recuperação, histórico e relatório. **Não representa cobertura digital integral.** A interface e o manifesto explicitam que modelos da declaração/mapa de retenções e formalidades de entrega/pagamento ainda não cotejadas não estão automatizadas. Não há submissão, pagamento ou cálculo automático de imposto/dedução neste incremento. O anúncio governamental não substitui o cotejo do texto/modelos de execução; não se afirma inexistência de regulamentação. P104 permanece conversão condicionada e pendente.
Origin/main e destino autenticado conferidos; push normal fast-forward, sem força. Backup novo e restauro isolado sem rede:174tabelas/369ficheiros e configuração. Delta instalado: revisão/manifesto/hash,26marcadores compilados incluindo o limite da cobertura digital,7hashes funcionais e simuladorHTTP200. PostgreSQL comparado pela mesma identidade antes/depois; diferenças apenas cache/sessões;29fichas publicadas,28relações e408geometrias preservadas. Zero migrações/importações, alterações de permissões ou ensaios sintéticos no activo. Contenção conferida e não aplicada; leitores, histórico e outros ramos preservados.
[Manifesto/recibo](../simulations/l1-foreign-digital-delivery-20261025.json), registo`iva_l1_foreign_digital_P002_P121_P130_homologation_20261025`. **123 entregues +9 funcionais pendentes +P001=133**, sem candidatas QA por disponibilizar. Pendentes funcionais: P104/P084/P085 (documentais específicos), P129/P133 (viagens/eventos), P046/P047/P058/P059 (importações/benefícios). P001 limitado05/06. L1 aberto; bebidasL2/L3; Estatísticas/IA adiadas. As formalidades digitais não automatizadas permanecem identificadas no âmbito próprio, sem transformar esta entrega em cobertura integral.
## 25/10/2026 — P121/P130 concluídos em QA; conjunto compatível P002/digital preparado
**120 entregues + 3 em QA (P002/P121/P130) + 9 funcionais pendentes + P001 = 133**. Homologação e8b5ae43 inalterada; L1 aberto. Os120 fechos e P002QA foram inventariados antes dos testes e preservados; provas aceites reutilizadas. Sem push, instalação, migração ou escrita no activo.
No simulador, abrir «Bens e serviços digitais — natureza, localização e obrigações». Escolher transmissão de activo (P130) ou prestação de serviço (P121), tratamento, operação/período, direitos/funcionalidade e fundamento da natureza. Software/acesso/licenciamento não decide a natureza só pelo nome. Campos sem aplicação ficam ocultos e conservados; trocar natureza/tratamento exige rever confirmações. Referências de documentos ou pressupostos existentes são reutilizáveis, sem certificado/aprovador adicional.
São seis tratamentos de serviços e oito famílias de activos, com42 exemplos de entrada, saída e operação doméstica e quatro exemplos adicionais de qualidade fiscal/representação. Adquirente no estrangeiro segue6(8); entrada digital por fornecedor estrangeiro segue6(7)k. Qualidade fiscal do adquirente por esclarecer não apaga localização nacional:26(4) exige sujeito passivo nacional identificado.26(1–3) tem condições próprias de representação, comunicação e actividade; consumidor não recebe retenção automática. Serviço doméstico usa6(3); bem digital equiparado a corpóreo usa6(1) apenas com local na colocação à disposição fundamentado, sem inferência por servidor/IP. Sem facto demonstrado, localização fica indeterminada.
26(4),25(7) e32(1)c identificam responsável, declaração mensal/mapa e referência legal do dia10 do mês seguinte, sem ajuste de calendário presumido.33(2) refere26(1–3), não substitui o percurso26(4). Formalidades/modelos não foram cotejados neste incremento: a pesquisa oficial encontrou o anúncio governamental de30/09/2026, que não substitui publicação normativa. Não se declara inexistência da regulamentação. A preparação prossegue; automatizar formalidades exige cotejar o texto/modelos correspondentes. Não há taxa, base, IVA, dedução/campo11, submissão, pagamento ou totais automáticos neste incremento.
P002 passa a poder associar o resultado digital da mesma oportunidade; alterar origem/revisão invalida a análise actual e conserva histórico. A candidata aceita e4c490b3 está contida por ancestralidade nesta preparação. O ensaio Git com main local (7ccf62adec52e574fdcc75ea2e3852833e3dba10) não apresenta conflitos e produz a mesma árvore da implementação. Na entrega será necessário conferir main/destino frescos, backup/restauro e somente o delta instalado, pelo processo existente. Uma entrega conjunta dos três ramos, sem repetir as provas individuais.
Passaram57 testes frontend (49 digitais e8 de compatibilidade P002), API privada1teste/209asserções com rollback na base isolada55441, tipos e build. Edge confirmou alteração fiscal sem perda de localização, reposição, gravação, recuperação e relatório (versão4, três versões anteriores). Recibo: `docs/investmoz/simulations/iva-l1-digital-qa-20261025.json`; implementação `5f088e34`.
Fontes: [BR—Lei10/2025](https://miramar.co.mz/wp-content/uploads/2026/01/Tax_Update_Key_Amendments_to_Mozambican_Tax_Legislation_1767376440.pdf), exemplar localPDF12–14; CIVA2016PDF8 e17. [Anúncio governamental](https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/) delimitado às formalidades ainda por cotejar. Sete exemplares inventariados por hash; nenhuma publicação automática.
Pendências: P104, disposição que define taxa/data cambial; P084/P085, correspondência regulamentar mantendo rascunhos e simulação condicionada; P001, instruções dos campos05/06; P129/P133, desenvolvimento/cotejo dos percursos de viagens e eventos; P046/P047/P058/P059, desenvolvimento/cotejo das importações e benefícios específicos. As pendências documentais não bloqueiam grupos independentes. Dedução mantém âmbito próprio; Estatísticas/IA adiadas.
## 25/10/2026 — preparação QA P121/P130 e entrega compatível com P002
120 fechos e P002 QA inventariados antes dos testes, sem perdas confirmadas. Reutilizar provas e processo Git existentes; sem instalação individual de P002. Lei10/2025, artigos3/6/23/25/26/32/33, e CIVA2016,6(7)k i–v, cotejados; distinguir bens de serviços e localização de obrigações. Sem dependência cambial efectiva de P104. Novas formalidades remetidas para regulamentação não serão inventadas.
## 25/10/2026 — P002 concluído em QA; P104 com cotejo documental delimitado
Saldo: **120 entregues + 1 em QA + 11 funcionais pendentes + P001 = 133**. Homologação e8b5ae43 inalterada; L1 aberto. Os 120 fechos e respectivos livros/históricos foram preservados. P002 aguarda entrega agrupada compatível.
P002 reutiliza a localização já apurada de bens, serviços, serviços enumerados e parcela exterior de transporte, sem repetir os campos de origem. Pode associar um evento da mesma operação/período. Regista hipótese de tributabilidade interna, fundamento, exclusões do artigo19(2), âmbito e elementos disponíveis. O resultado do artigo19(1)bii é enquadramento potencial, sem concessão ou cálculo de dedução/campo11. Alterar a origem exige rever confirmações; versões anteriores conservam os factos e referências. A falta de fundamento deixa a análise indeterminada sem apagar a localização estrangeira.
Oito testes frontend e API privada (1 teste/47 asserções) passaram, com base QA isolada e rollback. Tipos, build e conferência Edge de gravação, recuperação, histórico e relatório passaram. Sete exemplos: quatro enquadramentos potenciais, uma operação nacional não aplicável, uma hipótese interna não tributável e uma exclusão19(2). Provas anteriores reutilizadas; sem escrita no activo.
P104: Exemplar integral Lei 2/2006 obtido: BR 12-I de 22/03/2006. Artigo 106(5), PDF18/página impressa66, conferido visualmente: facturação em moeda nacional. Não identifiquei no exemplar a regra de escolha da taxa/data cambial. P104 continua conversão condicionada, sem confirmação de base fiscal. Localizar a disposição aplicável que concretiza a remissão do CIVA 15(8), especificando taxa e momento de conversão; conservar moeda, taxa, direcção, data e fonte. Sem taxa corrente por defeito nem nova validação genérica.
Fonte obtida apenas para consulta local: [BR — Lei2/2006](https://www.dlapiperafrica.com/export/sites/africa/mozambique/insights/legislation-series/tax/downloads/Lei-n_2.2006.pdf_2063068952.pdf). SHA256: `efe00dbb9d9712d719f11d38a55be028c4d82315960ddfcc7786fdf9bdf133cb`. Não foi publicada automaticamente nem activada como regra cambial.
Pendências por próxima acção: P104, identificar taxa/momento na disposição aplicável; P121/P130, percursos digitais; P129/P133, viagens e eventos associados; P046/P047/P058/P059, importações e benefícios; P084/P085, correspondência regulamentar específica mantendo preparação e simulação condicionada; P001, instrução documental dos campos05/06. Nenhuma destas dependências encerra ou bloqueia os ramos independentes. Estatísticas e IA continuam adiadas.
Recibo QA: `docs/investmoz/simulations/iva-l1-foreign-operations-qa-20261025.json`; implementação `86970cd5`.
## 25/10/2026 — preparação P002 e cotejo cambialP104
120fechos inventariados antes dos testes,sem perdas confirmadas;provase8b5ae43/2de67beb reutilizadas.Todososlivros/resultados/históricos congelados.Sem escrita noactivo.P002reutiliza localização bens/serviços/enumerados e eventos já entregues;19(1)biiéenquadramentopotencial,nãoconcessãodededução.P104exemplarLei2/2006obtido;106(5)visualconferido,emissãoemmoedanacionalnãodemonstraregra taxa/data.Cotejoseparaexemplarresolvidodeparâmetrocambialaindapendente,sem bloqueioindependenteP002.
## 25/10/2026 — P131/P132 entregues conjuntamente,P104 apenas conversão condicionada
Homologação **`e8b5ae43`**,sobre`92eaa935`;candidata`0052cd42` aceite pela Tempo. Dois ramos encerrados/14percursos,maisumcenáriocambialparcialquenãofechaP104.Umaintegração/backup/restauro/instalação/conferência,provasQA reutilizadas.
- **P131**: Eventos7(1)a/b/c,7(2),7(3),7(7):disponibilização,início transporte,instalação/montagem concluída,serviço realizado/cobrado ou debitado antecipadamente pelo montante respectivo,desembaraço/arrematação/venda na importação,termo do período sucessivo,efeitos translativos com excepções3(3)a/b. Facto gerador separado de exigibilidade8;factura comercial não desloca evento aduaneiro.
- **P132**: Eventos7(4)/(5)/(6) e8c:afectações/transmissões assimiladas3(3)e/f,serviços4(2),disponibilização pelo comissário,termo180dias de mercadorias à consignação3(3)d e pagamentos anteriores à factura. Corrigida remissão a consignação,não embalagensP102.8a/b/c separam parcela recebida e restante,sem dupla contagem.
CIVA Lei13/2016:7(1)–(7),PDF8/p1426(266);8,PDF9/p1426(267);15(8),PDF14/p1426(272),páginas visualmente conferidas.Lei22/2022 eLei10/2025 não alteram7/8;15(8)mantido.RIVADecreto7/2008,21,PDF4:regra histórica5dias úteis e excepções;prazo actual não automatizado,exige disposição/calendário/âmbito identificados. 2026contexto;facto gerador7 e exigibilidade8 por data/âmbito;uma parcela de recebimento e restante por linha,ou parcelas de âmbitos distintos,sem agregação de totais entre linhas. Prazo de emissão é parâmetro legal identificado,não calendário presumido;importação segue7c. P104parcial não aplica câmbio fiscal.Sem nova base/IVA,taxa,dedução,campo11,regularização ou totaisModeloA;P133regimes suspensivos/viagens mantém âmbito separado. P104incluídosócomopreparação/conversãocondicionada,explicitadonomanifesto/interface/relatório;moedaoriginal,taxa,direcção,data,fonte eregra/pressuposto preservados.Basefiscalnull,semIVA/deduçãoactivados.RegrafiscalLei2/2006aindapendente;concluirocotejodadisposição/momento/regraantesdefecharP104,nãonovavalidaçãojurídicagenérica.
Main/destino conferidos,fast-forwardnormal,118fechosanteriorespreservados.Backupnovo/restaurorealisoladosemrede174tabelas/369ficheiros.Deltainstalado:revisão,manifesto/hash,24marcadorescompiladosincluindolimiteP104,5hashesfuncionais,simuladorHTTP200.PostgreSQLpela mesmaidentidadeantes/depois,29fichaspublicadas/28relações/408geometriasconservadas,diferençasapenascache/sessões.Zero migrações/importações/permissõesalteradas ouensaiossintéticosnoactivo.Contençãoconferida,nãoaplicada;leitores/histórico/outrosramos/backup/releaseanteriorespreservados.
[Manifesto/recibo](../simulations/l1-currency-events-delivery-20261025.json),registo`iva_l1_currency_events_P131_P132_partial_P104_homologation_20261025`. **120entregues +12funcionaispendentes +P001=133**,semcandidatasQApor disponibilizar.P104continuanos12,P001separado05/06.L1aberto;P084/P085parciais;bebidasL2/L3;Estatísticas/IAadiadas.Prosseguirgruposindependentessegundo dependênciasjáregistadas,QAporramo/entregasagrupadas.
## 25/10/2026 — P131/P132 QAconcluído,P104parcial
Implementação`7e6e462e`. DoisramosQA/14eventos,maisumcenáriocambialparcialquenãofechaP104. CIVA Lei13/2016:7(1)–(7),PDF8/p1426(266);8,PDF9/p1426(267);15(8),PDF14/p1426(272),páginas visualmente conferidas.Lei22/2022 eLei10/2025 não alteram7/8;15(8)mantido.RIVADecreto7/2008,21,PDF4:regra histórica5dias úteis e excepções;prazo actual não automatizado,exige disposição/calendário/âmbito identificados.
- **P131**: Eventos7(1)a/b/c,7(2),7(3),7(7):disponibilização,início transporte,instalação/montagem concluída,serviço realizado/cobrado ou debitado antecipadamente pelo montante respectivo,desembaraço/arrematação/venda na importação,termo do período sucessivo,efeitos translativos com excepções3(3)a/b. Facto gerador separado de exigibilidade8;factura comercial não desloca evento aduaneiro.
- **P132**: Eventos7(4)/(5)/(6) e8c:afectações/transmissões assimiladas3(3)e/f,serviços4(2),disponibilização pelo comissário,termo180dias de mercadorias à consignação3(3)d e pagamentos anteriores à factura. Corrigida remissão a consignação,não embalagensP102.8a/b/c separam parcela recebida e restante,sem dupla contagem.
P132designaçãocorrigida:7(6)refereconsignação3(3)d,nãoembalagensP102;históricopreservado.P123conferênciadenãodevoluçãoépreservada,separadadotermodeexigibilidade7(6). 2026contexto;facto gerador7 e exigibilidade8 por data/âmbito;uma parcela de recebimento e restante por linha,ou parcelas de âmbitos distintos,sem agregação de totais entre linhas. Prazo de emissão é parâmetro legal identificado,não calendário presumido;importação segue7c. P104parcial não aplica câmbio fiscal.Sem nova base/IVA,taxa,dedução,campo11,regularização ou totaisModeloA;P133regimes suspensivos/viagens mantém âmbito separado.
P104:preparaçãodamoedaoriginal/montante/taxa/direcção/data/fonte/pressuposto;conversãomatemáticareutilizaconvertCentsfinanceirosemalteraralgoritmo.Basefiscalmantémnull. Faltaobter/cotejardisposiçãodeconversãoLei2/2006remetidapor15(8),momento/regraem2026. Acervolocal6PDFinventariado,nãoincluiLei2/2006;pesquisalocalizouBR12-I22/03/2006masexemplaríntegronãoobtido(404/403/recusa).Próximaacçãodelimitadaobteressetrecho,nãonovavalidaçãojurídicagenérica.
[AnúnciooficialdoGoverno](https://portaldogoverno.gov.mz/governo-introduz-alteracoes-nos-regulamentos-fiscais-para-reforcar-eficiencia-tributaria/)incluialteração21RIVA;anúncionãosubstituitextonormativo.Nãoautomatizadoprazo5diasúteis2008;motor8usatermolegal/disposição/calendário/âmbitoconcretos.Pesquisadotextopublicadoparaeventualautomatizaçãopermanece delimitada,sem bloqueareventos7independentes.
19testesfrontend;APIprivada1teste/65asserçõescomrollbackemQAisolada55441;tipos/buildaprovados.Edge/CUA:faltareferênciaprazoconservafactogeradoreexigibilidadeindeterminada;restauro,gravação/recuperação/relatório15exemplos,1versãoanterior;importaçãopeloeventoaduaneiro2026-12-10,facturacomercialnãoodesloca;adiantamento200+restante800;P104condicionado64500MZN,semIVA/base.Todososlivrosanteriorescomparadoscomcongelamento;118fechospreservados,semperdasconfirmadas;provas92eaa935/7a3ac432reutilizadas.Relatório`docs\investmoz\simulations\iva-l1-currency-events-qa-20261025.json`;evidência`C:\laragon\www\portal-investidor\outputs\iva-l1-currency-events-20261025/verification.json`,imagem`qa-recovered-report.png`.Semescritanoactivo.
**118entregues +2QA +12funcionaispendentes +P001=133**;homologação`92eaa935`.P104incluídonos12,nãofechado.CandidataparaentregaconjuntaP131/P132,P104apenasparcialexplicitadonomanifesto.L1aberto;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas.Pendentes:P002/P046/P047/P058/P059/P084/P085/P104/P121/P129/P130/P133,impedimentos/próximasacçõesmantidosnamesmamatriz.
## 25/10/2026 — preparação P104/P131/P132
118fechos inventariados antes dos testes,sem perdas confirmadas;provas92eaa935/7a3ac432 reutilizadas,todososlivros/resultados/históricos congelados.Sem escrita noactivo.P131/P132:facto gerador7 separado de exigibilidade8 e parcelas de pagamento.P132remissão7(6) refere consignação3(3)d,não embalagensP102.P104remissão15(8) paraLei2/2006 ainda por corresponder;preparar conversão condicionada,não base fiscal confirmada.Prazo emissão dependente disposição/calendário concretos,não aplicar cinco dias úteis2008 por defeito após anúncio de alteração21RIVA.
## 25/10/2026 — P087/P127 entregues conjuntamente
Homologação **`92eaa935`**,sobre`ce9d649f`;candidata`d84883b8` expressamente aceite pela Tempo. Dois ramos,tres tratamentos e tres exemplos QA;uma integração/backup/restauro/instalação/conferência,provas QA reutilizadas.
- **P087**: Entrega material de bens em execução de contrato de locação com cláusula vinculante para ambas as partes de transferência da propriedade3(3)a. Classificação separada da base15(1):contraprestação obtida/a obter,sem próprioIVA,com composição/âmbito identificados. Não usar15(2)a da consignação,nem transformar mera opção de compra em cláusula vinculante.
- **P127**: Cessão onerosa ou gratuita de estabelecimento,totalidade ou parte de património susceptível de constituir ramo independente3(5). Adquirente é ou passa pela aquisição a sujeito passivo2(1)a e pratica operações com direito à dedução. Imposto não devido nem exigível no âmbito demonstrado;não isenção genérica,nem base/taxa zero ou nova dedução. Não impor condição autónoma de continuidade além dos factos da fonte.
CIVA Lei13/2016:3(3)a PDF6/p1426(264);3(5) PDF7/p1426(265);15(1) PDF13/p1426(271),páginas visualmente conferidas.Lei22/2022PDF3 mantém15(1);Lei10/2025PDF12 mantém3(3)a/3(5),não altera15.Rectificação2017 sem alteração destas disposições.Acervo seisPDF inventariado/hashes conferidos. 2026;P087baseMZN exacta,classificação pode manter-se com base indeterminada.P127classificação própria de não exigibilidade,sem preencher base/IVA comzero.Sem exigibilidade fiscal calculada,nova dedução,campo11,regularização ou totaisModeloA.P125categoria/elegibilidademargem eP123consignação mantidos separados. P087:entrega material e clausula vinculante para ambas as partes,base15(1) identificada sem dupla soma/subtraccao.P127:cessao onerosa/gratuita,conjunto autonomo,adquirente2(1)a eoperacoes comdireito adeducao;nao exigibilidade3(5) nao e isencao generica,basezero ou nova deducao. Entradas,resultados,histórico e relatório preservados.
Main/destino conferidos,fast-forward normal;116fechos anteriores preservados. Backup novo e restauro real isolado sem rede:174tabelas/369ficheiros/configuração. Delta instalado:revisão,manifesto/hash,20marcadores compilados,quatro hashes funcionais e simuladorHTTP200. PostgreSQL pela mesma identidade antes/depois:29fichas publicadas/28relações/408geometrias preservadas,diferenças apenas cache/sessões. Zero migrações/importações/permissões alteradas ou ensaios sintéticos no activo. Contenção conferida,não aplicada;leitores/histórico/outrosramos preservados. Release/backup anteriores conservados.
[Manifesto/recibo](../simulations/l1-property-transfers-delivery-20261025.json),registo`iva_l1_property_transfers_P087_P127_homologation_20261025`. **118entregues +14funcionaispendentes +P001=133**,sem candidatasQApor disponibilizar. P121digital/P084/P085 eL1abertos;P084/P085 apenas preparação/simulação condicionada,incluídos nos14;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas. Manter QAporramo eentregas conjuntas compativeis. Sequencia aceite:transversaisP104/P131/P132,depoisP002;digitalP121/P130;viagensP129/P133;importacoesP046/P047/P058/P059;documentaisP084/P085/P001 sem bloquear grupos independentes.
## 25/10/2026 — P087/P127 concluídos emQA e situação dos16IDs não entregues
Implementação`5999e35f`. Doisramos,trêstratamentos:locaçãovinculativa,cessãoonerosa ecessãogratuita. CIVA Lei13/2016:3(3)a PDF6/p1426(264);3(5) PDF7/p1426(265);15(1) PDF13/p1426(271),páginas visualmente conferidas.Lei22/2022PDF3 mantém15(1);Lei10/2025PDF12 mantém3(3)a/3(5),não altera15.Rectificação2017 sem alteração destas disposições.Acervo seisPDF inventariado/hashes conferidos.
- **P087**: Entrega material de bens em execução de contrato de locação com cláusula vinculante para ambas as partes de transferência da propriedade3(3)a. Classificação separada da base15(1):contraprestação obtida/a obter,sem próprioIVA,com composição/âmbito identificados. Não usar15(2)a da consignação,nem transformar mera opção de compra em cláusula vinculante.
- **P127**: Cessão onerosa ou gratuita de estabelecimento,totalidade ou parte de património susceptível de constituir ramo independente3(5). Adquirente é ou passa pela aquisição a sujeito passivo2(1)a e pratica operações com direito à dedução. Imposto não devido nem exigível no âmbito demonstrado;não isenção genérica,nem base/taxa zero ou nova dedução. Não impor condição autónoma de continuidade além dos factos da fonte.
2026;P087baseMZN exacta,classificação pode manter-se com base indeterminada.P127classificação própria de não exigibilidade,sem preencher base/IVA comzero.Sem exigibilidade fiscal calculada,nova dedução,campo11,regularização ou totaisModeloA.P125categoria/elegibilidademargem eP123consignação mantidos separados. Nenhuma condição autónoma decontinuidade,certificado ouaprovadorinventados;oâmbito funcionalindependente eoperações doadquirente sãofactos dafonte.BaseP087fornecida comcomposiçãocorrespondente,sem somarrendas/residual automaticamente.
Seistestesfrontend;APIprivada1teste/25asserções comrollbackemQAisolada55441;tipos/buildaprovados.Edge/CUA:P087semcontraprestaçãomantémclassificação/baseindeterminada;P127semconjuntoautónomonãorecebenãoexigibilidade;restaurofactos,gravação/recuperação/relatório3tratamentos/5versõesanteriores,base1250.123456MZN/duasbasesnull,IVA/taxanull. Todososlivrosanterioresconferidoscomcongelamento,116fechospreservados,semperdasconfirmadas;provasce9d649f/4cacef23reutilizadas.Relatório`docs\investmoz\simulations\iva-l1-property-transfers-qa-20261025.json`,evidência`C:\laragon\www\portal-investidor\outputs\iva-l1-property-transfers-20261025/verification.json` eimagem`qa-recovered-report.png`.Semescritanoactivo.
**116entregues +2QA +14funcionaispendentes +P001=133**. Homologação`ce9d649f`;entregaconjuntapendente.L1aberto;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas. Os16IDsabaixonãocontamcomonovaspendências:2jáestãoemQA,14aguardamdesenvolvimento/cotejo/documentação.
|ID|Natureza|Impedimento/trabalho restante|Próxima acção|
|---|---|---|---|
|P002|Desenvolvimento/consolidação|Falta percurso transversal que reutilize a localização já entregue e distinga direito à dedução.|Consolidar6/19 com2025,ligar resultados existentes e implementar classificação estrangeiro sem reabrir provas.|
|P046|Desenvolvimento/cotejo documental|Falta correspondência executável12(1)a com isenções internas em2026.|Cotejar lista2025 e regras9 já entregues;implementar importação sem activar benefício só pela descrição.|
|P047|Dependência documental específica/desenvolvimento|Faltam diploma especial e âmbito de cada benefício aduaneiro invocado.|Inventariar diplomas aplicáveis12(1)b e recolher regime/documento/bens/limites;implementar só correspondências demonstradas.|
|P058|Dependência documental específica/desenvolvimento|Faltam termos e limites da legislação aduaneira para regresso definitivo12(2)a;isenção/redução na proporção da redução de direitos.|Localizar disposições aduaneiras de emigrantes/funcionários/estudantes/bolseiros,condições de regresso e proporção;reutilizar documentos.|
|P059|Dependência documental específica/desenvolvimento|Falta despacho do Ministro das Finanças que fixa termos e condições dos mineiros12(2)b;isenção/redução proporcional à redução de direitos.|Localizar despacho referido em12(2)b e implementar beneficiário/serviço no estrangeiro/bens/condições/proporção.|
|P084|Dependência regulamentar específica;parcial disponível|Correspondência14(3) ainda não demonstrada;ModeloI.1 não concede benefício.|Localizar diploma que acompanhaModeloI.1,demonstrar alcance aquisição/importação14(2)a;preservar estados/âmbito de decisão.|
|P085|Dependência regulamentar específica;parcial disponível|Correspondência14(3) com procedimento emergência/doação ainda não demonstrada.|Pesquisar conjuntamente comP084,demonstrar percurso calamidade14(2)b sem estender automaticamente à importação.|
|P087|QA concluído;entrega conjunta pendente|Desenvolvimento e QA concluídos;falta instalação.|Entregar candidata conjuntaP087/P127,reutilizar provas,backup/restauro fresco e delta instalado.|
|P104|Dependência cambial específica/desenvolvimento|Falta regra cambial aplicável15(8)/(9),momento/opção e fonte/data da taxa.|Cotejar texto e legislação cambial referida;implementar moeda/taxa/data rastreáveis sem taxa actual por defeito.|
|P121|Desenvolvimento/cotejo regulamentar digital|Falta percurso digital2025 e correspondência das obrigações26/32/33.|Consolidar6(7)k/6(9),residência/EP/utilização e responsável;implementar comP130 quando compatível.|
|P127|QA concluído;entrega conjunta pendente|Desenvolvimento e QA concluídos;falta instalação.|Entregar candidata conjuntaP087/P127,reutilizar provas,backup/restauro fresco e delta instalado.|
|P129|Dependência regulamentar específica/desenvolvimento|Falta correspondência do regime especial das agências4(5),com componentes da operação.|Cotejar RIVA/regulação especial,conta própria/terceiros e custos efectivos;implementar antes de apurar margem.|
|P130|Desenvolvimento/cotejo regulamentar digital|Definição3(7) disponível;falta percurso de transmissão/localização e obrigações aplicáveis.|Reutilizar6 e consolidar2025 comP121;separar bens de serviços e não activar tributação só pela categoria.|
|P131|Desenvolvimento/cotejo de eventos|Falta motor de eventos7/8 para entrega,serviço,importação,instalação e operações continuadas.|Cotejar datas/excepções e documento/pagamento;implementar por evento e ligar resultados já entregues.|
|P132|Desenvolvimento/cotejo de eventos|Falta exigibilidade dos eventos específicos de uso próprio/comissão/embalagens/adiantamentos.|Cotejar7/8 e referências de cada operação;reutilizarP123/P126 sem atribuir exigibilidade pela data de conferência.|
|P133|Desenvolvimento/dependência de regime|Falta motor de saída de regimes suspensivos e evento das viagens,no regime específico.|Cotejar7/8/14 e procedimento de saída;alinhar viagens comP129,sem bloquear eventos independentes.|
## 25/10/2026 — P123/P126 entregues conjuntamente
Homologação **`ce9d649f`**,sobre`019bcbad`;candidata`a5b1ae66` expressamente aceite pela Tempo. Dois ramos,quatro percursos e quatro exemplos QA;uma integração/backup/restauro/instalação/conferência,provas QA reutilizadas.
- **P123**: Mercadorias enviadas à consignação não devolvidas em180dias da entrega ao destinatário,3(3)d. Data de entrega/destinatário,conjunto não devolvido e data de conferência identificados;prazo de180dias calculado. No dia180 o prazo ainda decorre;após o prazo,a transmissão é identificada neste recorte,sem calcular exigibilidade/base/IVA.
- **P126**: Presunções ilidíveis3(4):transmissão de bens adquiridos/importados/produzidos não localizados nos estabelecimentos,ou consumo excessivo face ao volume de produção;e aquisição dos bens encontrados nesses locais. Levantamento,estabelecimentos,conjunto/período e prova em contrário separados. Desconhecido indeterminado;prova identificada afasta presunção apenas no âmbito declarado,sem concessão de isenção.
CIVA Lei13/2016,3(3)d,PDF6/p1426(264);3(4),PDF7/p1426(265),páginas digitalizadas visualmente conferidas.Lei22/2022 não altera3;Lei10/2025 PDF12 mantém3(3)d/3(4).Rectificação2017 não altera estas disposições. Acervo completo seisPDF inventariado e hashes conferidos. 2026,data de conferência/âmbito identificados;classificação da operação,prazo e presunções,não base/exigibilidade/taxa/IVA,nova dedução/regularização/campo11 ou totaisModeloA.P123 não são embalagensP102;P126 não comprova aquisição efectiva/factura ou elegibilidade para margemP092/P093/P125.Devoluções parciais separadas por conjunto;devolução posterior não apaga histórico. P123 mantém a designação corrigida de mercadorias enviadas à consignação,não devolvidas em180dias;não são embalagensP102.P126 mantém prova em contrário explícita e delimitada:desconhecido indeterminado,prova referenciada afasta apenas a presunção no âmbito declarado.Não há isenção ou margem automática,nem nova dedução/campo11 ou regularização. Entradas,resultados,histórico e relatório preservados.
Main/destino conferidos,fast-forward normal;114fechos anteriores preservados. Backup novo e restauro real isolado sem rede:174tabelas/369ficheiros/configuração. Delta instalado:revisão,manifesto/hash,20marcadores compilados,quatro hashes funcionais e simuladorHTTP200. PostgreSQL pela mesma identidade antes/depois:29fichas publicadas/28relações/408geometrias preservadas,diferenças apenas cache/sessões. Zero migrações/importações/permissões alteradas ou ensaios sintéticos no activo. Contenção conferida,não aplicada;leitores/histórico/outrosramos preservados. Release/backup anteriores conservados.
[Manifesto/recibo](../simulations/l1-goods-presumptions-delivery-20261025.json),registo`iva_l1_goods_presumptions_P123_P126_homologation_20261025`. **116entregues +16funcionaispendentes +P001=133**,sem candidatasQApor disponibilizar. P121digital/P084/P085 eL1abertos;P084/P085 apenas preparação/simulação condicionada,incluídos nos16;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas. Manter QAporramo eentregas conjuntas compatíveis.
## 25/10/2026 — P123/P126 concluídos emQA:consignação e presunções
Implementação`f640e193`. Doisramos,quatropercursos:consignação não devolvida180dias,bens não localizados,consumo excessivo,aquisição presumida debens encontrados. CIVA Lei13/2016,3(3)d,PDF6/p1426(264);3(4),PDF7/p1426(265),páginas digitalizadas visualmente conferidas.Lei22/2022 não altera3;Lei10/2025 PDF12 mantém3(3)d/3(4).Rectificação2017 não altera estas disposições. Acervo completo seisPDF inventariado e hashes conferidos.
- **P123**: Mercadorias enviadas à consignação não devolvidas em180dias da entrega ao destinatário,3(3)d. Data de entrega/destinatário,conjunto não devolvido e data de conferência identificados;prazo de180dias calculado. No dia180 o prazo ainda decorre;após o prazo,a transmissão é identificada neste recorte,sem calcular exigibilidade/base/IVA.
- **P126**: Presunções ilidíveis3(4):transmissão de bens adquiridos/importados/produzidos não localizados nos estabelecimentos,ou consumo excessivo face ao volume de produção;e aquisição dos bens encontrados nesses locais. Levantamento,estabelecimentos,conjunto/período e prova em contrário separados. Desconhecido indeterminado;prova identificada afasta presunção apenas no âmbito declarado,sem concessão de isenção.
**Correcção documentalP123:**designação anterior de embalagens retornáveis não corresponde ao artigo3(3)d;este refere mercadorias enviadas à consignação. Corrigida na mesma matriz e histórico conservado.P102embalagens e114fechos permanecem preservados.
2026,data de conferência/âmbito identificados;classificação da operação,prazo e presunções,não base/exigibilidade/taxa/IVA,nova dedução/regularização/campo11 ou totaisModeloA.P123 não são embalagensP102;P126 não comprova aquisição efectiva/factura ou elegibilidade para margemP092/P093/P125.Devoluções parciais separadas por conjunto;devolução posterior não apaga histórico. UTCdiascivis,limite entrega+180dias;nodia180oprazo decorre até fimdia,conferência posterior identifica transmissão sem determinar exigibilidade fiscal.P126conserva diferença entre factos,desconhecido e provaemcontrário;prova referenciada afastaapenaspresunçãonoâmbito declarado.Não se impõe certificado/aprovador nemlimiarpercentual deconsumo excessivo. Quantidade/unidade/comparaçãofaceprodução identificadas.Trocarpercurso conservareferências/camposocultos mas exige rever confirmações.
Sete testesfrontend;APIprivada1teste/30asserções,rollbackemQAisolada55441;tipos/build aprovados.Edge/CUA:prova desconhecida indeterminada,prova referenciada afasta semisenção;restauro dosfactos,gravação/recuperação/relatório4operações,4versõesanteriores,194dias/limite2026-11-28.Base/IVA/taxanull.Históricopresunçãoindeterminada/afastadapreservado. Todososlivros anteriorescomparadoscomcongelamento;114fechos preservados,semperdasconfirmadas,provas019bcbad/4ef7be3dreutilizadas.Relatório`docs\investmoz\simulations\iva-l1-goods-presumptions-qa-20261025.json`;evidência`C:\laragon\www\portal-investidor\outputs\iva-l1-goods-presumptions-20261025/verification.json`,imagem`qa-recovered-report.png`.Sem escrita noactivo.
**114entregues +2QA +16funcionaispendentes +P001=133**. Homologação`019bcbad`;entregaconjuntapendente.L1aberto;P00105/06;P121digital/P084/P085pendentes;bebidasL2/L3;Estatísticas/IAadiadas.
## 25/10/2026 — preparação P123/P126
Inventariados114fechos,sem perdas confirmadas;provas019bcbad/4ef7be3d reutilizadas,todososlivros/resultados/históricos congelados.Sem escrita noactivo.P123:correcção de designação na mesma matriz;CIVA3(3)d refere mercadorias enviadas à consignação,não embalagens;P102preservado.P126:3(4)presunções ilidíveis de transmissão de bens não localizados/consumo excessivo e aquisição de bens encontrados.Cotejo2016PDF6–7 e2025PDF12,sem alteração3(3)d/3(4).QAporramo eentrega conjunta futura.
## 25/10/2026 — P092/P093/P125 entregues conjuntamente
Homologação **`019bcbad`**,sobre`6c12aabb`;candidata`0ebb20c8` expressamente aceite pela Tempo. Três ramos,duas fórmulas,quatro categorias e oito exemplos QA;uma integração/backup/restauro/instalação/conferência,provas QA reutilizadas.
- **P092**: Revendedor: margem individual positiva da contraprestação total com IVA menos preço de compra justificado; dividir por 1.16 e arredondar a base à unidade. Perda conservada no bem, sem compensação entre transmissões. Opção pelo regime normal fica separada.
- **P093**: Organizador em nome próprio por conta do comitente, contrato de comissão e venda em leilão: base = facturado ao comprador menos líquido do comitente menos IVA próprio identificado. Líquido = adjudicação menos comissão. IVA desconhecido não é zero.
- **P125**: Classificação própria: bem usado reutilizável, arte, colecção ou antiguidade superior a 100 anos; critérios de 3(6) conservados. Categoria identificada não activa automaticamente a margem. Tiragem limitada a 200 exemplares e cerâmica única executada/assinada pelo artista nos percursos respectivos.
CIVA Lei13/2016:3(3)g/3(6),PDF7,p1426(265);15(2)f/g,PDF13,p1426(271). RIVA Decreto7/2008,BR16-I de16/04/2008,arts47–49,PDF8–9,p106–107. Lei22/2022 PDF3 mantém15f/g e fixa17(1)16%. Lei10/2025 não altera15/17 e revoga regimes35/42;referência antiga não os reactiva. Rectificação2017 sem alteração destas disposições. 2026/MZN,transmissões internas tributáveis e aquisição nacional com qualidade do fornecedor/comitente demonstrada. Duas fórmulas, quatro categorias, oito exemplos e três ramos; uma operação individual, sem dupla contagem. Apenas classificação/base:sem IVA calculado,nova dedução,campo11,regularização ou totaisModeloA. IVA identificado no leilão é componente referenciada. Exportação isenta e opção normal separadas; origens legadas35/42 permanecem indeterminadas. Classificar o bem não demonstra por si elegibilidade para margem:qualidade do fornecedor/comitente,aquisição nacional,operação interna tributável,opção do revendedor e condições próprias permanecem separadas. Uma operação por bem,sem dupla contagem ou compensar perdas entre bens. IVA próprio identificado no leilão é componente referenciada,não IVA calculado neste incremento. Nenhuma nova dedução/campo11 ou regularização. Entradas,resultados,histórico e relatório preservados.
Main/destino conferidos,fast-forward normal;111fechos anteriores preservados. Backup novo e restauro real isolado sem rede:174tabelas/369ficheiros/configuração. Delta instalado:revisão,manifesto/hash,20marcadores compilados,quatro hashes funcionais e simuladorHTTP200. PostgreSQL pela mesma identidade antes/depois:29fichas publicadas/28relações/408geometrias preservadas,diferenças apenas cache/sessões. Zero migrações/importações/permissões alteradas ou ensaios sintéticos no activo. Contenção conferida,não aplicada;leitores/histórico/outrosramos preservados. Release/backup anteriores conservados.
[Manifesto/recibo](../simulations/l1-secondhand-delivery-20261025.json),registo`iva_l1_secondhand_P092_P093_P125_homologation_20261025`. **114entregues +18funcionaispendentes +P001=133**,sem candidatasQApor disponibilizar. P121digital/P084/P085 eL1abertos;P084/P085 apenas preparação/simulação condicionada,incluídos nos18;P00105/06;bebidasL2/L3;Estatísticas/IAadiadas. Manter QAporramo eentregas conjuntas compatíveis.
## 25/10/2026 — P092/P093/P125 concluídos em QA: segunda mão e leilões
Implementação `b0818c01`. Três ramos, duas fórmulas de base e quatro categorias, conferidos em oito exemplos. A classificação P125 partilha a mesma operação com P092 ou P093; não soma uma segunda base. CIVA Lei13/2016:3(3)g/3(6),PDF7,p1426(265);15(2)f/g,PDF13,p1426(271). RIVA Decreto7/2008,BR16-I de16/04/2008,arts47–49,PDF8–9,p106–107. Lei22/2022 PDF3 mantém15f/g e fixa17(1)16%. Lei10/2025 não altera15/17 e revoga regimes35/42;referência antiga não os reactiva. Rectificação2017 sem alteração destas disposições.
@@ -4889,3 +5672,153 @@ Preservação por comparação dos registos preexistentes: **32 documentos, 31 r
**Guia da equipa no destino:** abrir a [gestão única](https://teste-investidor.tempo.co.mz/gestao-conteudos) → **Gerir conteúdos, versões e histórico** → escolher **Rascunhos**, pesquisar o título e abrir **Editar artigo** ou **Ler / pré-visualizar artigo**. Corrigir o texto e o tratamento de imagem → **Pré-visualizar alterações** → **Guardar artigo como rascunho** → **Ler revisão guardada**. Usar **Voltar ao acervo para metadados e publicação** para corrigir título, descrição, origem, enquadramento, acesso e direitos. **Publicar** continua separado, conforme a autorização e os campos existentes, quando a equipa decidir publicar. Guardar uma edição de um artigo publicado retira-o até nova publicação expressa. Não há comandos ou intervenção do Codex neste percurso corrente.
Recibo: [cadastro, acessos e preservação no destino](legacy-editorial-installation-receipt-20261022.json). A [lista única dos 50](../v2/auditoria-portal/legado-correspondencia-integral.md) e o CSV existente contêm os endereços **privados** efectivos dos 28; não são links de artigos já publicados. Capturas locais em `outputs/legacy-editorial-install-20261022/`, incluindo `editor-recovered-homologation.png`. Mantêm-se dois originais incompletos e a revisão editorial dos textos pela equipa. A Tempo não declarou ter conferido commit, pacote ou guia. **A carteira vazia e os projectos âncora continuam como falha separada, sem causa confirmada; esta entrega não a resolve.** (Saldo histórico desta entrega de 22/10; superado pela reposição auditada e reconciliação de 23/10 descritas acima. Não representa o estado actual.)
## 25/10/2026 — E entregue; continuação de L3
E instalado em `7ad187f9`, candidata `47086625`; C/D `de36f028` e recibo `46944402` preservados. Backup novo e restauro real isolado confirmam174tabelas;369ficheiros/configuração e12ficheiros de execução conferidos. Manifesto/revisão,marcadoresE/C/D e simuladorHTTP200 confirmados. Apenas cache/sessions podem variar;sem migrações,importações ou recálculo de históricos. Pipeline:746testes frontend,59testesAPI/317asserções econtrolo1/3106 passaram.
Mantém16MZN deIVA documental,zero de dedução nesta via,12reconhecidos,7recebidos e5porreceber. Não éIVA do fornecimento nem pagamento bancário. Recibo:`docs/investmoz/simulations/l3-e-delivery-20261025.json`. L3permanece aberto;repartição/reconciliação,apuramentos eformalidades avançam separadamente emQA. L1conserva129fechos eP058/P084/P085/P001;L2conserva18(6)+mista,sucessivas/plurianuais,erros/incobráveis. ProcedimentoTempo intacto;estatísticas/IAadiadas.
## 25/10/2026 — inventário antes dos novos testes de parcelas/indeterminados/formalidades
E7ad187f9/recibodbeaf886 eC/Dde36f028/46944402 preservados;129fechosL1 eP058/P084/P085/P001,limitaçõesL2 eprocedimentoTempo permanecem na matriz existente. Sem perdas confirmadas no delta;provas aceites reutilizadas. Inventário completo das fontes fiscais eanexos acessíveis nas pastas autorizadas Notas/Modelos antes de seleccionar consulta:outputs/iva-l3-e-partitions-20261025/preservation-before-tests.json. Escolha técnica de representação:intervalos doIVA documental evitam sobreposição,sem criar requisito organizacional ou novo benefício. Desenvolvimento e novos testes apenasQA.
## 25/10/2026 — parcelas de E, diagnóstico e preparação formal em QA
E entregue mantém `7ad187f9`, recibo `dbeaf886`, com16MZNdocumentais/zero de dedução nesta via/12reconhecidos/7recebidos/5porreceber. Este incremento permanece emQA,sem instalação,migrações ou importações. C/D eprocedimentoTempo preservados;L3continua aberto.
Na restituição existente,escolher linha integral ou parcela documentada. Os limites representam partes doIVA documental:0–6 e6–16 não se sobrepõem num total16. A parte não utilizada não recebe destino/dedução automáticos. Para uma dedução efectiva anterior estável6,indicar a sua afectação documentada0–6;somente6–16=10 pode seguirE. O livro original de dedução mantém-se. Sem suporte,montantes históricos divergentes,sobreposição ou dedução integral16,não há restituição presumida. A anulação/redução da dedução exige fundamento,sequência e tratamento fiscal próprios ainda não automatizados nesta via;editar a aquisição ou preparar uma correcção não liberta a parcela. Não usar51(4),que exige manutenção do âmbito/direito,como regra automática de mudança paraE. Livros/históricos efectivos recuperados impedem duplicação;isto não é reconciliação central daAT.
O componente de aquisições mostra,por contexto,os cálculos guardados indeterminados:montantes em falta,motivo,dados necessários econdição de resolução. Base/margem,localização ou momento determinados não significamIVA liquidado. Fornecimento13(2),margens/viagens/eventos e integrações ainda limitadas conservam IVA próprio indeterminado;os16da aquisição não o substituem. Os mesmos diagnósticos seguem no relatório,com entradas congeladas preservadas. O inventário de67contextos/331ocorrências do corpusQA inclui provas negativas deliberadas,não331novos requisitos. Evidência:outputs/iva-l3-e-partitions-20261025/calculation-inventory.json;matriz existente mantémAUD-SIM-INT02.
Preparação dos quadros8–11 doVATReturn recebido:AB19/20/22–27;C21–24;D25/26/27. ExportaçãoHTML para conferência reutiliza apenas campos identificados,resultados congelados efracções exactas;campos05/06,assinaturas,meio de pagamento e uso dos serviços não são preenchidos por presunção. Egera dossier de apoio próprio,sem o transformar em campo27. A exportação não atesta edição electrónica nem submissãoAT. DependênciaC:ModeloB/RCIVA15 versus substituiçãoModeloA do exemplar;D:exemplares/instruções dosDecretos78/2017,30/2022,52/2025 identificados antes;E:modelo/procedimento específico13(2). Retomar cada dependência apenas com exemplar/instrução pertinente;sem pesquisas repetidas sem evidência nova e sem importar condições deD paraE.
Verificação:43testesfrontend dirigidos;API1teste/105asserções,QA55441 comrollback erecuperação exacta;TypeScript/build passaram. UIreal:rejeita5–16 sobre dedução0–6;repor6–16 recupera pedido10;gravar/recuperar/relatar preserva restantes mapas;HTML realmente descarregado econferido.37fontes/anexos acessíveis conservaram hashes. A baseQA estava parada;arranque erecuperação automática concluídos antes do teste privado,sem usar a baseactiva. ReciboQA:docs/investmoz/simulations/l3-e-additional-coverage-qa-20261025.json.
L1conserva129fechos,P058/P084/P085 eP00105/06. L2mantém18(6)+mista,sucessivas/plurianuais,erros/incobráveis. ProcedimentoTempo pedido→decisão→formulário intacto. Estatísticas/IAadiadas.
Limites das parcelas também aceitam fracções exactas,por exemplo16/3. Dedução anterior16/3 eparcelaE32/3 somam16sem aproximação;indicar5.333333 como início da restituição sobrepõe-se à dedução exacta e é recusado. Escolha técnica de representação,sem nova condição fiscal ou organizacional.
## 25/10/2026 — P084/P085 concluídos no procedimento operacional da Tempo
Decisão expressa desta sessão:retirada a pesquisa de outro procedimento como condição de fecho. A origem é o procedimento operacional comunicado pelaTempo,não uma publicação normativa. Referência implementada:pedido escrito ao Ministério das Finanças/AT → decisão → submissão externa do formulário com o despacho de isenção anexado.
P084conserva pedido fundamentado epossibilidade de deferimento ou recusa. P085conserva finalidade de emergência eassistência humanitária. Emambos,o benefício limita-se aos bens,operações,período econdições do despacho. Pedido apresentado não concede automaticamente;decisão eformulário mantêm documentos,identificadores/hash e histórico. O fecho é do percurso implementado,não declaração de submissão real de todos os pedidos ou de benefício geral.
Prova já aceite reutilizada:iva-l1-tempo-offers-fx-qa-20261025.json,UIgravação/recuperação/relatório,pacotesP084/P085 eentrega e38aa749 eml1-tempo-offers-fx-delivery-20261025.json,preservada até7ad187f9. Os caminhos deworkflow/anexos mantêm o delta aceite. Sem nova pesquisa,ronda funcional,alteração de código,escrita de dados activos ou validação jurídica genérica. P084/P085 ficam concluídos nesse âmbito na matriz existente;131itensL1concluídos,restamP058 eP00105/06,total133. As condições anteriores de pesquisa/correspondência normativa ficam superadas;linhas anteriores integralmente preservadas no recibo de fecho.
Recibo:docs/investmoz/simulations/l1-p084-p085-tempo-operational-closure-20261025.json. L2residuais eL3aberto mantêm-se. Eentregue7ad187f9/recibodbeaf886 eQAb189d0fa preservados. Estatísticas/IAadiadas.
## 25/10/2026 — incremento QA, saldo concreto deL3 e apresentação directa deP001
InstaladoE7ad187f9:16MZN deIVA documental,zero de dedução nesta via,12reconhecidos,7recebidos e5porreceber. C/Dentreguesde36f028 preservados. b189d0fa permanece emQA;acrescenta repartição6+10numa linha16,reconciliação de dedução efectiva estável6com restituição complementar10,fracções exactas16/3+32/3,impedimento de sobreposição e preservação de versões. Não automatiza anulação da dedução original. Acrescenta diagnóstico por cálculo epreparaçãoHTML dos campos identificadosAB19/20/22–27,C21–24,D25–27;Econtinua dossier próprio,sem campo27. Provas anteriores reutilizadas:43testesfrontend,API1/105,tipos/build,gravação/recuperação/relatório eexportação;nenhuma nova ronda nesta explicação.
SaldoL3:entregar o incrementoQA pelo processo existente;implementar regularizações/sequência para mudança ou anulação de deduções eversões divergentes;resolver os cálculos próprios ainda indeterminados de fornecimentos/margem/viagens/eventos e suas integrações;completar formalidadesC(ModeloB/RCIVA15 versus exemplarModeloA),D(exemplares/instruções específicos78/2017,30/2022,52/2025)eE(modelo/procedimento13(2)). Cada item econdição concreta constam do recibo existente l3-e-additional-coverage-qa-20261025.json:current_L3_balance_20261025. Limite dos livros recuperados não cria obrigação nova de reconciliação centralAT. IVA da aquisição nunca substitui IVA do fornecimento. Sem pesquisa repetida sem evidência nova.
P001:mostrados directamente os campos do original recebido NovoModeloA.docx,hash62c198e9,imagem incorporada7ae7f02e. Campo05:"Vendas isentas com direito à dedução". Campo06:"Op.do n.º1,al.b)doart.º18doCIVA",agrupado com07sob"Isentas". Recorte:outputs/l3-saldo-p001-20261025/campos-05-06-exemplar-recebido.png. Pergunta específica àTempo:que operações pretende inscrever no06,distintas das do05? P001permanece pendente desse esclarecimento;original/remissão não foram corrigidos nem substituídos por outra edição. Nenhuma nova pesquisa jurídica,teste,importação ou alteração de dados activos.
L1mantém131/133;P058três casos residuais eP00105/06. P084/P085permanecem fechados no âmbito operacionalTempo,sem nova pesquisa. ResiduaisL2 eEstatísticas/IAadiadas preservados.
## 25/10/2026 — inventário anterior à reconciliação funcional deP001
Tempo conferiuVATReturn(1).pdf e disposição doquadro8:05vendas isentas comdireito;06operações18(1)b;07operações semdireito;14=01+03+05+06+07. A identificação já está esclarecida;prossegue apenas reconciliação dos tratamentos existentes,separação05/06 eausência de duplicação. Não procurar outro modelo nem presumir estrangeiro=06.131fechos anteriores,incluindoP084/P085no procedimentoTempo,foram inventariados epreservados antes dos novos testes. Fontes/anexos acessíveis inventariados emoutputs/p001-reconciliation-20261025/preservation-before-tests.json. E7ad187f9 eQAb189d0fa preservados;L3aberto;sem alteraçõesactivas.
## 25/10/2026 — P001 reconciliado emQA no catálogo existente;entrega pendente
A conferência comunicada pelaTempo doVATReturn(1).pdf esclarece05/06/07e14. Não falta procurar outro modelo. Catálogo actual inventariado integralmente:109tratamentos,47atribuídos05,45atribuídos07,4atribuídos01,4atribuídos03e9semcampo/classificação determinada;nenhumatribuído06. Fundamentos/condições próprios mantidos. Outros livros de classificação/base/eventos não são somados automaticamente como operações06. A localização estrangeira continua análise própria,semcampo06presumido.
Correcção incremental:06soma apenas as suas linhas,como01/03/05/07,emvezdezeroimposto no código;cada identidade pertence no máximo aumcampo de base. Repetir a mesma identidade05/06ouduasvezesno05érecusado.14continua01+03+05+06+07,semrepetição.06sóézeroquandooperíodoestácompletoesemlinhas06;operaçãoaindadesconhecidaouperíodoincompletofaz06/14permaneceremindeterminados. Não foi inventado tratamento fiscal positivo06. Uma sonda mecânica de agregação não é apresentada como esse tratamento.
O consumidorL2reutilizaaclassificaçãoactual,sem somar novamente aexecuçãogeral01/02. Corrigido aviso legado que dizia faltar01/02quandoL1jáosdetermina,mesmo semaquisições. Snapshots/históricos aceites não foram reescritos;edições deliberadas conservam resultados anteriores e exigem nova versão.
Prova:23testesfrontend(8novosP001+15dirigidosanteriores),TypeScript ebuildexit0. Componentesreais:01=100/03=200/05=300/06=0/07=400e14=1000MZN;gravar→recuperar→relatórioconfirmamcontagemúnica. CasoIVAincluído5%mantém14exacto18800/21;desconhecidosnãoviramzero. Contrato/APIprivadosexistentesreutilizados;nenhumnovoformatoouendpointnemnovarondaAPI. Fontes/anexosaccessibleisinventariadosmantêmhashes. Recibo:docs/investmoz/simulations/p001-treatment-reconciliation-qa-20261025.json.
P001concluídoemQAapenasnoâmbitodacorrespondênciadostratamentosexistentes;entregaGitpendente,nãodisponívelnoactivo. SaldoL1:131entregues+1QA(P001)+1funcional(P058)=133. P084/P085mantêmfechooperacionalTempo,semreabrirpesquisa. P058mantémostrêscasosresiduais. L2/L3limitaçõesprópriaspreservadas;E7ad187f9entregueeb189d0faQA;estatísticas/IAadiadas.
## 25/10/2026 — rectificação deP001:correspondência positiva06ainda não demonstrada
A identificação05/06/07easprovas deexclusãoindevida/anti-duplicação são aceites epreservadas. Não demonstram,por si,quais operações alimentam legitimamente06. A conclusão funcional anterior foi excessiva nesse ponto:P001mantém-se emQAparcial,não encerrado funcionalmente. Saldo comunicado preservado:131entregues+P001emQA+P058residual=133;P084/P085fechados.
Auditoria das provas existentes,sem repetição de testes:nenhumdos109tratamentosestáatribuído06;oexemploUIusa06=0. aggregation-only-06éuma cópia sintética de resultado para testaragrupamento,nãoumaoperaçãofiscallegitimamenteclassificada. Recibo actual:p001-treatment-reconciliation-qa-20261025.json:positive_field06_case;reciboanteriorpreservadoemoutputs/p001-positive-case-audit-20261025/receipt-before.json.
Lacunaúnica:operação concreta e correspondência depreenchimento que liguem legitimamente a baseao06,distinta de05. OacervojáconferidoCIVA13/2016,PDF14/p1426(272),18(1)bdescreveimpostodevidopelaimportaçãodebens;issonãoforneceporsiabase06doquadro8. Remissãopreservada,semcorrigi-lapara19ouatribuirimportação/estrangeiroautomaticamente06. Nãoépediadaprocura deoutromodelonemvalidaçãogenéricadafonte.
Depois deidentificadaessacorrespondência,conferirapenasocasopositivodirigido:basepositivaem06,mesmaoperaçãoausented05,14incluiabaseumavez,gravação/recuperação/relatóriocomdocumentosehistóricopreservados. Os23testesetipos/buildanterioresmantêmaaceitaçãonoseuâmbito;nãoseabrenovarondaglobal. Nestapassagem,nãohouveimplementação,testesnovosouescritaactiva. L2/L3/EentregueecoberturaQA,estatísticas/IAadiadaspreservados.
## 25/10/2026 — responsabilidade técnica deP001
A identificação do exemplar e o critério deaceitação já foram definidos pelaTempo. Foi indevido devolver ao responsável a identificação da operação positiva como condição de prosseguimento. A reconciliação técnica da remissão e o caso dirigido pertencem aoCodex;P001nãoaguarda nova decisão organizacional ou informação impostaàTempo. Esta correcção de responsabilidade não transforma a sonda mecânica em prova fiscal nem altera os resultados anteriores. P084/P085mantêm-sefechados;saldoeâmbitosanteriorespreservados.
## 25/10/2026 — prosseguirL3eadvancerL4;residuaissem bloqueio
DecisãoTempo:P001ficaresidual,provaspreservadasesematribuiçãoautomática06;retomaapenascomesclarecimentoconcretonovo.P058mantémâmbitoparcialdisponíveleexclusõesidentificadas.P084/P085mantêmfechooperacional.Avance:coberturaadicionalL3b189d0faQA,conferirapenasofaltanteepreparentregacompatível;reconciliarsaldoL3edepoisL4ISPCconformeplanoexistente.Semrepetirpesquisa/testesdosmesmospontossemnovainformação.Limitaçõesvisíveisnãoimpedempercursosindependentes.
CandidataisoladaemC:/laragon/www/portal-investidor-l3-qa-20261025,ramoscodex/l3-additional-delivery-20261025,baseb189d0fa/7ad187f9;provas43frontend/API1-105reutilizadas,nova conferência apenas dehashes,compatibilidadeecompilação. Preparação nãoéinstalação;execuçãoexigecomparaçãoautenticadaebackup/restauro fresco.
CandidataL3preparada:`0f4df8a4`,ramo`codex/l3-additional-delivery-20261025`. Buildetipos passaram;12ficheirosdedelta(10funcionaisjáaceites+2textosdelimitaçãoP001),7marcadorescompilados,schemas/PHP/configurações/dependênciassemalterações. Main/manifestopúblicoconferidosem7ad187f9;simuladorHTTP200. Scriptsprivadosdepreflight,backup/restauro,conferênciaprotegidaepúblicapreparadoscomguardasdenovoestado. Nenhumteste funcionalrepetido,nenhumaescritaactiva. Próximaexecuçãodaentrega:comparaçãoautenticadafresca,backup/restaurorealeconferênciadodelta. Não declararinstaladopelapreparação.
## 25/10/2026 — inícioL4-AISPCdepoisdapreparaçãoL3
L3candidata0f4df8a4preparada,provasaceitesreutilizadas;entregaefectivaexigepreflightautenticadoebackup/restaurofresco. SaldoL3mantémregularizaçõessequenciais/estornos,apuramentospróprios eformalidadesC/D/E;limitecontacentralATnãoénovacondiçãoorganizacional. NenhumresidualP001/P058bloqueiaL4.131fechosL1eP084/P085preservadosantesdosnovostestes. Acervofiscal/legislação/anexosacessíveisinventariadosemoutputs/ispc-l4a-20261025/preservation-before-tests.json.
L4-Aprimeiroincremento:enquadramentoelegibilidade2026,MZN,territórionacional,tipodepessoa,actividade,referênciaanual/prévisão,incompatibilidadesarts2–5,opçãoseparada.Reutilizarcamposválidosepreservarediçõesdeliberadas. Lei9/2025republicadaéfonteaceite;nenhumaaprovaçãogenéricaFiscalistaécriadacomoetapa. Apuramentotrimestral,escalões/excesso,mínimo/retençõeseformalidadescontinuamtrabalhopróprioL4seguinte;nenhumimpostocalculadoouregimeadoptadopelainventariação.
## 25/10/2026 — L4-A ISPC: primeiro incremento QA
Implementado enquadramento preliminar2026/MZN da actividade habitual pelos arts2–5 da Lei9/2025: referência anterior2025 ou previsão de início2026,limite4.000.000 inclusivo,incompatibilidades e dados concretos em falta. Regra183dias restrita aos serviços8(1)c. Opção permanece separada;seleccionarISPC não adopta regime. Perfil reutilizado com prévia e confirmação das divergências,edições deliberadas e outros livros preservados. Livro por contexto e histórico integrado no relatório existente.
Provas novas:12testesfrontend,tipos/build exit0. Não foram repetidos os testes aceites deL1/L2/L3/P001. Serialização/recuperação cobertas nos novos testes;transporte privado existente reutilizado. Demonstração visual integrada e gravação privada deste incremento continuam antes de propor entregaL4;nenhuma escrita activa. Recibo:ispc-l4a-eligibility-qa-20261025.json.
L4 continua aberto:apuramento trimestral,escalões e actividades mistas/excesso,mínimo500,retenção5%,percurso ocasional e formalidades próprias. As correspondências concretas serão tratadas no incremento seguinte,sem aprovação jurídica genérica ou bloqueio pelos residuaisP001/P058. L3 permanece aberto com candidata0f4df8a4 preparada e execução autenticada/backup-restauro por realizar. P084/P085 fechados;estatísticas/IA adiadas.
## 25/10/2026 — L4 ISPC: apuramento trimestral e percurso demonstrado em QA
O enquadramento e a opção guardados alimentam o apuramento trimestral de 2026 em MZN. O volume anual de acesso anterior, o volume anual do escalão e a base trimestral são distintos. Calculam-se as taxas de 3/4/5%, os serviços a 12/15%, a cumulação pela taxa maior e o excesso a 20%, com valores racionais exactos. O acumulado anterior impede repetir o excesso. O ano encerrado reconcilia os quatro trimestres; uma previsão permanece cenário. A prestação inferior a 500 MZN dispensa pagamento e conserva a declaração; exactamente 500 MZN mantém pagamento. A retenção de 5% nas aquisições ocasionais do artigo 12(3–4) tem livro e limite global de 2.500.000 MZN próprios, sem reduzir o imposto do adquirente.
Percurso demonstrado com componentes reais: elegibilidade/opção → cálculo → gravação → recuperação → relatório financeiro. Exemplo do T2: base de 200.000 MZN, taxa de 12%, imposto/prestação de 24.000 MZN e opção documentada em 01/01/2026. A API privada em QA passou 1 teste com 21 asserções, rollback e recusa de acesso a outra conta (404); os livros anteriores foram preservados exactamente. Passaram 13 testes novos (10 trimestrais e 3 de retenção), tipos e compilação. As fontes, provas aceites de L1/L2/L3/P001 e os 12 testes de L4-A foram reutilizados. Recibo: ispc-l4-quarterly-qa-20261025.json; provas: outputs/ispc-l4b-20261025.
O âmbito habitual trimestral está demonstrado em QA, ainda não instalado. O saldo de L4 fica delimitado às operações ocasionais próprias do artigo 3(3–4), às aquisições acima do limite global e à correspondência de formulários, instruções e regulamentação de 2026. O aviso primário do Governo sobre a aprovação de novo regulamento não fornece o articulado nem o modelo. Não se inventam formulários, prazos ou aprovadores; essas dependências não bloqueiam o cálculo habitual demonstrado. P001/P058 permanecem residuais e não interrompem a sequência; P084/P085 permanecem fechados.
## 25/10/2026 — entrega adicional de L3 com preservação conferida
O incremento de `0f4df8a4` foi instalado em `fa32a2b9`. Este descendente altera apenas a asserção de texto de um teste legado para o estado residual de P001 acordado; os cálculos e os 12 ficheiros runtime preparados mantêm os mesmos hashes. A referência de entrega conserva o candidato original e a correcção de compatibilidade. Backup fresco de 174 tabelas e 369 ficheiros, restauro isolado sem rede e comparação protegida com a mesma identidade confirmados. Nenhuma migração, importação de conteúdo ou alteração das 172 tabelas de negócio foi efectuada. Revisão/manifesto, sete marcadores compilados e simulador HTTP200 conferidos. As diferenças em cache correspondem ao reinício da fila e ao par contador/temporizador de limitação de pedidos; as sessões novas são anónimas e têm o agente das verificações de entrega.
A falta de espaço foi resolvida pela compactação verificada das dependências de construção de 11 versões antigas, conservadas em arquivo com hashes, ficheiros e ligações conferidos. A versão activa e a anterior não foram compactadas. Originais, código, backups, dados e recibos permaneceram disponíveis. O processo Git existente executou os seus controlos obrigatórios; não houve nova ronda manual dos casos funcionais aceites.
L3 continua aberto para regularizações sequenciais/reversões, apuramentos próprios de fornecimento/margem/viagens/eventos e formalidades C/D/E. Apenas esses casos dependentes ficam limitados. Preservam-se 16 MZN de IVA documental, zero de dedução nesta via, 12 reconhecidos, 7 recebidos e 5 por receber. P001 residual, P058 parcial e P084/P085 fechados mantêm os seus estados. L4 habitual trimestral está demonstrado em QA e não foi instalado. Recibo: l3-additional-delivery-20261025.json.
## 25/10/2026 — preparação Git da entrega L4 trimestral habitual
O candidato `6af7092e` foi preparado e publicado apenas no ramo `codex/ispc-l4-quarterly-qa-20261025`, sobre L3 instalado em `fa32a2b9`. O ramo principal e a revisão pública foram conferidos nesta base e não foram alterados. O bundle foi verificado. A comparação identificou nove ficheiros de aplicação: as três integrações existentes receberam apenas adições (6+6+1 linhas); onze ficheiros próprios de L3 e dezassete originais permanecem exactamente iguais. Os cinco marcadores compilados de L4 e os sete de L3 estão presentes. Não há delta de schema, PHP de aplicação, configuração ou dependências; o PHP acrescentado é apenas teste QA. O código experimental de P001 ficou excluído.
As provas QA aceites de cálculo, gravação privada, recuperação e relatório, assim como tipos e compilação da composição compatível, foram reutilizadas pelos respectivos hashes. Não houve nova ronda funcional. Prepararam-se os scripts guardados de comparação autenticada, backup, restauro isolado, integração Git sem force-push e conferência pública/protegida. Backup/restauro fresco e conferência de espaço continuam necessários na execução; o backup de L3 não foi apresentado como backup novo de L4. Esta preparação não instalou L4 nem alterou dados activos. Recibo: `ispc-l4-prepared-delivery-20261025.json`; pacote: `outputs/ispc-l4-delivery-20261025`.
L4 não fica integralmente concluído. Operações ocasionais próprias, aquisições acima do limite e formalidades de 2026 conservam os âmbitos e condições concretas registados. L3 mantém o saldo residual e a separação de 16 MZN documentais, zero de dedução nesta via, 12 reconhecidos, 7 recebidos e 5 por receber. P001/P058 aguardam os esclarecimentos previstos sem bloquear a entrega; P084/P085 permanecem fechados. Estatísticas e IA permanecem adiadas.
## 25/10/2026 — instalação do âmbito ISPC trimestral habitual
O candidato `6af7092e` foi integrado pelo Git e instalado sobre `fa32a2b9`. Foram conferidos backup/restauro fresco e isolado, nove ficheiros de aplicação de L4, onze ficheiros de L3 sem alteração, dezassete originais e os doze marcadores compilados de L4/L3. Os ficheiros persistentes e a configuração conservam os hashes do backup; as tabelas de negócio foram comparadas com a mesma identidade e contexto, sem inferir perda a partir de RLS. Diferenças operacionais de cache/sessões ficam explicitadas no recibo. Não houve migrações ou importações de conteúdo. As provas QA aceites foram reutilizadas; apenas os controlos obrigatórios do processo Git existente voltaram a executar, sem nova ronda manual.
Para assegurar espaço, dependências de construção de versões antigas foram compactadas em arquivo e verificadas antes de libertar a cópia descompactada. Versões activa e anterior, dados, originais, configurações e backups foram preservados. O recibo discrimina o arquivo e os respectivos controlos.
A equipa pode avaliar no portal o percurso habitual: elegibilidade/opção → cálculo trimestral → gravação → recuperação → relatório. O exemplo demonstrado mantém base de 200.000 MZN, taxa de 12% e imposto/prestação de 24.000 MZN. O ISPC não é apresentado como integralmente concluído: operações ocasionais próprias, aquisições acima do limite e formalidades de 2026 permanecem discriminadas. L3 e os seus residuais ficam preservados, incluindo 16 MZN documentais, zero de dedução nesta via, 12 reconhecidos, 7 recebidos e 5 por receber. P001/P058 aguardam os esclarecimentos previstos sem bloquear a sequência; P084/P085 permanecem fechados. Estatísticas e IA continuam adiadas. Recibo: `ispc-l4-delivery-20261025.json`.
## 25/10/2026 — inventário anterior ao delta residual ISPC
Antes dos testes novos, foram recuperadas as provas do percurso habitual instalado em6af7092e, L3 e os131fechos deL1; não há perdas confirmadas. P001/P058 eP084/P085 mantêm estados. O inventário local anterior foi reutilizado e os novos directórios oficiais daAT foram inventariados antes da selecção. O delta QA separa operações ocasionais próprias, cálculo das aquisições acima do limite e formalidades externas. Fontes novas: comunicadoAT9/2026 e exemplares B–Geral/Modelo30; republicaçãoIRPS19/2017 para incidência de actos isolados e taxa57(2)k, sem nova validação genérica. Não há alteração activa.
## 25/10/2026 — residuais ISPC agrupados em QA
Os três pontos foram tratados num delta compatível sobre o instalado `6af7092e`. Nas operações ocasionais próprias, o percurso distingue pessoa singular sem actividade habitual, acto imprevisível/não reiterado, operação nacional e famílias do artigo3(4); a correspondência positiva IRPS8(3h,4)/9 está identificada. A liquidação própria ISPC é separada da retenção liberatória comprovada: esta não gera segunda liquidação nem crédito duplicado. O exemplo próprio de100.000MZN a3%produz3.000MZN, mantendo opção documentada e pressupostos de projecção distintos.
Nas aquisições, acumulado de2.400.000MZN mais aquisição de200.000MZN separa100.000até ao limite e100.000excedentes. A primeira parcela conserva5.000MZN a5%. A parcela excedente não adquire taxa apenas pela ultrapassagem: o caso positivo implementado é acto isoladoIRPS57(2k), sem opçãoISPCaplicável e com rendimento ilíquido identificado, produzindo20.000MZN. As retenções são distintas e não reduzem o imposto próprio do adquirente. Enquadramento desconhecido ou fornecedor com opçãoISPC não recebem automaticamente5%ou20%. Vendedor/contexto376 e adquirente/contexto375 foram demonstrados separadamente.
As formalidades apoiam-se agora no ComunicadoAT9/2026 e no original B–Geral de duas páginas. Foram preparados os quadros1/2/3/5/6/8/10 e exportaçãoHTML, com identificadores de campo próprios de cada quadro; o Modelo30 ainda com75.000/3%antigos foi preservado e excluído do cálculo2026. O mês do período não é copiado do mês de pagamento. Submissão, recepção e pagamento ficam como actos externos declarados, com referências e histórico, sem os executar ou certificar.
O saldo separa cálculos de formalidades: juros compensatórios continuam sem fórmula por falta de regra/taxa/base/período aplicáveis; só montante documentado é conservado. Outros enquadramentos da parcela excedente exigem os seus dados e regra próprios, sem taxa genérica. Externamente faltam a correspondência concreta do período do quadro2, o modelo/código de entrega das retençõesISPC/IRPS e as instruções específicas2026 ainda não fornecidas. Identidade/NUIT/endereço/juros do caso sintético são dados da operação, não condição nova de acesso ao cálculo. Nenhuma dessas pendências bloqueia os casos positivos implementados.
Provas do delta:19testes novos distintos, APIprivadaQA1/22 comrollback, tipos e compilação, componentes reais com gravação/recuperação/relatório e preparaçãoHTML. O percurso habitual não foi recalculado: motores trimestral e de retenção existentes estão inalterados; o resultado de24.000MZN foi preservado exactamente. Conferiu-se apenas a visibilidade afectada: no modo ocasional os controlos habituais/do adquirente ficam ocultos com explicação e histórico; no contexto habitual continuam disponíveis. L3,17originais anteriores e131fechosL1foram preservados;P001/P058nãointerrompem eP084/P085permanecemfechados. QA não é instalação nem fecho integralISPC. Recibo:`ispc-residuals-qa-20261025.json`.
Na representação do B–Geral, a dispensa inferior a500MZN permanece uma correspondência formal específica: imposto calculado e prestação zero são mostrados separadamente, sem preencher o montante apurado como zero. O código não inventa a instrução de preenchimento. Este ponto não altera nem bloqueia o cálculo10-Ajá demonstrado.
Uma retenção liberatória documentada na mesma operação permanece no histórico e impede nova prestação própria sem referência concreta de correcção; mudar apenas a opção de liquidação não apaga o benefício anterior. Caso dirigido adicional aceite.
File diff suppressed because one or more lines are too long
@@ -0,0 +1,37 @@
import type {Acquisition} from '@/lib/iva-acquisitions';
import {newAcquisitionBC} from '@/lib/iva-acquisition-bc';
import {newAcquisitionAllocation,allocationReducedChoices,adoptAllocationReduced,acquisitionAllocationDecision,type AcquisitionAllocation} from '@/lib/iva-acquisition-allocation';
export function AcquisitionAllocationEditor({draft,row,onChange}:{draft:Record<string,unknown>;row:Acquisition;onChange:(patch:Partial<Acquisition>)=>void}){
const d=row.d;
if(!d)return <button type="button" onClick={()=>onChange({d:{...newAcquisitionAllocation(row.period),noExcludedPayments:row.deductionLink?.noExcludedPayments??''},bc:row.bc??newAcquisitionBC()})}>Preparar afectação parcial e proporções — D (conserva dados e histórico)</button>;
const update=(value:Partial<AcquisitionAllocation>)=>onChange({d:{...d,...value}});
const fact=(key:string,label:string)=><label className="block" key={key}>{label}<select value={d.facts[key]??''} onChange={e=>update({facts:{...d.facts,[key]:e.target.value as ''|'yes'|'no'}})}><option value="">Por indicar</option><option value="yes">Sim</option><option value="no">Não</option></select></label>;
const text=(key:'numerator'|'denominator'|'unit'|'referenceYear'|'scopeRef'|'source'|'communicationRef'|'declarationRef',label:string)=><label className="block" key={key}>{label}<input value={d[key]} onChange={e=>update({[key]:e.target.value})}/></label>;
const decision=acquisitionAllocationDecision(draft,row),choices=d.method==='reduced'?allocationReducedChoices(draft):[];
return <fieldset className="space-y-2 rounded border p-3"><legend>Afectação parcial e proporções — D</legend>
<p>Reutiliza documento,montantes,moeda,período e condiçõesB/C. Escolher afectação real/pro rata identifica esta aquisição como mista;18(6),como exclusiva ao âmbito de origem. O vínculo individual deA permanece conservado,sem definir silenciosamente a afectação mista. A versão anterior não é recalculada.</p>
<label className="block">Método de afectação/dedução<select value={d.method} onChange={e=>{const method=e.target.value as AcquisitionAllocation['method'];onChange({d:{...d,method},...(method?{allocation:method==='reduced'?'taxable_only':'mixed'}:{})});}}><option value="">Por identificar</option><option value="actual">Afectação real22(2)</option><option value="pro_rata">Pro rata provisório22(1)/(4)/(6)/(7)</option><option value="reduced">Proporção específica18(6) — origemP096–P099</option></select></label>
{text('scopeRef','Âmbito da aquisição/actividade:entidade,operações,período e critério aplicáveis')}
{text('source','Fonte/documento ou pressuposto expresso das bases e do método')}
{fact('scopeConfirmed','Esta aquisição corresponde ao âmbito e à fonte identificados;sem usar apenas o sector ou a oportunidade')}
<label className="block">Aquisição fora dos pagamentos excluídos15(6)(c)/19(2)<select value={d.noExcludedPayments} onChange={e=>update({noExcludedPayments:e.target.value as AcquisitionAllocation['noExcludedPayments']})}><option value="">Por indicar</option><option value="yes">Sim</option><option value="no">Não</option></select></label>
{d.method==='reduced'?<><label className="block">Reutilizar base reduzida existente<select value={d.reducedId} onChange={e=>{if(e.target.value)update(adoptAllocationReduced(draft,d,e.target.value));}}><option value="">Escolher origem correspondente</option>{choices.map(c=><option key={c.id} value={c.id}>{c.label}</option>)}</select></label>
{!choices.length&&<p>Não há base reduzida registada nesta oportunidade. Prepare a origem no percurso existente;sem percentagem por defeito.</p>}
{!!d.reducedId&&<button type="button" onClick={()=>update(adoptAllocationReduced(draft,d,d.reducedId))}>Adoptar expressamente a origem actual e rever o âmbito</button>}
<p>Reutiliza62%,85%,40% ou75% segundo a origem demonstrada. São proporções de dedução18(6),não taxasIVA. Não volta a reduzir o montante de aquisição nem duplica o desconto da base.</p>
</>:d.method&&<>{fact('rightBasis','A parte identificada dá direito à dedução18/19,com fundamento na fonte indicada;isenção não implica automaticamente direito')}
{text('numerator',d.method==='actual'?'Parte efectivamente afecta a operações com direito — numerador':'Montante anual semIVA das operações com direito18/19 — numerador')}
{text('denominator',d.method==='actual'?'Utilização total no mesmo critério/unidade — denominador':'Montante anual semIVA de todas as operações,incluindo fora de campo — denominador')}
{d.method==='actual'?<>{text('unit','Unidade e critério de afectação real (mesma base em ambas as parcelas)')}{fact('actualScope','Repartição corresponde à afectação real desta aquisição/parte,documentada no critério identificado')}{fact('communication','Comunicação prévia à Direcção Geral de Impostos22(2),conforme a fonte — não é nova aprovação do portal')}{text('communicationRef','Referência da comunicação prévia22(2)')}{fact('conditionsMet','Condições especiais concretamente aplicáveis ao método,quando existentes,estão reflectidas na fonte e cumpridas')}</>:<>
<label className="block">Base do pro rata provisório<select value={d.basis} onChange={e=>update({basis:e.target.value as AcquisitionAllocation['basis']})}><option value="">Por indicar</option><option value="prior_year">Operações do ano anterior22(6)</option><option value="initial_changed">Estimativa expressa por início/alteração substancial22(7)</option></select></label>
{text('referenceYear','Ano das bases anuais utilizadas')}
{fact('annualScope','Totais cobrem o âmbito anual do sujeito passivo identificado,sem substituir pelo mês ou apenas por uma oportunidade')}
{fact('netExclusions','Bases semIVA22(4–5):incluem operações fora de campo;excluem vendas de activo usado e imobiliárias/financeiras acessórias')}
{d.basis==='initial_changed'&&<>{fact('initialChanged','Há início de actividade ou alteração substancial que fundamenta a estimativa22(7)')}{text('declarationRef','Referência da declaração de início/alterações que contém a estimativa')}</>}
<label className="block">Existe imposição concreta de afectação real22(3) para este âmbito?<select value={d.actualRequired} onChange={e=>update({actualRequired:e.target.value as AcquisitionAllocation['actualRequired']})}><option value="">Nenhuma imposição concreta identificada neste registo</option><option value="yes">Sim — usar método correspondente e fonte</option><option value="no">Não</option></select></label>
<p>O quociente é arredondado à centésima imediatamente superior22(8). Mantêm-se o quociente original e a proporção aplicada;fracções monetárias continuam exactas. O acerto anual22(6) segueE,sem alterar versões anteriores.</p>
</>}</>}
<p role="status">{decision.reason}</p>
<button type="button" onClick={()=>onChange({d:undefined})}>Conservar dados e regressar ao vínculo individual deA (histórico preservado)</button>
</fieldset>;
}
@@ -0,0 +1,29 @@
import {useState} from 'react';
import {beverageRestitutionBook,beverageRestitutionSources,newBeverageRestitution,saveBeverageRestitutionBook,recordBeverageRestitution,beverageRestitutionReportRows,type BeverageRestitutionBook,type BeverageRestitutionInput} from '@/lib/iva-beverage-restitution';
import {beverageDeductionEvidence} from '@/lib/iva-beverage-allocation';
import {fractionPresentation} from '@/lib/fiscal-rational';
import {FiscalClaimEventsFields} from './fiscal-claim-events';
export function AcquisitionBeverageRestitution({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let b:BeverageRestitutionBook;try{b=beverageRestitutionBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const save=(next:BeverageRestitutionBook)=>{try{onChange('modelo_a_snapshot',saveBeverageRestitutionBook(draft,next));setError('');}catch(e){setError(String(e));}},sources=beverageRestitutionSources(draft);
const change=(id:string,p:Partial<BeverageRestitutionInput>)=>save({...b,rows:b.rows.map(r=>r.id===id?{...r,...p}:r)});
return<details className="rounded border p-3"><summary>L3-E — restituição de bebidas13(2)</summary>
<p>Reutiliza bebidas de abastecimento de bordo13(1)(c/d/h),com documento e vínculoL1/L2. Escolha restituição na aquisição e recalculeL2:esta linha não gera dedução nem crédito para reembolso geral. Não se aplica a qualquer despesa com bebidas,tabaco ou recepção.</p>
<p>Âmbito2026/MZN:linha integral ou parcelas de IVA documentadas,sem sobreposição. A parte não pedida fica sem destino presumido. Uma dedução efectiva anterior conserva montante e histórico;identifique a parcela já deduzida. A mudança ou anulação dessa dedução requer regularização com fundamento próprio,sem a libertar por simples edição. Pedido,decisão e recebimento são registos distintos. Procedimento/formulário específico e prazos não automatizados;submissão fora doInvesteMoz,sem condições importadas do reembolso geralD.</p>
{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>save({...b,rows:[...b.rows,newBeverageRestitution(crypto.randomUUID(),sources.length===1?sources[0]:null,String(draft.fiscal_entity_ref??draft.organization_name??''))]})}>Preparar restituição de bebidas</button>
{b.rows.map(r=><fieldset key={r.id} className="rounded border p-3"><legend>Restituição — {r.source?.period||'origem por escolher'}</legend>
<label>Linha documental destinada à restituição<select value={sources.findIndex(s=>s.parcel===r.source?.parcel&&s.fingerprint===r.source?.fingerprint)} onChange={e=>{const s=sources[Number(e.target.value)];if(s)change(r.id,{source:structuredClone(s)});}}><option value={-1}>Escolha origem actualL1/L2</option>{sources.map((s,i)=><option key={s.parcel} value={i}>{s.documentRef} — linha{s.documentLine||'única'} — {s.period}</option>)}</select></label>
{r.source&&<p>Documento:{r.source.documentRef};{r.source.documentDate};fornecedor{r.source.supplier};operaçãoL1{r.source.operationId};{r.source.operationRef}. O total documental é reutilizado sem taxa presumida; repartição e IVA do fornecimento mantêm cálculos próprios.</p>}
<label>Âmbito fiscal da entidade<input value={r.entityRef} onChange={e=>change(r.id,{entityRef:e.target.value})}/></label>
<label>Parcela exclusivamente para restituição,sem dedução da mesma parcela<select value={r.exclusive} onChange={e=>change(r.id,{exclusive:e.target.value as BeverageRestitutionInput['exclusive']})}><option value="">Por confirmar</option><option value="yes">Sim</option><option value="no">Não — reconciliar parcela</option></select></label>
<label>Âmbito da restituição<select value={r.allocation?'partial':'full'} onChange={e=>change(r.id,{allocation:e.target.value==='partial'?{from:'',to:'',reference:'',deductionFrom:'',deductionTo:'',deductionReference:''}:undefined})}><option value="full">Linha integral</option><option value="partial">Parcela documentada da mesma linha</option></select></label>
{r.allocation&&<fieldset><legend>Repartição do IVA documental em MZN</legend><p>Os limites identificam partes do IVA da linha: por exemplo, de 0 a 6 e de 6 a 16 são parcelas distintas de um total de 16. A parte restante não gera dedução automática. Pode indicar valores decimais ou fracções exactas,como16/3;sem arredondar a dedução anterior.</p>{([['from','Início da parcela'],['to','Fim da parcela'],['reference','Suporte da repartição']] as const).map(([field,label])=><label key={field}>{label}<input value={r.allocation![field]} onChange={e=>change(r.id,{allocation:{...r.allocation!,[field]:e.target.value}})}/></label>)}</fieldset>}
{r.source&&(()=>{const evidence=beverageDeductionEvidence(draft,r.source!);return<fieldset><legend>Reconciliação da dedução anterior</legend><p>IVA documental: {fractionPresentation(r.source!.vat).decimal} MZN. Dedução efectiva positiva identificada: {evidence.amount?fractionPresentation(evidence.amount).decimal:'Indeterminada'} MZN. {evidence.reason}</p>{evidence.records.map((v,i)=><p key={i}>{v.context};revisão{v.revision};{v.calculatedAt};{fractionPresentation(v.amount).decimal} MZN;{v.documents.join(' | ')}</p>)}{r.allocation&&evidence.records.length>0&&([['deductionFrom','Início da parcela já deduzida'],['deductionTo','Fim da parcela já deduzida'],['deductionReference','Suporte da afectação da dedução anterior']] as const).map(([field,label])=><label key={field}>{label}<input value={r.allocation![field]} onChange={e=>change(r.id,{allocation:{...r.allocation!,[field]:e.target.value}})}/></label>)}</fieldset>;})()}
<FiscalClaimEventsFields value={r} onChange={p=>change(r.id,p)}/>
<button type="button" onClick={()=>save({...b,rows:b.rows.filter(q=>q.id!==r.id)})}>Remover restituição desta preparação</button>
</fieldset>)}
{b.rows.length>0&&<button type="button" onClick={()=>{try{save(recordBeverageRestitution(draft,b));}catch(e){setError(String(e));}}}>Calcular e guardar restituição E</button>}
{beverageRestitutionReportRows(draft).map((r,i)=><p key={i}><strong>{r[1]}:</strong> {r[2]}<br/>{r[3]}</p>)}
</details>;
}
@@ -0,0 +1,48 @@
import {useState} from 'react';
import {closureBook,closureSources,newClosure,newClosureCredit,saveClosureBook,recordClosure,adoptPreviousCredit,closureReportRows,type ClosureInput,type ClosureCredit,type ClosureBook} from '@/lib/iva-closure';
export function AcquisitionClosure({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let b:ClosureBook;try{b=closureBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const save=(next:ClosureBook)=>{try{onChange('modelo_a_snapshot',saveClosureBook(draft,next));setError('');}catch(e){setError(String(e));}};
const change=(id:string,p:Partial<ClosureInput>)=>save({...b,rows:b.rows.map(r=>r.id===id?{...r,...p}:r)});
const sources=closureSources(draft);
const entities=[...new Set(b.rows.map(r=>r.entityRef.trim()).filter(Boolean))];
const creditChange=(r:ClosureInput,id:string,p:Partial<ClosureCredit>)=>change(r.id,{credits:r.credits.map(c=>c.id===id?{...c,...p}:c)});
const choice=(r:ClosureInput,key:'firstDeclaration'|'creditsComplete',label:string)=><label className="block">{label}<select value={r[key]} onChange={e=>change(r.id,{[key]:e.target.value})}><option value="">Por confirmar</option><option value="yes">Sim</option><option value="no">Não</option></select></label>;
return<details className="rounded border p-3"><summary>L3-A/B — crédito,fecho e pagamentos por período</summary>
<p>Reutiliza resultados congelados de L2. Crédito anterior,saldo calculado,pagamento registado e transporte são distintos. Identifique o âmbito fiscal da entidade,sem consolidar oportunidades implicitamente.</p>
<p>Primeira declaração em prazo,2026/MZN e reporte integral ou afectação de parcela ao pedidoD. SubstituiçõesC,acompanhamento de reembolsoD e restituição de bebidasE continuam próprios. A parcela preparada para pedido é separada do reporte,sem concessão automática. Prazo/data são declarados,não calculados pelo portal. Uma simulação não submete declarações nem efectua pagamentos.</p>
{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>save({...b,rows:[...b.rows,newClosure(crypto.randomUUID(),sources.length===1?sources[0]:null,entities.length===1?entities[0]:String(draft.fiscal_entity_ref??draft.organization_name??''))]})}>Preparar fecho de outro período</button>
{b.rows.map(r=><fieldset className="rounded border p-3" key={r.id}><legend>Fecho — {r.period||'período por escolher'}</legend>
<label>Resultado L2 congelado<select value={sources.findIndex(s=>JSON.stringify(s)===JSON.stringify(r.source))} onChange={e=>{const s=sources[Number(e.target.value)];if(s)change(r.id,{source:structuredClone(s),period:s.period});}}><option value={-1}>Escolha versão e período</option>{sources.map((s,i)=><option key={i} value={i}>{s.period} — revisão{s.revision} — {s.calculatedAt}</option>)}</select></label>
<label>Âmbito fiscal da entidade<input value={r.entityRef} onChange={e=>change(r.id,{entityRef:e.target.value})}/></label>
<label>Natureza do fecho<select value={r.origin} onChange={e=>change(r.id,{origin:e.target.value as ClosureInput['origin']})}><option value="projected">Pressuposto de simulação</option><option value="effective">Dados efectivos declarados</option></select></label>
{choice(r,'firstDeclaration','É a primeira declaração deste período (ou pressuposto explícito)')}
<label>Data de entrega ou prevista<input type="date" value={r.submissionDate} onChange={e=>change(r.id,{submissionDate:e.target.value})}/></label>
<label>Situação do prazo<select value={r.filing} onChange={e=>change(r.id,{filing:e.target.value as ClosureInput['filing']})}><option value="">Por identificar</option><option value="timely">Dentro do prazo declarado</option><option value="late">Fora do prazo — procedimento próprio</option></select></label>
<label>Fundamento/referência do prazo declarado<input value={r.filingRef} onChange={e=>change(r.id,{filingRef:e.target.value})}/></label>
<h5>Créditos de origem identificada</h5>
{r.credits.map(c=><fieldset className="rounded border p-2" key={c.id}><legend>{c.kind==='opening'?'19 — saldo de abertura':c.kind==='previous'?'19 — transporte anterior':'20 — crédito comunicado'}</legend>
{c.kind==='previous'?<label>Adoptar expressamente o reporte anterior<select value={c.previousId} onChange={e=>{try{const p=b.result?.rows.find(p=>p.id===e.target.value);if(p)creditChange(r,c.id,adoptPreviousCredit(c,p));}catch(err){setError(String(err));}}}><option value="">Escolha o fecho anterior</option>{b.result?.rows.filter(p=>p.id!==r.id&&p.period<r.period).map(p=><option key={p.id} value={p.id}>{p.period} — {p.entityRef} — {p.status==='determined'?'calculado':'indeterminado'}</option>)}</select></label>:<>
<label>Período de origem do crédito/saldo<input type="month" value={c.period} onChange={e=>creditChange(r,c.id,{period:e.target.value})}/></label>
<label>Documento/referência do crédito<input value={c.reference} onChange={e=>creditChange(r,c.id,{reference:e.target.value})}/></label>
<label>Montante disponível documentado (MZN)<input value={c.amount} onChange={e=>creditChange(r,c.id,{amount:e.target.value})}/></label>
{c.kind==='communication'&&<label>Data da comunicação recebida<input type="date" value={c.date} onChange={e=>creditChange(r,c.id,{date:e.target.value})}/></label>}</>}
{c.kind==='previous'&&<><p>Origem:{c.reference};{c.period};apresentação{c.amount}. Cálculo pela fracção exacta;origem alterada exige adopção expressa.</p><button type="button" onClick={()=>{try{const p=b.result?.rows.find(p=>p.id===c.previousId);if(!p)throw Error('Fecho anterior não recuperável.');creditChange(r,c.id,adoptPreviousCredit(c,p));}catch(e){setError(String(e));}}}>Adoptar versão actual deste reporte</button></>}
<button type="button" onClick={()=>change(r.id,{credits:r.credits.filter(v=>v.id!==c.id)})}>Remover vínculo de crédito desta preparação</button></fieldset>)}
{(['opening','communication','previous'] as const).map(kind=><button type="button" key={kind} onClick={()=>change(r.id,{credits:[...r.credits,newClosureCredit(crypto.randomUUID(),kind)]})}>{kind==='opening'?'Identificar saldo inicial':kind==='communication'?'Identificar crédito comunicado':'Reutilizar reporte anterior'}</button>)}
{choice(r,'creditsComplete','Reconciliei todos os créditos;lista vazia confirma expressamente ausência')}
<label>Juros23<select value={r.interest} onChange={e=>change(r.id,{interest:e.target.value as ClosureInput['interest']})}><option value="">Indeterminados</option><option value="none">Sem juros aplicáveis — motivo identificado</option><option value="documented">Montante identificado,sem cálculo de taxa pelo portal</option></select></label>
{r.interest==='documented'&&<label>Montante de juros (MZN)<input value={r.interestAmount} onChange={e=>change(r.id,{interestAmount:e.target.value})}/></label>}
{r.interest&&<label>Fonte/motivo dos juros ou da sua inexistência<input value={r.interestRef} onChange={e=>change(r.id,{interestRef:e.target.value})}/></label>}
<label>Destino do crédito25<select value={r.destination} onChange={e=>change(r.id,{destination:e.target.value as ClosureInput['destination']})}><option value="">Por escolher</option><option value="report">Reportar integralmente26;sem pedido27 neste percurso</option><option value="refund">Destinar parcela ao pedido27 — acompanhar emD</option></select></label>
{r.destination==='refund'&&<label>Parcela do cr?dito destinada ao pedido27 (MZN)<input value={r.refundAmount??''} onChange={e=>change(r.id,{refundAmount:e.target.value})}/></label>}
<h5>Pagamentos registados,distintos do saldo calculado</h5>
{r.destination==='refund'&&<label>Parcela do crédito destinada ao pedido27 (MZN)<input value={r.refundAmount??''} onChange={e=>change(r.id,{refundAmount:e.target.value})}/></label>}
{r.payments.map(p=><fieldset className="rounded border p-2" key={p.id}>{(['reference','date','amount'] as const).map((k,i)=><label key={k}>{['Referência do pagamento','Data do pagamento','Montante do pagamento (MZN)'][i]}<input type={k==='date'?'date':'text'} value={p[k]} onChange={e=>change(r.id,{payments:r.payments.map(v=>v.id===p.id?{...v,[k]:e.target.value}:v)})}/></label>)}<button type="button" onClick={()=>change(r.id,{payments:r.payments.filter(v=>v.id!==p.id)})}>Remover pagamento desta preparação</button></fieldset>)}
<button type="button" onClick={()=>change(r.id,{payments:[...r.payments,{id:crypto.randomUUID(),reference:'',date:'',amount:''}]})}>Registar referência de pagamento</button>
<button type="button" onClick={()=>save({...b,rows:b.rows.filter(v=>v.id!==r.id)})}>Remover fecho em preparação (histórico conservado)</button></fieldset>)}
<button type="button" onClick={()=>{try{save(recordClosure(draft,b));}catch(e){setError(String(e));}}}>Calcular e guardar fecho A/B</button>
{closureReportRows(draft).map(([,label,value,source],i)=><p key={i}><strong>{label}</strong>: {value}<small className="block">{source}</small></p>)}
</details>;
}
@@ -0,0 +1,29 @@
import type {Acquisition} from '@/lib/iva-acquisitions';
import {acquisitionImportSources,expenseOptions,newAcquisitionBC,reuseAcquisitionImport,type AcquisitionBC} from '@/lib/iva-acquisition-bc';
export function AcquisitionImportsExclusions({draft,row,onChange}:{draft:Record<string,unknown>;row:Acquisition;onChange:(patch:Partial<Acquisition>)=>void}){
const b=row.bc;const update=(patch:Partial<AcquisitionBC>)=>onChange({bc:{...(b??newAcquisitionBC()),...patch}});
const choice=(key:'reducedSupply'|'belongs'|'ownImportVat',label:string)=><label className="block">{label}<select value={b?.[key]??''} onChange={e=>update({[key]:e.target.value})}><option value="">Por indicar</option><option value="yes">Sim</option><option value="no">Não</option></select></label>;
const fact=(key:string,label:string)=><label className="block" key={key}>{label}<select value={b?.facts[key]??''} onChange={e=>update({facts:{...b?.facts,[key]:e.target.value as ''|'yes'|'no'}})}><option value="">Por indicar</option><option value="yes">Sim</option><option value="no">Não</option></select></label>;
if(!b)return <div><button type="button" onClick={()=>onChange({bc:newAcquisitionBC()})}>Analisar exclusões e excepções desta aquisição — C</button><button type="button" onClick={()=>onChange({bc:newAcquisitionBC(),field:'11',domestic:'no',documentType:'customs'})}>Preparar importação — B/campo11 (conserva valores e documento)</button></div>;
const imported=row.domestic==='no';const sources=acquisitionImportSources(draft);
return <fieldset className="space-y-2 rounded border p-3"><legend>Importações e exclusões — B/C</legend>
<p>Dados existentes conservados;as respostas são factos declarados ou pressupostos de projecção. Informação em falta fica indeterminada. Alterar a natureza da despesa conserva respostas anteriores sem as aplicar a outro tratamento.</p>
{imported&&<><p>Campo11:IVA devido na importação de bens pelo documento aduaneiro. Não calcula direitosL13,não copia o valor aduaneiro como IVA e não exige fornecedor estrangeiro inscrito no IVA interno.</p>
<label className="block">Reutilizar registo de importação existente<select value="" onChange={e=>{const source=sources.find(s=>s.map+'/'+s.row.id===e.target.value);if(source)onChange(reuseAcquisitionImport(draft,row,source.map,source.row.id));}}><option value="">Escolher correspondência;apenas preenche dados vazios</option>{sources.map(s=><option key={s.map+'/'+s.row.id} value={s.map+'/'+s.row.id}>{s.label}</option>)}</select></label>
{b.source&&<p>Origem conservada:{b.source.map}/{b.source.id}. Reutilizar novamente adopta a origem actual,sem substituir edições.</p>}
{(['importer','goodsRef','vatRef'] as const).map((key,i)=><label className="block" key={key}>{['Importador identificado','Bens/operação/linha abrangidos','Fonte do montante de IVA devido — bilhete/pressuposto'][i]}<input value={b[key]} onChange={e=>update({[key]:e.target.value})}/></label>)}
{choice('belongs','Bilhete na titularidade do sujeito passivo/importador desta aquisição')}
{fact('exigibleInPeriod','IVA aduaneiro tornou-se exigível no período de dedução indicado,conforme a fonte/documento21(1);não basta a data de emissão do bilhete')}
{choice('ownImportVat','Montante é apenas IVA próprio devido nesta importação,sem somar novamente IVA de serviço incluído na base dos bens')}
<label className="block">Situação do IVA da importação<select value={b.vatBasis} onChange={e=>update({vatBasis:e.target.value as AcquisitionBC['vatBasis']})}><option value="">Por identificar</option><option value="due">IVA devido identificado no documento/pressuposto</option><option value="exempt">Importação isenta — IVAzero expressamente indicado</option><option value="zero">Montantezero expresso,com fundamento</option><option value="unknown">Montante desconhecido</option></select></label>
<p>IVA isento/zero não é montante desconhecido. Para ausência de imposto a deduzir,indique zero expressamente no IVA;isençãoL1 não preenche esse montante.</p></>}
{!imported&&choice('reducedSupply','O IVA suportado respeita a fornecimento abrangido pelo artigo17-A (20(2))')}
<label className="block">Natureza da despesa para dedução<select value={b.expense} onChange={e=>update({expense:e.target.value})}><option value="">Por identificar</option>{expenseOptions.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>
{b.expense==='vehicle'&&<>{fact('tourism','Bem abrangido20(1)(a):viatura de turismo,barco de recreio,helicóptero,avião,moto/motociclo. Viatura:inclui reboque;não destinada unicamente a mercadorias/uso agrícola,comercial ou industrial,ou mista/passageiros até9lugares incluindo condutor')}{b.facts.tourism==='yes'&&fact('saleOrExploit','Venda ou exploração deste bem constitui objecto da actividade20(3)(a)')}</>}
{b.expense==='fuel'&&<>{fact('resale','Combustível adquirido para revenda,com actividade e destino identificados20(3)(a)')}{b.facts.resale==='no'&&<><label>Combustível<select value={b.fuelKind} onChange={e=>update({fuelKind:e.target.value as AcquisitionBC['fuelKind']})}><option value="">Por identificar</option><option value="diesel">Gasóleo</option><option value="other">Outro combustível normalmente utilizável em viaturas</option></select></label>{b.fuelKind==='diesel'&&<><label>Utilização do gasóleo<select value={b.dieselUse} onChange={e=>update({dieselUse:e.target.value as AcquisitionBC['dieselUse']})}><option value="">Por identificar</option><option value="heavy_passengers">Veículo pesado de passageiros</option><option value="public_passengers">Veículo licenciado para transporte público de passageiros,excepto rent a car</option><option value="machine">Máquina consumidora de gasóleo que não é veículo matriculado</option><option value="agriculture">Tractor com emprego exclusivo/predominante em operações inerentes à actividade agrícola</option><option value="other">Outro uso — dedução50%</option></select></label>{b.dieselUse&&b.dieselUse!=='other'&&fact('dieselScope','O uso e as características correspondem integralmente à categoria20(1)(b)(i–iv) seleccionada')}</>}</>}</>}
{b.expense==='lodging_food'&&fact('commercialTraveller','Alojamento/alimentação de viajante comercial,agindo por conta própria,no quadro da actividade profissional20(3)(b)')}
{b.expense==='telephone'&&fact('ownLandline','Serviço de telefone fixo em nome do sujeito passivo20(1)(e)')}
{b.expense==='beverages'&&<>{fact('beverageSpecial','Bebidas de abastecimento de bordo nas alíneas13(1)(c/d/h),com origemL1 identificada;tabaco e recepção não estão abrangidos por esta excepção')}{b.facts.beverageSpecial==='yes'&&<><label>Via13(2) para esta parcela<select value={b.beveragePath} onChange={e=>update({beveragePath:e.target.value as AcquisitionBC['beveragePath']})}><option value="">Por escolher</option><option value="deduction">Dedução nesta aquisição — L2</option><option value="refund">RestituiçãoL3-E — sem dedução desta parcela</option></select></label>{b.beveragePath==='deduction'&&fact('onlyDeduction','Parcela identificada exclusivamente para dedução;sem pedido/restituição da mesma parcela')}{fact('notCoastalFishing','Se origem13(1)(d):embarcação de salvamento/assistência marítima,sem ser pesca costeira cujas provisões ficam excluídas')}</>}</>}
<label className="block">Factos e referência documental da classificação/excepção<input value={b.evidence} onChange={e=>update({evidence:e.target.value})}/></label>
</fieldset>;
}
@@ -0,0 +1,20 @@
import {acquisitionOperationChoices,createAcquisitionRightLink,linkedOperationRight,linkedBeverageDeductionRight,type AcquisitionRightLink} from '@/lib/iva-acquisition-right';
import type {Acquisition} from '@/lib/iva-acquisitions';
export function AcquisitionOperationLink({draft,row,onChange}:{draft:Record<string,unknown>;row:Acquisition;onChange:(patch:Partial<Acquisition>)=>void}){
const choices=acquisitionOperationChoices(draft),link=row.deductionLink;
const adopt=(id:string)=>onChange({deductionLink:createAcquisitionRightLink(draft,id)});
const patch=(value:Partial<AcquisitionRightLink>)=>{if(link)onChange({deductionLink:{...link,...value}});};
const result=link?(row.bc?.expense==='beverages'&&row.bc.facts.beverageSpecial==='yes'&&['deduction','refund'].includes(row.bc.beveragePath)?linkedBeverageDeductionRight(draft,link,row.bc.facts.notCoastalFishing==='yes'):linkedOperationRight(draft,link)):null;
return <fieldset className="space-y-2 rounded border p-3"><legend>Aquisição → direito à dedução — L2-A</legend>
<p>Reutilize a classificação existente. A ligação conserva montantes, documento e escolhas da aquisição; não cria outra compra. Importações, despesas especiais e afectação parcial conservam enquadramento próprio.</p>
{choices.length===1&&!link?<button type="button" onClick={()=>adopt(choices[0].id)}>Reutilizar operação existente: {choices[0].label}</button>:<label>Operação de destino<select value={link?.operationId??''} onChange={e=>e.target.value?adopt(e.target.value):onChange({deductionLink:undefined})}><option value="">Sem vínculo L2-A</option>{choices.map(c=><option key={c.id} value={c.id}>{c.label}</option>)}</select></label>}
{!choices.length&&<p>Não há operação classificada nesta oportunidade. A compra e o histórico permanecem disponíveis.</p>}
{link&&<><p>{row.bc?.beveragePath==='refund'&&result?.status==='eligible'?'Condições da operação13(2) identificadas;via de restituição escolhida,sem dedução desta parcela.':result?.reason}</p><small>{result?.source}</small>
<label className="block">Afectação exclusiva à operação ligada<select value={link.scopeConfirmed} onChange={e=>patch({scopeConfirmed:e.target.value as AcquisitionRightLink['scopeConfirmed']})}><option value="">Por confirmar</option><option value="yes">Sim</option><option value="no">Não / por rever</option></select></label>
<label className="block">Motivo ou referência da afectação<input value={link.allocationRef} onChange={e=>patch({allocationRef:e.target.value})}/></label>
{result?.status==='eligible'&&<label className="block">Aquisição fora dos pagamentos excluídos15(6)(c)/19(2)<select value={link.noExcludedPayments} onChange={e=>patch({noExcludedPayments:e.target.value as AcquisitionRightLink['noExcludedPayments']})}><option value="">Por indicar</option><option value="yes">Sim</option><option value="no">Não</option></select></label>}
{result?.status==='indeterminate'&&choices.some(c=>c.id===link.operationId)&&<button type="button" onClick={()=>adopt(link.operationId)}>Adoptar explicitamente a classificação actual e rever afectação</button>}
</>}
</fieldset>;
}
@@ -0,0 +1,34 @@
import {useState} from 'react';
import {refundBook,refundSources,newRefund,saveRefundBook,recordRefund,refundReportRows,type RefundBook,type RefundInput} from '@/lib/iva-refund';
export function AcquisitionRefund({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let b:RefundBook;try{b=refundBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const save=(book:RefundBook)=>{try{onChange('modelo_a_snapshot',saveRefundBook(draft,book));setError('');}catch(e){setError(String(e));}};
const change=(id:string,p:Partial<RefundInput>)=>save({...b,rows:b.rows.map(r=>r.id===id?{...r,...p}:r)}),sources=refundSources(draft);
const choice=(r:RefundInput,k:'factsConfirmed'|'oldestFirst',label:string)=><label>{label}<select value={r[k]} onChange={e=>change(r.id,{[k]:e.target.value})}><option value="">Por confirmar</option><option value="yes">Sim — documentado ou pressuposto explícito</option><option value="no">Não</option></select></label>;
return<details className="rounded border p-3"><summary>L3-D — pedido,decisão e recebimento do reembolso</summary>
<p>Primeiro,no fecho do período,escolha a parcela destinada ao pedido27 e calcule a afectação:25=26+27. Apenas26 continua em reporte. Reutilize a afectação abaixo;crédito já transportado não é uma nova parcela disponível.</p>
<p>Preparar ou apresentar o pedido não é deferimento;deferimento não é recebimento. Submissão,formulários regulamentares,suspensões e pagamentos bancários ocorrem fora doInvesteMoz. O prazo legal não é previsão de caixa. Não se aplica a antiga obrigação50%/12meses,revogada em2026.</p>
{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>save({...b,rows:[...b.rows,newRefund(crypto.randomUUID(),sources.length===1?sources[0]:null)]})}>Preparar pedido de reembolso geral</button>
{b.rows.map(r=><fieldset className="rounded border p-3" key={r.id}><legend>Pedido de reembolso — {r.source?.period||'período por escolher'}</legend>
<label>Afectação congelada do crédito27<select value={sources.findIndex(s=>s.allocationKey===r.source?.allocationKey)} onChange={e=>{const s=sources[Number(e.target.value)];if(s)change(r.id,{source:structuredClone(s)});}}><option value={-1}>Escolha a parcela actual</option>{sources.map((s,i)=><option key={s.allocationKey} value={i}>{s.period} — {s.entityRef} — fecho{s.closureId}</option>)}</select></label>
<label>Fundamento do pedido<select value={r.ground} onChange={e=>change(r.id,{ground:e.target.value as RefundInput['ground']})}><option value="">Por identificar</option><option value="four_months">21(6) — quatro meses e crédito superior100000MZN</option><option value="high_credit">21(7a) — crédito superior500000MZN</option><option value="cessation">21(7b) — cessação de actividade</option></select></label>
<label>Período de início do excesso de crédito<input type="month" value={r.originPeriod} onChange={e=>change(r.id,{originPeriod:e.target.value})}/></label>
<label>Data de nascimento do direito à dedução<input type="date" value={r.entitlementDate} onChange={e=>change(r.id,{entitlementDate:e.target.value})}/></label>
{r.ground==='cessation'&&<label>Data da cessação de actividade<input type="date" value={r.cessationDate} onChange={e=>change(r.id,{cessationDate:e.target.value})}/></label>}
<label>Suporte dos factos e origem do crédito<textarea value={r.groundRef} onChange={e=>change(r.id,{groundRef:e.target.value})}/></label>
{choice(r,'factsConfirmed','Factos do fundamento identificados no suporte')}{choice(r,'oldestFirst','Considerei sequencialmente os créditos mais antigos')}
<label>Referência do pedido ou preparação<input value={r.requestReference} onChange={e=>change(r.id,{requestReference:e.target.value})}/></label>
<label>Data do pedido ou prevista<input type="date" value={r.requestDate} onChange={e=>change(r.id,{requestDate:e.target.value})}/></label>
<label>Situação do pedido<select value={r.stage} onChange={e=>change(r.id,{stage:e.target.value as RefundInput['stage']})}><option value="preparation">Em preparação — sem submissão</option><option value="submitted">Apresentado fora doInvesteMoz — registo declarado</option></select></label>
<label>Decisão recebida<select value={r.decision} onChange={e=>change(r.id,{decision:e.target.value as RefundInput['decision']})}><option value="pending">Ainda não identificada</option><option value="approved">Deferimento integral</option><option value="partial">Deferimento parcial</option><option value="rejected">Indeferimento</option></select></label>
{r.decision!=='pending'&&<><label>Número ou referência da decisão<input value={r.decisionReference} onChange={e=>change(r.id,{decisionReference:e.target.value})}/></label><label>Data da decisão<input type="date" value={r.decisionDate} onChange={e=>change(r.id,{decisionDate:e.target.value})}/></label><label>Entidade emitente da decisão<input value={r.decisionIssuer} onChange={e=>change(r.id,{decisionIssuer:e.target.value})}/></label><label>Montante reconhecido na decisão (MZN)<input value={r.approvedAmount} onChange={e=>change(r.id,{approvedAmount:e.target.value})}/></label></>}
<h5>Recebimentos registados</h5>
{r.receipts.map(p=><fieldset key={p.id}><legend>Recebimento de reembolso</legend>{(['reference','date','amount'] as const).map(k=><label key={k}>{k==='reference'?'Referência do recebimento':k==='date'?'Data do recebimento':'Montante recebido (MZN)'}<input type={k==='date'?'date':'text'} value={p[k]} onChange={e=>change(r.id,{receipts:r.receipts.map(v=>v.id===p.id?{...v,[k]:e.target.value}:v)})}/></label>)}<button type="button" onClick={()=>change(r.id,{receipts:r.receipts.filter(v=>v.id!==p.id)})}>Remover recebimento desta preparação</button></fieldset>)}
<button type="button" onClick={()=>change(r.id,{receipts:[...r.receipts,{id:crypto.randomUUID(),reference:'',date:'',amount:''}]})}>Registar recebimento identificado</button>
<button type="button" onClick={()=>save({...b,rows:b.rows.filter(v=>v.id!==r.id)})}>Remover pedido desta preparação</button>
</fieldset>)}
{b.rows.length>0&&<button type="button" onClick={()=>{try{save(recordRefund(draft,b));}catch(e){setError(String(e));}}}>Calcular e guardar acompanhamento D</button>}
{refundReportRows(draft).map((r,i)=><p key={i}><strong>{r[1]}:</strong> {r[2]}<br/>{r[3]}</p>)}
</details>;
}
@@ -0,0 +1,33 @@
import {useState} from 'react';
import {newRegularization,regularizationBook,regularizationSources,saveRegularizationBook,recordRegularizations,regularizationReportRows,frozenAssetRows,type RegularizationEvent,type RegularizationBook} from '@/lib/iva-regularizations';
export function AcquisitionRegularizations({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let b:RegularizationBook;
try{b=regularizationBook(draft);}catch(cause){return<p role="alert">{String(cause)}</p>;}
const save=(next:RegularizationBook)=>{try{onChange('modelo_a_snapshot',saveRegularizationBook(draft,next));setError('');}catch(cause){setError(String(cause));}};
const change=(id:string,patch:Partial<RegularizationEvent>)=>save({...b,events:b.events.map(e=>e.id===id?{...e,...patch}:e)});
const sources=regularizationSources(draft);
const add=(kind:RegularizationEvent['kind'])=>save({...b,events:[...b.events,newRegularization(crypto.randomUUID(),kind,sources.at(-1)??null)]});
const labels={scope:'As parcelas e o âmbito correspondem ao evento,sem estender o direito a outros bens/operações',recorded:'O valor original foi deduzido ou é pressuposto explicitamente assumido nesta simulação',annual:'Bases finais do ano completo22(4),semIVA,incluindo operações fora de campo',exclusions:'Excluí vendas de activo usado e operações imobiliárias/financeiras acessórias22(5)',supplierCorrection:'O fornecedor anulou/reduziu a operação e emitiu o documento rectificativo',rightUnchanged:'O documento conserva o âmbito e as condições de dedução;sem alteração de direito'};
return<details className="rounded border p-3"><summary>E — activos e regularizações por evento</summary>
<p>Reutiliza resultados congelados de D e documentos existentes. O acerto anual usa o IVA elegível antes de D, já limitado por C, e compara com o deduzido. Uma rectificação da compra tem documento e prazo próprios. Guardar E não altera as deduções originais; depois actualize expressamente o apuramento parcial para conferir F.</p>
<p>18.º(6) com afectação mista continua pendente. Não existe regularização plurianual genérica de activos,correcção de erros ou incobráveis automatizada neste percurso. Submissão fiscal fora do InvesteMoz;19–27/restituição em L3.</p>
{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>add('annual')}>Preparar acerto anual do pro rata</button>{' '}
<button type="button" onClick={()=>add('purchase_correction')}>Preparar rectificação da dedução pelo adquirente</button>
{b.events.map((e,index)=><fieldset className="rounded border p-3" key={e.id}><legend>{index+1}. {e.kind==='annual'?'Acerto anual22(6)':'Rectificação51(4)'}</legend>
<label>Resultado original congelado<select value={sources.findIndex(s=>JSON.stringify(s)===JSON.stringify(e.source))} onChange={event=>{const source=sources[Number(event.target.value)];if(source)change(e.id,{source:structuredClone(source),rowIds:source.inputs.filter(r=>e.kind!=='annual'||r.d?.method==='pro_rata').map(r=>r.id)});}}><option value={-1}>Seleccione uma versão</option>{sources.map((s,i)=><option key={i} value={i}>Revisão{s.revision} — {s.calculatedAt}</option>)}</select></label>
<p>Escolher outra versão adopta expressamente as parcelas dessa versão,conservando os outros dados do evento. Desmarque parcelas fora do âmbito;não pode regularizar a mesma aquisição duas vezes.</p>
{e.source?.inputs.map(r=><label className="block" key={r.id}><input type="checkbox" checked={e.rowIds.includes(r.id)} onChange={event=>change(e.id,{rowIds:event.target.checked?[...e.rowIds,r.id]:e.rowIds.filter(id=>id!==r.id)})}/>{r.description||r.id} — {r.documentRef} — {r.period} — {r.origin==='projected'?'Pressuposto de simulação':'Efectivo declarado'}</label>)}
<label>Período da regularização<input type="month" value={e.period} min="2026-01" max="2026-12" onChange={v=>change(e.id,{period:v.target.value})}/></label>
<label>Documento/fonte do evento<input value={e.reference} onChange={v=>change(e.id,{reference:v.target.value})}/></label>
<label>Motivo e âmbito do evento<input value={e.reason} onChange={v=>change(e.id,{reason:v.target.value})}/></label>
{e.kind==='annual'?<><label>Operações anuais finais com direito — sem IVA (MZN)<input value={e.numerator} onChange={v=>change(e.id,{numerator:v.target.value})}/></label><label>Total anual final22(4–5) — sem IVA (MZN)<input value={e.denominator} onChange={v=>change(e.id,{denominator:v.target.value})}/></label></>:<><label>Data de recepção do documento rectificativo<input type="date" value={e.receivedDate} onChange={v=>change(e.id,{receivedDate:v.target.value})}/></label><label>Dedução corrigida documentada (MZN)<input value={e.correctedDeductible} onChange={v=>change(e.id,{correctedDeductible:v.target.value})}/></label></>}
{Object.entries(labels).filter(([k])=>['scope','recorded',...(e.kind==='annual'?['annual','exclusions']:['supplierCorrection','rightUnchanged'])].includes(k)).map(([k,label])=><label className="block" key={k}>{label}<select value={e.facts[k]??''} onChange={v=>change(e.id,{facts:{...e.facts,[k]:v.target.value as ''|'yes'|'no'}})}><option value="">Por confirmar</option><option value="yes">Sim</option><option value="no">Não</option></select></label>)}
<button type="button" onClick={()=>save({...b,events:b.events.filter(row=>row.id!==e.id)})}>Remover evento em preparação (histórico conservado)</button>
</fieldset>)}
{[...new Set(b.events.map(e=>e.period))].filter(Boolean).map(period=><label className="block" key={period}><input type="checkbox" checked={b.completePeriods.includes(period)} onChange={e=>save({...b,completePeriods:e.target.checked?[...b.completePeriods,period]:b.completePeriods.filter(p=>p!==period)})}/>Reconciliei todas as regularizações deste período — {period};os outros motivos não automatizados foram conferidos.</label>)}
<p>Quando existirem eventos E, retire as declarações «Sem operações» nos campos12/13 desse período. Uma cobertura incompleta mantém os totais afectados indeterminados.</p>
<button type="button" onClick={()=>{try{save(recordRegularizations(draft,b));}catch(cause){setError(String(cause));}}}>Calcular e guardar regularizações E</button>
{[...regularizationReportRows(draft),...frozenAssetRows(draft)].map(([,label,value,source],i)=><p key={i}><strong>{label}</strong>: {value}<small className="block">{source}</small></p>)}
</details>;
}
@@ -0,0 +1,35 @@
import {useState} from 'react';
import {closureSources} from '@/lib/iva-closure';
import {substitutionBook,saveSubstitutionBook,newSubstitution,previousDeclarations,recordSubstitution,substitutionReportRows,type SubstitutionBook,type SubstitutionInput} from '@/lib/iva-substitution';
export function AcquisitionSubstitution({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let b:SubstitutionBook;try{b=substitutionBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const save=(next:SubstitutionBook)=>{try{onChange('modelo_a_snapshot',saveSubstitutionBook(draft,next));setError('');}catch(e){setError(String(e));}};
const change=(id:string,p:Partial<SubstitutionInput>)=>save({...b,rows:b.rows.map(r=>r.id===id?{...r,...p}:r)});
const previous=previousDeclarations(draft,b),sources=closureSources(draft);
return<details className="rounded border p-3"><summary>L3-C — substituições e diferencial</summary>
<p>Escolha a declaração anterior e o resultado corrigido do mesmo período. Créditos utilizados e pagamentos anteriores conservam-se no histórico;registe apenas pagamentos adicionais.</p>
<p>O diferencial credor aguarda comunicação dos serviços para utilização posterior no campo20. Não compensa automaticamente dívida nem cria reporte26. A preparação não submete à AT;formulário de substituição e formalidades permanecem fora do InvesteMoz.</p>
{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>save({...b,rows:[...b.rows,newSubstitution(crypto.randomUUID())]})}>Preparar substituição</button>
{b.rows.map(r=><fieldset className="rounded border p-3" key={r.id}><legend>Substituição — {r.prior?.period||'período por escolher'}</legend>
<label>Declaração anterior congelada<select value={previous.findIndex(p=>JSON.stringify(p)===JSON.stringify(r.prior))} onChange={e=>{const p=previous[Number(e.target.value)];if(p){const matches=sources.filter(s=>s.period===p.period);change(r.id,{prior:structuredClone(p),...(r.priorDate?{}:{priorDate:p.declarationDate}),...(r.priorReference?{}:{priorReference:p.declarationReference}),...(r.source===null&&matches.length===1?{source:structuredClone(matches[0])}:{})});}}}><option value={-1}>Escolha a versão anterior</option>{previous.filter(p=>p.id!==r.id).map(p=><option key={JSON.stringify(p)} value={previous.indexOf(p)}>{p.period} — {p.entityRef} — {p.kind}/{p.id} — {p.calculatedAt}</option>)}</select></label>
{r.prior&&<p>Anterior:{r.prior.entityRef};{r.prior.origin==='projected'?'pressuposto de simulação':'dados efectivos declarados'};pagamentos e reporte conservados na versão escolhida.</p>}
<label>Resultado L2 corrigido congelado<select value={sources.findIndex(s=>JSON.stringify(s)===JSON.stringify(r.source))} onChange={e=>{const s=sources[Number(e.target.value)];if(s)change(r.id,{source:structuredClone(s)});}}><option value={-1}>Escolha a versão corrigida</option>{sources.filter(s=>!r.prior||s.period===r.prior.period).map(s=><option key={JSON.stringify(s)} value={sources.indexOf(s)}>{s.period} — revisão{s.revision} — {s.calculatedAt}</option>)}</select></label>
<label>Referência da declaração anterior<input value={r.priorReference} onChange={e=>change(r.id,{priorReference:e.target.value})}/></label>
<label>Data da declaração anterior<input type="date" value={r.priorDate} onChange={e=>change(r.id,{priorDate:e.target.value})}/></label>
<label>Referência da substituição ou preparação<input value={r.reference} onChange={e=>change(r.id,{reference:e.target.value})}/></label>
<label>Data da substituição ou prevista<input type="date" value={r.date} onChange={e=>change(r.id,{date:e.target.value})}/></label>
<label>Motivo da substituição<textarea value={r.reason} onChange={e=>change(r.id,{reason:e.target.value})}/></label>
<label>Situação da substituição<select value={r.stage} onChange={e=>change(r.id,{stage:e.target.value as SubstitutionInput['stage']})}><option value="preparation">Em preparação — sem submissão</option><option value="presented">Apresentada fora do InvesteMoz — registo declarado</option></select></label>
<label>Juros adicionais23<select value={r.interest} onChange={e=>change(r.id,{interest:e.target.value as SubstitutionInput['interest']})}><option value="">Por identificar</option><option value="none">Sem juros adicionais — motivo identificado</option><option value="documented">Montante adicional identificado</option></select></label>
{r.interest==='documented'&&<label>Montante dos juros adicionais (MZN)<input value={r.interestAmount} onChange={e=>change(r.id,{interestAmount:e.target.value})}/></label>}
<label>Fonte ou motivo dos juros adicionais<input value={r.interestRef} onChange={e=>change(r.id,{interestRef:e.target.value})}/></label>
<h5>Pagamentos adicionais desta substituição</h5>
{r.payments.map(p=><fieldset key={p.id}><legend>Pagamento adicional</legend>{(['reference','date','amount'] as const).map(k=><label key={k}>{k==='reference'?'Referência do pagamento adicional':k==='date'?'Data do pagamento adicional':'Montante adicional pago (MZN)'}<input type={k==='date'?'date':'text'} value={p[k]} onChange={e=>change(r.id,{payments:r.payments.map(v=>v.id===p.id?{...v,[k]:e.target.value}:v)})}/></label>)}<button type="button" onClick={()=>change(r.id,{payments:r.payments.filter(v=>v.id!==p.id)})}>Remover pagamento desta preparação</button></fieldset>)}
<button type="button" onClick={()=>change(r.id,{payments:[...r.payments,{id:crypto.randomUUID(),reference:'',date:'',amount:''}]})}>Registar pagamento adicional</button>
<button type="button" onClick={()=>save({...b,rows:b.rows.filter(v=>v.id!==r.id)})}>Remover substituição desta preparação</button>
</fieldset>)}
{b.rows.length>0&&<button type="button" onClick={()=>{try{save(recordSubstitution(draft,b));}catch(e){setError(String(e));}}}>Calcular e guardar substituições C</button>}
{substitutionReportRows(draft).map((r,i)=><p key={i}><strong>{r[1]}:</strong> {r[2]}<br/>{r[3]}</p>)}
</details>;
}
@@ -0,0 +1,4 @@
import {fiscalCalculationGaps} from '@/lib/iva-calculation-gaps';
export function FiscalCalculationGaps({draft}:{draft:Record<string,unknown>}){
try{const gaps=fiscalCalculationGaps(draft);if(!gaps.length)return null;return<details className="rounded border p-3"><summary>Cálculos indeterminados e condições para resolver ({gaps.length})</summary><p>Contexto desta oportunidade. Cada cálculo conserva o motivo, os dados necessários e a condição de resolução. IVA documental de aquisição e IVA do fornecimento permanecem separados.</p>{gaps.map(g=><article key={g.id} className="border-t py-2"><h4>{g.period} — {g.calculation}</h4><p>{g.reason}</p><p>Dados necessários: {g.required.join('; ')}.</p><p>Para resolver: {g.resolution}</p></article>)}</details>;}catch(error){return<p role="alert">{String(error)}</p>;}
}
@@ -0,0 +1,9 @@
import type {FiscalClaimEvents} from '@/lib/fiscal-claim-events';
export function FiscalClaimEventsFields({value:r,onChange}:{value:FiscalClaimEvents;onChange:(p:Partial<FiscalClaimEvents>)=>void}){return<>
<label>Referência do pedido ou preparação<input value={r.requestReference} onChange={e=>onChange({requestReference:e.target.value})}/></label><label>Data do pedido ou prevista<input type="date" value={r.requestDate} onChange={e=>onChange({requestDate:e.target.value})}/></label>
<label>Situação do pedido<select value={r.stage} onChange={e=>onChange({stage:e.target.value as FiscalClaimEvents['stage']})}><option value="preparation">Em preparação — sem submissão</option><option value="submitted">Apresentado fora doInvesteMoz — registo declarado</option></select></label>
<label>Decisão recebida<select value={r.decision} onChange={e=>onChange({decision:e.target.value as FiscalClaimEvents['decision']})}><option value="pending">Ainda não identificada</option><option value="approved">Deferimento integral</option><option value="partial">Deferimento parcial</option><option value="rejected">Indeferimento</option></select></label>
{r.decision!=='pending'&&<><label>Número ou referência da decisão<input value={r.decisionReference} onChange={e=>onChange({decisionReference:e.target.value})}/></label><label>Data da decisão<input type="date" value={r.decisionDate} onChange={e=>onChange({decisionDate:e.target.value})}/></label><label>Entidade emitente da decisão<input value={r.decisionIssuer} onChange={e=>onChange({decisionIssuer:e.target.value})}/></label><label>Montante reconhecido na decisão (MZN)<input value={r.approvedAmount} onChange={e=>onChange({approvedAmount:e.target.value})}/></label></>}
{r.receipts.map(p=><fieldset key={p.id}><legend>Recebimento identificado</legend>{(['reference','date','amount']as const).map(k=><label key={k}>{k==='reference'?'Referência do recebimento':k==='date'?'Data do recebimento':'Montante recebido (MZN)'}<input type={k==='date'?'date':'text'} value={p[k]} onChange={e=>onChange({receipts:r.receipts.map(q=>q.id===p.id?{...q,[k]:e.target.value}:q)})}/></label>)}<button type="button" onClick={()=>onChange({receipts:r.receipts.filter(q=>q.id!==p.id)})}>Remover recebimento desta preparação</button></fieldset>)}
<button type="button" onClick={()=>onChange({receipts:[...r.receipts,{id:crypto.randomUUID(),reference:'',date:'',amount:''}]})}>Registar recebimento identificado</button>
</>;}
@@ -0,0 +1,4 @@
import {l3FormPreparations,l3FormPreparationHtml,l3FormalitiesDependencies,l3PreparationStatus} from '@/lib/l3-form-preparation';
export function FiscalL3Preparation({draft}:{draft:Record<string,unknown>}){
try{const forms=l3FormPreparations(draft);if(!forms.length)return null;return<details className="rounded border p-3"><summary>Preparação dos quadros L3 e formalidades</summary><p>Reutiliza entradas e resultados congelados. Os campos com correspondência identificada ficam preparados para conferência e exportação. As formalidades específicas por identificar conservam o seu âmbito.</p>{forms.map(p=><article key={p.id} className="border-t py-2"><h4>{p.branch} — {p.period} — {p.entity}</h4><p>{p.current?'Resultado correspondente às entradas':'Resultado histórico;rever entradas/origem'};{l3PreparationStatus(p.status)}</p><table><thead><tr><th>Campo</th><th>Finalidade</th><th>MZN</th></tr></thead><tbody>{p.fields.map((f,i)=><tr key={i}><td>{f.field}</td><td>{f.label}</td><td>{f.value}</td></tr>)}</tbody></table><p>{p.reference}</p><button type="button" onClick={()=>{const url=URL.createObjectURL(new Blob([l3FormPreparationHtml(p)],{type:'text/html;charset=utf-8'})),link=document.createElement('a');link.href=url;link.download=`preparacao-L3-${p.branch.replace('/','-')}-${p.period||'periodo'}.html`;link.click();setTimeout(()=>URL.revokeObjectURL(url),1000);}}>Exportar preparação {p.branch} para conferência</button></article>)}{l3FormalitiesDependencies.filter(dep=>forms.some(p=>p.branch===dep.branch)).map(dep=><p key={dep.branch}><strong>{dep.branch}:</strong> {dep.missing} Retomar com: {dep.trigger}</p>)}</details>;}catch(error){return<p role="alert">{String(error)}</p>;}
}
@@ -1,4 +1,15 @@
import {FiscalCalculationGaps} from './fiscal-calculation-gaps';
import {FiscalL3Preparation} from './fiscal-l3-preparation';
import { useState } from 'react';
import {AcquisitionClosure} from './acquisition-closure';
import {AcquisitionSubstitution} from './acquisition-substitution';
import {AcquisitionRefund} from './acquisition-refund';
import {AcquisitionBeverageRestitution} from './acquisition-beverage-restitution';
import {AcquisitionRegularizations} from './acquisition-regularizations';
import { AcquisitionOperationLink } from './acquisition-operation-link';
import { AcquisitionImportsExclusions } from './acquisition-imports-exclusions';
import { AcquisitionAllocationEditor } from './acquisition-allocation';
import { acquisitionRightVersion } from '@/lib/iva-acquisition-right';
import { acquisitionBook, acquisitionCurrent, acquisitionExcludedFields, acquisitionPlanReferences, acquisitionReportRows, recordAcquisitions, newAcquisition, reuseAcquisitions, saveAcquisitionBook, type Acquisition, type AcquisitionBook } from '@/lib/iva-acquisitions';
import { acquisitionTreatmentIssue, continueWithoutFormerExploration, formerExplorationSource, type AcquisitionTreatment } from '@/lib/iva-acquisition-continuity';
@@ -8,7 +19,7 @@ export function SimulationAcquisitions({draft,onChange}:{draft:Record<string,unk
let book:AcquisitionBook;
try {book=acquisitionBook(draft);} catch(cause) {return <p role="alert">{String(cause)}</p>;}
const save=(next:AcquisitionBook)=>{try {onChange('modelo_a_snapshot',saveAcquisitionBook(draft,next));setError('');}catch(cause){setError(String(cause));}};
const change=(id:string,patch:Partial<Acquisition>)=>save({...book,rows:book.rows.map(row=>row.id===id?{...row,...patch}:row)});
const change=(id:string,patch:Partial<Acquisition>)=>save({...book,...('deductionLink' in patch?{rightVersion:acquisitionRightVersion}:{}),rows:book.rows.map(row=>row.id===id?{...row,...patch}:row)});
const run=(action:()=>void)=>{try{action();setError('');}catch(cause){setError(cause instanceof Error?cause.message:String(cause));}};
let references:ReturnType<typeof acquisitionPlanReferences>=[];
try {references=acquisitionPlanReferences(draft);}catch { /* The action reports the concrete currency/source error without replacing saved values. */ }
@@ -20,7 +31,7 @@ export function SimulationAcquisitions({draft,onChange}:{draft:Record<string,unk
<p>Oportunidade em tratamento: {String(draft.context_opportunity||'entrada geral')}. Moeda de origem: {book.currency||'por indicar'}. A compra registada não gera automaticamente IVA dedutível.</p>
{book.currency && draft.currency!==book.currency && <p role="alert">As compras conservam {book.currency}; o projecto está em {String(draft.currency||'moeda por indicar')}. Reveja a moeda no projecto. Os montantes e o resultado anterior não foram convertidos ou reinterpretados.</p>}
{!book.currency && !!draft.currency && <button type="button" className="underline" onClick={()=>save({...book,currency:String(draft.currency),rows:book.rows.map(row=>row.sourceCurrency?row:{...row,sourceCurrency:String(draft.currency)})})}>Confirmar explicitamente {String(draft.currency)} como moeda de origem dos valores sem moeda, conservando os montantes</button>}
<p>Primeiro âmbito: aquisições internas em MZN, afectação exclusiva a operações tributadas, sem exclusões ou dedução parcial, documento e dedução no mesmo período de 2026. Nas projecções, cada confirmação é um pressuposto, sem certificar documento ou declaração efectiva. Indique dois valores entre líquido, IVA e bruto; o terceiro é obtido por diferença ou soma, sem taxa de compra presumida.</p>
<p>Aquisições em MZN/2026,ligadas à operação de destino:com direito,sem direito ou indeterminadas. A/B/C/D distinguem compras internas,importações de bens,exclusões/excepções e afectação/proporções. Documento e dedução no mesmo mês;afectação mista,proporções18(6),dedução posterior e regularizações conservam percursos próprios. Nas projecções,cada confirmação é um pressuposto. Compras internas:indique dois valores entre líquido,IVA e bruto. Importações:IVA expressamente identificado no bilhete;custos líquido/bruto são opcionais,sem calcular direitos ou presumir taxa.</p>
<label className="block">Adquirente sujeito passivo de IVA no regime normal (efectivo ou pressuposto da projecção)<select className="block rounded border p-2" value={book.taxpayerRegistered??''} onChange={e=>save({...book,taxpayerRegistered:e.target.value as AcquisitionBook['taxpayerRegistered']})}><option value="">Por confirmar</option><option value="yes">Sim</option><option value="no">Não / outro enquadramento — fora deste lote</option></select></label>
{error&&<p role="alert">{error}</p>}
<details className="rounded border p-2"><summary>Indicar mês da aquisição pelo documento ou pressuposto da projecção</summary>
@@ -29,8 +40,11 @@ export function SimulationAcquisitions({draft,onChange}:{draft:Record<string,unk
<button type="button" onClick={()=>run(()=>{if(!/^2026-(0[1-9]|1[0-2])$/.test(manualPeriod))throw new Error('Indique um mês válido de2026.');if(book.periods.some(p=>p.period===manualPeriod))throw new Error('Esse mês já consta da cobertura; valores conservados.');save({...book,periods:[...book.periods,{period:manualPeriod,complete:false,absent:[]}]});})}>Acrescentar mês indicado</button>
</details>
<button type="button" className="underline" onClick={()=>run(()=>save(reuseAcquisitions(draft,book)))}>Reutilizar compras e períodos existentes</button>
<button type="button" className="ml-3 underline" disabled={!book.periods.length} onClick={()=>save({...book,rows:[...book.rows,newAcquisition(crypto.randomUUID(),book.periods[0]?.period??'',book.currency)]})}>Acrescentar aquisição em falta</button>
<button type="button" className="ml-3 underline" disabled={!book.periods.length} onClick={()=>save({...book,rightVersion:acquisitionRightVersion,rows:[...book.rows,newAcquisition(crypto.randomUUID(),book.periods[0]?.period??'',book.currency)]})}>Acrescentar aquisição em falta</button>
{book.rows.map(row=><details key={row.id} className="rounded border p-3"><summary>{row.description||'Aquisição adicional'} — {row.period} — campo{row.field}</summary>
<AcquisitionAllocationEditor draft={draft} row={row} onChange={patch=>change(row.id,patch)}/>
{!row.d?.method&&<AcquisitionOperationLink draft={draft} row={row} onChange={patch=>change(row.id,patch)}/>}
<AcquisitionImportsExclusions draft={draft} row={row} onChange={patch=>change(row.id,patch)}/>
<details className="rounded border p-2"><summary>Enquadramento especial da aquisição / referência anterior</summary>
<label>Tratamento da aquisição<select value={row.acquisitionTreatment??''} onChange={e=>row.acquisitionTreatment==='former_exploration_exemption'&&e.target.value!=='former_exploration_exemption'?run(()=>save({...book,rows:book.rows.map(item=>item.id===row.id?continueWithoutFormerExploration(item):item)})):change(row.id,{acquisitionTreatment:e.target.value as AcquisitionTreatment})}><option value="">Enquadramento normal; sem benefício especial indicado</option><option value="former_exploration_exemption">Antiga isenção de prospecção/pesquisa —14(2)(c),eliminada</option><option value="normal">Continuidade pelo enquadramento normal</option></select></label>
{acquisitionTreatmentIssue(row.acquisitionTreatment)&&<p role="status">{acquisitionTreatmentIssue(row.acquisitionTreatment)}</p>}
@@ -41,37 +55,46 @@ export function SimulationAcquisitions({draft,onChange}:{draft:Record<string,unk
<div className="grid gap-3 md:grid-cols-2">
<label>Descrição<input className="block rounded border p-2" value={row.description} onChange={e=>change(row.id,{description:e.target.value})}/></label>
{row.sourceMonth===null && <label>Reutilizar valor existente, sem presumir que o orçamento é uma factura<select className="block rounded border p-2" value="" onChange={e=>run(()=>{const ref=references.find(r=>r.key===e.target.value);if(ref)change(row.id,{sourceMonth:ref.month,sourcePeriod:ref.period,sourceField:ref.kind,sourceAmount:ref.amount,sourceCurrency:ref.currency,...(ref.kind==='asset'?{}:{period:ref.period})});})}><option value="">Escolher apenas se corresponde a esta aquisição</option>{references.filter(ref=>ref.kind===(row.field==='08'?'asset':row.field==='10'?'operating':'inventory')).map(ref=><option key={ref.key} value={ref.key}>{ref.label}: {ref.amount??'sem informação'} {ref.currency}</option>)}</select></label>}
{select(row,'field','Categoria',[['08','08 — Imobilizado'],['09','09 — Existências'],['10','10 — Outros bens e serviços']])}
{select(row,'field','Categoria',[['08','08 — Imobilizado'],['09','09 — Existências'],['10','10 — Outros bens e serviços'],...(row.bc?[['11','11 — Importações de bens'] as [string,string]]:[])])}
{row.field==='11'&&<label><input type="checkbox" checked={row.investmentAsset??false} onChange={e=>change(row.id,{investmentAsset:e.target.checked})}/>Bem de investimento importado — incluir no controlo de activos;conserva campo11 e condições próprias da importação.</label>}
{select(row,'origin','Natureza dos dados',[['projected','Projectados / pressupostos'],['effective','Efectivos declarados']])}
<label>Período de dedução<input className="block rounded border p-2" type="month" value={row.period} onChange={e=>change(row.id,{period:e.target.value})}/></label>
{row.sourceMonth!==null && <label>O valor de origem corresponde a<select className="block rounded border p-2" value={row.sourceBasis} onChange={e=>{const basis=e.target.value as Acquisition['sourceBasis'];change(row.id,{sourceBasis:basis,...(basis==='net'&&!row.net?{net:row.sourceAmount??''}:basis==='gross'&&!row.gross?{gross:row.sourceAmount??''}:{})});}}><option value="">Por classificar</option><option value="net">Valor sem IVA</option><option value="gross">Valor com IVA</option></select></label>}
{(['net','vat','gross'] as const).map((field,index)=><label key={field}>{['Valor líquido','IVA indicado','Valor bruto'][index]} ({row.sourceCurrency})<input className="block rounded border p-2" inputMode="decimal" value={row[field]} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}
{select(row,'documentType','Tipo de documento',[['invoice','Factura'],['equivalent','Documento equivalente']])}
{select(row,'documentType','Tipo de documento',row.domestic==='no'&&row.bc?[['customs','Bilhete de despacho de importação']]:[['invoice','Factura'],['equivalent','Documento equivalente']])}
<label>Referência do documento / previsão<input className="block rounded border p-2" value={row.documentRef} onChange={e=>change(row.id,{documentRef:e.target.value})}/></label>
<label>Linha do documento, se discriminado em várias aquisições<input className="block rounded border p-2" value={row.documentLine} onChange={e=>change(row.id,{documentLine:e.target.value})}/></label>
<label>Data do documento / prevista<input className="block rounded border p-2" type="date" value={row.documentDate} onChange={e=>change(row.id,{documentDate:e.target.value})}/></label>
<label>Fornecedor / previsto<input className="block rounded border p-2" value={row.supplier} onChange={e=>change(row.id,{supplier:e.target.value})}/></label>
{!(row.bc&&row.domestic==='no')&&<label>Fornecedor / previsto<input className="block rounded border p-2" value={row.supplier} onChange={e=>change(row.id,{supplier:e.target.value})}/></label>}
{select(row,'domestic','Aquisição interna',yesNo)}
{row.acquisitionTreatment!=='former_exploration_exemption'&&<>
{select(row,'supplierRegistered','Fornecedor inscrito no IVA',yesNo)}
{!(row.bc&&row.domestic==='no')&&select(row,'supplierRegistered','Fornecedor inscrito no IVA',yesNo)}
{select(row,'legalDocument','Documento emitido em forma legal',yesNo)}
{select(row,'held','Documento na posse do adquirente / previsto na projecção',yesNo)}
{select(row,'allocation','Afectação',[['taxable_only','Exclusiva a operações tributadas'],['mixed','Mista / parcial — fora deste lote'],['no_right','Operações sem direito à dedução']])}
{select(row,'allocation','Afectação',[['taxable_only',row.d?.method==='reduced'?'Exclusiva à origem18(6)':row.deductionLink?'Exclusiva à operação ligada':'Exclusiva a operações tributadas'],['mixed',row.d?'Mista / parcial — métodoD':'Mista / parcial — preparar métodoD'],['no_right','Operações sem direito à dedução']])}
{select(row,'exclusion','Exclusões de dedução',[['none','Sem exclusões ou casos especiais dos arts.18–20'],['excluded','Despesa excluída'],['special','Veículos, combustível, viagens, alojamento, comunicações, luxo ou outra situação especial — por enquadrar']])}
{select(row,'integrity','Operação real / pressuposto regular, sem simulação, margem de segunda mão ou impedimentos do art.18(3–5)',yesNo)}
</>}
</div>
<p>Fundamento: CIVA arts.18–21, fontes e versão no resultado. Não se calcula dedução parcial, excepção de despesa ou dedução posterior neste lote.</p>
<p>Fundamento:CIVA18–21,fontes e versão no resultado. {row.d?'MétodoD aplicado apenas à parcela elegível pelas condiçõesB/C;fracções exactas,sem regularização anual automática ou restituiçãoL3.':row.bc?'Aplicam-se apenas as exclusões/excepções documentadas escolhidas;gasóleo50% conserva fracção exacta. Sem pro rata,proporções18(6) ou regularização neste incremento.':'Afectação parcial,despesa especial e dedução posterior exigem percurso próprio;use a análiseC quando aplicável.'}</p>
{row.sourceMonth===null && <button type="button" className="mr-3 underline" onClick={()=>save({...book,rows:book.rows.filter(r=>r.id!==row.id)})}>Remover esta aquisição introduzida directamente</button>}
{row.sourceMonth!==null && <button type="button" className="underline" onClick={()=>run(()=>{const ref=acquisitionPlanReferences(draft).find(r=>r.month===row.sourceMonth && r.kind===(row.sourceField??'inventory'));if(!ref)throw new Error('Origem não disponível; conserve o registo e reveja o plano.');if(draft.currency!==row.sourceCurrency)throw new Error('Moeda divergente; não adoptar montantes de outra moeda.');change(row.id,{sourceAmount:ref.amount,sourcePeriod:ref.period,...(row.sourceBasis==='net'?{net:ref.amount??'',gross:''}:row.sourceBasis==='gross'?{gross:ref.amount??'',net:''}:{})});})}>Adoptar explicitamente o valor actual do plano (conserva histórico)</button>}
</details>)}
<AcquisitionRegularizations draft={draft} onChange={onChange}/>
{book.periods.map(period=><details key={period.period} className="rounded border p-3"><summary>{period.period} — cobertura das parcelas — {period.complete && period.absent.length===acquisitionExcludedFields.length?'confirmada':'por completar'}</summary>
{book.rows.some(r=>r.bc)&&<label className="block"><input type="checkbox" checked={period.importsComplete??false} onChange={e=>save({...book,periods:book.periods.map(p=>p.period===period.period?{...p,importsComplete:e.target.checked}:p)})}/> Incluí todas as importações de bens/campo11 deste período,mesmo isentas ou sem direito;sem somar novamente IVA de serviços incluídos na base.</label>}
<label className="block"><input type="checkbox" checked={period.complete} onChange={e=>save({...book,periods:book.periods.map(p=>p.period===period.period?{...p,complete:e.target.checked}:p)})}/> Incluí todas as aquisições08–10 deste período, incluindo as sem direito à dedução; uma lista vazia significa que não houve essas aquisições.</label>
<p>Campos fora deste lote: assinale apenas quando não existiram as respectivas operações. Uma parcela não assinalada permanece indeterminada.</p>
{acquisitionExcludedFields.map(field=><label className="block" key={field}><input type="checkbox" checked={period.absent.includes(field)} onChange={e=>save({...book,periods:book.periods.map(p=>p.period===period.period?{...p,absent:e.target.checked?[...p.absent,field]:p.absent.filter(f=>f!==field)}:p)})}/> Sem operações no campo{field} — {labels[field]}</label>)}
</details>)}
<button type="button" disabled={!book.periods.length} className="rounded bg-emerald-800 p-2 text-white disabled:opacity-50" onClick={()=>run(()=>save(recordAcquisitions(draft,book)))}>Calcular e guardar versão do apuramento parcial</button>
<p>O preenchimento e o resultado seguem a gravação privada do simulador. Os campos19–27 e a submissão à AT permanecem fora deste lote; 17/18 são diferenças antes de créditos anteriores, sem ordem de pagamento ou promessa de reembolso.</p>
<p>O apuramento01–18 conserva o seu resultado antes dos créditos. O fechoA/B abaixo reutiliza a versão congelada,sem ordem de pagamento,submissãoAT ou promessa de reembolso.</p>
<AcquisitionClosure draft={draft} onChange={onChange}/>
<AcquisitionSubstitution draft={draft} onChange={onChange}/>
<AcquisitionRefund draft={draft} onChange={onChange}/>
<AcquisitionBeverageRestitution draft={draft} onChange={onChange}/>
<FiscalCalculationGaps draft={draft}/>
<FiscalL3Preparation draft={draft}/>
{book.result&&<><p role="status">{acquisitionCurrent(draft,book)?'Resultado correspondente às entradas guardadas.':'Entradas ou origem alteradas: resultado histórico preservado; actualizar o cálculo.'}</p><dl>{acquisitionReportRows(draft).map(([,label,value,origin],i)=><div key={i}><dt className="font-semibold">{label}</dt><dd>{value}<small className="block">{origin}</small></dd></div>)}</dl></>}
</section>;
}
@@ -0,0 +1,41 @@
import {SimulationFxSelection} from './simulation-fx-selection';
import {useState} from 'react';
import {currencyEventBook,currencyEventCurrent,currencyEventReportRows,currencyEventSource,currencyEventTreatments,newCurrencyEvent,recordCurrencyEvents,saveCurrencyEventBook,switchCurrencyEvent,type CurrencyEventBook,type CurrencyEventRow} from '@/lib/iva-currency-events';
export function SimulationCurrencyEvents({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let book:CurrencyEventBook;try{book=currencyEventBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const save=(next:CurrencyEventBook)=>{try{onChange('modelo_a_snapshot',saveCurrencyEventBook(draft,next));setError('');}catch(e){setError(String(e));}};
const change=(id:string,patch:Partial<CurrencyEventRow>)=>save({...book,rows:book.rows.map(r=>r.id===id?{...r,...patch}:r)});
return <details className="rounded border p-3"><summary>Moeda e datas do facto gerador/exigibilidade</summary><p>Facto gerador e exigibilidade são estados separados. Identifique a operação já preparada,sem repetir os seus cálculos. P104 permite a selecção operacional definida pela Tempo;os cenários antigos permanecem condicionados até selecção explícita,sem recálculo de históricos.</p><p>{currencyEventSource}</p>{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>save({...book,rows:[...book.rows,newCurrencyEvent(crypto.randomUUID(),String(draft.currency??''))]})}>Acrescentar moeda/evento</button>
{book.rows.map(row=><details key={row.id} className="rounded border p-3"><summary>{row.description||'Operação por identificar'} — {row.period||'mês por indicar'}</summary>
<label>Percurso de moeda/evento<select value={row.treatment} onChange={e=>change(row.id,switchCurrencyEvent(row,e.target.value))}><option value="">Por indicar</option>{currencyEventTreatments.map(t=><option key={t.id} value={t.id}>{t.label}</option>)}</select></label>
<label>Natureza dos dados<select value={row.origin} onChange={e=>change(row.id,{origin:e.target.value as CurrencyEventRow['origin']})}><option value="projected">Projectados / pressupostos</option><option value="effective">Efectivos declarados</option></select></label>
{([['description','Operação identificada'],['operationRef','Referência da operação existente'],['period','Mês do contexto'],['documentRef','Documento / referência da previsão'],['documentDate','Data do documento'],['scope','Âmbito e parcelas abrangidas'],['evidence','Factos ou pressupostos expressos'],['amount','Montante total do âmbito identificado'],['currency','Moeda do montante / destino da conversão']] as const).map(([field,label])=><label className="block" key={field}>{label}<input value={row[field]} type={field==='period'?'month':field==='documentDate'?'date':'text'} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}
<label>Factos próprios correspondem ao percurso,operação e âmbito<select value={row.factsConfirmed} onChange={e=>change(row.id,{factsConfirmed:e.target.value as CurrencyEventRow['factsConfirmed']})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>
{row.treatment==='foreign_scenario'?<>
<SimulationFxSelection row={row} onChange={patch=>change(row.id,patch)}/>
{([['sourceCurrency','Moeda original'],['fxRate','Taxa de conversão indicada'],['fxDate','Data efectiva da taxa'],['fxSource','Fonte e exemplar da taxa'],['fxRuleRef','Regra/pressuposto da escolha da taxa e data']] as const).map(([field,label])=><label className="block" key={field}>{label}<input value={row[field]} type={field==='fxDate'?'date':'text'} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}
<label>Direcção da taxa<select value={row.fxDirection} onChange={e=>change(row.id,{fxDirection:e.target.value as CurrencyEventRow['fxDirection']})}><option value="">Por indicar</option><option value="mzn_per_unit">MZN por unidade da moeda original</option><option value="units_per_mzn">Unidades da moeda original por MZN</option></select></label><p>{row.fxSelection?.applied?'Conversão operacional após selecção explícita da taxa.':'Cenário histórico condicionado;selecção operacional ainda não aplicada.'} Não activa base fiscal,IVA ou dedução,nem altera os livros anteriores.</p>
</>:row.treatment&&<>
{([['eventDate','Data própria do evento escolhido'],['eventRef','Referência e factos do evento7/8'],['reviewDate','Data até à qual os eventos foram conferidos']] as const).filter(([field])=>field!=='eventDate'||!['advance_payment','consignment_deadline'].includes(row.treatment)).map(([field,label])=><label className="block" key={field}>{label}<input value={row[field]} type={field==='eventRef'?'text':'date'} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}
{['consignment_deadline','service_early_charge','contract_effects'].includes(row.treatment)&&<label>{row.treatment==='consignment_deadline'?'Entrega ao destinatário da consignação':row.treatment==='service_early_charge'?'Data de realização do serviço posterior à cobrança/débito':'Disponibilização anterior aos efeitos translativos'}<input type="date" value={row.otherDate} onChange={e=>change(row.id,{otherDate:e.target.value})}/></label>}
{row.treatment==='contract_effects'&&<p>Este percurso7(7) exclui locação vinculativa e venda com reserva3(3)a/b. Confirme essa distinção nos factos.</p>}
{row.treatment==='continuous_period'&&<p>Use o termo do período a que respeita cada pagamento sucessivo,não a data arbitrária de emissão.</p>}
{row.treatment==='consignment_deadline'&&<p>7(6) fixa exigibilidade no termo180dias da consignação. P123 conserva a conferência da não devolução;embalagensP102 são distintas.</p>}
{!['import_clearance','import_auction'].includes(row.treatment)&&<>
<label>Operação sujeita à obrigação de emitir factura25<select value={row.invoiceRequired} onChange={e=>change(row.id,{invoiceRequired:e.target.value as CurrencyEventRow['invoiceRequired']})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>
{row.invoiceRequired==='yes'&&<>
{([['legalDeadline','Termo legal do prazo de emissão aplicável'],['deadlineRef','Disposição,calendário e âmbito que fundamentam esse prazo']] as const).map(([field,label])=><label className="block" key={field}>{label}<input value={row[field]} type={field==='legalDeadline'?'date':'text'} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}
<label>Facturação até à conferência<select value={row.invoiceState} onChange={e=>change(row.id,{invoiceState:e.target.value as CurrencyEventRow['invoiceState']})}><option value="">Por esclarecer</option><option value="issued">Factura emitida</option><option value="not_issued">Factura não emitida</option></select></label>
{row.invoiceState==='issued'&&<>{([['invoiceDate','Data de emissão da factura'],['invoiceRef','Referência da factura']] as const).map(([field,label])=><label key={field}>{label}<input value={row[field]} type={field==='invoiceDate'?'date':'text'} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}</>}
<label>Recebimentos neste âmbito<select value={row.paymentState} onChange={e=>change(row.id,{paymentState:e.target.value as CurrencyEventRow['paymentState']})}><option value="">Por esclarecer</option><option value="none">Sem recebimento</option><option value="received">Recebimento identificado</option></select></label>
{row.paymentState==='received'&&<>{([['paymentDate','Data de recebimento'],['paymentAmount','Montante recebido'],['paymentRef','Referência e âmbito do recebimento']] as const).map(([field,label])=><label className="block" key={field}>{label}<input value={row[field]} type={field==='paymentDate'?'date':'text'} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}</>}
<p>O recebimento anterior é separado do restante,sem dupla contagem. Para parcelas com factos distintos,use âmbitos distintos e conserve as referências.</p>
</>}
</>}
</>}
<p>Trocar percurso conserva dados ocultos e referências;reveja as confirmações aplicáveis.</p></details>)}
{!!book.rows.length&&<button type="button" onClick={()=>{try{save(recordCurrencyEvents(draft,book));}catch(e){setError(String(e));}}}>Conferir moeda/eventos e guardar versão</button>}
{book.result&&<><p role="status">{currencyEventCurrent(draft,book)?'Resultados correspondentes às entradas guardadas.':'Entradas alteradas;histórico conservado.'} {book.history?.length??0} versões anteriores.P104 conserva a natureza operacional ou condicionada indicada em cada resultado;semIVA/base/dedução activados.</p><dl>{currencyEventReportRows(draft).map(([,label,value,origin],i)=><div key={i}><dt>{label}</dt><dd>{value}{label.startsWith('P104')?<details><summary>Fonte,âmbito e versão</summary><small className="block">{origin}</small></details>:<small className="block">{origin}</small>}</dd></div>)}</dl></>}
</details>;
}
@@ -0,0 +1,44 @@
import {useState} from 'react';
import {digitalBook,digitalConditions,digitalCurrent,digitalReportRows,digitalSource,digitalTreatments,newDigitalRow,recordDigital,saveDigitalBook,switchDigitalKind,switchDigitalTreatment,type DigitalBook,type DigitalRow} from '@/lib/iva-digital';
export function SimulationDigital({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let book:DigitalBook;
try{book=digitalBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const save=(next:DigitalBook)=>{try{onChange('modelo_a_snapshot',saveDigitalBook(draft,next));setError('');}catch(e){setError(String(e));}};
const change=(id:string,patch:Partial<DigitalRow>)=>save({...book,rows:book.rows.map(r=>r.id===id?{...r,...patch}:r)});
return<details className="space-y-3 rounded border p-3"><summary>Bens e serviços digitais — natureza, localização e obrigações</summary>
<p>Distinga o activo transmitido da funcionalidade prestada. O nome comercial, a moeda, a nacionalidade ou um servidor não determinam sozinhos o tratamento. Reutilize as referências da operação e os documentos disponíveis.</p>
<p>Localização não concede isenção nem calcula IVA ou dedução. A identificação do responsável não apresenta uma declaração nem inicia pagamento. As formalidades remetidas para regulamentação ficam assinaladas.</p>
<p><strong>Cobertura digital deste incremento:</strong> identificação da natureza, localização, responsável, rascunho, histórico e relatório. As formalidades regulamentares ainda não cotejadas — modelos da declaração e do mapa de retenções, procedimentos de entrega e pagamento — não estão automatizadas. Não representa cobertura digital integral nem calcula imposto ou dedução.</p>
<p>{digitalSource}</p>{error&&<p role="alert">{error}</p>}
<button type="button" className="underline" onClick={()=>save({...book,rows:[...book.rows,newDigitalRow(crypto.randomUUID())]})}>Acrescentar operação digital</button>
{book.rows.map(row=><details key={row.id} className="rounded border p-3"><summary>{row.description||'Operação digital por identificar'} — {row.period||'mês por indicar'}</summary><div className="grid gap-3 md:grid-cols-2">
<label>Natureza da operação digital<select value={row.kind} onChange={e=>change(row.id,switchDigitalKind(row,e.target.value))}><option value="">Por esclarecer</option><option value="goods">P130 — Transmissão de bem digital</option><option value="service">P121 — Prestação de serviço digital</option></select></label>
{row.kind&&<label>Tratamento digital<select value={row.treatment} onChange={e=>change(row.id,switchDigitalTreatment(row,e.target.value))}><option value="">Por indicar</option>{digitalTreatments.filter(t=>t.kind===row.kind).map(t=><option key={t.id} value={t.id}>{t.label}</option>)}</select></label>}
<label>Natureza dos dados<select value={row.origin} onChange={e=>change(row.id,{origin:e.target.value as DigitalRow['origin']})}><option value="projected">Projectados / pressupostos</option><option value="effective">Efectivos declarados</option></select></label>
{([['description','Operação digital identificada'],['operationRef','Referência da operação / pressuposto'],['operationDate','Data da operação / prevista'],['period','Mês da operação'],['subjectRef','Objecto, direitos transmitidos ou funcionalidade prestada'],['natureRef','Fundamento da distinção bem/serviço e natureza digital'],['useRef','Destinatário e utilização / pressuposto'],['documentRef','Documento existente / referência da previsão'],['documentDate','Data do documento / prevista'],['scope','Âmbito: operação, bens/serviços, período e condições'],['evidence','Factos disponíveis / pressupostos expressos'],['buyerPlace','Estabelecimento ou domicílio do adquirente'],['buyerRef','Referência do estabelecimento ou domicílio adquirente']] as const).map(([field,label])=><label key={field}>{label}<input type={['operationDate','documentDate'].includes(field)?'date':field==='period'?'month':'text'} value={row[field]} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}
<label>País do estabelecimento ou domicílio adquirente<select value={row.buyerCountry} onChange={e=>change(row.id,{buyerCountry:e.target.value})}><option value="">Por esclarecer</option><option value="MZ">Moçambique</option><option value="foreign">Estrangeiro</option></select></label>
{row.buyerCountry!=='foreign'&&<>
<label>Sede, EP ou domicílio a partir do qual o fornecedor opera<input value={row.providerPlace} onChange={e=>change(row.id,{providerPlace:e.target.value})}/></label><label>Referência desse estabelecimento fornecedor<input value={row.providerRef} onChange={e=>change(row.id,{providerRef:e.target.value})}/></label>
<label>País do estabelecimento fornecedor<select value={row.providerCountry} onChange={e=>change(row.id,{providerCountry:e.target.value})}><option value="">Por esclarecer</option><option value="MZ">Moçambique</option><option value="foreign">Estrangeiro</option></select></label>
</>}
{row.buyerCountry==='MZ'&&row.providerCountry==='foreign'&&<>
<label>Adquirente sujeito passivo nacional —26(4)<select value={row.buyerTaxable} onChange={e=>change(row.id,{buyerTaxable:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>
<label>Fundamento da qualidade fiscal do adquirente<input value={row.buyerTaxRef} onChange={e=>change(row.id,{buyerTaxRef:e.target.value})}/></label><p>A qualidade fiscal serve para identificar o responsável; a sua falta não transforma a localização nacional em operação estrangeira.</p>
{row.buyerTaxable==='no'&&<>
<label>Fornecedor não residente sujeito passivo<select value={row.providerTaxable} onChange={e=>change(row.id,{providerTaxable:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label><label>Fundamento da qualidade fiscal do fornecedor não residente<input value={row.providerTaxRef} onChange={e=>change(row.id,{providerTaxRef:e.target.value})}/></label>
<label>Representante residente nomeado —26(1)<select value={row.representative} onChange={e=>change(row.id,{representative:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>
{row.representative==='yes'&&<><label>Representante e referência da procuração/poderes<input value={row.representativeRef} onChange={e=>change(row.id,{representativeRef:e.target.value})}/></label><label>Nomeação comunicada à contraparte antes da operação —26(2)<select value={row.communicationPrior} onChange={e=>change(row.id,{communicationPrior:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label><label>Referência da comunicação<input value={row.communicationRef} onChange={e=>change(row.id,{communicationRef:e.target.value})}/></label></>}
{row.representative==='no'&&<><label>Aquisição no exercício de actividade comercial, industrial ou profissional —26(3)<select value={row.businessUse} onChange={e=>change(row.id,{businessUse:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label><label>Referência dessa actividade e aquisição<input value={row.businessRef} onChange={e=>change(row.id,{businessRef:e.target.value})}/></label></>}
</>}
</>}
{row.buyerCountry==='MZ'&&row.providerCountry==='MZ'&&<>
<label>Fornecedor sujeito passivo nacional<select value={row.providerTaxable} onChange={e=>change(row.id,{providerTaxable:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label><label>Fundamento da qualidade fiscal do fornecedor<input value={row.providerTaxRef} onChange={e=>change(row.id,{providerTaxRef:e.target.value})}/></label>
{row.kind==='goods'&&<><label>Local do bem na colocação à disposição —6(1)<select value={row.goodsPlace} onChange={e=>change(row.id,{goodsPlace:e.target.value})}><option value="">Por demonstrar</option><option value="MZ">Moçambique, segundo fundamento identificado</option><option value="foreign">Estrangeiro, segundo fundamento identificado</option></select></label><label>Fundamento do local do bem digital — sem inferência pelo servidor<input value={row.goodsPlaceRef} onChange={e=>change(row.id,{goodsPlaceRef:e.target.value})}/></label></>}
</>}
</div><fieldset><legend>Factos próprios da natureza escolhida</legend>{digitalConditions(row.kind).map(([key,label])=><label className="block" key={key}>{label}<select value={row.conditions[key]??''} onChange={e=>change(row.id,{conditions:{...row.conditions,[key]:e.target.value as ''|'yes'|'no'}})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>)}</fieldset>
<p>Mudar natureza ou tratamento conserva referências e campos ocultos; reveja as confirmações próprias. Os dados não são copiados de outra oportunidade.</p></details>)}
{!!book.rows.length&&<button type="button" onClick={()=>{try{save(recordDigital(draft,book));}catch(e){setError(String(e));}}}>Classificar operações digitais e guardar versão</button>}
{book.result&&<><p role="status">{digitalCurrent(draft,book)?'Resultados correspondem às entradas guardadas.':'Entradas alteradas; resultados históricos conservados. Reveja o delta afectado.'} {book.history?.length??0} versões anteriores. Sem cálculo de IVA ou dedução.</p><dl>{digitalReportRows(draft).map(([,label,value,origin],i)=><div key={i}><dt>{label}</dt><dd>{value}<small className="block">{origin}</small></dd></div>)}</dl></>}
</details>;
}
@@ -0,0 +1,26 @@
import {useState} from 'react';
import {foreignOperationBook,foreignOperationCurrent,foreignOperationReportRows,foreignOperationSource,foreignSources,foreignEvents,newForeignOperation,recordForeignOperations,saveForeignOperationBook,switchForeignSource,type ForeignOperationBook,type ForeignOperationRow} from '@/lib/iva-foreign-operations';
export function SimulationForeignOperations({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let book:ForeignOperationBook;try{book=foreignOperationBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const save=(next:ForeignOperationBook)=>{try{onChange('modelo_a_snapshot',saveForeignOperationBook(draft,next));setError('');}catch(e){setError(String(e));}};
const change=(id:string,patch:Partial<ForeignOperationRow>)=>save({...book,rows:book.rows.map(r=>r.id===id?{...r,...patch}:r)});
return<details className="rounded border p-3"><summary>Operações no estrangeiro — localização e enquadramento</summary><p>Reutilize uma localização já guardada nesta oportunidade. Fora do território não significa isenção,IVA zero ou dedução concedida. Não é necessário repetir os factos/documentos da localização.</p><p>{foreignOperationSource}</p>{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>save({...book,rows:[...book.rows,newForeignOperation(crypto.randomUUID())]})}>Acrescentar análise de operação no estrangeiro</button>
{book.rows.map(row=>{let sources:ReturnType<typeof foreignSources>=[],events:ReturnType<typeof foreignEvents>=[];try{sources=foreignSources(draft,row.sourceKind);events=foreignEvents(draft);}catch{/* Existing readers retain corrupt originals. */}const source=sources.find(s=>s.id===row.sourceRowId);return<details key={row.id}><summary>{source?.description||'Operação por associar'} — {source?.period||'período da origem'}</summary>
<label>Origem da localização<select value={row.sourceKind} onChange={e=>change(row.id,switchForeignSource(row,e.target.value as ForeignOperationRow['sourceKind']))}><option value="">Por indicar</option><option value="goods">Bens corpóreos</option><option value="services">Serviços e transporte</option><option value="listed">Serviços enumerados não digitais</option><option value="digital">Bens e serviços digitais</option></select></label>
<label>Resultado de localização existente<select value={row.sourceRowId} onChange={e=>change(row.id,switchForeignSource(row,row.sourceKind,e.target.value))}><option value="">Escolher operação</option>{sources.map(s=><option key={s.id} value={s.id}>{s.description} — {s.period} — {s.territory??'Indeterminado'}{s.current?'':' — histórico'}</option>)}</select></label>
{row.sourceKind&&!sources.length&&<p>Prepare a localização nas secções de bens/serviços existentes desta oportunidade. Nenhuma localização é presumida ou copiada de outro projecto.</p>}
{source&&<p>Operação: {source.operationRef}. Âmbito: {source.scope}. {source.reason}</p>}
{source?.territory==='partial'&&<label>Parcela deste trajecto analisada<select value={row.territorialPart} onChange={e=>change(row.id,{territorialPart:e.target.value as ForeignOperationRow['territorialPart']})}><option value="">Delimitar parcela</option><option value="outside">Parcela fora do território nacional</option><option value="national">Parcela nacional</option></select></label>}
{source&&source.territory!=='national'&&<>
<label>Evento já guardado da mesma operação,quando aplicável<select value={row.eventRowId} onChange={e=>change(row.id,{eventRowId:e.target.value})}><option value="">Sem associação necessária nesta análise territorial</option>{events.filter(e=>e.operationRef===source.operationRef&&e.period===source.period).map(e=><option key={e.id} value={e.id}>{e.description} — {e.period}{e.current?'':' — histórico'}</option>)}</select></label>
<label>Seria tributável se efectuada no território nacional?<select value={row.hypotheticalTaxable} onChange={e=>change(row.id,{hypotheticalTaxable:e.target.value as ForeignOperationRow['hypotheticalTaxable']})}><option value="">Por esclarecer</option><option value="yes">Sim,segundo o fundamento identificado</option><option value="no">Não,segundo o fundamento identificado</option></select></label>
<label>Fundamento da hipótese interna e exclusões aplicáveis<input value={row.hypotheticalRef} onChange={e=>change(row.id,{hypotheticalRef:e.target.value})}/></label>
{row.hypotheticalTaxable==='yes'&&<label>Existe exclusão19(2) aplicável:17-A ou pagamentos15(6)c?<select value={row.excluded19_2} onChange={e=>change(row.id,{excluded19_2:e.target.value as ForeignOperationRow['excluded19_2']})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>}
</>}
<label>Âmbito da análise,conjunto/parcela e período<input value={row.scope} onChange={e=>change(row.id,{scope:e.target.value})}/></label><label>Factos ou pressupostos expressos<input value={row.evidence} onChange={e=>change(row.id,{evidence:e.target.value})}/></label><p>Trocar origem conserva fundamentos ocultos;reveja as confirmações. Nenhuma dedução é lançada por esta análise.</p>
</details>;})}
{!!book.rows.length&&<button type="button" onClick={()=>{try{save(recordForeignOperations(draft,book));}catch(e){setError(String(e));}}}>Analisar operação estrangeira e guardar versão</button>}
{book.result&&<><p role="status">{foreignOperationCurrent(draft,book)?'Análise corresponde às entradas e origens guardadas.':'Entradas ou origens alteradas;resultado histórico conservado. Reveja apenas o delta afectado.'} {book.history?.length??0} versões anteriores.Sem dedução/IVA calculados.</p><dl>{foreignOperationReportRows(draft).map(([,label,value,origin],i)=><div key={i}><dt>{label}</dt><dd>{value}<small className="block">{origin}</small></dd></div>)}</dl></>}
</details>;
}
@@ -1,3 +1,7 @@
import {SimulationIspcResiduals} from '@/components/simulation-ispc-residuals';
import {SimulationIspcWithholding} from '@/components/simulation-ispc-withholding';
import {SimulationIspcQuarter} from '@/components/simulation-ispc-quarter';
import {SimulationIspcEligibility} from './simulation-ispc-eligibility';
import { simulationDraftEtag } from '@/lib/simulation-draft-etag';
import { SimulationPublishedIva, type PublishedIvaInput } from './simulation-published-iva';
import { SimulationMonthlyIva } from './simulation-monthly-iva';
@@ -3501,6 +3505,10 @@ export function SimulationForm() {
onCurrencyChange={(value) => change('currency', value)}
/></details>
)}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIspcEligibility draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIspcQuarter draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIspcWithholding draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationIspcResiduals draft={draft} onChange={change} />}
{(current.id === 'financial' || current.id === 'tax') && <SimulationMonthlyIva draft={draft} busy={isCalculating} onCalculate={runSimulation} onChange={change} />}
{current.id === 'financial' &&
(draft.detail_level === 'advanced' ||
@@ -0,0 +1,21 @@
import {useState} from 'react';
import type {CurrencyEventRow} from '@/lib/iva-currency-events';
import {emptyFxSelection,selectFx,fxTempoSource,type FxSelection} from '@/lib/iva-fx-selection';
const columnLabels:Record<string,string>={buy:'Compra',sell:'Venda',mean:'Média de referência BM',exception:'Excepção fiscal identificada'};
const directionLabels:Record<string,string>={mzn_per_unit:'MZN por unidade da moeda original',units_per_mzn:'unidades da moeda original por MZN'};
export function SimulationFxSelection({row,onChange}:{row:CurrencyEventRow;onChange:(patch:Partial<CurrencyEventRow>)=>void}){
const[error,setError]=useState(''),[preview,setPreview]=useState<ReturnType<typeof selectFx>|null>(null);const s=row.fxSelection??{...emptyFxSelection(),sourceCurrency:row.sourceCurrency,direction:row.fxDirection};
const edit=(patch:Partial<FxSelection>)=>{setPreview(null);onChange({fxSelection:{...s,...patch}});};
const text=(key:'submissionDate'|'bulletinDate'|'bulletinRef'|'source'|'sourceCurrency'|'bulletinPerspective'|'buy'|'sell'|'mean'|'exceptionRef'|'exceptionScope'|'exceptionDate'|'exceptionRate',label:string)=><label className="block" key={key}>{label}<input value={s[key]} type={key.endsWith('Date')?'date':'text'} onChange={e=>edit({[key]:e.target.value})}/></label>;
return<fieldset className="rounded border p-3"><legend>P104 — selecção da taxa segundo orientação da Tempo</legend><p>{fxTempoSource}</p>
<label>Natureza da operação declarada<select value={s.nature} onChange={e=>edit({nature:e.target.value as FxSelection['nature']})}><option value="">Por indicar</option><option value="purchase">Compra de moeda</option><option value="sale">Venda de moeda</option><option value="commercial">Operação comercial</option></select></label>
{text('submissionDate','Data de submissão indicada')}{text('sourceCurrency','Moeda original já declarada')}{text('bulletinRef','Boletim,edição e série de referência')}{text('source','Fonte do boletim;URL do Banco de Moçambique para operações comerciais')}{text('bulletinDate','Data do boletim')}<label>Emitente identificado do boletim,quando a fonte é um exemplar arquivado<input value={s.issuer??''} onChange={e=>edit({issuer:e.target.value})}/></label>
<label>Sentido da cotação<select value={s.direction} onChange={e=>edit({direction:e.target.value as FxSelection['direction']})}><option value="">Por indicar</option><option value="mzn_per_unit">MZN por unidade da moeda original</option><option value="units_per_mzn">Unidades da moeda original porMZN</option></select></label>
<button type="button" onClick={()=>edit({sourceCurrency:s.sourceCurrency||row.sourceCurrency,direction:s.direction||row.fxDirection,submissionDate:s.submissionDate||row.fxDate,bulletinDate:s.bulletinDate||row.fxDate,source:s.source||row.fxSource})}>Reutilizar moeda,sentido e data já indicados nos campos vazios;conferir a data de submissão</button>
<label>Regra aplicável<select value={s.mode} onChange={e=>edit({mode:e.target.value as FxSelection['mode']})}><option value="general">Procedimento geral da Tempo</option><option value="exception">Excepção fiscal específica identificada</option></select></label>
{s.mode==='exception'?<>{text('exceptionRef','Disposição fiscal que impõe outra data/taxa')}{text('exceptionScope','Âmbito da excepção')}{text('exceptionDate','Data imposta pela disposição')}{text('exceptionRate','Taxa da excepção,com fonte no boletim indicado')}</>:s.nature==='commercial'?text('mean','Coluna Média da série de referênciaBM;sem calcular média própria'):<>{text('bulletinPerspective','Perspectiva de compra/venda indicada no boletim')}
<label>Relação da natureza declarada com a perspectiva do boletim<select value={s.relation} onChange={e=>edit({relation:e.target.value as FxSelection['relation']})}><option value="">Por conferir</option><option value="same">Mesma perspectiva</option><option value="opposite">Perspectiva contrária:compra do cliente corresponde a venda do emitente,ou inversamente</option></select></label>{text('buy','Taxa da coluna Compra do boletim')}{text('sell','Taxa da coluna Venda do boletim')}</>}
{error&&<p role="alert">{error}</p>}<button type="button" onClick={()=>{try{setPreview(selectFx(s));setError('');}catch(e){setError(String(e));}}}>Conferir selecção e impacto</button>
{preview&&<div><p>Coluna:{columnLabels[preview.column]};taxa:{preview.rate};data:{preview.date};sentido:{directionLabels[s.direction]}. Confirmação substitui os campos cambiais desta linha:{row.fxRate||'taxa vazia'} → {preview.rate};{row.fxDate||'data vazia'} → {preview.date};{row.sourceCurrency||'moeda vazia'} → {s.sourceCurrency}. O resultado e os históricos permanecem até usar «Conferir moeda/eventos e guardar versão».</p><button type="button" onClick={()=>{onChange({fxSelection:{...s,applied:preview},sourceCurrency:s.sourceCurrency,fxDirection:s.direction,fxRate:preview.rate,fxDate:preview.date,fxSource:preview.source,fxRuleRef:s.mode==='exception'?s.exceptionRef:fxTempoSource});setPreview(null);}}>Confirmar selecção nesta linha</button></div>}
<p>Não usar taxa de apresentação nem a mais recente como substituto de boletim ausente. Compra/venda são interpretadas pela perspectiva indicada;relação desconhecida fica por esclarecer. Alterações não recalculam versões anteriores.</p></fieldset>;
}
@@ -0,0 +1,31 @@
import {useState} from 'react';
import {goodsPresumptionBook,goodsPresumptionCurrent,goodsPresumptionReportRows,goodsPresumptionSource,goodsPresumptionTreatments,newGoodsPresumption,presumptionConditions,recordGoodsPresumptions,saveGoodsPresumptionBook,switchPresumptionTreatment,type GoodsPresumptionBook,type GoodsPresumptionRow} from '@/lib/iva-goods-presumptions';
export function SimulationGoodsPresumptions({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');let book:GoodsPresumptionBook;
try{book=goodsPresumptionBook(draft);}catch(cause){return<p role="alert">{String(cause)}</p>;}
const save=(next:GoodsPresumptionBook)=>{try{onChange('modelo_a_snapshot',saveGoodsPresumptionBook(draft,next));setError('');}catch(cause){setError(String(cause));}};
const change=(id:string,patch:Partial<GoodsPresumptionRow>)=>save({...book,rows:book.rows.map(r=>r.id===id?{...r,...patch}:r)});
return <details className="rounded border p-3"><summary>Consignação e presunções de bens</summary>
<p>Uma linha por conjunto identificado. Na consignação,180dias contam da entrega ao destinatário. As presunções admitem prova em contrário. Classificação não concede isenção,dedução ou elegibilidade para margem.</p>
<p>Oportunidade: {String(draft.context_opportunity??'projecto')}. A data de conferência situa o cenário; este percurso não determina a exigibilidade,base ou IVA.</p>
<p className="text-sm">{goodsPresumptionSource}</p>{error&&<p role="alert">{error}</p>}
<button type="button" onClick={()=>save({...book,rows:[...book.rows,newGoodsPresumption(crypto.randomUUID())]})}>Acrescentar conjunto de bens</button>
{book.rows.map(row=><details key={row.id} className="rounded border p-3"><summary>{row.description||'Conjunto por identificar'} — {row.period||'mês por indicar'}</summary>
<div className="grid gap-3 md:grid-cols-2">
<label>Percurso de consignação/presunção<select value={row.treatment} onChange={e=>change(row.id,switchPresumptionTreatment(row,e.target.value))}><option value="">Por indicar</option>{goodsPresumptionTreatments.map(t=><option key={t.id} value={t.id}>{t.label}</option>)}</select></label>
<label>Natureza dos dados<select value={row.origin} onChange={e=>change(row.id,{origin:e.target.value as GoodsPresumptionRow['origin']})}><option value="projected">Projectados / pressupostos</option><option value="effective">Efectivos declarados</option></select></label>
{([['description','Conjunto/operação identificados'],['operationRef','Referência da operação / pressuposto'],['operationDate','Data de conferência / prevista'],['period','Mês da conferência'],['documentRef','Documento / referência da previsão'],['documentDate','Data do documento / prevista'],['goodsRef','Bens e elementos identificados'],['scope','Âmbito:conjunto,estabelecimentos,operação e período'],['evidence','Fundamento factual / pressupostos']] as const).map(([field,label])=><label key={field}>{label}<input className="block rounded border p-2" type={['operationDate','documentDate'].includes(field)?'date':field==='period'?'month':'text'} value={row[field]} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}
{row.treatment==='consignment_180'?<><label>Data da entrega ao destinatário<input type="date" value={row.deliveryDate} onChange={e=>change(row.id,{deliveryDate:e.target.value})}/></label><label>Destinatário e referência da entrega<input value={row.recipientRef} onChange={e=>change(row.id,{recipientRef:e.target.value})}/></label><p>Identifique apenas o conjunto não devolvido. Separe devoluções parciais por conjunto; uma devolução posterior não apaga o cenário anteriormente guardado.</p></>:row.treatment&&<>
<label>Levantamento/inventário e estabelecimentos abrangidos<input value={row.inventoryRef} onChange={e=>change(row.id,{inventoryRef:e.target.value})}/></label>
{row.treatment==='excess_consumption'&&<>{([['quantity','Quantidade consumida'],['quantityUnit','Unidade da quantidade'],['productionRef','Volume de produção e comparação que fundamenta o excesso']] as const).map(([field,label])=><label key={field}>{label}<input value={row[field]} onChange={e=>change(row.id,{[field]:e.target.value})}/></label>)}<p>Sem percentagem ou limiar de consumo por defeito.</p></>}
<label>Existe prova em contrário para o âmbito declarado?<select value={row.contraryProof} onChange={e=>change(row.id,{contraryProof:e.target.value as GoodsPresumptionRow['contraryProof']})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>
{row.contraryProof==='yes'&&<label>Referência e âmbito da prova em contrário<input value={row.contraryProofRef} onChange={e=>change(row.id,{contraryProofRef:e.target.value})}/></label>}
</>}
</div>
<fieldset><legend>Factos próprios do percurso</legend>{presumptionConditions(row.treatment).map(([key,label])=><label className="block" key={key}>{label}<select value={row.conditions[key]??''} onChange={e=>change(row.id,{conditions:{...row.conditions,[key]:e.target.value as ''|'yes'|'no'}})}><option value="">Por indicar</option><option value="yes">Sim</option><option value="no">Não</option></select></label>)}</fieldset>
<p>Trocar percurso conserva dados/referências ocultos; reveja as confirmações aplicáveis. Prova em contrário afasta a presunção no seu âmbito,sem transformar o resultado em isenção.</p>
</details>)}
{!!book.rows.length&&<button type="button" onClick={()=>{try{save(recordGoodsPresumptions(draft,book));}catch(cause){setError(String(cause));}}}>Conferir consignação/presunções e guardar versão</button>}
{book.result&&<><p role="status">{goodsPresumptionCurrent(draft,book)?'Classificações correspondentes às entradas guardadas.':'Entradas alteradas;resultado histórico conservado.Reveja e confira novamente.'} {book.history?.length??0} versões anteriores.Sem IVA,base,dedução ou margem calculados.</p><dl>{goodsPresumptionReportRows(draft).map(([,label,value,origin],i)=><div key={i}><dt className="font-semibold">{label}</dt><dd>{value}<small className="block">{origin}</small></dd></div>)}</dl></>}
</details>;
}
@@ -0,0 +1,30 @@
import {useState} from 'react';
import {ispcActivities,ispcEligibilityBook,saveIspcEligibilityBook,recordIspcEligibility,ispcEligibilityCurrent,ispcReuseDiff,ispcEligibilityReportRows,type IspcEligibilityInput,type IspcEligibilityBook} from '@/lib/ispc-eligibility';
const factLabels:Partial<Record<keyof IspcEligibilityInput,string>>={territory:'Exerce a actividade em território nacional',organizedRequired:'Está obrigado a possuir contabilidade organizada para os impostos sobre o rendimento',sharesInIspc:'Tem participações noutras sociedades comerciais em ISPC',sharesAnonymous:'Tem participações em sociedades anónimas ou sociedades cujos sócios não são identificáveis',otherActivities:'Exerce outras actividades fora dos âmbitos identificados',unlistedServices:'Presta serviços fora dos previstos na Lei',forecastConfirmed:'Previsão da declaração de início confirmada pela AT (ou pressuposto expresso na simulação)',generalRegimeChosen:'Optou pela aplicação de IVA/IRPS/IRPC com permanência mínima de três anos',generalThreeYearsCompleted:'Já cumpriu o período mínimo de três anos dessa opção'};
export function SimulationIspcEligibility({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState(''),[reusePreview,setReusePreview]=useState<ReturnType<typeof ispcReuseDiff>|null>(null);if(draft.fiscal_component!=='ispc')return null;
let book:IspcEligibilityBook;try{book=ispcEligibilityBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const i=book.input,save=(next:IspcEligibilityBook)=>{try{onChange('modelo_a_snapshot',saveIspcEligibilityBook(draft,next));setError('');}catch(e){setError(String(e));}},change=(patch:Partial<IspcEligibilityInput>)=>save({...book,input:{...i,...patch}}),diff=ispcReuseDiff(draft,book),service=i.activities.some(a=>['services12','liberal15'].includes(a)),liberal=i.activities.includes('liberal15'),earlyOutside=i.activities.includes('other')||i.territory==='no'||i.mode==='occasional';
const fact=(field:keyof typeof factLabels)=><label className="block" key={field}>{factLabels[field]}<select className="block rounded border p-2" value={String(i[field])} onChange={e=>change({[field]:e.target.value})}><option value="">Por esclarecer</option><option value="yes">Sim</option><option value="no">Não</option></select></label>;
const text=(field:keyof IspcEligibilityInput,label:string,type='text')=><label className="block" key={field}>{label}<input className="block rounded border p-2" type={type} value={String(i[field])} onChange={e=>change({[field]:e.target.value})}/></label>;
return<section aria-label="ISPC — enquadramento e opção" className="space-y-3 rounded border p-4"><h4 className="font-semibold">ISPC — enquadramento e opção</h4>
<p>Avaliação preliminar para 2026, em MZN, segundo a Lei 9/2025. Distingue condições de acesso, opção e cálculo do imposto. Guarde esta avaliação e prossiga no apuramento trimestral abaixo.</p>
{error&&<p role="alert">{error}</p>}
{diff.length>0&&<button type="button" className="underline" onClick={()=>setReusePreview(diff)}>Conferir dados do perfil e da actividade para reutilizar</button>}
{reusePreview&&<aside className="rounded border p-3"><p>A adopção altera as entradas deste cenário. O resultado guardado passa a histórico até novo cálculo; os outros livros e a opção registada são preservados.</p>{reusePreview.map(v=><p key={v.field}>{({personType:'Tipo de pessoa',establishments:'Estabelecimentos',activityDescription:'Actividade',entityRef:'Entidade'} as Record<string,string>)[v.field]??v.field}: {v.before||'Por preencher'} → {v.after}</p>)}<button type="button" onClick={()=>{change(Object.fromEntries(reusePreview.map(v=>[v.field,v.after])));setReusePreview(null);}}>Confirmar adopção destes dados</button><button type="button" onClick={()=>setReusePreview(null)}>Manter as minhas entradas</button></aside>}
<div className="grid gap-3 md:grid-cols-2">{text('entityRef','Entidade de referência (reutilizável; sem NUIT obrigatório para preparar)')}
<label>Tipo de pessoa<select className="block rounded border p-2" value={i.personType} onChange={e=>change({personType:e.target.value as IspcEligibilityInput['personType']})}><option value="">Por identificar</option><option value="singular">Pessoa singular</option><option value="collective">Pessoa colectiva</option></select></label>
{text('assessmentDate','Data de avaliação','date')}
<label>Natureza dos dados<select className="block rounded border p-2" value={i.origin} onChange={e=>change({origin:e.target.value as IspcEligibilityInput['origin']})}><option value="projected">Pressupostos da simulação</option><option value="effective">Dados efectivos declarados</option></select></label>
<label>Moeda dos valores ISPC<select className="block rounded border p-2" value={i.currency} onChange={e=>change({currency:e.target.value})}><option value="">Por identificar</option><option value="MZN">MZN</option>{i.currency&&i.currency!=='MZN'&&<option value={i.currency}>{i.currency} — fora da cobertura deste cálculo</option>}</select></label>
<label>Âmbito da preparação<select className="block rounded border p-2" value={i.mode} onChange={e=>change({mode:e.target.value as IspcEligibilityInput['mode']})}><option value="regular">Actividade habitual</option><option value="occasional">Operação ocasional — percurso próprio</option></select></label>
{fact('territory')}</div>
<fieldset className="space-y-2 rounded border p-3"><legend>Actividades do contribuinte</legend><p>Identifique todas as actividades, incluindo as exercidas fora desta oportunidade. Não inferimos o regime pelo sector ou pela nacionalidade.</p>{ispcActivities.map(([kind,label])=><label className="block" key={kind}><input type="checkbox" checked={i.activities.includes(kind)} onChange={e=>change({activities:e.target.checked?[...i.activities,kind]:i.activities.filter(a=>a!==kind)})}/> {label}</label>)}{text('activityDescription','Descrição da actividade e natureza dos serviços, quando existam')}</fieldset>
{!earlyOutside&&<><fieldset className="grid gap-3 rounded border p-3 md:grid-cols-2"><legend>Volume anual de referência</legend><label>Referência de acesso<select className="block rounded border p-2" value={i.basis} onChange={e=>change({basis:e.target.value as IspcEligibilityInput['basis'],...(!i.referenceYear?{referenceYear:e.target.value==='previous_year'?'2025':e.target.value==='start_forecast'?'2026':''}:{})})}><option value="">Por identificar</option><option value="previous_year">Volume de negócios do ano anterior</option><option value="start_forecast">Previsão da declaração de início de actividade</option></select></label>{text('referenceYear','Ano do valor de referência')}{text('annualReference','Volume anual de referência em MZN')}{text('annualReferenceRef','Origem do valor ou pressuposto (opcional)')}<p className="md:col-span-2">Não copiar receita trimestral ou do ano em curso como receita do ano anterior. Alterar a origem não reinterpreta o valor já editado; reveja o montante e o ano.</p>{i.basis==='start_forecast'&&<>{fact('forecastConfirmed')}{text('forecastConfirmationRef','Referência da confirmação da previsão, se efectiva')}</>}</fieldset>
<fieldset className="space-y-3 rounded border p-3"><legend>Condições aplicáveis ao contribuinte</legend>{text('establishments','Número de estabelecimentos da actividade, incluindo fora deste dossier')}{fact('organizedRequired')}{fact('sharesInIspc')}{fact('sharesAnonymous')}{fact('otherActivities')}{service&&fact('unlistedServices')}{liberal&&<>{text('liberalDaysSameEntity','Maior duração anual dos serviços à mesma entidade, em dias')}{text('liberalClientRef','Referência do cliente/contrato ou pressuposto da duração')}<p>O limite de 183 dias refere-se aos serviços do artigo 8(1)c. A permanência liberal tem limite próprio de cinco anos; a contagem transitória começa em 2026.</p></>}{fact('generalRegimeChosen')}{i.generalRegimeChosen==='yes'&&<>{fact('generalThreeYearsCompleted')}{text('generalRegimeRef','Referência da opção e do cumprimento dos três anos')}</>}</fieldset>
<fieldset className="space-y-2 rounded border p-3"><legend>Opção — separada da compatibilidade</legend><label>Situação da opção<select className="block rounded border p-2" value={i.option} onChange={e=>change({option:e.target.value as IspcEligibilityInput['option']})}><option value="preparation">Em preparação — sem adesão automática</option><option value="opted">Opção registada no documento/cenário</option><option value="not_opted">Não optou pelo ISPC</option></select></label>{i.option==='opted'&&<>{text('optionReference','Referência da opção')}{text('optionDate','Data da opção','date')}</>}</fieldset></>}
<button type="button" className="rounded bg-emerald-800 p-2 text-white" onClick={()=>{try{save(recordIspcEligibility(draft,book));}catch(e){setError(String(e));}}}>Avaliar e guardar enquadramento ISPC</button>
{book.result&&<p role="status">{ispcEligibilityCurrent(draft,book)?'Resultado correspondente às entradas guardadas.':'Entradas alteradas; resultado histórico preservado. Reveja e guarde nova avaliação.'}</p>}
{ispcEligibilityReportRows(draft).map((r,index)=><p key={index}><strong>{r[1]}:</strong> {r[2]}<small className="block">{r[3]}</small></p>)}
</section>;
}
@@ -0,0 +1,18 @@
import {useState} from 'react';
import {ispcEligibilityBook,ispcEligibilityCurrent} from '@/lib/ispc-eligibility';
import {ispcQuarterBook,saveIspcQuarterBook,recordIspcQuarter,ispcQuarterReportRows,type IspcQuarterInput,type IspcQuarterBook} from '@/lib/ispc-quarter';
export function SimulationIspcQuarter({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');if(draft.fiscal_component!=='ispc')return null;
try{if(ispcEligibilityBook(draft).input.mode==='occasional')return<p>Actividade habitual:campos trimestrais conservados no histórico. Use o percurso de operações ocasionais próprias abaixo.</p>;}catch{/* Preserve the existing explicit recovery error below. */}
let book:IspcQuarterBook;try{book=ispcQuarterBook(draft);}catch(e){return<p role="alert">{String(e)}</p>;}
const i=book.input,save=(b:IspcQuarterBook)=>{try{onChange('modelo_a_snapshot',saveIspcQuarterBook(draft,b));setError('');}catch(e){setError(String(e));}},change=(patch:Partial<IspcQuarterInput>)=>save({...book,input:{...i,...patch}});
let service=false,ready=false;try{const e=ispcEligibilityBook(draft);ready=ispcEligibilityCurrent(draft,e)&&e.result?.status==='compatible';service=e.input.activities.some(a=>['services12','liberal15'].includes(a));}catch{/* Show explicit preparation issue below, never fabricate eligibility. */}
return<section aria-label="Apuramento trimestral ISPC" className="space-y-3 rounded border p-4"><h4>ISPC — apuramento trimestral</h4><p>Reutiliza o enquadramento e a opção guardados. Declare o volume de todas as actividades do sujeito passivo em MZN; custos e IVA de aquisições não reduzem esta base. Dados em falta permanecem indeterminados.</p>{!ready&&<p>Reveja e guarde primeiro a avaliação de enquadramento acima. As entradas trimestrais e o histórico ficam conservados.</p>}{error&&<p role="alert">{error}</p>}
<label className="block">Ano<input className="block rounded border p-2" value={i.year} onChange={e=>change({year:e.target.value})}/></label><label className="block">Trimestre<select className="block rounded border p-2" value={i.quarter} onChange={e=>change({quarter:e.target.value})}>{['1','2','3','4'].map(q=><option key={q} value={q}>{q} — {['Janeiro a Março','Abril a Junho','Julho a Setembro','Outubro a Dezembro'][Number(q)-1]}</option>)}</select></label>
<label className="block">Âmbito do volume<select className="block rounded border p-2" value={i.coverage} onChange={e=>change({coverage:e.target.value as IspcQuarterInput['coverage']})}><option value="">Por confirmar</option><option value="all_taxpayer_activity">Todas as actividades do sujeito passivo, sem repetir oportunidades</option></select></label>
<div className="grid gap-3 md:grid-cols-2">{i.sales.map((v,n)=>(n<Number(i.quarter)||i.annualBandOrigin==='closed_year'&&!service)&&<fieldset key={n} className="space-y-2 rounded border p-2"><legend>Trimestre {n+1}{n+1===Number(i.quarter)?' — a apurar':' — acumulado anterior'}</legend><label className="block">Volume T{n+1} em MZN<input className="block rounded border p-2" inputMode="decimal" value={v} onChange={e=>{const a=[...i.sales] as IspcQuarterInput['sales'];a[n]=e.target.value;change({sales:a});}}/></label><label className="block">Suporte ou pressuposto T{n+1}<input className="block rounded border p-2" value={i.salesRefs[n]} onChange={e=>{const a=[...i.salesRefs] as IspcQuarterInput['salesRefs'];a[n]=e.target.value;change({salesRefs:a});}}/></label></fieldset>)}</div>
{!service&&<fieldset className="space-y-2 rounded border p-3"><legend>Escalão anual da actividade — distinto do volume de acesso</legend><p>Os limites de 1.000.000 / 2.500.000 / 4.000.000 MZN são anuais. A taxa do escalão é aplicada à base do trimestre; não dividir os limites por quatro. O excesso anual tem taxa própria de 20%.</p><label className="block">Volume anual 2026 para o escalão<input className="block rounded border p-2" value={i.annualBandVolume} onChange={e=>change({annualBandVolume:e.target.value})}/></label><label className="block">Origem da referência anual<select className="block rounded border p-2" value={i.annualBandOrigin} onChange={e=>change({annualBandOrigin:e.target.value as IspcQuarterInput['annualBandOrigin']})}><option value="">Por identificar</option><option value="forecast">Previsão expressa — simulação</option><option value="closed_year">Ano encerrado — reconciliar quatro trimestres</option></select></label><label className="block">Suporte da referência anual<input className="block rounded border p-2" value={i.annualBandRef} onChange={e=>change({annualBandRef:e.target.value})}/></label></fieldset>}
<button type="button" className="rounded bg-emerald-800 p-2 text-white" onClick={()=>{try{save(recordIspcQuarter(draft,book));}catch(e){setError(String(e));}}}>Calcular e guardar apuramento trimestral ISPC</button>
{ispcQuarterReportRows(draft).map((r,n)=><p key={n}><strong>{r[1]}:</strong> {r[2]}<small className="block">{r[3]}</small></p>)}
<p>Preparação para a declaração periódica dos artigos 10/11. Este cálculo não submete formulários nem efectua pagamentos. Retenção na fonte em aquisições ocasionais tem registo e base próprios.</p></section>;
}
@@ -0,0 +1,28 @@
import {useState} from 'react';
import {ispcEligibilityBook} from '@/lib/ispc-eligibility';
import {ispcWithholdingBook} from '@/lib/ispc-withholding';
import {decimalFraction,addFractions} from '@/lib/fiscal-rational';
import {ispcResidualBook,saveIspcResidualBook,recordIspcResidual,priorOccasionalSettlement,ispcResidualReportRows,ispcFormalPreparationHtml,type ResidualKind} from '@/lib/ispc-residuals';
export function SimulationIspcResiduals({draft,onChange}:{draft:Record<string,unknown>;onChange:(field:string,value:string)=>void}){
const[error,setError]=useState('');if(draft.fiscal_component!=='ispc')return null;
try{
const own=ispcResidualBook(draft,'occasional'),acq=ispcResidualBook(draft,'acquisitions'),formal=ispcResidualBook(draft,'formalities'),e=ispcEligibilityBook(draft),w=ispcWithholdingBook(draft);let above=false;try{const sum=addFractions([decimalFraction(w.input.base),decimalFraction(w.input.priorAnnualPurchases)]);above=BigInt(sum.numerator)>2500000n*BigInt(sum.denominator);}catch{/* Unknown is still handled in existing acquisition panel. */}
const book=(k:ResidualKind)=>k==='occasional'?own:k==='acquisitions'?acq:formal;
const change=(k:ResidualKind,p:Record<string,string>)=>{const b=book(k);onChange('modelo_a_snapshot',saveIspcResidualBook(draft,{...b,input:{...b.input,...p}}));};
const field=(k:ResidualKind,n:string,label:string,type='text')=><label key={n} className="block">{label}<input className="block rounded border p-2" type={type} value={book(k).input[n]??''} onChange={ev=>change(k,{[n]:ev.target.value})}/></label>;
const select=(k:ResidualKind,n:string,label:string,options:Array<[string,string]>)=><label key={n} className="block">{label}<select className="block rounded border p-2" value={book(k).input[n]??''} onChange={ev=>change(k,{[n]:ev.target.value})}>{options.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select></label>;
const yesno=(k:ResidualKind,n:string,label:string)=>select(k,n,label,[['','Por esclarecer'],['yes','Sim'],['no','Não']]);
const save=(k:ResidualKind)=>{try{onChange('modelo_a_snapshot',saveIspcResidualBook(draft,recordIspcResidual(draft,book(k))));setError('');}catch(err){setError(String(err));}};
const activities:Array<[string,string]>=[['','Por identificar'],['forestry','Silvícola'],['fishery','Pesqueira'],['livestock','Pecuária'],['agriculture','Agrícola'],['poultry','Avícola'],['beekeeping','Apícola'],['other','Outra—fora do recorte ocasional']];
return<section aria-label="ISPC — operações ocasionais, limite e formalidades" className="space-y-4">{error&&<p role="alert">{error}</p>}
{e.input.mode==='occasional'&&<section className="space-y-3 rounded border p-4"><h4>Operações ocasionais próprias</h4><p>Percurso do vendedor ocasional, distinto da retenção feita pelo comprador. Uma retenção liberatória comprovada não gera segunda liquidação própria.</p>{select('occasional','personType','Tipo de pessoa destas operações',[['','Por identificar'],['singular','Pessoa singular'],['collective','Pessoa colectiva']])}{select('occasional','origin','Natureza dos dados',[['projected','Pressupostos de simulação'],['effective','Factos efectivos declarados']])}{field('occasional','currency','Moeda—MZN')}{field('occasional','operationDate','Data das operações','date')}{select('occasional','quarter','Trimestre2026',[['','Por identificar'],['1','1'],['2','2'],['3','3'],['4','4']])}{yesno('occasional','territory','Operação realizada em território nacional')}{yesno('occasional','noHabitual','Não exerce actividade habitual')}{yesno('occasional','sporadic','Acto não previsível nem reiterado')}{select('occasional','activity','Natureza da operação',activities)}{field('occasional','reference','Documentos ou pressupostos da operação')}{field('occasional','amount','Volume de todas estas operações do trimestre em MZN')}{select('occasional','settlement','Via aplicável',[['','Por identificar'],['self','Liquidação própria por opção ISPC'],['withheld','Retenção liberatória documentada pelo adquirente']])}
{own.input.settlement==='self'&&<>{yesno('occasional','allQuarterOperations','Inclui todas as operações ocasionais do sujeito passivo no trimestre')}{field('occasional','priorYearTurnover','Volume de referência2025 para acesso, incluindo zero expresso')}{field('occasional','priorYearRef','Suporte da referência2025')}{yesno('occasional','organizedRequired','Obrigado a contabilidade organizada para impostos sobre rendimento')}{select('occasional','option','Opção para estas operações',[['preparation','Em preparação—apenas cenário'],['opted','Opção documentada'],['not_opted','Não optou']])}{own.input.option==='opted'&&<>{field('occasional','optionRef','Referência da opção')}{field('occasional','optionDate','Data da opção','date')}</>}{field('occasional','annual2026','Volume anual2026 para escalão')}{select('occasional','annualOrigin','Origem do volume anual2026',[['','Por identificar'],['forecast','Previsão—cenário'],['closed_year','Volume anual encerrado documentado']])}{field('occasional','annualRef','Suporte ou pressuposto do volume anual2026')}{field('occasional','priorInYear','Volume de operações anteriores no ano2026')}{priorOccasionalSettlement(own)&&<><p>Existe retenção liberatória guardada para esta operação. A mudança de via não a apaga nem gera uma segunda prestação.</p>{yesno('occasional','withholdingCorrected','Retenção anterior corrigida/anulada segundo documento externo')}{field('occasional','withholdingCorrectionRef','Referência externa da correcção da retenção anterior')}</>}</>}
{own.input.settlement==='withheld'&&<>{yesno('occasional','buyerIspc','Adquirente sujeito passivo ISPC')}{yesno('occasional','unregistered','Vendedor não inscrito para tributação')}{field('occasional','buyerAnnualPurchases','Aquisições globais anuais do adquirente, incluindo estas operações')}{field('occasional','withheldActual','Montante efectivamente retido em MZN')}{field('occasional','withheldRef','Documento da retenção liberatória')}</>}
<button type="button" className="rounded border p-2" onClick={()=>save('occasional')}>Calcular e guardar operações ocasionais</button></section>}
{(above||acq.result)&&<section className="space-y-3 rounded border p-4"><h4>Aquisições acima do limite global</h4><p>Reutiliza a aquisição, os seus documentos e o acumulado global guardados acima. A parcela excedente não recebe automaticamente a taxa de 5% nem a taxa de 20% do excesso de vendas ISPC.</p>{select('acquisitions','route','Tratamento próprio da parcela excedente',[['unknown','Por identificar—mostrar parcelas sem total presumido'],['ispc_supplier','Fornecedor com opção ISPC aplicável'],['irps_isolated','Acto isolado sujeito a IRPS57(2)k']])}{acq.input.route==='ispc_supplier'&&field('acquisitions','supplierOptionRef','Referência da opção/registo do fornecedor e operações abrangidas')}{acq.input.route==='irps_isolated'&&<>{yesno('acquisitions','noIspcOnExcess','Sem opção ISPC aplicável a esta parcela, segundo documento indicado')}{yesno('acquisitions','isolatedAct','Acto isolado qualificado pelo artigo8(3h,4)doIRPS')}{yesno('acquisitions','incomeInMoz','Rendimento obtido em Moçambique')}{field('acquisitions','grossExcess','Rendimento ilíquido da parcela excedente em MZN—sem dedução de custos ou IVA')}{field('acquisitions','grossRef','Suporte da base ilíquida')}{field('acquisitions','reference','Suporte da classificação IRPS desta parcela')}</>}<button type="button" className="rounded border p-2" onClick={()=>save('acquisitions')}>Calcular e guardar parcela excedente</button></section>}
<section className="space-y-3 rounded border p-4"><h4>Formalidades de2026—preparação do B–Geral</h4><p>O Comunicado AT9/2026indica o B–Geral durante a adaptação do sistema, com pagamentos em Janeiro, Abril, Julho e Outubro. O Modelo30disponível conserva campos antigos; não os aplicamos a2026. Esta preparação não submete nem paga à AT.</p>{select('formalities','sourceKind','Cálculo a preparar',[['quarter','Trimestral habitual'],['occasional','Operações ocasionais próprias'],['acquisitions','Retenção da parcela excedente qualificada']])}{formal.input.sourceKind==='acquisitions'&&field('formalities','retentionFormRef','Modelo/código e instrução para entrega das retenções ISPC/IRPS, separados do imposto próprio')}{field('formalities','name','Nome/designação social—quadro5')}{field('formalities','nuit','NUIT—quadro3')}{field('formalities','fiscalArea','Área Fiscal/UGC—quadro3')}{field('formalities','address','Domicílio fiscal—quadro6')}{select('formalities','declaration','Tipo de declaração—quadro1',[['initial','Inicial'],['substitution','Substituição']])}{field('formalities','formMonth','Mês a inscrever no quadro2—não presumido pelo mês de pagamento')}{field('formalities','formYear','Ano a inscrever no quadro2')}{field('formalities','formPeriodRef','Instrução/correspondência usada para o período do quadro2')}{select('formalities','interestSituation','Juros compensatórios—quadro10',[['','Por esclarecer'],['none','Sem juros, segundo suporte indicado'],['amount','Montante documentado']])}{formal.input.interestSituation==='amount'&&field('formalities','interestAmount','Montante de juros documentado')}{field('formalities','interestRef','Suporte da situação dos juros')}{select('formalities','externalStatus','Histórico externo declarado',[['preparation','Em preparação'],['submitted','Submetido'],['received','Recebido pela AT'],['paid','Pagamento efectuado']])}{formal.input.externalStatus!=='preparation'&&<>{field('formalities','externalRef','Referência externa')}{field('formalities','externalDate','Data do acto externo','date')}</>}
<button type="button" className="rounded border p-2" onClick={()=>save('formalities')}>Preparar e guardar campos B–Geral</button><button type="button" className="rounded border p-2" onClick={()=>{try{const html=ispcFormalPreparationHtml(draft),url=URL.createObjectURL(new Blob([html],{type:'text/html;charset=utf-8'})),a=document.createElement('a');a.href=url;a.download='ISPC-preparacao-B-Geral.html';a.click();URL.revokeObjectURL(url);setError('');}catch(err){setError(String(err));}}}>Descarregar preparação B–Geral</button></section>
{ispcResidualReportRows(draft).map((r,n)=><p key={n}><strong>{r[1]}:</strong> {r[2]}<small className="block">{r[3]}</small></p>)}
</section>;
}catch(err){return<p role="alert">{String(err)}</p>;}
}

Some files were not shown because too many files have changed in this diff Show More