commit melhorias sgf

This commit is contained in:
2026-11-11 09:00:17 +02:00
parent 0b05a1192c
commit 1d11a5e57b
736 changed files with 40746 additions and 210 deletions
@@ -0,0 +1,761 @@
{
"version": "SGF-8085-SYNTHETIC-ACCESS-PROPOSAL-v1",
"approved": true,
"applied": true,
"installation": "cc50a276c10c",
"port": 8085,
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_database_roles": false,
"real_accounts": false,
"credentials_in_repository": false,
"source_policy": "Existing right names must be checked against the installed CHECK before any grant; fail on unknown names rather than broaden privileges.",
"profiles": [
{
"id": "commercial_prepare",
"label": "QA Comercial — preparação",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "clients.view",
"scope": "company"
},
{
"permission": "services.view",
"scope": "company"
},
{
"permission": "service_drafts.view",
"scope": "unit"
},
{
"permission": "billing_drafts.view",
"scope": "unit"
},
{
"permission": "service_invoices.view",
"scope": "unit"
},
{
"permission": "clients.create",
"scope": "company"
},
{
"permission": "clients.edit",
"scope": "company"
},
{
"permission": "services.create",
"scope": "company"
},
{
"permission": "services.edit",
"scope": "company"
},
{
"permission": "service_drafts.create",
"scope": "unit"
},
{
"permission": "service_drafts.edit",
"scope": "unit"
},
{
"permission": "billing_drafts.create",
"scope": "unit"
},
{
"permission": "billing_drafts.edit",
"scope": "unit"
},
{
"permission": "billing_drafts.confirm_internal",
"scope": "unit"
},
{
"permission": "issuer_documents.view",
"scope": "company"
},
{
"permission": "issuer_documents.edit",
"scope": "company"
},
{
"permission": "client_documents.view",
"scope": "company"
},
{
"permission": "client_documents.edit",
"scope": "company"
},
{
"permission": "draft_documents.view",
"scope": "unit"
},
{
"permission": "draft_documents.edit",
"scope": "unit"
},
{
"permission": "service_fiscal.view",
"scope": "company"
},
{
"permission": "service_fiscal.propose",
"scope": "company"
},
{
"permission": "service_fiscal.calculate",
"scope": "unit"
},
{
"permission": "invoice_series.view",
"scope": "company"
},
{
"permission": "invoice_series.propose",
"scope": "company"
},
{
"permission": "service_invoices.issue",
"scope": "unit"
},
{
"permission": "service_invoices.correction_request",
"scope": "unit"
},
{
"permission": "document_preview.configure",
"scope": "company"
}
]
},
{
"id": "commercial_review",
"label": "QA Comercial — revisão",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "clients.view",
"scope": "company"
},
{
"permission": "services.view",
"scope": "company"
},
{
"permission": "service_drafts.view",
"scope": "unit"
},
{
"permission": "billing_drafts.view",
"scope": "unit"
},
{
"permission": "service_invoices.view",
"scope": "unit"
},
{
"permission": "service_fiscal.view",
"scope": "company"
},
{
"permission": "service_fiscal.approve",
"scope": "company"
},
{
"permission": "invoice_series.view",
"scope": "company"
},
{
"permission": "invoice_series.approve",
"scope": "company"
},
{
"permission": "issuer_documents.view",
"scope": "company"
},
{
"permission": "client_documents.view",
"scope": "company"
},
{
"permission": "draft_documents.view",
"scope": "unit"
}
]
},
{
"id": "workshop_manage",
"label": "QA Oficinas — gestão",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "clients.view",
"scope": "company"
},
{
"permission": "workshop.view",
"scope": "unit"
},
{
"permission": "workshop.open",
"scope": "unit"
},
{
"permission": "workshop.assign",
"scope": "unit"
},
{
"permission": "workshop.authorize",
"scope": "unit"
}
]
},
{
"id": "workshop_record",
"label": "QA Oficinas — técnico",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "workshop.view",
"scope": "unit"
},
{
"permission": "workshop.record",
"scope": "unit"
},
{
"permission": "stock.view",
"scope": "unit"
},
{
"permission": "workshop_stock.view",
"scope": "unit"
},
{
"permission": "workshop_stock.prepare",
"scope": "unit"
}
]
},
{
"id": "workshop_verify",
"label": "QA Oficinas — conferência",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "workshop.view",
"scope": "unit"
},
{
"permission": "workshop.verify",
"scope": "unit"
},
{
"permission": "stock.view",
"scope": "unit"
},
{
"permission": "workshop_stock.view",
"scope": "unit"
}
]
},
{
"id": "finance_prepare",
"label": "QA Financeiro — preparação",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "service_receivables.view",
"scope": "unit"
},
{
"permission": "service_receivables.prepare",
"scope": "unit"
},
{
"permission": "service_receivables.allocate",
"scope": "unit"
},
{
"permission": "service_receivables.correction_request",
"scope": "unit"
},
{
"permission": "direct_costs.view",
"scope": "unit"
},
{
"permission": "industrial_costs.view",
"scope": "unit"
},
{
"permission": "industrial_costs.prepare",
"scope": "unit"
},
{
"permission": "industrial_budgets.view",
"scope": "unit"
},
{
"permission": "industrial_budgets.prepare",
"scope": "unit"
},
{
"permission": "workshop_billing.view",
"scope": "unit"
},
{
"permission": "workshop_billing.prepare",
"scope": "unit"
},
{
"permission": "workshop_billing.generate",
"scope": "unit"
},
{
"permission": "workshop.view",
"scope": "unit"
},
{
"permission": "direct_costs.prepare",
"scope": "unit"
},
{
"permission": "industrial_budget_comparisons.view",
"scope": "unit"
},
{
"permission": "industrial_budget_comparisons.prepare",
"scope": "unit"
},
{
"permission": "clients.view",
"scope": "company"
},
{
"permission": "services.view",
"scope": "company"
},
{
"permission": "service_drafts.view",
"scope": "unit"
},
{
"permission": "service_drafts.create",
"scope": "unit"
},
{
"permission": "billing_drafts.view",
"scope": "unit"
},
{
"permission": "billing_drafts.create",
"scope": "unit"
},
{
"permission": "workshop_corrections.view",
"scope": "unit"
},
{
"permission": "workshop_corrections.request",
"scope": "unit"
},
{
"permission": "workshop_corrections.apply",
"scope": "unit"
}
]
},
{
"id": "finance_review",
"label": "QA Financeiro — revisão",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "service_receivables.view",
"scope": "unit"
},
{
"permission": "service_receivables.confirm",
"scope": "unit"
},
{
"permission": "service_receivables.reconcile",
"scope": "unit"
},
{
"permission": "service_receivables.correction_approve",
"scope": "unit"
},
{
"permission": "direct_costs.view",
"scope": "unit"
},
{
"permission": "direct_costs.validate",
"scope": "unit"
},
{
"permission": "industrial_costs.view",
"scope": "unit"
},
{
"permission": "industrial_budgets.view",
"scope": "unit"
},
{
"permission": "workshop_billing.view",
"scope": "unit"
},
{
"permission": "workshop_billing.review",
"scope": "unit"
},
{
"permission": "workshop.view",
"scope": "unit"
},
{
"permission": "industrial_costs.validate",
"scope": "unit"
},
{
"permission": "industrial_budgets.validate",
"scope": "unit"
},
{
"permission": "industrial_budget_comparisons.view",
"scope": "unit"
},
{
"permission": "clients.view",
"scope": "company"
},
{
"permission": "services.view",
"scope": "company"
},
{
"permission": "workshop_corrections.view",
"scope": "unit"
},
{
"permission": "workshop_corrections.review",
"scope": "unit"
}
]
},
{
"id": "accounting_prepare",
"label": "QA Contabilidade — preparação",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "catalogue_accounting.view",
"scope": "company"
},
{
"permission": "catalogue_accounting.propose",
"scope": "company"
},
{
"permission": "general_ledger.view",
"scope": "unit"
},
{
"permission": "general_ledger.prepare",
"scope": "unit"
},
{
"permission": "general_ledger.post",
"scope": "unit"
},
{
"permission": "general_ledger.correct_prepare",
"scope": "unit"
},
{
"permission": "general_ledger.correct_post",
"scope": "unit"
},
{
"permission": "general_ledger.period_prepare",
"scope": "unit"
},
{
"permission": "general_ledger.period_close",
"scope": "unit"
},
{
"permission": "purchasing_obligations.view",
"scope": "unit"
},
{
"permission": "purchasing_invoices.view",
"scope": "unit"
}
]
},
{
"id": "accounting_review",
"label": "QA Contabilidade — revisão",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "catalogue_accounting.view",
"scope": "company"
},
{
"permission": "catalogue_accounting.approve",
"scope": "company"
},
{
"permission": "general_ledger.view",
"scope": "unit"
},
{
"permission": "general_ledger.validate",
"scope": "unit"
},
{
"permission": "general_ledger.correct_validate",
"scope": "unit"
},
{
"permission": "general_ledger.period_validate",
"scope": "unit"
},
{
"permission": "purchasing_obligations.view",
"scope": "unit"
},
{
"permission": "purchasing_invoices.view",
"scope": "unit"
}
]
},
{
"id": "read_only",
"label": "QA Consulta — seis módulos",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "clients.view",
"scope": "company"
},
{
"permission": "services.view",
"scope": "company"
},
{
"permission": "service_drafts.view",
"scope": "unit"
},
{
"permission": "billing_drafts.view",
"scope": "unit"
},
{
"permission": "service_invoices.view",
"scope": "unit"
},
{
"permission": "workshop.view",
"scope": "unit"
},
{
"permission": "direct_costs.view",
"scope": "unit"
},
{
"permission": "industrial_costs.view",
"scope": "unit"
},
{
"permission": "service_receivables.view",
"scope": "unit"
},
{
"permission": "catalogue_accounting.view",
"scope": "company"
},
{
"permission": "general_ledger.view",
"scope": "unit"
},
{
"permission": "stock.view",
"scope": "unit"
}
]
}
],
"existing_stock_profile": {
"role": "validator",
"user_id": 2,
"rights": [
"stock.operations.prepare",
"stock.operations.confirm",
"workshop.view",
"workshop_stock.view",
"workshop_stock.confirm"
],
"warehouse_policy": "existing main warehouse and one new empty explicitly mapped synthetic warehouse; no foreign warehouse"
},
"new_right_names": [
"stock.operations.prepare",
"stock.operations.confirm"
],
"forbidden": [
"access.manage",
"automatic legacy module association",
"changes to six protected records",
"cache clearing",
"real money or fiscal documents",
"period reopening",
"publication",
"new demo/server/database",
"SGC connector activation"
],
"financial_source_policy": {
"payables": "retain authoritative native obligation, no copy of debt",
"ledger": "one common ledger in existing native book with explicit SGF company/unit scope",
"native_finance_bindings": {
"finance_prepare": 4,
"finance_review": 7,
"accounting_prepare": 4,
"accounting_review": 7,
"read_only": 8
},
"real_permissions": false,
"sgc_server_required": false
},
"authorization": {
"date": "2026-11-10",
"decision": "autorizo",
"scope": "docs/SGF_8085_NEXT_AUTHORIZATION.md"
},
"integration_grants": {
"finance_prepare": {
"unit": [
"supplier_payables.view",
"service_invoices.view"
]
},
"finance_review": {
"unit": [
"supplier_payables.view",
"service_invoices.view"
]
},
"read_only": {
"unit": [
"supplier_payables.view"
]
},
"accounting_prepare": {
"unit": [
"service_invoices.view",
"service_receivables.view",
"workshop.view",
"direct_costs.view",
"industrial_costs.view"
],
"company": [
"clients.view",
"services.view"
]
},
"accounting_review": {
"unit": [
"service_invoices.view",
"service_receivables.view",
"workshop.view",
"direct_costs.view",
"industrial_costs.view"
],
"company": [
"clients.view",
"services.view"
]
}
},
"integration_grants_reason": "Minimum existing read rights needed for the approved cross-module origin conferences; no new permission names or business-write authority."
}
@@ -0,0 +1,89 @@
{
"version": "SGF-BANK-RECONCILIATION-QA-v1",
"approved": true,
"applied": true,
"scope_file": "docs/SGF_BANK_RECONCILIATION_SCOPE.md",
"existing_books": [
"cc50a276c10c",
"b4093c6f6707"
],
"new_right_names": [
"bank_reconciliation.view",
"bank_reconciliation.import",
"bank_reconciliation.prepare",
"bank_reconciliation.review"
],
"grants_per_book": [
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 13,
"permission": "bank_reconciliation.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 14,
"permission": "bank_reconciliation.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 15,
"permission": "bank_reconciliation.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 16,
"permission": "bank_reconciliation.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 17,
"permission": "bank_reconciliation.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 13,
"permission": "bank_reconciliation.import"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 13,
"permission": "bank_reconciliation.prepare"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 14,
"permission": "bank_reconciliation.review"
}
],
"grants_per_book_count": 8,
"total_proposed_grants": 16,
"new_users": false,
"new_pg_roles": false,
"real_access": false,
"public_access": false,
"new_financial_effects": false,
"business_writes_applied": 0,
"authorization": {
"date": "2026-11-10",
"decision": "Autorizar a conferência bancária QA e os direitos apresentados"
},
"implemented": true,
"grants_applied_per_book": 8,
"delivery": "docs/SGF_BANK_RECONCILIATION_DELIVERY.md"
}
@@ -0,0 +1,84 @@
{
"version": "SGF-CASH-QA-v1",
"approved": true,
"authorization": "10/11/2026: Autorizar o ciclo Caixa QA e os direitos apresentados",
"applied": true,
"implementation": "implemented_and_http_verified_8085",
"installation": "cc50a276c10c",
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_host_rights": [
{
"permission": "cash.view",
"profiles": [
"finance_prepare",
"finance_review",
"accounting_prepare",
"accounting_review",
"read_only"
]
},
{
"permission": "cash.prepare",
"profiles": [
"finance_prepare"
]
},
{
"permission": "cash.review",
"profiles": [
"finance_review"
]
},
{
"permission": "cash.close",
"profiles": [
"finance_review"
]
}
],
"profiles": {
"finance_prepare": 13,
"finance_review": 14,
"accounting_prepare": 15,
"accounting_review": 16,
"read_only": 17
},
"permission_names": 4,
"concessions_per_existing_qa_book": 8,
"additional_native_function_grants": 0,
"scenario": {
"opening_minor": 0,
"explicit_existing_synthetic_receipt_classification_minor": 100000,
"new_synthetic_expense_minor": 5000,
"expected_count_and_close_minor": 95000,
"currency": "MZN",
"journal_effects": "two individually reviewed origins; no new invoice, receipt or debt"
},
"qa_accounts": [
"QA-CAIXA",
"QA-DESPESA-CAIXA"
],
"existing_counteraccount": "QA-LIQUIDACAO-CLIENTE",
"limits": {
"new_demo": false,
"new_database": false,
"new_port": false,
"new_user_or_profile": false,
"new_pg_role": false,
"real_access": false,
"real_money_or_payments": false,
"bank_connection": false,
"sgc": false,
"automatic_adjustment": false,
"cash_reopening": false,
"publication": false,
"purchasing_candidate": false,
"preserve_existing_25_journals": true,
"preserve_six_records_and_blocked_cache": true
},
"scope_document": "docs/SGF_CASH_NEXT_SCOPE.md"
}
@@ -0,0 +1,82 @@
{
"version": "SGF-DOCUMENT-READ-QA-v1",
"approved": true,
"authorization": "10/11/2026: Autorizar as10 concessões de consulta QA",
"applied": true,
"installation": "cc50a276c10c",
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"reason": "O motor original de emissão exige consulta do emitente, cliente, preparação e enquadramento fiscal; a aprovação anterior concedeu service_invoices.issue ao revisor Financeiro mas não estes direitos de consulta. Não contornar as guardas originais.",
"existing_host_rights": [
{
"permission": "issuer_documents.view",
"scope": "company",
"profiles": [
"finance_prepare",
"finance_review"
]
},
{
"permission": "client_documents.view",
"scope": "company",
"profiles": [
"finance_prepare",
"finance_review"
]
},
{
"permission": "service_fiscal.view",
"scope": "company",
"profiles": [
"finance_prepare",
"finance_review"
]
},
{
"permission": "draft_documents.view",
"scope": "unit",
"profiles": [
"finance_prepare",
"finance_review"
]
},
{
"permission": "billing_drafts.view",
"scope": "unit",
"profiles": [
"finance_review"
]
},
{
"permission": "service_drafts.view",
"scope": "unit",
"profiles": [
"finance_review"
]
}
],
"concessions": 10,
"new_permission_names": 0,
"profiles": {
"finance_prepare": 13,
"finance_review": 14
},
"limitations": {
"existing_qa_books_only": true,
"no_new_profiles": true,
"no_real_rights": true,
"no_public_grants": true,
"no_new_demos": true,
"no_writing_document_profiles": true,
"no_fiscal_rule_change": true,
"no_publication": true,
"preserve_six_records_and_cache": true
},
"applied_only_existing_qa_books": [
"b4093c6f6707",
"cc50a276c10c"
]
}
@@ -0,0 +1,81 @@
{
"version": "SGF-FINANCIAL-INDICATORS-QA-v1",
"approved": true,
"applied": true,
"scope_file": "docs/SGF_FINANCIAL_INDICATORS_SCOPE.md",
"existing_books": [
"cc50a276c10c",
"b4093c6f6707"
],
"new_right_names": [
"financial_analysis.view",
"financial_analysis.prepare",
"financial_analysis.review"
],
"grants_per_book": [
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 13,
"permission": "financial_analysis.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 14,
"permission": "financial_analysis.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 15,
"permission": "financial_analysis.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 16,
"permission": "financial_analysis.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 17,
"permission": "financial_analysis.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 13,
"permission": "financial_analysis.prepare"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 14,
"permission": "financial_analysis.review"
}
],
"grants_per_book_count": 7,
"total_proposed_grants": 14,
"new_users": false,
"new_pg_roles": false,
"real_access": false,
"public_access": false,
"new_financial_effects": false,
"business_writes_applied": 0,
"authorization": {
"date": "2026-11-10",
"decision": "Autorizar os indicadores QA e os direitos apresentados"
},
"implemented": true,
"grants_applied_per_book": 7,
"delivery": "docs/SGF_FINANCIAL_INDICATORS_DELIVERY.md"
}
@@ -0,0 +1,12 @@
{
"source_repository": "portal-investidor",
"source_file": "app/Services/SimulationTaxRuleExpression.php",
"source_sha256": "a976c0eb43ebb706275ca17efc9354a8d84f2dbe698375211704b158df02f7e1",
"consumer_file": "app/Modules/Services/FiscalRuleExpression.php",
"adaptations": [
"Namespace/class only; decimal input capped24 whole/8 fractional instead of unbounded.",
"Runtime executes only the exact pinned QA percentage DAG; metadata expressions never execute."
],
"runtime_portal_dependency": false,
"legal_knowledge_import": false
}
@@ -0,0 +1,65 @@
{
"version": "SGF-FISCAL-OBLIGATIONS-QA-v1",
"approved": true,
"implemented": true,
"applied": true,
"scope_file": "docs/SGF_FISCAL_OBLIGATIONS_SCOPE.md",
"books": [
"existing8085",
"existing_regression"
],
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_host_rights": [
"fiscal_obligations.view",
"fiscal_obligations.prepare",
"fiscal_obligations.review"
],
"grants_per_book": [
{
"user_id": 13,
"permission": "fiscal_obligations.view"
},
{
"user_id": 14,
"permission": "fiscal_obligations.view"
},
{
"user_id": 15,
"permission": "fiscal_obligations.view"
},
{
"user_id": 16,
"permission": "fiscal_obligations.view"
},
{
"user_id": 17,
"permission": "fiscal_obligations.view"
},
{
"user_id": 13,
"permission": "fiscal_obligations.prepare"
},
{
"user_id": 14,
"permission": "fiscal_obligations.review"
}
],
"total_grants_both_books": 14,
"new_postgres_grants": 0,
"new_public_rights": 0,
"new_demo": false,
"real_operations": false,
"evidence": [
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261110-223220-05f5c9f3/fiscal-obligations-access-readonly.json",
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261110-223221-33cdee62/fiscal-obligations-access-readonly.json"
],
"authorization": {
"date": "2026-11-10",
"decision": "Autorizar o bloco QA e os três direitos apresentados"
},
"delivery": "docs/SGF_FISCAL_OBLIGATIONS_DELIVERY.md"
}
@@ -0,0 +1,81 @@
{
"version": "SGF-FISCAL-RULES-COMMON-QA-v1",
"approved": true,
"applied": true,
"scope_file": "docs/SGF_FISCAL_RULES_COMMON_SCOPE.md",
"existing_books": [
"cc50a276c10c",
"b4093c6f6707"
],
"new_right_names": [
"fiscal_rules.view",
"fiscal_rules.prepare",
"fiscal_rules.review"
],
"grants_per_book": [
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 13,
"permission": "fiscal_rules.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 14,
"permission": "fiscal_rules.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 15,
"permission": "fiscal_rules.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 16,
"permission": "fiscal_rules.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 17,
"permission": "fiscal_rules.view"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 13,
"permission": "fiscal_rules.prepare"
},
{
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"user_id": 14,
"permission": "fiscal_rules.review"
}
],
"grants_per_book_count": 7,
"total_proposed_grants": 14,
"new_users": false,
"new_pg_roles": false,
"real_access": false,
"public_access": false,
"existing_iva_book_rights_unchanged": true,
"business_writes_applied": 0,
"authorization": {
"date": "2026-11-10",
"decision": "Autorizar o núcleo comum QA e os direitos apresentados"
},
"implemented": true,
"grants_applied_per_book": 7,
"delivery": "docs/SGF_FISCAL_RULES_COMMON_DELIVERY.md"
}
@@ -0,0 +1,102 @@
{
"version": "SGF-HUMAN-RESOURCES-AUTONOMOUS-QA-v1",
"approved": true,
"implemented": true,
"applied": true,
"module_authorized": true,
"access_authorized": true,
"scope_file": "docs/SGF_HUMAN_RESOURCES_AUTONOMY_SCOPE.md",
"supersedes_access_proposal": "docs/integration/sgf-remunerations-access-proposal.json",
"books": [
"existing8085",
"existing_regression"
],
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"module": "human_resources",
"profiles": [
{
"id": "hr_prepare",
"label": "QA Recursos Humanos — preparação",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "human_resources.remunerations.view",
"scope": "unit"
},
{
"permission": "human_resources.remunerations.prepare",
"scope": "unit"
}
]
},
{
"id": "hr_review",
"label": "QA Recursos Humanos — revisão",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "human_resources.remunerations.view",
"scope": "unit"
},
{
"permission": "human_resources.remunerations.review",
"scope": "unit"
}
]
},
{
"id": "hr_read",
"label": "QA Recursos Humanos — consulta",
"rights": [
{
"permission": "company.view",
"scope": "company"
},
{
"permission": "unit.view",
"scope": "unit"
},
{
"permission": "human_resources.remunerations.view",
"scope": "unit"
}
]
}
],
"new_host_rights": [
"human_resources.remunerations.view",
"human_resources.remunerations.prepare",
"human_resources.remunerations.review"
],
"new_profiles_per_book": 3,
"grants_per_book": 11,
"total_grants_both_books": 22,
"new_database_roles": 0,
"new_public_rights": 0,
"real_accounts": false,
"new_demo": false,
"original_financial_profile_grants_retracted": true,
"authorization": {
"date": "2026-11-11",
"decision": "Autorizar os perfis QA próprios de RH e as concessões apresentadas"
},
"delivery": "docs/SGF_HUMAN_RESOURCES_DELIVERY.md"
}
@@ -0,0 +1,114 @@
{
"version": "SGF-HR-CONTRACTS-ATTENDANCE-LEAVE-QA-v1",
"approved": true,
"implemented": false,
"applied": false,
"scope_file": "docs/SGF_HUMAN_RESOURCES_PERSONNEL_SCOPE.md",
"module": "human_resources",
"books": [
"existing8085",
"existing_regression"
],
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"existing_profile_keys": [
"hr_prepare",
"hr_review",
"hr_read"
],
"new_host_rights": [
"human_resources.contracts.view",
"human_resources.contracts.prepare",
"human_resources.contracts.review",
"human_resources.attendance.view",
"human_resources.attendance.prepare",
"human_resources.attendance.review",
"human_resources.leave.view",
"human_resources.leave.prepare",
"human_resources.leave.review"
],
"grants_per_book": [
{
"profile_key": "hr_prepare",
"permission": "human_resources.contracts.view"
},
{
"profile_key": "hr_prepare",
"permission": "human_resources.contracts.prepare"
},
{
"profile_key": "hr_prepare",
"permission": "human_resources.attendance.view"
},
{
"profile_key": "hr_prepare",
"permission": "human_resources.attendance.prepare"
},
{
"profile_key": "hr_prepare",
"permission": "human_resources.leave.view"
},
{
"profile_key": "hr_prepare",
"permission": "human_resources.leave.prepare"
},
{
"profile_key": "hr_review",
"permission": "human_resources.contracts.view"
},
{
"profile_key": "hr_review",
"permission": "human_resources.contracts.review"
},
{
"profile_key": "hr_review",
"permission": "human_resources.attendance.view"
},
{
"profile_key": "hr_review",
"permission": "human_resources.attendance.review"
},
{
"profile_key": "hr_review",
"permission": "human_resources.leave.view"
},
{
"profile_key": "hr_review",
"permission": "human_resources.leave.review"
},
{
"profile_key": "hr_read",
"permission": "human_resources.contracts.view"
},
{
"profile_key": "hr_read",
"permission": "human_resources.attendance.view"
},
{
"profile_key": "hr_read",
"permission": "human_resources.leave.view"
}
],
"grant_count_per_book": 15,
"total_grants_both_books": 30,
"new_profiles": 0,
"new_users": 0,
"new_database_roles": 0,
"new_postgres_grants": 0,
"new_public_rights": 0,
"new_demo": false,
"new_sgc_dependency": false,
"new_journals": 0,
"new_payments": 0,
"evidence": [
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-083950-2b7f6505/hr-personnel-access-readonly.json",
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-083951-b86bcdeb/hr-personnel-access-readonly.json"
],
"authorization": {
"date": "2026-11-11",
"decision": "Autorizar o bloco e as30 concessões QA apresentadas"
}
}
@@ -0,0 +1,132 @@
{
"version": "SGF-IVA-ASSESSMENT-FORM-QA-v1",
"approved": true,
"applied": true,
"scope_file": "docs/SGF_IVA_ASSESSMENT_NEXT_SCOPE.md",
"existing_books": [
"cc50a276c10c",
"b4093c6f6707"
],
"new_right_names": [
"fiscal_assessments.prepare",
"fiscal_assessments.review",
"fiscal_assessments.view",
"fiscal_forms.prepare",
"fiscal_forms.review",
"fiscal_forms.view"
],
"grants_per_book": [
{
"user_id": 13,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_assessments.view"
},
{
"user_id": 14,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_assessments.view"
},
{
"user_id": 15,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_assessments.view"
},
{
"user_id": 16,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_assessments.view"
},
{
"user_id": 17,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_assessments.view"
},
{
"user_id": 13,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_assessments.prepare"
},
{
"user_id": 14,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_assessments.review"
},
{
"user_id": 13,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_forms.view"
},
{
"user_id": 14,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_forms.view"
},
{
"user_id": 15,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_forms.view"
},
{
"user_id": 16,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_forms.view"
},
{
"user_id": 17,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_forms.view"
},
{
"user_id": 13,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_forms.prepare"
},
{
"user_id": 14,
"tenant_id": 1,
"company_id": 2,
"unit_id": 2,
"permission": "fiscal_forms.review"
}
],
"grants_per_book_count": 14,
"total_proposed_grants": 28,
"new_users": false,
"new_pg_roles": false,
"real_access": false,
"public_access": false,
"business_writes_applied": 0,
"authorization": {
"date": "2026-11-10",
"decision": "Autorizar o livro/mapa IVA QA e os direitos apresentados"
},
"implemented": true,
"delivery": "docs/SGF_IVA_ASSESSMENT_DELIVERY.md",
"grants_applied_per_book": 14
}
@@ -0,0 +1,103 @@
{
"version": "SGF-KNOWLEDGE-INVENTORY-20261110-v1",
"reference_document": {
"name": "Incorporacao de impostos e analise ao SGF.docx",
"sha256": "212ae656646b6cc3cad9d077d74887de0ba8111b5c7a39bc5efc0adf20cbeb7b",
"type": "User requirements/questions; not normative legislation or activation authority"
},
"existing_inventory": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"portal_repository": "portal-investidor",
"sources": [
{
"file": "app/Services/SimulationTaxRuleExpression.php",
"located": true,
"sha256": "a976c0eb43ebb706275ca17efc9354a8d84f2dbe698375211704b158df02f7e1",
"sgf_operational_transfer_verified": false
},
{
"file": "app/Services/SimulationTaxParameterResolver.php",
"located": true,
"sha256": "a4621e672ea4f38e81ff9828f4017889cc09d229c5940f6e38607acc9b27e1a8",
"sgf_operational_transfer_verified": false
},
{
"file": "app/Services/SimulationFiscalSnapshot.php",
"located": true,
"sha256": "7dcc7d4f30c95fc30aa4fb73d771ed74e9ca8be30ae5fa82d8e310e565e0b24f",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/fiscal-rational.ts",
"located": true,
"sha256": "941408aa1cd92652507b5e675e307d0883ff25921a903e60365175d02be0cbdf",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/iva-operations.ts",
"located": true,
"sha256": "87f616ea2b3a844dea352a6c4d2db25a8de612df3e4edab4c395cc8fa0297a50",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/iva-acquisitions.ts",
"located": true,
"sha256": "b8a8c4a72e35fea7026fd01b0e8e26d44248539eca1a77e8d58ca15a72f218fb",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/iva-modelo-a.ts",
"located": true,
"sha256": "e34cac6d3c0473a64e896cfc4641c1da29382aab13de2bd0e78e1ff33c770c87",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/irpc-normal.ts",
"located": true,
"sha256": "5594b913e795e1e7d4bf1bba915af08a54c3d3a2d69a86e9ce3a966667cd01fd",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/irpc-normal-forms.ts",
"located": true,
"sha256": "504c95891ad9d06478c2fe30416cf8d05e91f027d85cacaf0d4d7de9c8f04d81",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/irpc-withholdings.ts",
"located": true,
"sha256": "b751aa1a326960516c8abfc9ade637a205c7bf053cbaa98c2058f50d56ea0c0d",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/ispc-quarter.ts",
"located": true,
"sha256": "5bce00353d58e503693550610aabcfb9e3e81c36109e831ac0532ca66ecb0e92",
"sgf_operational_transfer_verified": false
},
{
"file": "resources/js/lib/ispc-eligibility.ts",
"located": true,
"sha256": "d8a32ee08e27c6ffcead739f9917d3196da6ab83ce6aac9163ffb74478d7e2fa",
"sgf_operational_transfer_verified": false
}
],
"new_research": false,
"runtime_portal_dependency": false,
"normative_validity_verified": false,
"new_rates_imported": 0,
"sgf_missing_operational_areas": [
"IVA multi-line/included-price and assessment/deduction books",
"IRPS and payroll/INSS",
"IRPC tax bridge/withholding and assessment",
"ISPC",
"ICE",
"Official form mappings and fiscal calendar",
"Bank reconciliation",
"Reconciled financial ratios/trends"
],
"limitations": [
"File presence/hash is not a legal or numerical validation. Existing named proofs remain historical and were not rerun.",
"IRPS/INSS/ICE complete reusable source set was not established by this limited inventory; do not infer no knowledge exists in all prior chats or archives.",
"Do not copy portal user dossiers or import projected values as effective SGF operations."
]
}
@@ -0,0 +1,31 @@
{
"version": "SGF-MULTI-LINE-INCLUDED-QA-v1",
"approved": true,
"implemented": true,
"scope_file": "docs/SGF_MULTI_LINE_INCLUDED_SCOPE.md",
"new_right_names": [],
"new_grants": 0,
"existing_rights_reused": [
"fiscal_rules.view",
"fiscal_rules.prepare",
"fiscal_rules.review"
],
"policy": {
"per_line_tax": "TRUNCATE2",
"gross_included_document_base": "gross_document_minus_tax_document",
"exact_fractions_and_both_differences_preserved": true,
"aggregate": "sum_document_lines",
"net_noncent_base": "pending",
"gross_noncent_amount": "pending"
},
"new_invoices": 0,
"new_receivables": 0,
"new_journals": 0,
"new_demo": false,
"real_legal_activation": false,
"authorization": {
"date": "2026-11-10",
"decision": "Autorizar a modalidade QA e a política apresentada"
},
"delivery": "docs/SGF_MULTI_LINE_INCLUDED_DELIVERY.md"
}
@@ -0,0 +1,44 @@
{
"version": "SGF-PAYABLE-DUE-QA-v1",
"approved": true,
"implemented": true,
"applied": true,
"scope_file": "docs/SGF_PAYABLE_DUE_SCOPE.md",
"books": [
"existing8085",
"existing_regression"
],
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_host_rights": [
"supplier_payables.due.prepare",
"supplier_payables.due.review"
],
"grants_per_book": [
{
"user_id": 13,
"permission": "supplier_payables.due.prepare"
},
{
"user_id": 14,
"permission": "supplier_payables.due.review"
}
],
"total_grants_both_books": 4,
"new_postgres_grants": 0,
"new_public_rights": 0,
"new_demo": false,
"real_operations": false,
"evidence": [
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261110-221055-d3c1bc55/payable-due-access-readonly.json",
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261110-221056-6bf7f3d6/payable-due-access-readonly.json"
],
"authorization": {
"date": "2026-11-10",
"decision": "Autorizar o percurso QA e os dois direitos apresentados"
},
"delivery": "docs/SGF_PAYABLE_DUE_DELIVERY.md"
}
@@ -0,0 +1,169 @@
{
"version": "SGF-REMAINING-COMMERCIAL-STOCK-QA-v1",
"approved": true,
"authorization": "10/11/2026: Autorizar o bloco QA e os direitos discriminados",
"applied": true,
"access_applied_in_existing_qa_books": true,
"functional_progress": {
"quotes": "implemented_and_http_verified_8085",
"stock_policies_supplier_return": "implemented_and_http_verified_8085",
"additional_documents": "implemented_http_verified_8085_with_rollback_tested_cancellations"
},
"installation": "cc50a276c10c",
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_host_rights": [
{
"permission": "commercial_quotes.view",
"profiles": [
"commercial_prepare",
"commercial_review",
"finance_prepare",
"finance_review",
"read_only"
]
},
{
"permission": "commercial_quotes.prepare",
"profiles": [
"commercial_prepare",
"finance_prepare"
]
},
{
"permission": "commercial_quotes.review",
"profiles": [
"commercial_review",
"finance_review"
]
},
{
"permission": "commercial_quotes.convert",
"profiles": [
"commercial_prepare",
"finance_prepare"
]
},
{
"permission": "service_documents.view",
"profiles": [
"commercial_prepare",
"commercial_review",
"finance_prepare",
"finance_review",
"read_only"
]
},
{
"permission": "service_documents.prepare",
"profiles": [
"commercial_prepare",
"finance_prepare"
]
},
{
"permission": "service_documents.review",
"profiles": [
"commercial_review",
"finance_review"
]
},
{
"permission": "service_documents.issue",
"profiles": [
"commercial_prepare",
"finance_review"
]
},
{
"permission": "service_documents.credit_apply",
"profiles": [
"finance_review"
]
},
{
"permission": "stock.planning.view",
"profiles": [
"purchasing:validator",
"workshop_verify"
]
},
{
"permission": "stock.planning.prepare",
"profiles": [
"purchasing:validator"
]
},
{
"permission": "stock.planning.review",
"profiles": [
"workshop_verify"
]
},
{
"permission": "stock.disposition.view",
"profiles": [
"purchasing:validator",
"workshop_verify"
]
},
{
"permission": "stock.disposition.prepare",
"profiles": [
"purchasing:validator"
]
},
{
"permission": "stock.disposition.review",
"profiles": [
"workshop_verify"
]
}
],
"additional_existing_host_rights": [
{
"permission": "service_invoices.issue",
"profiles": [
"finance_review"
],
"reason": "Finalização atómica da factura-recibo sintética após as decisões documental e financeira distintas; sem concessão real."
}
],
"existing_native_functions_to_grant_only_in_qa": [
{
"native_user_id": 6,
"functions": [
"supply_read",
"supply_prepare",
"inventory_disposition_read",
"inventory_disposition_prepare"
]
},
{
"native_user_id": 3,
"functions": [
"supply_read",
"supply_review",
"inventory_disposition_read",
"inventory_disposition_review"
]
}
],
"limits": {
"new_profiles": false,
"new_postgresql_roles": false,
"real_rights": false,
"public_grants": false,
"new_databases": false,
"new_demos": false,
"sgc": false,
"publication": false,
"protected_six_unchanged": true,
"blocked_cache_unchanged": true,
"existing_eighteen_journals_preserved": true
},
"scope_document": "docs/SGF_NEXT_BLOCK_RIGHTS.md"
}
@@ -0,0 +1,69 @@
{
"version": "SGF-REMUNERATIONS-QA-v1",
"approved": true,
"implemented": false,
"applied": false,
"scope_file": "docs/SGF_REMUNERATIONS_SCOPE.md",
"books": [
"existing8085",
"existing_regression"
],
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_host_rights": [
"remunerations.view",
"remunerations.prepare",
"remunerations.review"
],
"grants_per_book": [
{
"user_id": 13,
"permission": "remunerations.view"
},
{
"user_id": 14,
"permission": "remunerations.view"
},
{
"user_id": 15,
"permission": "remunerations.view"
},
{
"user_id": 16,
"permission": "remunerations.view"
},
{
"user_id": 17,
"permission": "remunerations.view"
},
{
"user_id": 13,
"permission": "remunerations.prepare"
},
{
"user_id": 14,
"permission": "remunerations.review"
}
],
"total_grants_both_books": 14,
"new_postgres_grants": 0,
"new_public_rights": 0,
"new_demo": false,
"real_operations": false,
"new_journals": 0,
"legal_payroll_validated": false,
"evidence": [
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-074857-8dc00a16/remunerations-access-readonly.json",
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-074858-c159b61c/remunerations-access-readonly.json"
],
"authorization": {
"date": "2026-11-11",
"decision": "Autorizar o bloco QA e os três direitos apresentados"
},
"status": "superseded_by_autonomous_hr_directive",
"applied_then_revoked": true,
"superseded_by": "docs/integration/sgf-human-resources-access-proposal.json"
}
+600
View File
@@ -0,0 +1,600 @@
{
"version": "SGF-SOLUTION-CLOSURE-v25",
"target": "existing8085",
"sgc_required": false,
"new_demonstrations": false,
"modules": [
{
"id": "commercial",
"label": "Comercial",
"features": [
"Clientes e serviços com associação explícita",
"Rascunho, revisão e cálculo",
"Documento emitido de teste e PDF",
"Continuação para recebível sem duplicação",
"Orçamentos Comercial/Oficina, revisão e aceitação documentadas e conversão explícita em rascunho",
"Recibo de afectação efectiva400, crédito nominal100/saldo500 e factura-recibo1000 atómica",
"PDF/SHA, histórico e anulação técnica com reversão explícita e diário único",
"Registo unificado autorizado com seis famílias, filtros/SQL25/100 e projecções limitadas à página",
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes"
],
"required_host_tables": [
"a_clients",
"a_services",
"a_service_drafts",
"a_billing_drafts",
"b_internal_confirmations",
"doc_records",
"document_preview_models",
"service_calculation_profiles",
"sf_proposals",
"si_invoices",
"sd_versions",
"sd_outputs",
"sd_commands",
"sd_cancellations"
],
"required_source_files": [
"app/Modules/Services/ServiceWorkflow.php",
"app/Modules/Services/ServiceInvoicing.php",
"resources/js/ServicesWorkspace.jsx",
"resources/js/ServiceInvoiceWorkspace.jsx",
"app/Modules/Services/ServiceDocuments.php",
"app/Modules/Services/DocumentPeriod.php",
"app/Modules/Services/BillingRegister.php",
"resources/js/BillingRegisterWorkspace.jsx",
"resources/js/WorkspaceHome.jsx",
"resources/js/workspace-overview.js"
],
"proofs": [
"docs/proofs/invoice-test-results.json",
"docs/proofs/sgf-six-module-functional-review-20261110.json",
"docs/SGF_SERVICE_DOCUMENTS_DELIVERY.md",
"docs/SGF_BILLING_REGISTER_DELIVERY.md",
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md"
],
"work_remaining": [
"Revisão visual, aceitação explícita e conformidade real; emissão fiscal real permanece bloqueada",
"Carga sustentada, armazenamento e capacidade de implantação exigem evidências próprias"
]
},
{
"id": "purchasing",
"label": "Compras",
"features": [
"Fornecedores e revisão distinta",
"Requisição até adjudicação e ordem",
"Recepção, documento e stock único",
"Factura conferida e obrigação reconhecida",
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes"
],
"required_host_tables": [
"users",
"companies",
"units",
"permission_grants"
],
"required_source_files": [
"app/Modules/Purchasing/ReceiptRuntime.php",
"app/Modules/Purchasing/RequestController.php",
"app/Modules/Purchasing/InvoiceController.php",
"app/Modules/Purchasing/ObligationController.php",
"resources/js/WorkspaceHome.jsx",
"resources/js/workspace-overview.js"
],
"proofs": [
"docs/proofs/purchasing-completion-final-20261104-r2.json",
"docs/proofs/sgf-six-module-functional-review-20261110.json",
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md"
],
"work_remaining": [
"Conferência visual restante e aceitação explícita do conjunto; ver SGF_SIX_MODULE_CLOSURE_20261110.md"
]
},
{
"id": "stock",
"label": "Stock",
"features": [
"Artigos, armazéns e saldos físicos",
"Entradas, saídas e origem autorizada",
"Transferência e conferência de destino",
"Contagens, ajustamentos e devoluções",
"Movimentos e relatórios por período",
"Política QA revista e devolução ao fornecedor por origem exacta; saldo8UN/160MZN no mesmo diário",
"Inactividade de pares com história conhecida, corte UTC explícito, filtros e SQL25/100 sem inferir ausência de actividade",
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes",
"Cadastro de artigos: preparação/revisão distintas, criação sem saldo, designação revista só dos novos, código/unidade imutáveis, histórico/recibos e catálogo canónico único"
],
"required_host_tables": [
"users",
"companies",
"units"
],
"required_source_files": [
"app/Modules/Inventory/StockReadController.php",
"app/Modules/Inventory/CompositionStockRead.php",
"app/Modules/Inventory/StockPeriodReport.php",
"app/Modules/Workshop/WorkshopStock.php",
"app/Modules/Inventory/StockOperationsController.php",
"resources/views/stock-operations-workspace.blade.php",
"public/stock-operations-workspace.mjs",
"app/Modules/Inventory/StockFinalController.php",
"resources/views/stock-final-workspace.blade.php",
"public/sgf-stock-final.mjs",
"app/Modules/Inventory/StockInactiveReport.php",
"resources/js/StockInactiveReportWorkspace.jsx",
"resources/js/WorkspaceHome.jsx",
"resources/js/workspace-overview.js",
"app/Modules/Inventory/StockCatalogueController.php",
"resources/views/stock-catalogue-workspace.blade.php",
"public/sgf-stock-catalogue.mjs",
"config/stock_catalogue.php",
"database/sql/stock_catalogue.sql"
],
"proofs": [
"docs/proofs/stock-period-report-20261103.json",
"docs/proofs/sgf-stock-operations-20261110.json",
"docs/proofs/sgf-six-module-functional-review-20261110.json",
"docs/SGF_STOCK_POLICIES_SUPPLIER_RETURN.md",
"docs/SGF_STOCK_INACTIVITY_DELIVERY.md",
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md",
"docs/SGF_STOCK_CATALOGUE_DELIVERY.md"
],
"work_remaining": [
"Revisão visual dos novos relatórios e aceitação explícita do conjunto; carga sustentada e implantação separadas"
],
"required_native_tables": [
"stock_movements",
"stock_operations",
"inventory_lot_allocations",
"supply_records",
"sgf_stock_transit_events",
"sc_catalogue_meta",
"sc_catalogue_versions",
"sc_catalogue_commands"
]
},
{
"id": "workshop",
"label": "Oficinas",
"features": [
"Ordem e autorização",
"Apontamentos e revisão distinta",
"Material consumido ligado ao movimento físico",
"Custo directo/industrial e correcção",
"Continuação comercial por documento de origem",
"Agenda sem sobreposição, reagendamento e cancelamento versionados",
"Cadastro independente e reutilização de equipamento por cliente",
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes",
"Ordens SQL25/100 por cliente/equipamento/responsável/estado, apontamentos actuais e minutos verificados, sem mutex de escrita na leitura",
"Relatório por período de abertura explícito/dia local, SQL25/100 antes de paginar, apontamentos actuais e CSV da página sem fecho histórico presumido",
"Equipamento escolhido → ordens exactas SQL25/100 com filtros, identificação actual, CSV da página e regresso ao catálogo"
],
"required_host_tables": [
"wo_orders",
"wo_entries",
"dc_calculations",
"ic_results",
"wb_proposals"
],
"required_source_files": [
"app/Modules/Workshop/WorkshopStock.php",
"resources/js/WorkshopWorkspace.jsx",
"resources/js/DirectCostsWorkspace.jsx",
"resources/js/IndustrialCostsWorkspace.jsx",
"resources/js/WorkshopBillingWorkspace.jsx",
"app/Modules/Workshop/ComposedWorkshopStockBook.php",
"app/Modules/Workshop/WorkshopBilling.php",
"resources/js/WorkspaceHome.jsx",
"resources/js/workspace-overview.js",
"app/Modules/Workshop/WorkshopOrderRead.php",
"app/Modules/Workshop/Http/WorkshopOrderReadController.php",
"resources/js/WorkshopOrderList.jsx",
"resources/js/workshop-report-view.js",
"app/Modules/Workshop/WorkshopEquipment.php",
"resources/js/WorkshopEquipmentWorkspace.jsx"
],
"proofs": [
"docs/proofs/workshop-stock-closure-20261102.json",
"docs/proofs/sgf-six-module-functional-review-20261110.json",
"docs/SGF_WORKSHOP_AGENDA_EQUIPMENT.md",
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md",
"docs/SGF_WORKSHOP_PERIOD_REPORT_DELIVERY.md",
"docs/SGF_WORKSHOP_EQUIPMENT_ORDERS_DELIVERY.md"
],
"work_remaining": [
"Conferência visual restante e aceitação explícita do conjunto; ver SGF_SIX_MODULE_CLOSURE_20261110.md"
]
},
{
"id": "finance",
"label": "Financeiro",
"features": [
"Obrigações a fornecedores",
"Recebíveis de clientes",
"Liquidação/afectação e reversão sintéticas",
"Posição financeira e comprovativos por origem",
"Caixa QA explícita0+1000-50=950, revisão distinta, contagem e fecho sem reabertura",
"Extracto paginado, recuperação de confirmação e classificação/despesa no mesmo diário",
"Extracto artificial QA e correspondências individuais com duas linhas nativas existentes, revisão distinta, conferência final e relatório",
"Critérios e indicadores QA950/100=9,5 vezes e50/1000=5%, revisão distinta, fontes conciliadas/retrato/fracção/histórico/relatório",
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes",
"Posições actuais de clientes por documento, pesquisa/estado/vencimento, SQL25/100, saldos reconhecidos e CSV da página; referência de vencimento distinta de saldo histórico",
"Posições de fornecedores por factura/fornecedor e estado documental, SQL25/100, saldos do motor original, CSV da página e abertura exacta do documento; vencimento desconhecido sem atraso presumido",
"Condições administrativas QA de vencimento: preparação13/revisão14, evidência/fundamento, prévia/revalidação de origem/saldo/versão/pessoa, recusa/correcção, histórico25/100, recibo e recuperação; lista/CSV separam original e condição revista, referência explícita no detalhe",
"Mapa de antiguidade de fornecedores por referência explícita e condição administrativa revista, faixas0/1–30/31–60/61–90/>90/desconhecido, valores exactos por moeda só da página/CSV, sem alterar saldo ou vencimento original"
],
"required_host_tables": [
"sr_records",
"sr_effects",
"cash_events",
"cash_commands",
"br_statements",
"br_events",
"br_commands",
"an_criteria",
"an_results",
"an_commands"
],
"required_source_files": [
"app/Modules/Services/ServiceReceivables.php",
"app/Modules/Purchasing/SupplierPayables.php",
"resources/js/ServiceReceivablesWorkspace.jsx",
"app/Modules/Purchasing/ComposedFinance.php",
"app/Modules/Purchasing/ComposedFinanceController.php",
"app/Modules/Finance/CashWorkspace.php",
"app/Modules/Finance/Http/CashController.php",
"app/Modules/Accounting/CashLedgerSource.php",
"app/Modules/Finance/BankReconciliation.php",
"app/Modules/Finance/BankLedgerSource.php",
"app/Modules/Finance/Http/BankReconciliationController.php",
"public/sgf-bank.mjs",
"app/Modules/Finance/FinancialIndicators.php",
"app/Modules/Finance/FinancialIndicatorSource.php",
"app/Modules/Finance/Http/FinancialIndicatorsController.php",
"public/sgf-indicators.mjs",
"resources/js/WorkspaceHome.jsx",
"resources/js/workspace-overview.js",
"app/Modules/Services/ReceivablePositionRead.php",
"app/Modules/Services/Http/ReceivablePositionReadController.php",
"resources/js/ReceivablePositionsWorkspace.jsx",
"resources/js/receivable-position-view.js",
"app/Modules/Purchasing/PayablePositionReadController.php",
"app/Modules/Purchasing/ComposedFinanceController.php",
"resources/js/PayablePositionsWorkspace.jsx",
"resources/js/payable-position-view.js",
"app/Modules/Purchasing/PayableDueController.php",
"resources/js/PayableDueWorkspace.jsx",
"database/sql/payable_due.sql",
"config/payable_due.php",
"app/Modules/Purchasing/PayableAge.php"
],
"proofs": [
"docs/proofs/supplier-settlements.json",
"docs/proofs/sgf-six-module-functional-review-20261110.json",
"docs/SGF_CASH_DELIVERY.md",
"docs/SGF_BANK_RECONCILIATION_DELIVERY.md",
"docs/SGF_FINANCIAL_INDICATORS_DELIVERY.md",
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md",
"docs/SGF_RECEIVABLE_POSITIONS_DELIVERY.md",
"docs/SGF_PAYABLE_POSITIONS_DELIVERY.md",
"docs/SGF_PAYABLE_DUE_DELIVERY.md",
"docs/SGF_PAYABLE_AGING_DELIVERY.md"
],
"work_remaining": [
"Conferência visual restante e aceitação explícita do conjunto; ver SGF_SIX_MODULE_CLOSURE_20261110.md",
"Conferência de extracto QA entregue; reconciliação bancária geral/real permanece fora do recorte"
],
"required_native_tables": [
"pa_obligations",
"pa_access",
"ps_payments",
"pd_due_meta",
"pd_due_versions",
"pd_due_commands"
]
},
{
"id": "accounting",
"label": "Contabilidade",
"features": [
"Plano e classificação",
"Diário com preparação/revisão distintas",
"Razão e balancete",
"Estorno/correcção e conferência de período",
"Fecho sintético com rastreabilidade de origens",
"Livro de saídas e mapa interno IVA QA da origem FR seleccionada, revisão distinta, histórico e CSV congelado",
"Catálogo de fontes/regras versionadas QA, revisão distinta, vigência/conflitos/retirada e cálculo explicável com história preservada",
"Cálculo QA por1–25linhas sem/com imposto incluído, representação por linha aprovada, exactos/diferenças e mapa interno recuperável",
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes",
"Submenus distintos e balancete/razão por datas explícitas, escolha de conta por linha, páginas25/100, detecção de mudança de livro e CSV da página",
"Controlo administrativo QA de obrigação/prazo/responsável do mapa interno revisto, preparação13/revisão14, correcção/cancelamento, entrega apenas simulada com SHA verificado, histórico/recibo/SQL25/100/CSV; sem calendário legal ou submissão",
"Correspondências explícitas revistas15/16 e balanço/resultados internos parciais QA:19contas/nove pendentes, resultado congelado19linhas/SHA, história/recibo/CSV contextual, ligação exacta ao razão; capital e resultado completo não presumidos"
],
"required_host_tables": [
"ca_proposals",
"ca_resolutions",
"fx_versions",
"fx_commands",
"fr_events",
"fr_calculations",
"fr_commands",
"fo_meta",
"fo_versions",
"fo_commands"
],
"required_source_files": [
"app/Modules/Accounting/GeneralLedger.php",
"app/Modules/Accounting/GeneralLedgerController.php",
"packages/general-ledger/src/LedgerSchema.php",
"app/Modules/Accounting/ComposedLedger.php",
"app/Modules/Accounting/ComposedLedgerController.php",
"packages/general-ledger/src/StockTransitEvidence.php",
"app/Modules/Services/FiscalCoverage.php",
"app/Modules/Services/FiscalAssessment.php",
"app/Modules/Services/Http/FiscalAssessmentController.php",
"public/sgf-iva.mjs",
"app/Modules/Services/FiscalRules.php",
"app/Modules/Services/FiscalRuleExpression.php",
"app/Modules/Services/Http/FiscalRulesController.php",
"public/sgf-fiscal-rules.mjs",
"app/Modules/Services/FiscalDocumentMath.php",
"resources/js/WorkspaceHome.jsx",
"resources/js/workspace-overview.js",
"resources/js/ComposedAccountingWorkspace.jsx",
"resources/js/LedgerReportsWorkspace.jsx",
"resources/js/ledger-report-view.js",
"app/Modules/Services/FiscalObligations.php",
"app/Modules/Services/Http/FiscalObligationsController.php",
"resources/js/FiscalObligationsWorkspace.jsx",
"resources/js/fiscal-obligations-view.js",
"database/sql/fiscal_obligations.sql",
"config/fiscal_obligations.php",
"app/Modules/Accounting/InternalStatementsController.php",
"app/Modules/Accounting/InternalStatementTotals.php",
"resources/js/InternalStatementsWorkspace.jsx",
"resources/js/internal-statements-view.js",
"resources/js/statement-download.js",
"resources/js/FiscalObligationsWorkspace.jsx",
"database/sql/internal_statements.sql",
"config/internal_statements.php"
],
"proofs": [
"docs/proofs/purchasing-completion-matrix-final-20261104.json",
"docs/proofs/sgf-six-module-functional-review-20261110.json",
"docs/SGF_FISCAL_COVERAGE_DELIVERY.md",
"docs/SGF_IVA_ASSESSMENT_DELIVERY.md",
"docs/SGF_FISCAL_RULES_COMMON_DELIVERY.md",
"docs/SGF_MULTI_LINE_INCLUDED_DELIVERY.md",
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md",
"docs/SGF_ACCOUNTING_REPORTS_DELIVERY.md",
"docs/SGF_FISCAL_OBLIGATIONS_DELIVERY.md",
"docs/SGF_FINANCIAL_STATEMENTS_DELIVERY.md"
],
"work_remaining": [
"Conferência visual restante e aceitação explícita do conjunto; ver SGF_SIX_MODULE_CLOSURE_20261110.md",
"Backlog fiscal/financeiro amplo pendente; tabela de cobertura não implementa motores ou modelos"
],
"required_native_tables": [
"gl_accounts",
"gl_periods",
"gl_journals",
"gl_lines",
"fs_meta",
"fs_versions",
"fs_results",
"fs_result_lines",
"fs_commands"
]
},
{
"id": "human_resources",
"label": "Recursos Humanos",
"features": [
"Módulo autónomo com perfis QA próprios separados do Financeiro",
"Cadastro pseudónimo individual preparado e revisto",
"Regras artificiais versionadas com vigência e fonte explícitas",
"Processamento exacto por trabalhador/período com escolha de fontes e revisão distinta",
"Correcção/cancelamento versionados, prévia, histórico, recibos e recuperação",
"Mapa individual revisto conservado com SHA e exportação autenticada; filtros SQL25/100"
],
"required_host_tables": [
"rm_meta",
"rm_versions",
"rm_commands",
"hr_qa_profiles"
],
"required_source_files": [
"app/Modules/HumanResources/Remunerations.php",
"app/Modules/HumanResources/Http/RemunerationsController.php",
"app/Shared/Installation/HumanResourcesProfiles.php",
"resources/js/RemunerationsWorkspace.jsx",
"resources/js/statement-download.js"
],
"proofs": [
"docs/SGF_HUMAN_RESOURCES_DELIVERY.md",
"docs/proofs/sgf-human-resources-20261111.json"
],
"work_remaining": [
"Contratos/alterações contratuais, assiduidade, turnos, férias e ausências",
"Regimes, IRPS/INSS/modelos legais e ligação salarial a dívida/pagamentos/Contabilidade",
"Revisão visual, carga sustentada e capacidade de implantação"
]
}
],
"release_gates": [
{
"id": "single_installation",
"criterion": "Os seis módulos operam no mesmo endereço e empresa/unidade, sem mudar de demonstração"
},
{
"id": "functional_modules",
"criterion": "Cada funcionalidade obrigatória tem ecrã/comando/consulta executável; menus e fontes isoladas não bastam"
},
{
"id": "cross_module_flows",
"criterion": "Os documentos atravessam as fronteiras mantendo origem, versão, autoridade e efeito único"
},
{
"id": "access_isolation",
"criterion": "Perfis explícitos e recusas de empresa/unidade/módulo/permissão verificadas"
},
{
"id": "presentation",
"criterion": "Percurso de apresentação coerente, dados fictícios identificados, linguagem e navegação revistas"
},
{
"id": "operations",
"criterion": "Arranque e recuperação da instalação entregues e ensaiados, sem depender do SGC"
},
{
"id": "commercial_honesty",
"criterion": "Documentos de teste não são emissão fiscal; capacidade de implantação exige prova própria"
},
{
"id": "preservation",
"criterion": "Seis registos, cache, dados aprovados e trabalho alheio preservados"
}
],
"acceptance_proof": "docs/proofs/sgf-single-solution-acceptance.json",
"scope_policy": "Recorte QA dos seis módulos e requisitos amplos de produto separados explicitamente; nenhum painel de cobertura equivale à implementação dos motores ou modelos pendentes.",
"revision_note": "A prova funcional anterior conserva o contrato v1 histórico; as lacunas agora discriminadas não são aceitação nem capacidade de implantação.",
"proposed_scope_extensions": [
{
"id": "cash",
"access": "docs/integration/sgf-cash-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"scope": "docs/SGF_CASH_NEXT_SCOPE.md",
"implemented": true
},
{
"id": "iva_assessment_internal_form",
"scope": "docs/SGF_IVA_ASSESSMENT_NEXT_SCOPE.md",
"access": "docs/integration/sgf-iva-assessment-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "fiscal_rules_common",
"scope": "docs/SGF_FISCAL_RULES_COMMON_SCOPE.md",
"access": "docs/integration/sgf-fiscal-rules-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "bank_reconciliation_qa",
"scope": "docs/SGF_BANK_RECONCILIATION_SCOPE.md",
"access": "docs/integration/sgf-bank-reconciliation-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "financial_indicators_qa",
"scope": "docs/SGF_FINANCIAL_INDICATORS_SCOPE.md",
"access": "docs/integration/sgf-financial-indicators-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "multi_line_included_qa",
"scope": "docs/SGF_MULTI_LINE_INCLUDED_SCOPE.md",
"decision": "docs/integration/sgf-multi-line-included-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "stock_catalogue",
"scope": "docs/SGF_STOCK_CATALOGUE_SCOPE.md",
"access": "docs/integration/sgf-stock-catalogue-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "supplier_due_qa",
"scope": "docs/SGF_PAYABLE_DUE_SCOPE.md",
"access": "docs/integration/sgf-payable-due-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "fiscal_obligations_qa",
"scope": "docs/SGF_FISCAL_OBLIGATIONS_SCOPE.md",
"access": "docs/integration/sgf-fiscal-obligations-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "internal_statements_qa",
"scope": "docs/SGF_FINANCIAL_STATEMENTS_SCOPE.md",
"access": "docs/integration/sgf-statements-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
}
],
"full_product_complete": false,
"product_backlog": [
{
"id": "fiscal_books",
"status": "partial",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Livro/mapa interno QA de uma origem entregue; IVA geral, dedução/regularizações e restantes tratamentos pendentes"
},
{
"id": "irps_inss",
"status": "partial",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Cadastro/regras/processamento interno artificial QA em RH autónomo entregue; operações laborais gerais, cálculo legal IRPS/INSS/modelos e ligação salarial financeira/contabilística pendentes"
},
{
"id": "irpc",
"status": "pending",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "IRPC operacional: ajustamentos, retenções, apuramento"
},
{
"id": "ispc_ice",
"status": "pending",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Motores operacionais ISPC e ICE"
},
{
"id": "official_forms",
"status": "pending",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Modelos oficiais com correspondências e reconciliação de campos"
},
{
"id": "fiscal_calendar",
"status": "partial",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Controlo administrativo de prazo e entrega simulada de uma origem QA entregue; calendário legal, aplicabilidade geral, prazos por fonte/vigência e submissão continuam pendentes"
},
{
"id": "bank_reconciliation",
"status": "partial",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Conferência de duas linhas/extracto artificial QA entregue; integração e reconciliação bancária gerais/reais pendentes"
},
{
"id": "financial_analysis",
"status": "partial",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Dois critérios/indicadores QA com fontes conciliadas entregues; rácios gerais, critérios reais e tendências/séries permanecem pendentes"
}
],
"client_delivery_sources": [
"scripts/receipt-composition-http.php",
"scripts/sgf-selected-assets.php",
"resources/js/statement-download.js"
],
"client_delivery_proof": "docs/SGF_CLIENT_ASSET_DELIVERY.md",
"planned_modules": []
}
@@ -0,0 +1,45 @@
{
"version": "SGF-INTERNAL-STATEMENTS-QA-v1",
"approved": true,
"implemented": true,
"applied": true,
"scope_file": "docs/SGF_FINANCIAL_STATEMENTS_SCOPE.md",
"books": [
"existing8085",
"existing_regression"
],
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_host_rights": [
"general_ledger.statements.prepare",
"general_ledger.statements.review"
],
"grants_per_book": [
{
"user_id": 15,
"permission": "general_ledger.statements.prepare"
},
{
"user_id": 16,
"permission": "general_ledger.statements.review"
}
],
"total_grants_both_books": 4,
"new_postgres_grants": 0,
"new_public_rights": 0,
"new_demo": false,
"real_operations": false,
"source_evidence": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/statements-source-private.json",
"evidence": [
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261110-225950-b75e07c1/statements-access-readonly.json",
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261110-225951-e66026dc/statements-access-readonly.json"
],
"authorization": {
"date": "2026-11-11",
"decision": "Autorizar o bloco QA e os dois direitos apresentados"
},
"delivery": "docs/SGF_FINANCIAL_STATEMENTS_DELIVERY.md"
}
@@ -0,0 +1,41 @@
{
"version": "SGF-STOCK-CATALOGUE-QA-v1",
"approved": true,
"implemented": true,
"scope_file": "docs/SGF_STOCK_CATALOGUE_SCOPE.md",
"books": [
"existing8085",
"existing_regression"
],
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_host_rights": [
"stock.items.prepare",
"stock.items.review"
],
"grants_per_book": [
{
"user_id": 2,
"permission": "stock.items.prepare"
},
{
"user_id": 12,
"permission": "stock.items.review"
}
],
"total_grants_both_books": 4,
"new_postgres_grants": 0,
"new_public_rights": 0,
"new_demo": false,
"real_operations": false,
"evidence": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261110-212018-5bd7aab6/stock-catalogue-access-readonly.json",
"authorization": {
"date": "2026-11-10",
"decision": "Autorizar o cadastro QA e os dois direitos apresentados"
},
"applied": true,
"delivery": "docs/SGF_STOCK_CATALOGUE_DELIVERY.md"
}
@@ -0,0 +1,25 @@
{
"version": "SGF-STOCK-TRANSIT-LOTS-CLOSURE-QA-v1",
"approved": true,
"approval": "Autorização expressa do proprietário em10/11/2026: Autorizar este fecho QA de Stock",
"applied": true,
"scope": {"tenant_id": 1, "company_id": 2, "unit_id": 2},
"installation": "cc50a276c10c",
"new_accounts": false,
"new_database_roles": false,
"real_access": false,
"new_host_rights": [
{"permission": "stock.transfers.receive", "recipient_profile": "workshop_verify", "scope": "unit", "destination_warehouse_ids": [1]},
{"permission": "stock.lots.review", "recipient_profile": "workshop_verify", "scope": "unit", "warehouse_ids": [3], "only_new_qa_lot_article": true}
],
"existing_native_functions_to_grant_only_in_qa": [
{"native_user_id": 6, "functions": ["inventory_lot_read", "inventory_lot_prepare", "inventory_lot_hold"]},
{"native_user_id": 3, "functions": ["inventory_lot_read", "inventory_lot_review", "inventory_lot_release", "inventory_adjust_review"]}
],
"receiving_native_identity": 3,
"receiving_authority": "explicit scoped SGF stock.transfers.receive; not a generic native warehouse grant",
"preserve_existing_select_only_reader": true,
"no_new_native_warehouse_function": true,
"fixture_examples": {"internal_transfer_milli": 1000, "owned_stock_value_unchanged_minor": 7500, "lot_receipt_milli": 4000, "lot_count_milli": 3500, "lot_unit_value_minor": 2000, "lot_adjustment_expense_minor": 1000, "lot_final_value_minor": 7000},
"scope_document": "docs/SGF_STOCK_FINAL_SCOPE.md"
}