Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3683 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Colegas estou com uma certa dificuldade para gerar a numeração da NFC

 

Criei no bco de Dados do Servidor  uma tabela Numero_NFC

 

a cada emissão eu incremento esta tabela com +1

 

Isso funciona correto somente quando é usado um caixa,

quando mais de um caixa corre o risco de usarem o mesmo numero para NFc, lógico que no envio

vai acontecer a recusa por duplicidade, mas fica chato acontecer isso.

 

Como é que os colegas fazem este tipo de controle ?

 

Obrigado

  • Consultores
Postado

Depende do BD. Você pode usar uma Sequence (também conhecido como Generator).

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Membros Pro
Postado

Uso Firebird

 

porem ma sua dica não funciona

 

Caixa 1 pega o generator e envia uma NFC

 

no intervalo entre pegar o generator e enviar o segundo caixa pega o mesmo generator

 

o que pensei foi somente incremetar mo numero da NFc no momento do envio,  até funciona porem caso haja uma rejeição ou qualquer motivo que não efetive o envio vou ficar com numeração pulado e sem uso.

Postado

Arnaldo,

1) quando usados corretamente, generators jamais geram valores duplicados. No caso específico do Firebird GEN_ID(generator,1) lhe devolve um valor único e automaticamente incrementa a sequência em 1.

2) tabelas de controle, para evitar duplicidade, devem ser acessadas por meio de stored procedures, cujo esqueleto seria

 

update "TabelaControladora"
set "UltimoUsado" = "UltimoUsado" + 1
where "TabelaControlada" = :TabelaControlada

select "UltimoUsado"
from "TabelaControladora"
where "TabelaControlada" = :TabelaControlada

Certifique-se de que esta stored procedure seja invocada em uma transação independente, configurada para repetir a tentativa em caso de deadlock. O "update" faz com que nenhuma outra transação possa gravar em "TabelaControladora" até que haja um commit ou rollback, garantindo assim a unicidade do "UltimoUsado".

 

Cordilamente,

Carlos

  • Curtir 2
Postado

Bom dia.

Sequence (generator) no firebird NUNCA é repetido.

 

A função gen_ID(XX, 1) roda numa transação  independente da atual, impossibilitando a numeração repetida.

 

O sequence também pode te dar problema se você tiver mais de uma série de NF. Terá que criar um sequence para cada serie.

 

Outro detalhe, ao incrementar um sequence, se houver algum erro de gravação no banco, você perde a numeração.

 

Passei por isso no começo, de qual forma seria a melhor maneira para não ter problemas com "pulos" nem números repetidos

 

Eu tratei a numeração de NF-e com trigger e exception no banco.

 

Essa trigger verifica se não houve "pulo" de numeração ou número repetido. Caso haja alguma violação, o banco levanta a exception e o usuário tem que enviar o comando de gravar novamente,

 

Atenciosamente.

  • Curtir 2

------------------------------------------------

Jéter Rabelo Ferreira
Campestre/MG

  • Membros Pro
Postado

resolvi da seguinte forma

 

no momento da gravação eu pego o ultimo numero da nfc gravada e incremento + 1, nesse caso nunca vai acontecer um pulo ou repetição.

o unico BO é que pro caixa mata o StandAlone pois deve ser feito na tabela do servidor.

  • Consultores
Postado

Bom dia Arnaldo,

 

Só vejo um problema nesse cenário:

 

Servidor: Numero da ultima NFC-e emitida = 10

 

PDV 1: ao consultar o servidor para gravar pega o valor 10 e grava o novo registro como sendo 11

PDV 2: se consultar o servidor antes do PDV 1 ter gravado, também terá como resposta o valor 10.

 

Ainda acho que a melhor solução é adotar um numero de série para cada PDV.

  • Curtir 2
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Este tópico foi criado há 3683 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.