Closed Marlonwg closed 5 months ago
Transações Pendentes, eu faço chamando a Função 130 (pagina 62 do SiTef - Interface Simplificada com a aplicação(VRS-253)). Assim por esse retorno, consigo escolher se vou cancelar ou confirmar a transação.
O ObtemQuantidadeTransacoesPendentes eu nunca usei.
Referente ao Voltar do Cancelamento, vou dar uma olhada
Consegue me mandar o codigo em C# como faz essa chamada ?
Do voltar e que usa o botao da maquina anular mas tem uma opçao via comando ai que da pra cancelar quando esta pedindo o cartao. Esta ai nos issues mas nao soube chamar somente.
@adrbarros Conseguiu ver sobre a funcao ?
se puder me enviar pra tirar base em C# e porque estou em homologacao rsrs e preciso das 2 funcao pra passar tanto o boltao cancelar operacao quando estiver ja aparecendo valor
Quanto esse pra reenviar dados.
Estarei vendo isso somente na próxima semana
Fazendo teste rápido aqui, no Voltar do Menu Cancelamento, eu Acho que tem algum Bug no Ambiente da SoftwareExpress, mas você pode utilizar o ESC para interromper
Precisaria ver esse retorno a pra cancelar as operaçoes pendentes ate estou conseguindo obter eles no ContinuafuncaoIterativa
meu negocio ta sendo enviar e finalizar não esta cancelando os pendentes.
Transações Pendentes, eu faço chamando a Função 130 (pagina 62 do SiTef - Interface Simplificada com a aplicação(VRS-253)). Assim por esse retorno, consigo escolher se vou cancelar ou confirmar a transação.
Segue esse roteiro para sua implementação, como você tem acesso aos fontes, você mesmo pode fazer a implementação e melhoria, na sua Solução.
Se sobrar um tempo na próxima semana, vou ver se consigo analisar as Transações Pendentes (Confirmar ou Cancelar)
Sim ate fiz a leitura
ElseIf tipoCampo = 160 Then 'Cupom Fiscal retorno
Dim obj160 As New TefRetorno(160, 0, mensagem)
TefRetornoAdicionar(obj160, mTefTransacao)
ElseIf tipoCampo = 161 Then 'Número Identificador do Cupom do Pagamento
Dim obj161 As New TefRetorno(161, 0, mensagem)
TefRetornoAdicionar(obj161, mTefTransacao)
ElseIf tipoCampo = 163 Then 'Data Fiscal
Dim obj163 As New TefRetorno(163, 0, mensagem)
TefRetornoAdicionar(obj163, mTefTransacao)
ElseIf tipoCampo = 164 Then 'Hora Fiscal
Dim obj164 As New TefRetorno(164, 0, mensagem)
TefRetornoAdicionar(obj164, mTefTransacao)
ElseIf tipoCampo = 210 Then 'Quantidade total de pendências, listadas nos blocos de dados abaixo
Dim obj210 As New TefRetorno(210, 0, mensagem)
TefRetornoAdicionar(obj210, mTefTransacao)
ElseIf tipoCampo = 211 Then 'Código da “Funcao” original
Dim obj211 As New TefRetorno(211, 0, mensagem)
TefRetornoAdicionar(obj211, mTefTransacao)
O negocio ta sendo usar os dados pra finalizar acho que estou errando na chamada de finaliza seguindo a requisicao
Public Function RequisicaoPendente(ByVal _valor As Decimal, Optional ByVal _documentoVinculado As String = "", Optional ByVal _operador As String = "", Optional ByVal _funcao As Integer = 0, Optional ByVal _confirmarCnf As Boolean = True) As Integer
Dim parametrosAdicionais As String = "" ' "[10]" 'Cheques
Dim sts As Integer = FazerRequisicao(130, "NCN", _valor, _documentoVinculado, parametrosAdicionais, _operador)
If sts = 10000 Then
DefinirTefTransacao(_documentoVinculado, 0D) 'ADD NOVO
' gCupomVenda.Transacoes.Add(mTefTransacao)
Dim obj0 As New TefRetorno(0, 0, "NCN")
TefRetornoAdicionar(obj0, mTefTransacao)
Dim obj2 As New TefRetorno(2, 0, _documentoVinculado)
TefRetornoAdicionar(obj2, mTefTransacao)
Dim obj2_1 As New TefRetorno(2, 1, mTefTransacao.IdentificadorTransacao.ToString())
TefRetornoAdicionar(obj2_1, mTefTransacao)
Dim obj3 As New TefRetorno(3, 0, _valor.ToString("N2"))
TefRetornoAdicionar(obj3, mTefTransacao)
Dim obj4 As New TefRetorno(4, 0, "0")
TefRetornoAdicionar(obj4, mTefTransacao)
Dim obj718 As New TefRetorno(718, 0, "IP" & mTefConfig.Tef_Terminal)
TefRetornoAdicionar(obj718, mTefTransacao)
Dim obj719 As New TefRetorno(719, 0, mTefConfig.Tef_Empresa)
TefRetornoAdicionar(obj719, mTefTransacao)
sts = ContinuarRequisicao()
End If
If sts = 0 Then
' Retornos TEF
Dim obj9 As New TefRetorno(9, 0, "0")
TefRetornoAdicionar(obj9, mTefTransacao)
FinalizarOperacao(0, _documentoVinculado)
If _confirmarCnf Then
Cnf(_documentoVinculado:=_documentoVinculado)
End If
End If
Return sts
End Function
algo que nao vai ate os dados passam so que nao acontece nada rsrs
Private Sub FinalizarOperacao(_confirma As Short, Optional _documentoVinculado As String = "")
Dim dataStr As String = DateTime.Now.ToString("yyyyMMdd")
Dim horaStr As String = DateTime.Now.ToString("HHmmss")
Dim doc As Integer = New Random().Next(999999)
If String.IsNullOrWhiteSpace(_documentoVinculado) Then
_documentoVinculado = doc.ToString("000000")
End If
'Passar essa funcao finaliza com os dados
' FinalizaFuncaoSiTefInterativo(0, "Doc em aberto", dataStr, horaStr, Nothing)
FinalizaFuncaoSiTefInterativo(_confirma, _documentoVinculado, dataStr, horaStr, Nothing)
End Sub
Vou tentar em C# mas no codigo que vem aqui do github tb nao tem ainda.
Baixe a atualização e teste!!
Tem atualização do codigo da pra marcar so aonde tem as atualizações porque converter tudo e osso rsrs.+
Quando vc colocar ali em c# vou comparar no que estou errando.
Se você tem uma Fork do projeto, sua ferramente de gerenciamento do Git, mostra o que foi Alterado
Eu uso aqui o SourceTree ou o próprio Visual Studio. mas vai reparar que tem um Botão para verificar as transações pendentes
No meu aqui nao tem rsrs, o Fork nem o tree vou verificar pos so baixei ali a base eas dlls e converti tudo mas esta funcionando ok so nessa parte deu zebrinha, rsrs
hum realmente no site esta atualizado vou pegar com base nele obrigado.
Resolvi sobre o botao cancelar se alguem quizer Implementar mas o meu esta em dotnet .net
Segue
Chamei essa dll no caso da tecla esc ser pressionada
<DllImport("user32.dll")>
Private Shared Function GetAsyncKeyState(ByVal vKey As Integer) As Short
End Function
Private Const VK_ESCAPE As Integer = &H1B
Public Delegate Sub OnVerifyDataCollectionInterruptionHandle(ByRef _interromper As Boolean)
Public Event OnVerifyDataCollectionInterruption As OnVerifyDataCollectionInterruptionHandle
'Restante do codigo....
Sub GerarArquivoRetornoDaTransacao()
Dim interromper As Boolean = False
....restante codigo ate chegar na Case23
Case23
RaiseEvent OnVerifyDataCollectionInterruption(interromper)
If interromper Then
' Se interromper for verdadeiro, finalize a operação
Return -1
End If
If (GetAsyncKeyState(VK_ESCAPE) And &H8000) <> 0 Then
interromper = True
End If
Exit Select
.... Continuacao do codigo normal
Caso alguem queira melhorar quando fica a mensagem na tela pra passar o cartao fico segurando a TECLA ESC entao ele pede pra cancelar a operação e fechar.
Resolvi sobre o botao cancelar se alguem quizer Implementar mas o meu esta em dotnet .net
Segue
Chamei essa dll no caso da tecla esc ser pressionada
<DllImport("user32.dll")> Private Shared Function GetAsyncKeyState(ByVal vKey As Integer) As Short End Function Private Const VK_ESCAPE As Integer = &H1B Public Delegate Sub OnVerifyDataCollectionInterruptionHandle(ByRef _interromper As Boolean) Public Event OnVerifyDataCollectionInterruption As OnVerifyDataCollectionInterruptionHandle 'Restante do codigo.... Sub GerarArquivoRetornoDaTransacao() Dim interromper As Boolean = False ....restante codigo ate chegar na Case23 Case23 RaiseEvent OnVerifyDataCollectionInterruption(interromper) If interromper Then ' Se interromper for verdadeiro, finalize a operação Return -1 End If If (GetAsyncKeyState(VK_ESCAPE) And &H8000) <> 0 Then interromper = True End If Exit Select .... Continuacao do codigo normal
Caso alguem queira melhorar quando fica a mensagem na tela pra passar o cartao fico segurando a TECLA ESC entao ele pede pra cancelar a operação e fechar.
Ola, Não me atentei qua na chamada do Delegate OnVerifyDataCollectionInterruption não tinha a Implementação no lado do FrmTelaTesteVenda. Porém quando estiver em qualquer interação com o PinPad (Inserir ou Passar o Cartão, por ex.), é só precionar a Tecla Cancela do PinPad (VERMELHA) para abortar. Mas essa implementação da chamada da tecla ESC, vai servir para Abotar uma transação PIX, por ex., quando a operação ficar aguardando a leitura do QrCode, e o cliente por algum acaso desistir.
@adrbarros BOm dia tudo bem espero que esteje tudo certo.
Estou com duvidas na chamada do pendente eu vi o codigo ontem mas nao consigo fazer a chamada pra autorizar o pendente novamente como faço tal ? consegue me mandar via C# .
O Outro e do cancelamento o botao pra voltar atraz coloquei o codigo mas tanbem nao cosegui fazer a chamada consegue me ajudar pode ser em C# mesmo.