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
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
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