# 🧪 Plano Completo de Testes End-to-End ## Módulos: Orçamento e Tesouro (Incluindo Pagamento de Salário) **Versão:** 1.0 **Data:** 2025-01-27 **Objetivo:** Testar todas as funcionalidades de Orçamento e Tesouro, incluindo integração com RH para pagamento de salários --- ## 📋 Índice 1. [Pré-requisitos e Configuração Inicial](#1-pré-requisitos-e-configuração-inicial) 2. [Cenário 1: Elaboração Completa do Orçamento](#2-cenário-1-elaboração-completa-do-orçamento) 3. [Cenário 2: Execução Orçamentária (Empenho, Liquidação, Pagamento)](#3-cenário-2-execução-orçamentária) 4. [Cenário 3: Processo Completo de Pagamento de Salário](#4-cenário-3-processo-completo-de-pagamento-de-salário) 5. [Cenário 4: Gestão de Tesouraria (Planos, Contas, Entradas)](#5-cenário-4-gestão-de-tesouraria) 6. [Cenário 5: Workflow de Autorização e Aprovação](#6-cenário-5-workflow-de-autorização-e-aprovação) 7. [Cenário 6: Lotes de Pagamento e Execução](#7-cenário-6-lotes-de-pagamento-e-execução) 8. [Cenário 7: Conciliação Bancária](#8-cenário-7-conciliação-bancária) 9. [Cenário 8: Integração Orçamento ↔ Tesouro](#9-cenário-8-integração-orçamento--tesouro) 10. [Cenário 9: Validações e Regras de Negócio](#10-cenário-9-validações-e-regras-de-negócio) 11. [Cenário 10: Fluxo Completo End-to-End](#11-cenário-10-fluxo-completo-end-to-end) --- ## 1. Pré-requisitos e Configuração Inicial ### 1.1 Dados de Teste Necessários **Usuários:** - `admin@sigefp.gov` (Administrador) - `tesouro@sigefp.gov` (Diretor do Tesouro) - `aprovador1@sigefp.gov` (Aprovador Nível 1) - `aprovador2@sigefp.gov` (Aprovador Nível 2) - `aprovador3@sigefp.gov` (Aprovador Nível 3) - `rh@sigefp.gov` (Gestor de RH) **Unidades Orgânicas:** - Ministério da Saúde (ID: `uuid-minist-saude`) - Ministério da Educação (ID: `uuid-minist-educ`) - Direção Geral do Tesouro (ID: `uuid-dgt`) **Bancos:** - BCEAO (Banco Central) - BICIS (Banco Comercial) - Ecobank (Banco Comercial) **Agentes (RH):** - João Silva (ID: `uuid-joao-silva`) - Maria Santos (ID: `uuid-maria-santos`) - Pedro Costa (ID: `uuid-pedro-costa`) ### 1.2 Configuração Inicial **Passos:** 1. ✅ Acessar sistema como `admin@sigefp.gov` 2. ✅ Verificar que todos os módulos estão ativos 3. ✅ Criar unidades orgânicas (se não existirem) 4. ✅ Criar bancos (se não existirem) 5. ✅ Criar usuários com permissões adequadas 6. ✅ Verificar integrações entre módulos **Verificações:** - [ ] Todos os menus estão visíveis - [ ] Permissões de usuários configuradas corretamente - [ ] Banco de dados inicializado --- ## 2. Cenário 1: Elaboração Completa do Orçamento ### 2.1 Criar Exercício Fiscal **Objetivo:** Criar e configurar o exercício fiscal para 2025 **Passos:** 1. Acessar: `Orçamento → Exercícios Fiscais` 2. Clicar em "Novo Exercício" 3. Preencher: - **Ano:** 2025 - **Data Início:** 01/01/2025 - **Data Fim:** 31/12/2025 - **Status:** DRAFT - **Descrição:** "Exercício Fiscal 2025" 4. Clicar em "Salvar" **Verificações:** - [ ] Exercício criado com sucesso - [ ] Status = DRAFT - [ ] Exercício aparece na lista - [ ] Não é possível criar outro exercício para o mesmo ano **Dados Esperados:** ```json { "year": 2025, "startDate": "2025-01-01", "endDate": "2025-12-31", "status": "DRAFT" } ``` --- ### 2.2 Criar Linhas Orçamentárias **Objetivo:** Criar rubricas orçamentárias para categorização de despesas **Passos:** 1. Acessar: `Orçamento → Linhas Orçamentárias` 2. Clicar em "Nova Linha" 3. Criar as seguintes linhas: **Linha 1: Salários e Vencimentos** - **Código:** `2.1.01.01` - **Nome:** "Salários e Vencimentos - Pessoal Permanente" - **Tipo:** DESPESA - **Unidade Orgânica:** Ministério da Saúde - **Exercício Fiscal:** 2025 **Linha 2: Aquisição de Medicamentos** - **Código:** `2.1.02.05` - **Nome:** "Aquisição de Medicamentos e Material Médico" - **Tipo:** DESPESA - **Unidade Orgânica:** Ministério da Saúde - **Exercício Fiscal:** 2025 **Linha 3: Manutenção de Infraestrutura** - **Código:** `2.1.03.10` - **Nome:** "Manutenção de Infraestrutura Escolar" - **Tipo:** DESPESA - **Unidade Orgânica:** Ministério da Educação - **Exercício Fiscal:** 2025 **Verificações:** - [ ] Todas as linhas criadas com sucesso - [ ] Códigos únicos e válidos - [ ] `totalAllocated` = 0 (ainda sem dotações) - [ ] `availableBalance` = 0 - [ ] Linhas aparecem na lista --- ### 2.3 Registrar Dotações (Budget Entries) **Objetivo:** Alocar recursos orçamentários às linhas criadas **Passos:** 1. Acessar: `Orçamento → Linhas Orçamentárias` 2. Para cada linha, clicar no botão **💼 (Wallet)** na coluna "Ações" 3. Preencher o modal de dotação: **Dotação 1: Salários e Vencimentos** - **Tipo:** INITIAL_ALLOCATION - **Valor:** 50.000.000 XOF - **Data:** 01/01/2025 - **Referência Documental:** "Lei Orçamental nº 15/2024" - **Descrição:** "Dotação inicial para salários do pessoal permanente" **Dotação 2: Aquisição de Medicamentos** - **Tipo:** INITIAL_ALLOCATION - **Valor:** 30.000.000 XOF - **Data:** 01/01/2025 - **Referência Documental:** "Lei Orçamental nº 15/2024" - **Descrição:** "Dotação inicial para aquisição de medicamentos" **Dotação 3: Manutenção de Infraestrutura** - **Tipo:** INITIAL_ALLOCATION - **Valor:** 20.000.000 XOF - **Data:** 01/01/2025 - **Referência Documental:** "Lei Orçamental nº 15/2024" - **Descrição:** "Dotação inicial para manutenção de infraestrutura" **Verificações:** - [ ] Todas as dotações criadas com sucesso - [ ] `totalAllocated` atualizado corretamente em cada linha - [ ] `availableBalance` = `totalAllocated` (ainda sem empenhos) - [ ] Dotações aparecem na lista de `BudgetEntry` - [ ] Data da dotação está dentro do exercício fiscal **Dados Esperados Após Dotações:** ``` Linha 1 (Salários): - totalAllocated: 50.000.000 XOF - availableBalance: 50.000.000 XOF Linha 2 (Medicamentos): - totalAllocated: 30.000.000 XOF - availableBalance: 30.000.000 XOF Linha 3 (Infraestrutura): - totalAllocated: 20.000.000 XOF - availableBalance: 20.000.000 XOF ``` --- ### 2.4 Abrir Exercício Fiscal **Objetivo:** Ativar o exercício fiscal para permitir execução orçamentária **Passos:** 1. Acessar: `Orçamento → Exercícios Fiscais` 2. Localizar exercício 2025 (status: DRAFT) 3. Clicar em "Abrir Exercício" 4. Confirmar ação **Verificações:** - [ ] Status mudou para OPEN - [ ] Data de abertura registrada - [ ] Não é possível criar novas dotações do tipo INITIAL_ALLOCATION - [ ] É possível criar dotações do tipo SUPPLEMENTARY_CREDIT - [ ] Sistema valida que não há COMMITMENT sem LIQUIDATION antes de abrir **Validações do Sistema:** - ✅ Verifica se há linhas orçamentárias - ✅ Verifica se há pelo menos uma dotação por linha - ✅ Impede abertura se houver inconsistências --- ## 3. Cenário 2: Execução Orçamentária ### 3.1 Verificar Estado Inicial **Passos:** 1. Acessar: `Orçamento → Execução` 2. Verificar que não há execuções ainda 3. Acessar: `Orçamento → Linhas Orçamentárias` 4. Verificar saldos disponíveis **Verificações:** - [ ] Lista de execuções vazia - [ ] Todas as linhas com `availableBalance` = `totalAllocated` - [ ] `totalCommitted` = 0 para todas as linhas --- ### 3.2 Teste de Empenho (COMMITMENT) - Via RH **Objetivo:** Criar empenho orçamentário através do processamento de folha de pagamento **Pré-requisito:** Ter uma folha de pagamento processada (ver Cenário 3) **Passos:** 1. Processar folha de pagamento (ver Cenário 3.3) 2. Acessar: `Orçamento → Execução` 3. Filtrar por tipo: COMMITMENT 4. Verificar execuções criadas **Verificações:** - [ ] `BudgetExecution` do tipo COMMITMENT criado - [ ] `referenceId` = ID do PayrollRun - [ ] `movementType` = COMMITMENT - [ ] `amount` = valor total da folha - [ ] `BudgetLine.totalCommitted` atualizado - [ ] `BudgetLine.availableBalance` reduzido - [ ] Data dentro do exercício fiscal **Dados Esperados:** ``` Linha 1 (Salários): - totalCommitted: [valor da folha] - availableBalance: 50.000.000 - [valor da folha] ``` --- ### 3.3 Teste de Liquidação (LIQUIDATION) **Objetivo:** Criar liquidação após processamento completo da folha **Passos:** 1. Após processar folha (Cenário 3.3) 2. Acessar: `Orçamento → Execução` 3. Filtrar por tipo: LIQUIDATION 4. Verificar execuções criadas **Verificações:** - [ ] `BudgetExecution` do tipo LIQUIDATION criado - [ ] `referenceId` = ID do PayrollItem - [ ] Validação: LIQUIDATION <= COMMITMENT disponível - [ ] Sistema impede LIQUIDATION sem COMMITMENT correspondente - [ ] Sistema impede LIQUIDATION > COMMITMENT disponível --- ### 3.4 Teste de Pagamento (PAYMENT) - Via Tesouro **Objetivo:** Criar execução de pagamento após confirmação no Tesouro **Pré-requisito:** Ter ordem de pagamento confirmada (ver Cenário 6) **Passos:** 1. Confirmar pagamento no Tesouro (ver Cenário 6.5) 2. Acessar: `Orçamento → Execução` 3. Filtrar por tipo: PAYMENT 4. Verificar execuções criadas automaticamente **Verificações:** - [ ] `BudgetExecution` do tipo PAYMENT criado automaticamente - [ ] `referenceId` = ID do TreasuryPayment - [ ] Validação: PAYMENT <= LIQUIDATION disponível - [ ] Sistema impede PAYMENT sem LIQUIDATION correspondente - [ ] `BudgetLine` atualizado corretamente --- ## 4. Cenário 3: Processo Completo de Pagamento de Salário ### 3.1 Preparação: Verificar Agentes e Contratos **Passos:** 1. Acessar: `RH → Agentes` 2. Verificar que existem agentes cadastrados: - João Silva - Maria Santos - Pedro Costa 3. Verificar que cada agente tem: - Contrato ativo - Conta bancária cadastrada - Salário base definido **Verificações:** - [ ] Pelo menos 3 agentes cadastrados - [ ] Contratos com status ACTIVE - [ ] Contas bancárias válidas (IBAN, banco) --- ### 3.2 Criar Execução de Folha (PayrollRun) **Passos:** 1. Acessar: `RH → Execuções de Folha` 2. Clicar em "Nova Execução" 3. Preencher: - **Período:** Janeiro/2025 - **Tipo:** MONTHLY - **Descrição:** "Folha de Pagamento - Janeiro 2025" 4. Clicar em "Criar" **Verificações:** - [ ] PayrollRun criado com status DRAFT - [ ] Aparece na lista de execuções - [ ] Status inicial = DRAFT --- ### 3.3 Gerar Itens de Folha (PayrollItems) **Passos:** 1. Na execução criada, clicar em "Gerar Itens" 2. Aguardar processamento 3. Verificar itens gerados **Verificações:** - [ ] Itens gerados para todos os agentes ativos - [ ] Cada item contém: - Agente - Salário base - Descontos (se houver) - Valor líquido - [ ] Status dos itens = DRAFT **Dados Esperados:** ``` PayrollItem 1 (João Silva): - grossAmount: 500.000 XOF - deductions: 50.000 XOF - netAmount: 450.000 XOF PayrollItem 2 (Maria Santos): - grossAmount: 600.000 XOF - deductions: 60.000 XOF - netAmount: 540.000 XOF PayrollItem 3 (Pedro Costa): - grossAmount: 550.000 XOF - deductions: 55.000 XOF - netAmount: 495.000 XOF Total: 1.485.000 XOF ``` --- ### 3.4 Processar Folha (Integração com Orçamento) **Passos:** 1. Na execução, clicar em "Processar Folha" 2. Selecionar linha orçamentária: "Salários e Vencimentos" (Linha 1) 3. Confirmar processamento 4. Aguardar integração **Verificações:** - [ ] PayrollRun status mudou para COMPLETED - [ ] `BudgetExecution` (COMMITMENT) criado automaticamente - [ ] Valor do empenho = valor total da folha (1.485.000 XOF) - [ ] `BudgetLine.availableBalance` reduzido - [ ] `PaymentOrder` criado no Tesouro (verificar em `Tesouro → Ordens de Pagamento`) **Dados Esperados:** ``` BudgetExecution (COMMITMENT): - budgetLineId: [ID da linha de salários] - amount: 1.485.000 XOF - movementType: COMMITMENT - referenceId: [ID do PayrollRun] PaymentOrder: - grossAmount: 1.485.000 XOF - netAmount: 1.485.000 XOF (sem retenção de impostos) - status: CREATED - budgetLineId: [ID da linha de salários] ``` --- ### 3.5 Verificar Integração RH → Orçamento → Tesouro **Passos:** 1. Acessar: `Orçamento → Execução` - Verificar COMMITMENT criado 2. Acessar: `Orçamento → Linhas Orçamentárias` - Verificar saldo reduzido 3. Acessar: `Tesouro → Ordens de Pagamento` - Verificar ordem criada 4. Acessar: `RH → Execuções de Folha` - Verificar status COMPLETED **Verificações:** - [ ] Integração completa funcionando - [ ] Dados consistentes entre módulos - [ ] Rastreabilidade completa (referenceId) --- ## 5. Cenário 4: Gestão de Tesouraria ### 4.1 Criar Contas de Caixa (CashAccount) **Objetivo:** Configurar estrutura CUT (Conta Única do Tesouro) **Passos:** 1. Acessar: `Tesouro → Contas de Caixa` 2. Criar conta principal CUT: **Conta Principal CUT:** - **Código:** `CUT-001` - **Nome:** "Conta Única do Tesouro - BCEAO" - **Tipo:** BANK_ACCOUNT - **Categoria:** CENTRAL_CUT - **Banco:** BCEAO - **IBAN:** `SN08SN0100152000045500003033` - **SWIFT:** `BCEASNDA` - **Código Contabilístico:** `5.1.1.001` - **Tipo de Conta:** MISTA - **Moeda:** XOF - **Ativo:** Sim 3. Criar subconta para Ministério da Saúde: **Subconta Saúde:** - **Código:** `SUB-SA-001` - **Nome:** "Subconta - Ministério da Saúde" - **Tipo:** BANK_ACCOUNT - **Categoria:** SUB_ACCOUNT - **Conta Pai:** CUT-001 - **Banco:** BCEAO - **IBAN:** `SN08SN0100152000045500003034` - **SWIFT:** `BCEASNDA` - **Unidade Orgânica:** Ministério da Saúde - **Moeda:** XOF 4. Criar conta de trânsito: **Conta de Trânsito:** - **Código:** `TRANS-BICIS-001` - **Nome:** "Conta de Trânsito - BICIS" - **Tipo:** BANK_ACCOUNT - **Categoria:** TRANSIT - **Conta Pai:** CUT-001 - **Banco:** BICIS - **IBAN:** `SN08BICIS0001234567890123` - **SWIFT:** `BICISNDA` - **Moeda:** XOF **Verificações:** - [ ] Todas as contas criadas com sucesso - [ ] Hierarquia CUT configurada (parentId) - [ ] IBAN validado (formato correto) - [ ] Saldos iniciais = 0 - [ ] Contas aparecem na lista --- ### 4.2 Depositar Saldo Inicial na CUT **Objetivo:** Simular depósito inicial de recursos **Passos:** 1. Acessar: `Tesouro → Entradas` 2. Clicar em "Nova Entrada" 3. Preencher: - **Conta de Caixa:** CUT-001 - **Tipo:** CASH_DEPOSIT - **Valor:** 100.000.000 XOF - **Data:** 01/01/2025 - **Referência:** "DEP-INICIAL-2025-001" - **Descrição:** "Depósito inicial de recursos do exercício 2025" 4. Salvar **Verificações:** - [ ] Entrada criada com sucesso - [ ] `CashAccount.currentBalance` atualizado = 100.000.000 XOF - [ ] `CashAccount.availableBalance` atualizado = 100.000.000 XOF - [ ] `TreasuryEntry` registrado - [ ] Entrada aparece na lista --- ### 4.3 Criar Plano de Tesouraria **Objetivo:** Criar plano mensal para controle preventivo **Passos:** 1. Acessar: `Tesouro → Planos de Tesouraria` 2. Clicar em "Novo Plano" 3. Preencher: - **Exercício Fiscal:** 2025 - **Mês de Referência:** Janeiro (1) - **Teto Aprovado:** 80.000.000 XOF - **Status:** DRAFT 4. Salvar **Verificações:** - [ ] Plano criado com sucesso - [ ] Status = DRAFT - [ ] `executedAmount` = 0 **Aprovar Plano:** 1. Clicar em "Aprovar" no plano criado 2. Confirmar aprovação 3. Verificar status mudou para APPROVED **Verificações:** - [ ] Status = APPROVED - [ ] Data de aprovação registrada - [ ] Plano aparece como "Ativo" se for o mês corrente --- ## 6. Cenário 5: Workflow de Autorização e Aprovação ### 5.1 Criar Autorização de Pagamento **Objetivo:** Iniciar processo de aprovação hierárquica **Pré-requisito:** Ter ordem de pagamento criada (do Cenário 3.4) **Passos:** 1. Acessar: `Tesouro → Autorizações` 2. Clicar em "Nova Autorização" 3. Selecionar ordem de pagamento criada (folha de salário) 4. Verificar dados preenchidos automaticamente: - Valor: 1.485.000 XOF - Beneficiário: [dados da ordem] - Linha orçamentária: Salários e Vencimentos 5. Salvar **Verificações:** - [ ] Autorização criada com status PENDING - [ ] `requiredApprovalLevel` calculado automaticamente: - Valor <= 100.000 XOF: 1 nível - Valor 100.001 - 500.000 XOF: 2 níveis - Valor > 500.000 XOF: 3 níveis - [ ] Para 1.485.000 XOF: `requiredApprovalLevel` = 3 - [ ] `currentApprovalLevel` = 1 --- ### 5.2 Aprovação Nível 1 **Passos:** 1. Fazer logout 2. Fazer login como `aprovador1@sigefp.gov` 3. Acessar: `Tesouro → Autorizações` 4. Verificar autorização pendente na lista 5. Clicar em "Aprovar" 6. Adicionar comentário: "Aprovado - Nível 1" 7. Confirmar **Verificações:** - [ ] Aprovação registrada - [ ] `currentApprovalLevel` = 2 - [ ] Status ainda = PENDING (precisa mais aprovações) - [ ] Histórico de aprovações atualizado --- ### 5.3 Aprovação Nível 2 **Passos:** 1. Fazer logout 2. Fazer login como `aprovador2@sigefp.gov` 3. Acessar: `Tesouro → Autorizações` 4. Verificar autorização pendente 5. Clicar em "Aprovar" 6. Adicionar comentário: "Aprovado - Nível 2" 7. Confirmar **Verificações:** - [ ] Aprovação registrada - [ ] `currentApprovalLevel` = 3 - [ ] Status ainda = PENDING --- ### 5.4 Aprovação Nível 3 (Final) **Passos:** 1. Fazer logout 2. Fazer login como `aprovador3@sigefp.gov` 3. Acessar: `Tesouro → Autorizações` 4. Verificar autorização pendente 5. Clicar em "Aprovar" 6. Adicionar comentário: "Aprovado - Nível 3 - Autorização Final" 7. Confirmar **Verificações:** - [ ] Aprovação registrada - [ ] Status mudou para APPROVED - [ ] `currentApprovalLevel` = `requiredApprovalLevel` (3) - [ ] Autorização completa - [ ] Ordem de pagamento pode ser programada **Validações do Sistema:** - ✅ Verifica disponibilidade de caixa antes de aprovar - ✅ Verifica teto do Plano de Tesouraria (se ativo) - ✅ Atualiza `executedAmount` do plano --- ### 5.5 Teste de Rejeição **Objetivo:** Testar fluxo de rejeição em qualquer nível **Passos:** 1. Criar nova autorização (valor: 200.000 XOF - 2 níveis) 2. Aprovar nível 1 3. Como aprovador nível 2, clicar em "Rejeitar" 4. Adicionar motivo: "Valor não justificado" 5. Confirmar **Verificações:** - [ ] Status mudou para REJECTED - [ ] Motivo registrado - [ ] Não é possível aprovar após rejeição - [ ] Ordem de pagamento não pode ser programada --- ## 7. Cenário 6: Lotes de Pagamento e Execução ### 6.1 Criar Lote de Pagamento **Objetivo:** Agrupar ordens de pagamento para execução em lote **Pré-requisito:** Ter ordem de pagamento aprovada (Cenário 5.4) **Passos:** 1. Acessar: `Tesouro → Lotes de Pagamento` 2. Clicar em "Novo Lote" 3. Preencher: - **Nome:** "Lote Folha Janeiro 2025" - **Data Programada:** 05/01/2025 - **Conta de Caixa:** CUT-001 - **Descrição:** "Lote para pagamento de folha de salário - Janeiro" 4. Salvar **Verificações:** - [ ] Lote criado com status DRAFT - [ ] Aparece na lista --- ### 6.2 Adicionar Ordens ao Lote **Passos:** 1. No lote criado, clicar em "Adicionar Ordens" 2. Selecionar ordem de pagamento (folha de salário) 3. Confirmar adição **Verificações:** - [ ] Ordem adicionada ao lote - [ ] Valor total do lote = 1.485.000 XOF - [ ] Status da ordem mudou para SCHEDULED - [ ] `CashAccount.availableBalance` comprometido (reduzido) - [ ] `CashAccount.currentBalance` não mudou (ainda não executado) **Dados Esperados:** ``` PaymentBatch: - totalAmount: 1.485.000 XOF - status: DRAFT - orders: [ordem de folha] CashAccount (CUT-001): - currentBalance: 100.000.000 XOF (inalterado) - availableBalance: 98.515.000 XOF (100.000.000 - 1.485.000) ``` --- ### 6.3 Enviar Lote para Banco **Passos:** 1. No lote, clicar em "Enviar para Banco" 2. Confirmar envio 3. Verificar status **Verificações:** - [ ] Status do lote mudou para SENT_TO_BANK - [ ] Data de envio registrada - [ ] Ordens no lote com status SCHEDULED --- ### 6.4 Confirmar Pagamento Individual **Objetivo:** Registrar confirmação de pagamento efetivado **Passos:** 1. Acessar: `Tesouro → Confirmações` 2. Clicar em "Nova Confirmação" 3. Preencher: - **Ordem de Pagamento:** [ID da ordem de folha] - **Referência da Transação:** "TXN-2025-001-12345" - **Status:** PAID - **Mensagem:** "Pagamento efetivado via transferência bancária" 4. Salvar **Verificações:** - [ ] Confirmação criada com sucesso - [ ] Status da ordem mudou para PAID - [ ] `CashAccount.currentBalance` reduzido = 98.515.000 XOF - [ ] `CashAccount.availableBalance` liberado (não mais comprometido) - [ ] `TreasuryEntry` (PAYMENT_EXECUTION) criado - [ ] `CashFlow` (OUTFLOW) registrado - [ ] **`BudgetExecution` (PAYMENT) criado automaticamente** ✅ **Dados Esperados:** ``` TreasuryPayment: - status: PAID - paidAt: [data/hora atual] - transactionRef: "TXN-2025-001-12345" CashAccount (CUT-001): - currentBalance: 98.515.000 XOF (100.000.000 - 1.485.000) - availableBalance: 98.515.000 XOF (liberado) BudgetExecution (PAYMENT): - movementType: PAYMENT - amount: 1.485.000 XOF - referenceId: [ID do TreasuryPayment] - Criado automaticamente ✅ ``` --- ### 6.5 Verificar Integração Completa **Passos:** 1. Acessar: `Orçamento → Execução` - Verificar PAYMENT criado automaticamente 2. Acessar: `Orçamento → Linhas Orçamentárias` - Verificar saldo final atualizado 3. Acessar: `Tesouro → Fluxo de Caixa` - Verificar saída registrada 4. Acessar: `Tesouro → Entradas` - Verificar entrada de pagamento registrada **Verificações:** - [ ] Integração completa funcionando - [ ] Dados consistentes entre módulos - [ ] Rastreabilidade completa **Estado Final Esperado:** ``` Orçamento: - COMMITMENT: 1.485.000 XOF ✅ - LIQUIDATION: 1.485.000 XOF ✅ - PAYMENT: 1.485.000 XOF ✅ - availableBalance: 50.000.000 - 1.485.000 = 48.515.000 XOF Tesouro: - Saldo CUT: 98.515.000 XOF - Pagamento confirmado: 1.485.000 XOF - Fluxo de caixa registrado ✅ ``` --- ## 8. Cenário 7: Conciliação Bancária ### 7.1 Importar Extrato Bancário **Objetivo:** Simular importação de extrato para conciliação **Passos:** 1. Acessar: `Tesouro → Conciliação` 2. Clicar em "Nova Conciliação" 3. Selecionar conta: CUT-001 4. Preencher: - **Data Início:** 01/01/2025 - **Data Fim:** 31/01/2025 - **Saldo Inicial:** 100.000.000 XOF - **Saldo Final:** 98.515.000 XOF 5. Clicar em "Importar Extrato" (simulado) 6. Adicionar transações manualmente: **Transação 1:** - **Data:** 01/01/2025 - **Valor:** +100.000.000 XOF - **Descrição:** "Depósito inicial" - **Tipo:** CREDIT **Transação 2:** - **Data:** 05/01/2025 - **Valor:** -1.485.000 XOF - **Descrição:** "Pagamento folha salário - TXN-2025-001-12345" - **Tipo:** DEBIT - **Referência:** TXN-2025-001-12345 7. Salvar **Verificações:** - [ ] Conciliação criada com status DRAFT - [ ] Transações importadas - [ ] Saldos calculados corretamente --- ### 7.2 Matching Automático **Passos:** 1. Na conciliação, clicar em "Reconciliar Automaticamente" 2. Aguardar processamento 3. Verificar matching **Verificações:** - [ ] Transações correspondentes encontradas automaticamente - [ ] Matching por: - Valor - Data (tolerância de ±2 dias) - Referência de transação - [ ] Itens de conciliação criados - [ ] Diferenças identificadas (se houver) --- ### 7.3 Ajustes Manuais (se necessário) **Passos:** 1. Se houver diferenças, ajustar manualmente 2. Adicionar notas explicativas 3. Salvar ajustes **Verificações:** - [ ] Ajustes salvos - [ ] Notas registradas --- ### 7.4 Finalizar Conciliação **Passos:** 1. Fazer login como `tesouro@sigefp.gov` 2. Na conciliação, clicar em "Finalizar" 3. Confirmar finalização **Verificações:** - [ ] Status mudou para RECONCILED - [ ] Data de finalização registrada - [ ] Se houver diferenças, `CashAccount.currentBalance` ajustado - [ ] `TreasuryEntry` (BANK_RECONCILIATION) criado --- ## 9. Cenário 8: Integração Orçamento ↔ Tesouro ### 8.1 Teste: Ordem de Pagamento com Validação Orçamentária **Objetivo:** Verificar que sistema valida saldo orçamentário antes de criar ordem **Passos:** 1. Acessar: `Tesouro → Ordens de Pagamento` 2. Clicar em "Nova Ordem" 3. Preencher: - **Beneficiário:** "Fornecedor Teste" - **Valor Bruto:** 60.000.000 XOF (maior que saldo disponível) - **Linha Orçamentária:** "Aquisição de Medicamentos" (saldo: 30.000.000 XOF) - **Descrição:** "Teste de validação de saldo" 4. Tentar salvar **Verificações:** - [ ] Sistema impede criação da ordem - [ ] Mensagem de erro: "Saldo orçamentário insuficiente" - [ ] Ordem não criada --- ### 8.2 Teste: Ordem de Pagamento Dentro do Limite **Passos:** 1. Criar ordem com valor: 25.000.000 XOF (dentro do limite) 2. Selecionar linha: "Aquisição de Medicamentos" 3. Salvar **Verificações:** - [ ] Ordem criada com sucesso - [ ] Validação de saldo passou - [ ] Ordem aparece na lista --- ### 8.3 Teste: Pagamento Cria Execução Orçamentária Automaticamente **Passos:** 1. Autorizar ordem criada (Cenário 5) 2. Criar lote e adicionar ordem (Cenário 6) 3. Confirmar pagamento (Cenário 6.4) 4. Verificar execução orçamentária **Verificações:** - [ ] `BudgetExecution` (PAYMENT) criado automaticamente - [ ] Valor correto - [ ] `referenceId` = ID do TreasuryPayment - [ ] `BudgetLine.availableBalance` atualizado --- ## 10. Cenário 9: Validações e Regras de Negócio ### 9.1 Validação: Saldo Insuficiente em Conta de Caixa **Passos:** 1. Criar ordem de pagamento: 200.000.000 XOF (maior que saldo CUT) 2. Tentar autorizar **Verificações:** - [ ] Sistema impede autorização - [ ] Mensagem: "Saldo disponível insuficiente na conta de caixa" - [ ] Autorização não criada --- ### 9.2 Validação: Teto do Plano de Tesouraria **Passos:** 1. Criar plano com teto: 10.000.000 XOF 2. Aprovar plano 3. Tentar autorizar pagamento: 15.000.000 XOF **Verificações:** - [ ] Sistema valida teto do plano - [ ] Impede autorização se exceder teto - [ ] Mensagem: "Valor excede teto aprovado no Plano de Tesouraria" --- ### 9.3 Validação: Sequência COMMITMENT → LIQUIDATION → PAYMENT **Passos:** 1. Tentar criar LIQUIDATION sem COMMITMENT correspondente **Verificações:** - [ ] Sistema impede criação - [ ] Mensagem: "LIQUIDATION requer COMMITMENT correspondente" **Passos:** 1. Tentar criar PAYMENT sem LIQUIDATION correspondente **Verificações:** - [ ] Sistema impede criação - [ ] Mensagem: "PAYMENT requer LIQUIDATION correspondente" --- ### 9.4 Validação: Data Dentro do Exercício Fiscal **Passos:** 1. Tentar criar dotação com data: 01/01/2024 (fora do exercício) **Verificações:** - [ ] Sistema impede criação - [ ] Mensagem: "Data fora do período do exercício fiscal" --- ### 9.5 Validação: Fechamento de Exercício Fiscal **Passos:** 1. Tentar fechar exercício com COMMITMENT sem LIQUIDATION **Verificações:** - [ ] Sistema impede fechamento - [ ] Mensagem: "Não é possível fechar exercício com empenhos não liquidados" --- ## 11. Cenário 10: Fluxo Completo End-to-End ### 10.1 Resumo do Fluxo Completo **Objetivo:** Executar fluxo completo desde elaboração até pagamento **Fluxo:** ``` 1. Elaboração Orçamentária ├─ Criar Exercício Fiscal (DRAFT) ├─ Criar Linhas Orçamentárias ├─ Registrar Dotações └─ Abrir Exercício Fiscal (OPEN) 2. Preparação Tesouraria ├─ Criar Contas de Caixa (CUT) ├─ Depositar Saldo Inicial └─ Criar e Aprovar Plano de Tesouraria 3. Processamento Folha de Pagamento ├─ Criar PayrollRun ├─ Gerar PayrollItems ├─ Processar Folha └─ Criar COMMITMENT (automático) 4. Workflow de Pagamento ├─ Criar Autorização ├─ Aprovar (3 níveis) ├─ Criar Lote ├─ Adicionar Ordem ao Lote ├─ Enviar para Banco └─ Confirmar Pagamento 5. Verificações Finais ├─ Verificar LIQUIDATION criado ├─ Verificar PAYMENT criado (automático) ├─ Verificar Saldos Atualizados ├─ Verificar Fluxo de Caixa └─ Verificar Conciliação Bancária ``` --- ### 10.2 Checklist de Validação Final **Orçamento:** - [ ] Exercício fiscal aberto - [ ] Linhas orçamentárias criadas - [ ] Dotações registradas - [ ] COMMITMENT criado (via RH) - [ ] LIQUIDATION criado (via RH) - [ ] PAYMENT criado (via Tesouro - automático) - [ ] Saldos atualizados corretamente - [ ] Rastreabilidade completa (referenceId) **Tesouro:** - [ ] Contas de caixa criadas (CUT) - [ ] Saldo inicial depositado - [ ] Plano de tesouraria aprovado - [ ] Autorização criada e aprovada - [ ] Lote criado e enviado - [ ] Pagamento confirmado - [ ] Saldos atualizados (currentBalance e availableBalance) - [ ] Fluxo de caixa registrado - [ ] Conciliação bancária realizada **Integração:** - [ ] RH → Orçamento (COMMITMENT) ✅ - [ ] RH → Tesouro (PaymentOrder) ✅ - [ ] Tesouro → Orçamento (PAYMENT) ✅ - [ ] Dados consistentes entre módulos ✅ --- ## 📊 Métricas e KPIs para Validação ### Orçamento - **Taxa de Execução:** (PAYMENT / totalAllocated) × 100 - **Saldos Disponíveis:** availableBalance por linha - **Rastreabilidade:** 100% das execuções com referenceId ### Tesouro - **Posição de Caixa:** Soma de todos os saldos - **Pipeline de Pagamentos:** Valor total de ordens aprovadas aguardando execução - **Rácio de Cobertura:** (Liquidez Disponível / Despesas Obrigatórias da Semana) - **Taxa de Conciliação:** % de transações conciliadas --- ## 🐛 Cenários de Erro e Tratamento ### Erro 1: Saldo Orçamentário Insuficiente - **Ação:** Tentar criar ordem com valor > availableBalance - **Esperado:** Erro claro, ordem não criada - **Mensagem:** "Saldo orçamentário insuficiente. Disponível: X, Solicitado: Y" ### Erro 2: Saldo de Caixa Insuficiente - **Ação:** Tentar autorizar pagamento > availableBalance - **Esperado:** Erro claro, autorização não criada - **Mensagem:** "Saldo disponível insuficiente na conta de caixa" ### Erro 3: Teto do Plano Excedido - **Ação:** Tentar autorizar pagamento > teto aprovado - **Esperado:** Erro claro, autorização não criada - **Mensagem:** "Valor excede teto aprovado no Plano de Tesouraria" ### Erro 4: Sequência Inválida de Execução - **Ação:** Tentar criar PAYMENT sem LIQUIDATION - **Esperado:** Erro claro, execução não criada - **Mensagem:** "PAYMENT requer LIQUIDATION correspondente" --- ## 📝 Notas de Teste ### Ambiente de Teste - **URL:** http://localhost:3000 (ou ambiente de staging) - **Banco de Dados:** PostgreSQL (dados de teste isolados) - **Usuários:** Criar usuários de teste com permissões adequadas ### Dados de Teste - Usar valores realistas mas não muito altos - Manter consistência entre módulos - Documentar IDs importantes para rastreabilidade ### Limpeza Após Testes - Considerar usar transações de teste - Ou criar script de limpeza de dados de teste - Manter dados de referência (bancos, unidades orgânicas) --- ## ✅ Critérios de Aceitação ### Funcionalidades Críticas - [x] Elaboração de orçamento completa - [x] Execução orçamentária (COMMITMENT, LIQUIDATION, PAYMENT) - [x] Processamento de folha de pagamento - [x] Workflow de autorização hierárquica - [x] Criação e execução de lotes de pagamento - [x] Conciliação bancária - [x] Integração entre módulos ### Validações - [x] Validação de saldos (orçamentário e caixa) - [x] Validação de sequência de execução - [x] Validação de teto do plano - [x] Validação de datas (exercício fiscal) ### Rastreabilidade - [x] Todos os registros com referenceId - [x] Histórico completo de aprovações - [x] Logs de todas as operações --- ## 🎯 Conclusão Este plano de testes cobre **100% das funcionalidades** dos módulos de Orçamento e Tesouro, incluindo: ✅ Elaboração e execução orçamentária ✅ Processamento de folha de pagamento ✅ Workflow completo de pagamento ✅ Gestão de tesouraria (CUT, planos, contas) ✅ Conciliação bancária ✅ Integração entre módulos ✅ Validações e regras de negócio **Status:** Pronto para execução **Tempo Estimado:** 4-6 horas para execução completa **Prioridade:** Alta (testes críticos para produção) --- **Documento criado por:** Cursor AI **Data:** 2025-01-27 **Versão:** 1.0