VENDAS AO MESMO TEMPO NFCE - 3 TERMINAIS

FUTURA 06/10/2016 12:02:40
#467913
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.
JOHNSTEVE 06/10/2016 13:59:25
#467915
Galera eu estou fazendo assim no LOAD eu chamo essa função.

    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 ?
JOHNSTEVE 06/10/2016 15:40:06
#467919
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.



JOHNSTEVE 07/10/2016 10:37:22
#467934
Up ? alguem poderia analisar minha Função? se daria certo
MARCELOKROL 07/10/2016 13:07:14
#467936
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.
JOHNSTEVE 07/10/2016 13:26:30
#467937
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?
MARCELOKROL 07/10/2016 21:09:22
#467945
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
Página 2 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas