Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucas_rc

Segurança na Hora de Faturar

Recommended Posts

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

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

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

Ó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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.