REGRAS DE NEGÓCIO DO SISTEMA (WINSHOP)
Documento: 03_regras_de_negocio.md
Escopo de análise: varredura de código em *.PRG, *.SCT e rotinas ligadas a venda, fiscal, financeiro, permissões e validações.
1) Regras de venda
| ID | Regra de negócio | Evidência no código |
|---|---|---|
| VEN-001 | A venda com emissão fiscal eletrônica exige CFOP configurado nos parâmetros da empresa. | vendas2025.SCT (mensagem “Informe o CFOP…”) |
| VEN-002 | Empresa do Simples Nacional deve ter CSOSN de NFC-e configurado para emissão. | vendas2025.SCT (empNFSimples + empNFCSOSN) |
| VEN-003 | Quando configuração de cópia de demonstração está ativa, o sistema alerta se o cadastro de produtos excede 30 itens. | vendas2025.SCT, vendas2018a.SCT |
| VEN-004 | A opção de NFC-e no front de venda é habilitada apenas quando a estação permite NFC-e e a DLL/configuração está disponível. | vendas2025.SCT, vendas2018a.SCT (estNFc, _dllNFCe) |
| VEN-005 | Se existir marcador de bloqueio de ECF (ECF.NAO), a emissão fiscal eletrônica no caixa é desativada. | vendas2025.SCT, vendas2018a.SCT |
| VEN-006 | Não é permitido finalizar NFC-e quando houver item com NCM inválido/ausente. | vendas2018a.SCT (mensagem de erro NCM) |
| VEN-007 | Produto com CFOP especial e CSOSN inválido bloqueia avanço da operação. | vendas2018a.SCT (mensagem “CFOP especial e CSOSN inválido”) |
| VEN-008 | Valor de item não pode ultrapassar máximo permitido no cadastro do produto. | vendas2018a.SCT (mensagem “Valor ultrapassa o máximo permitido…”) |
| VEN-009 | O sistema alerta venda abaixo do custo e exige confirmação do operador. | vendas2018a.SCT (mensagem “preço abaixo do custo”) |
| VEN-010 | Saldo insuficiente em condições de pagamento bloqueia a continuidade da operação. | vendas2018a.SCT |
| VEN-011 | Fluxo de desconto em dinheiro não aceita valor maior que o saldo da compra. | fechavenda_desc_din.SCT |
| VEN-012 | Desconto acima do limite configurado exige autorização de gerência (Alt+A/formulário de autorização). | fechavenda_desc_din.SCT, vendas2018a.SCT, autorizadesconto* |
| VEN-013 | Se a configuração exigir senha de gerência para desconto, o form de autorização é obrigatório. | vendas2018a.SCT (cfg.senhaGer) |
| VEN-014 | Em reimpressão, se a imagem/arquivo da venda não for encontrado, o sistema bloqueia a ação e informa erro. | vendas2018a.SCT, naofiscal.prg |
| VEN-015 | Emissão de cupom/reescolha de impressão depende do tipo de estação (DAV/estDAV) e da configuração de impressão. | naofiscal.prg, vendas2018a.SCT |
| VEN-016 | Para operações TEF no caixa, o sistema limpa e recria arquivos temporários de rede TEF antes de processar. | vendas2018a.SCT, sistef.prg, urano.prg |
| VEN-017 | Se não houver bloco de numeração de CV para o vendedor, a venda é bloqueada. | vendas2018a.SCT |
| VEN-018 | Se o número da CV estiver fora da sequência esperada, a venda é bloqueada. | vendas2018a.SCT |
| VEN-019 | Identificação de cliente pode ser obrigatória dependendo da configuração fiscal e tipo de documento. | daruma.prg, urano.prg, PRGS/dllnfc.prg |
| VEN-020 | Créditos de devolução são gerados e registrados quando há saldo de crédito, com numeração própria. | daruma.prg, urano.prg, naofiscal.prg |
2) Regras fiscais (NFe/NFCe/MDF-e/IBPT)
| ID | Regra de negócio | Evidência no código |
|---|---|---|
| FIS-001 | Emissão fiscal depende de arquivos de configuração (CONFIG.NFE, CONFIG-ACB.NFC, EMPNFE.MEM). | inicio.prg, PRGS/dllnfc.prg |
| FIS-002 | Sem configuração de NFC-e da estação, o sistema bloqueia emissão e orienta caminho de configuração. | inicio.prg |
| FIS-003 | Sistema cria automaticamente pasta de XML de NFC-e quando inexistente. | inicio.prg (XMLNFCE) |
| FIS-004 | O ACBrMonitor.INI é validado; configuração inválida de PATHNFE gera erro e bloqueio operacional fiscal. | inicio.prg |
| FIS-005 | Configuração de e-mail no ACBr é validada (e-mail, usuário, senha, porta) para rotinas de envio fiscal. | inicio.prg, rel_comissao_email.SCT |
| FIS-006 | NFC-e passa por ciclo: criar XML, assinar, validar e enviar; falha em qualquer etapa bloqueia continuidade. | PRGS/dllnfc.prg |
| FIS-007 | XML inválido (schema/padrão/tag obrigatória) impede autorização e retorna erro específico. | PRGS/dllnfc.prg (ERRONFC) |
| FIS-008 | NFC-e duplicada na base SEFAZ é tratada como regra específica de rejeição/ajuste de número. | PRGS/dllnfc.prg (tratamento de duplicidade) |
| FIS-009 | Em contingência/offline, o sistema tenta reaproveitar XML local e reenviar quando o serviço retorna. | PRGS/dllnfc.prg, mdf_controle.SCT |
| FIS-010 | Consulta de status SEFAZ é executada com timeout; sem retorno no prazo gera erro de comunicação. | PRGS/dllnfc.prg, inicio.prg, barras_elgin*.prg |
| FIS-011 | Cancelamento/gestão de MDF-e exige consulta/autorização de webservice e leitura de retorno estruturado. | mdf_controle.SCT |
| FIS-012 | Cancelamento de MDF-e exige motivo mínimo de 15 caracteres. | mdf_controle.SCT |
| FIS-013 | Certificado digital próximo do vencimento dispara alerta preventivo para renovação. | mdf_controle.SCT (VALNFE.CER) |
| FIS-014 | Regra tributária de Simples (CRT=1) segue CSOSN e sem destaque de ICMS em cenários configurados. | PRGS/dllnfc.prg |
| FIS-015 | CFOP e CSOSN podem ser herdados da empresa ou do produto, conforme preenchimento por item. | PRGS/dllnfc.prg, vendas2018a.SCT |
| FIS-016 | Valor aproximado de tributos (IBPT) é calculado e impresso em documentos fiscais quando habilitado. | urano.prg, sweda.prg, bematechmfd.prg |
| FIS-017 | SPED fiscal é gerado por rotinas específicas de impressora/framework fiscal. | daruma.prg, menus/relatórios |
| FIS-018 | Quando XML autorizado não é localizado em pasta esperada, o sistema registra falha e impede ação fiscal seguinte. | mdf_controle.SCT |
3) Regras de estoque
| ID | Regra de negócio | Evidência no código |
|---|---|---|
| EST-001 | Produto com NCM ausente/inválido é marcado como erro e impede emissão fiscal eletrônica. | vendas2018a.SCT |
| EST-002 | Ajuste de saldo é validado em rotinas de venda para evitar fechamento com saldo inconsistente. | vendas2018a.SCT, fechavenda_desc_din.SCT |
| EST-003 | Limites de preço e custo do produto são usados como validação de consistência comercial. | vendas2018a.SCT |
| EST-004 | Há rotina de identificação de produtos sem estoque/zerados/negativos para controle gerencial. | MENUSHOP.MPR + formulários/relatórios relacionados |
| EST-005 | Estrutura prevê transferências de estoque entre lojas e sincronização de preços/cadastros entre filiais. | MENUSHOP.MPR (Transfere estoque), vendas2025.SCT (sync) |
| EST-006 | Ferramentas de manutenção de estoque (ajuste, zerar, envio entre lojas) são operações restritas e explícitas. | MENUSHOP.MPR (mensagens/ferramentas) |
| EST-007 | Baixa para consumo é tratada como operação específica de estoque/saída interna. | MENUSHOP.MPR (Serviços > Baixa para Consumo) |
4) Regras financeiras
| ID | Regra de negócio | Evidência no código |
|---|---|---|
| FIN-001 | Desconto financeiro em fechamento tem limite percentual e pode exigir autorização de gerência. | fechavenda_desc_din.SCT |
| FIN-002 | Pagamentos por cartão/cheque/crédito seguem fluxo de tipo de venda e integração TEF. | naofiscal.prg, daruma.prg, urano.prg, sistef.prg |
| FIN-003 | Transação TEF não confirmada gera aviso, possibilidade de reimpressão e necessidade de confirmação/cancelamento. | sistef.prg, urano.prg, elgin.prg |
| FIN-004 | Se gerenciador TEF estiver inativo, operação é bloqueada com mensagem ao operador. | sistef.prg |
| FIN-005 | Emissão de boletos/remessa depende de ACBR ativo e de títulos elegíveis no dia. | PRGS/boletos.prg, inicio.prg |
| FIN-006 | Ausência de boletos do dia impede geração de arquivo de remessa. | PRGS/boletos.prg |
| FIN-007 | Contas recebidas por período/cliente exigem intervalo de datas válido. | rel_recebidas_data_baixa.SCT |
| FIN-008 | Fechamento de convênio valida existência de associado antes de operar faturamento/baixa. | convfechafatura.SCT |
| FIN-009 | Crédito de devolução é persistido em tabela/arquivo de controle com novo número de crédito. | daruma.prg, urano.prg, naofiscal.prg |
| FIN-010 | Fluxos de comissão por e-mail exigem configuração de e-mail do administrador e validação de retorno do webservice. | rel_comissao_email.SCT |
5) Regras de permissões
| ID | Regra de negócio | Evidência no código |
|---|---|---|
| PER-001 | Acesso a módulos/itens de menu é controlado por flags de permissão (acLoja, acCad, acLJxx, acCDxx, etc.). | MENUS/MENUSHOP.MPR, MENUSHOPLIGHT2.MPR |
| PER-002 | Usuário sem permissão para o sistema/módulo é bloqueado no login. | login2018a.SCT |
| PER-003 | Senha inválida bloqueia autenticação e mantém usuário fora da aplicação. | login2018a.SCT |
| PER-004 | Em modo manutenção do servidor, novos acessos de usuário são barrados. | login2018a.SCT |
| PER-005 | Licença pode ser exclusiva para servidor ou exclusiva para cliente/rede, com bloqueio por papel incorreto. | inicio.prg |
| PER-006 | Operações sensíveis (ex.: desconto acima do limite) exigem credencial/autorização de usuário com nível superior. | fechavenda_desc_din.SCT, vendas2018a.SCT |
| PER-007 | Alguns recursos fiscais e de suporte são restritos a usuário específico/técnico (ex.: reenvio offline). | MENUSHOPLIGHT2.MPR (skip por usuário), PRGS/* |
| PER-008 | Troca/validação de senha é obrigatória em fluxo de alteração de senha de usuário. | login2018a.SCT |
| PER-009 | Licença expirada exige senha técnica/urgência para liberação temporária. | licenca_expirada.SCT |
6) Bloqueios e validações operacionais
| ID | Regra de negócio | Evidência no código |
|---|---|---|
| VAL-001 | Falta de arquivos essenciais (ex.: FABRIC.DRV) impede inicialização do sistema. | inicio.prg |
| VAL-002 | Falta de dados obrigatórios da empresa (CNPJ e cadastro) bloqueia operação fiscal/comercial. | inicio.prg |
| VAL-003 | Falha de conexão com banco de dados interrompe abertura normal do sistema. | inicio.prg |
| VAL-004 | Estação não cadastrada bloqueia uso, até regularização do cadastro da estação. | inicio.prg, estacao_de_trabalho2.SCT |
| VAL-005 | Alteração indevida da data do sistema gera encerramento forçado da aplicação (proteção operacional). | inicio.prg |
| VAL-006 | Configuração inválida de impressora/porta gera bloqueio de testes e avisos obrigatórios ao usuário. | estacao_de_trabalho2.SCT, verificaimpressora.SCT |
| VAL-007 | Ausência de impressora no Windows bloqueia operações de impressão dependentes. | estacao_de_trabalho2.SCT |
| VAL-008 | Erros de comunicação com impressora fiscal/ECF (sem papel, redução Z pendente, cupom aberto etc.) bloqueiam etapa fiscal correspondente. | daruma.prg, urano.prg, elgin.prg, sweda.prg |
| VAL-009 | Falha de comunicação TEF pode exigir repetição/reimpressão; após tentativas, sistema oferece cancelamento/continuidade controlada. | urano.prg, elgin.prg, sistef.prg |
| VAL-010 | Cancelamentos fiscais são protegidos por confirmação explícita do operador. | mdf_controle.SCT, vendas/reimpressão |
| VAL-011 | Rotinas de webservice têm timeout; sem retorno, o sistema marca falha de envio/consulta. | inicio.prg, PRGS/dllnfc.prg, mdf_controle.SCT |
| VAL-012 | Regras de arquivo de retorno (RESPNFE.TXT) são obrigatórias para concluir envio e atualizar status interno. | PRGS/dllnfc.prg, mdf_controle.SCT, inicio.prg |
| VAL-013 | Sem ACBR ativo, operações fiscais e algumas integrações financeiras (boletos) são bloqueadas. | inicio.prg, PRGS/boletos.prg, mdf_controle.SCT |
| VAL-014 | Mensagens de erro são usadas como mecanismo de bloqueio funcional (sem confirmação não prossegue). | múltiplos (*.PRG, *.SCT) |
Observações de cobertura
- As regras acima foram extraídas diretamente de condicionais, validações, flags de configuração e mensagens do código legado.
- O sistema possui variações por impressora fiscal/framework (
Daruma,Elgin,Bematech,Sweda) que implementam a mesma regra de negócio com detalhes técnicos distintos. - Menus de operação também impõem regra de acesso por permissão/flag, complementando as validações de runtime.