lucas_rc 0 Denunciar post Postado Setembro 19, 2008 Bom Dia pessoal... Tenho um sistema de controle de estoque, trabalho nele com uma rotina e emisção de nota fiscal, porém não acho muito segura, pq pode acontecer algum erro durante o processo e bagunçar meu estoque, a numeração das notas estas coisas, gostaria de algumas dicas de como aumentar a segurança do meu faturamento, algumas ideias que possa esta utilizando aqui, sendo que etu trabalho com Delphi 7 e FireBird 2.0 em um sistema cliente Servidor... Desde já agradeço pessoal... Compartilhar este post Link para o post Compartilhar em outros sites
Andre Renato 0 Denunciar post Postado Setembro 19, 2008 Bom vamos ver se isso ajuda em partes. No meu caso o faturamento não é com materiais, e sim com planos de saúde (os itens a compor o faturamento são diferentes, não necesitando atualização/baixa de valores e quantidades ao se faturar). Quanto a numeração, você está usando uma sequence? O que pode se fazer para evitar problemas é criar uma Trigger no seu banco de dados e, ao se gravar uma nova Nota Fiscal (que até esse ponto presupõe-se que esteja tudo ok, correto?), gera-se uma nova numeração de Nota Fiscal. Como isso? Dentro da sua trigger (do tipo Before Insert e Before Update) você executa um select na sua tabela de notas fiscais ou faturamento para recuperar o ultimo número gerado (usando a função max() do Select) e no seu valor :new.notafical atribui-se esse max incrementando + 1. Só que nesse caso o seu campo de numero de nota fiscal não pode ser PK, você teria que permitir que esse campo seja nulo e usar ou criar um outro campo (ou juntar campos diferentes) para ser sua PK. Pelo menos você não corre o risco de 'zoar' a sua numeração e ter problemas com, por exemplo, rotinas de geração ISS (caso existir). Compartilhar este post Link para o post Compartilhar em outros sites
lucas_rc 0 Denunciar post Postado Setembro 19, 2008 No meu caso não faço nenhum tratamento no banco, é tudo feito pelo proprio delphi, desde do controle da numeração até a movimentação do estoque, todo tratamento é feito com recursos do delphi... Compartilhar este post Link para o post Compartilhar em outros sites
Andre Renato 0 Denunciar post Postado Setembro 19, 2008 Ótimo, cara! Eu só citei um modelo de desenvolvimento. Aqui pelo menos tem funcionado bem desse jeito. Não sei no Firebird, mas no Oracle pelo menos se ocorre alguma pane ou travamento de processo no momento de alguma transação com o Banco, ele dá um RollBack e não 'Commita' o que foi feito... ou seja, não tem perigo de o processo ser executado faltando alguma 'perna'. Compartilhar este post Link para o post Compartilhar em outros sites