Regras de Negócio - ecosif-masterdata
Regras Gerais
1. Empresas
RN-001: CNPJ Único
Regra : Cada empresa deve ter um CNPJ único no sistema
Aplicação : Validar antes de criar/atualizar empresa
Código de Erro : 409 Conflict
RN-002: Validação de CNPJ
Regra : CNPJ deve ser válido (formato e dígitos verificadores)
Aplicação : Validar formato e dígitos antes de persistir
2. Filiais
RN-003: Código de Filial Único por Empresa
Regra : Cada filial deve ter um código único dentro da mesma empresa
Aplicação : Validar antes de criar filial
Código de Erro : 409 Conflict
RN-004: Empresa Obrigatória
Regra : Filial deve pertencer a uma empresa existente
Aplicação : Validar existência da empresa antes de criar filial
RN-005: Criação Automática de Dependências
Regra : Ao criar filial, criar automaticamente:
CompanyOptions (ct_controle)
QuotaCalculationConfiguration (se aplicável)
FundSettings (se aplicável)
Aplicação : Implementado no BranchController
RN-005b: Bootstrap na criação de empresa (createBranchAndOptions)
Regra : Ao criar empresa com filial/opções automáticas, o Mês/Ano Abertura (initialYearMonth, MM/yyyy) define:
Mes/Ano Base = abertura
Mes/Ano Atual (competência / período do sistema) = abertura
Mes/Ano Balanço = 12/{ano corrente}
Mes/Ano Encerramento = 12/{ano corrente}
Calendários (ct_calendario) abertos para cada mês de abertura até encerramento (inclusive)
Validação : abertura obrigatória quando o flag está ativo; formato MM/yyyy; abertura não pode ser posterior a 12 do ano corrente
Aplicação : CompanyController.saveCompany + CalendarService.ensureOpenCalendarsBetween
3. Plano de Contas
RN-006: Hierarquia Obrigatória
Regra : Conta filha deve ter conta pai existente
Aplicação : Validar existência da conta pai antes de criar filha
Código de Erro : 406 Not Acceptable
RN-007: Código Contábil Único por Plano
Regra : Cada código contábil deve ser único dentro do mesmo plano
Aplicação : Validar antes de criar conta
Código de Erro : 406 Not Acceptable
RN-008: Conta Pai não pode ter Filhos
Regra : Se conta pai tiver filhos, não pode ser alterada para ter mais filhos
Aplicação : Validar antes de adicionar filhos a conta pai existente
Parâmetro : confirmed=true para forçar
RN-009: Nível Hierárquico
Regra : Nível da conta = número de níveis no código contábil (ex: "1.2.3" = nível 3)
Aplicação : Calcular automaticamente a partir do código
RN-010: Código Reduzido
Regra : Código reduzido deve ter pelo menos 6 dígitos
Aplicação : Preencher com zeros à esquerda se necessário
4. Documentos
RN-011: Limite de Documentos por Lote
Regra : Número de documentos não pode exceder informedDocuments do lote
Aplicação : Validar antes de criar documento
Código de Erro : 406 Not Acceptable
RN-012: Validação de Dia no Calendário
Regra : Dia do documento deve estar disponível no calendário
Aplicação : Validar antes de criar documento
Código de Erro : 417 Expectation Failed
RN-013: Dia de Referência do Lote
Regra : Se lote não tiver referenceDay, usar dia do primeiro documento criado
Aplicação : Atualizar lote quando primeiro documento for criado
5. Lançamentos
RN-014: Validação de Conta
Regra : Conta do lançamento deve existir no plano de contas
Aplicação : Validar antes de criar lançamento
RN-015: Validação de Histórico
Regra : Histórico deve existir (se não for livre)
Aplicação : Validar antes de criar lançamento
RN-016: Partidas Dobradas
Regra : Soma de débitos deve igualar soma de créditos no documento
Aplicação : Validar antes de fechar documento
5.1 Encerramento de contas de resultado
RN-016A: Lote único de Encerramento
Regra : A rotina de encerramento definitivo cria um único lote por empresa/filial com batchType = "2" (Encerramento) e um documento , com N lançamentos lógicos (um por conta de resultado zerada).
Aplicação : ClosureControllerold.encerramentoDefinitivo — naturezas 2 / 3 / 6 / 7.
Refs : MD-ENCERRAMENTO / Issues #34–#38
RN-016B: Contrapartida D/C no mesmo número
Regra : Cada conta de resultado gera duas linhas físicas (D e C) com o mesmo número de lançamento e contrapartida cruzada; histórico igual nos dois lados; conta partida conforme config da rotina.
Aplicação : Tela de lançamentos monta o par D+C a partir do mesmo código entry.
RN-016C: Consolidação manual após encerramento
Regra : O encerramento não consolida automaticamente; a mensagem de sucesso orienta o usuário a consolidar o dia/mês.
Aplicação : ClosureResultDTO.message + feedback no formulário Angular de encerramento.
RN-016D: Bloqueio de reexecução
Regra : Não permite novo encerramento se o período já estiver encerrado.
Aplicação : Validação na rotina de encerramento definitivo.
6. Calendários
RN-017: Período Único
Regra : Cada empresa/filial/mês/ano deve ter um único registro de calendário
Aplicação : Validar antes de criar/atualizar
RN-018: Validação de Abertura de Mês
Regra : Mês anterior deve estar fechado antes de abrir novo mês
Aplicação : Validar antes de abrir mês
RN-019: Validação de Fechamento
Regra : Não pode fechar mês com lançamentos pendentes
Aplicação : Validar antes de fechar mês
7. Consolidação
RN-020: Consolidação Assíncrona
Regra : Consolidação deve ser processada de forma assíncrona
Aplicação : Retornar resposta imediata e processar em background
RN-021: Período Fechado
Regra : Consolidação só pode ser executada para períodos fechados
Aplicação : Validar antes de iniciar consolidação
8. Multi-Tenancy
RN-022: Isolamento por Empresa/Filial
Regra : Dados devem ser isolados por empresa e filial
Aplicação : Incluir filtros company e branch em consultas
RN-023: Acesso por Contexto
Regra : Usuário só pode acessar empresas/filiais às quais tem permissão
Aplicação : Validar permissões através de UserCompanyBranchService
Validações Específicas
Empresas
CNPJ obrigatório e válido
Nome obrigatório
CEP opcional, mas deve ser válido se fornecido
Filiais
Empresa obrigatória e deve existir
Código de filial obrigatório e único na empresa
Nome obrigatório
IBGE Code padrão: "000000" se não fornecido
Plano de Contas
Plano obrigatório
Código contábil obrigatório e único no plano
Descrição obrigatória
Conta pai deve existir (se não for conta raiz)
Tipo padrão: "01"
Nível calculado automaticamente
Documentos
Lote obrigatório e deve existir
Número do documento obrigatório
Dia deve estar disponível no calendário (se fornecido)
Limite de documentos por lote
Lançamentos
Documento obrigatório e deve existir
Conta obrigatória e deve existir no plano de contas
Histórico obrigatório
Valor (débito ou crédito) obrigatório
Partidas dobradas no documento
Observações Importantes
Transações : Operações críticas são transacionais
Validações : Validações ocorrem em múltiplas camadas (DTO, Service, Database)
Permissões : Alguns endpoints verificam permissões específicas
Multi-tenancy : Sempre considerar empresa e filial nas validações
Voltar para o topo