[firebase-br] RES: DEADLOCK - COMO ATRAZAR UMA TRANSACAO NA GRAVACAO

LuisFireVB luisfirevb em gmail.com
Ter Mar 24 09:02:21 -03 2009


Numero de NF sendo reservado, isso não é tributariamente correto ou legal.
Se o cara cancela a inclusão a NF é descartada e uma outra pode ser emitida
com numeração superior em ordem inversa, isso pode gerar complicações com o
Fisco.

A emissão das notas devem ser sempre seqüenciais, e nunca intercaladas.
Sendo assim o correto é realmente pegar o número da NF no momento de salvar
o registro, porém de outra forma.

Sua rotina não deve reservar um número, mas sim na hora de gravar pegar o
último número disponível, e assim usá-lo para gravar os dados. Caso ocorra
uma outra estação gravando o mesmo número miléssimos de segundo antes, irá
gerar um erro que deve ser interceptado e o processo de pegar o próximo
número repetido, até que haja sucesso na gravação, o que garante um único
número e também que será o último na sequência. Esse é o processo mais
indicado.

Luis

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Evandro Siqueira
Enviada em: terça-feira, 24 de março de 2009 08:07
Para: FireBase
Assunto: Re: [firebase-br] DEADLOCK - COMO ATRAZAR UMA TRANSACAO NA GRAVACAO

Bom dia Rubens,

Não sei se é o seu caso, mas pelo que entendi vc está atribuindo o 
número da nota apenas quando o operador confirma a operação. Na maioria 
dos programas que vi com emissão de documentos fiscais ou que precisem 
de uma numeração exclusiva, o processo que vi e que adotei foi utilizar 
uma rotina pra reservar o numero e atribui-lo ao documento apenas na 
hora da confirmação. Caso a impressão seja cancelada, o número é 
liberado para utilização futura. Assim aquele número só é utilizado uma 
vez e apenas por um operador.

O Luiz "Reddevil", um companheiro antigo desta lista, disponibilizou uma 
vez um modelo de sequenciamento utilizando stored procedures e 
generators, que eu achei muito boas. Pena que não lembro o link onde 
este modelo está. Talvez o Cantu possa te ajudar neste sentido.

Mas espero ter te ajudado de alguma forma.

-- 
[]’s.

Evandro Siqueira
Programador de Sistemas
L’essentiel Lingerie
(79) 3254-5511 Ramal 218
skype: evandro.lessentiel


Rubens - Solucao Empresarial escreveu:
> boa tarde pessoal estou com um grande problema
> no programa meu de estoque quando a pessoal vai fazer a venda -  quando
mando gravar uma nota ao mesmo tempo de um outro terminal - ele dá a
mensagem de que o registro ja esta gravado estou usando o delphi 7 e
firebird 1.5 como conseguir que dois operadores apertam o ENTER ou GRAVAM
ao mesmo tempo fazer um terminal esperar a gravacao ate o outro terminar
para depois ele fazer a gravacao -
>
> exemplo - terminal 1 manda gravar a nota e o terminal 2 apertou ao mesmo
tempo a nota - ele vai colocar para a gravacao a transacao qual chegar
primeiro comeca a gravar a nota 1 e depois o segundo entra em um loop
esperando o prmeiro terminar a gravacao da nota 1 para depois gravar a nota
2
>
> agradeco desde ja
> obrigado
> rubens
>   

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista