VENDAS AO MESMO TEMPO NFCE - 3 TERMINAIS
No caso que mencionei ai acima, eu uso o bloqueio por ser mai seguro, lógico que dentro de um tratamento de erro para maior segurança, temos que levar em conta que o processamento é muito rápido, então bloquear - pegar id - liberar, é imperceptÃvel ao usuário, e garante a ão duplicidade, como no meu caso, a tabela só tem o campo ID da venda mesmo, não atrapalho outras funções na rede.
Galera eu estou fazendo assim no LOAD eu chamo essa função.
nessa função esta show qnd utiliza-se apenas 1 PC ligado ao Servidor..
agora se tiver mais de 1 PC e for fazer isso vai duplicar
exemplo:
Terminal 01 - abriu o PDV-NFCe pegou o ultimo ID 20 + 1 = 21 (esse 21 vai ser gerado a NFCe o cupomm)
ai
Terminal 02 - abiu tbm o PDV ao mesmo tempo... pegou o mesmo ID 20 + 1 = 21 dai vai da duplicidade e nao vai ser gerado a NFCe.
essa minha função so funciona apenas com 1 PC.. pq eu chamo no LOAD.
se eu chamar essa função antes de Gerar a NFCe da certo ?
Private Sub PCarregaNumeracao_IDVenda()
Dim dr As OleDbDataReader = Nothing
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô]SELECT top 1 id_Vendas_NFCe FROM PDV_Vendas_NFCe order by id_Vendas_NFCe desc[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
dr = cmd.ExecuteReader
If dr.HasRows Then
dr.Read()
lbl_IDvenda.Text = Int(dr.Item([Ô]id_Vendas_NFCe[Ô])) + 1
Else
lbl_IDvenda.Text = [Ô]1[Ô]
End If
Catch ex As Exception
MsgBox([Ô]Ocorreu um erro ao tentar carregar a numeração da NFCe. Erro.: [Ô] & ex.Message, MsgBoxStyle.Information)
Finally
con.Close()
End Try
End Using
End Sub
nessa função esta show qnd utiliza-se apenas 1 PC ligado ao Servidor..
agora se tiver mais de 1 PC e for fazer isso vai duplicar
exemplo:
Terminal 01 - abriu o PDV-NFCe pegou o ultimo ID 20 + 1 = 21 (esse 21 vai ser gerado a NFCe o cupomm)
ai
Terminal 02 - abiu tbm o PDV ao mesmo tempo... pegou o mesmo ID 20 + 1 = 21 dai vai da duplicidade e nao vai ser gerado a NFCe.
essa minha função so funciona apenas com 1 PC.. pq eu chamo no LOAD.
se eu chamar essa função antes de Gerar a NFCe da certo ?
aqui esta a tabela...
o Id_Vendas_NFce é do tipo numeração automatica.
PDV_NumeroNFCe é o numero da NFCe q vai ser gerado o XML e enviado para sefaz.
o Id_Vendas_NFce é do tipo numeração automatica.
PDV_NumeroNFCe é o numero da NFCe q vai ser gerado o XML e enviado para sefaz.
Up ? alguem poderia analisar minha Função? se daria certo
Acho mais viável executar a função pra pegar o id, somente no final da venda, pois uma venda pode demorar 1 min como pode levar 30 ou mais minutos dependendo do número de Ãtens, e os outros caixas podem estar fazendo várias outras vendas nesse tempo. Por isso que acho mais viável no final da venda.
Citação::
Acho mais viável executar a função pra pegar o id, somente no final da venda, pois uma venda pode demorar 1 min como pode levar 30 ou mais minutos dependendo do número de Ãtens, e os outros caixas podem estar fazendo várias outras vendas nesse tempo. Por isso que acho mais viável no final da venda.
MARCELOKROL, essa minha função posso ficar utilizando ? chamar essa função no botao qnd for finalizar a venda.
q dai .. essa função via pegar o ultimo ID q esta no banco somar + 1 q seria a proxima venda NFCe cupom
pois se tiver duplicidade a sefaz retornar com erro e nao gera o cupom.
tem um porem.. a sefaz para validar o XML demora de 3 a 6 segundos. dependendo da internet....
ai
depois q eu recebo o retorno q é autorizado é q vem meu [txt-color=#e80000] INSERT [/txt-color] eu so gravo qnd o cupom é autorizado.
oq vc acha?
Acho que voce deve fazer todos os processos e verificações off-line e depois comunicar com o sefaz, e se for autorizada mudar o status da nota no banco apenas
Tópico encerrado , respostas não são mais permitidas