Ir para conteúdo
  • Cadastre-se

felipe de souza

Membros
  • Total de ítens

    10
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

felipe de souza's Achievements

  1. Caso alguém tenha o mesma dúvida, consegui achar algo sobre e fazer um teste tbm na nota e verifiquei que validou. "https://andav.com.br/publications/in-25-2020-processo-de-emissao-de-nf-com-as-informacoes-do-lote-no-rs/#:~:text=Os produtos iguais%2C de mesma,foram entregues de cada lote." Pelo que consegui validar é possível sim enviar mais de um lote por produto apenas adicionando a tag para cada lote da rastreabilidade. Não sei se essa é a única e melhor solução, porém por hora foi o que encontrei.
  2. Bom dia! Estou tendo uma dúvida, como posso mandar mais de um lote para o mesmo produto? Ex: Tenho uma venda com mais de uma quantidade do mesmo produto, porém para ele é utilizado 2 ou mais lotes. Quando ele se enquadra dentro do grupo med, eu tenho que enviar a tag de rastro tbm, com o lote, porém, não estou sabendo como poderia enviar todos os lotes utilizados naquela venda, daquele mesmo produto. Tem essa possiblidade de enviar para o mesmo produto "x" lotes? Se alguém souber dessa informação, eu ainda não consegui encontrar algo referente este caso. Obrigado!
  3. Fiz como falou consegui agora utilizar como antes. Resolvido!! Muito obrigado BigWings, ajudou demais!
  4. Desinstalei tudo do acbr, tirei as library tbm no delphi, tudo zerado, ai baixei os pacotes e reinstalei o acbr, fui no acbr.inc comentei e ao entrar no sistema e tentar consultar ainda permanece da mesma forma, não sei se ta faltando fazer alguma coisa que nao to sabendo Na hora da instalação do acbr eu marquei pra nao utilizar nem capicom, nem xmlsec, nem openssl ai no arquivo C:\ACBr\Fontes\ACBrComum\ACBr.inc ta assim // Descomente a linha abaixo, se você quer que seu Executável NÃO dependa das DLLs LibXML2, LibXMLSEC, (NÃO RECOMENDADO) //{$DEFINE DFE_SEM_OPENSSL} // Comente a linha abaixo, se você quer que seu Executável dependa das DLLs LibXMLSEC (NAO RECOMENDADO) {$DEFINE DFE_SEM_XMLSEC} // Descomente a linha abaixo, se você quer que seu Executável NÃO dependa das DLLs LibXML2. (NAO RECOMENDADO) {.$DEFINE DFE_SEM_LIBXML2} // Descomente a linha abaixo, se você não utiliza a obsoleta Capicom para Criptografia (RECOMENDADO) {$DEFINE DFE_SEM_CAPICOM} // Descomente a linha abaixo, se você não utiliza a obsoleta MSXML para Assinatura de XML (RECOMENDADO) {.$DEFINE DFE_SEM_MSXML} // Descomente a linha abaixo, se você não deseja adicionar a Dependência da INDY nos seus Projetos {.$DEFINE DFE_SEM_INDY} {$IfDef DFE_SEM_OPENSSL} {$Define DFE_SEM_XMLSEC} // {$Define DFE_SEM_LIBXML2} {$EndIf} Tem alguma ideia?
  5. BigWings vou tentar fazer como você falou, pra ficar como estava antes no código fonte, apesar de aparentemente ter resolvido, vou tentar e ver se da certo
  6. Consegui resolver apenas trocando xsLibXml2 por xsMsXml // ACBrNFe.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2; ACBrNFe.Configuracoes.Geral.SSLXmlSignLib := xsMsXml; Obs: o Acbr.inc voltei da forma como estava sem precisar comentar nenhuma linha a mais como está abaixo // Descomente a linha abaixo, se você quer que seu Executável NÃO dependa das DLLs LibXML2, LibXMLSEC, (NÃO RECOMENDADO) //{$DEFINE DFE_SEM_OPENSSL} // Comente a linha abaixo, se você quer que seu Executável dependa das DLLs LibXMLSEC (NAO RECOMENDADO) {$DEFINE DFE_SEM_XMLSEC} // Descomente a linha abaixo, se você quer que seu Executável NÃO dependa das DLLs LibXML2. (NAO RECOMENDADO) {$DEFINE DFE_SEM_LIBXML2} // Descomente a linha abaixo, se você não utiliza a obsoleta Capicom para Criptografia (RECOMENDADO) {$DEFINE DFE_SEM_CAPICOM} // Descomente a linha abaixo, se você não utiliza a obsoleta MSXML para Assinatura de XML (RECOMENDADO) {.$DEFINE DFE_SEM_MSXML} // Descomente a linha abaixo, se você não deseja adicionar a Dependência da INDY nos seus Projetos {.$DEFINE DFE_SEM_INDY}
  7. Bom dia. Estou tendo esse problema da libxml 'Suporte a "xsLibXml2" foi desativado por compilação {$DEFINE DFE_SEM_OPENSSL} ou {$DEFINE DFE_SEM_LIBXML2}'. ao acessar o método abaixo ACBrNFe.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2; Comecei a ter este problema, ao reinstalar o acbr, antes disso estava funcionando, acredito que por já ter sido configurado alguma coisa anteriormente e quando reinstalei acabou se perdendo. Eu vi que em um post mais antigo, era informado para comentar a linha pelo // Descomente a linha abaixo, se você quer que seu Executável NÃO dependa das DLLs LibXML2, LibXMLSEC, {$DEFINE DFE_SEM_OPENSSL} Comente essa linha, você precisa dela pra usar LibXML2. Mas não resolveu, comentei no acbr.inc, mas ao compilar e executar permaneceu da mesma forma, se alguém puder ajudar com essa situação. Esse é o repositório que usei "svn://svn.code.sf.net/p/acbr/code/trunk2" para baixar os pacotes e reinstalar
  8. Jwest realmente o que você está dizendo está correto. O que houve foi uma informação que havia sido passada errada e, por conta disso havia entendido que o cupom deveria ser feito e na execução da função de finalizar ele ser passado como "0" propriamente de cancelada, tudo isso na mesma execução da função de finalizar. Mas um outro rapaz da express me informou direitinho e me passou essa informação como você disse. Obrigado pelo retorno!
  9. Boa tarde ALA! Estou tendo este problema com o cartão visa, mas quando eu mando a função "FinalizaTransacaoSiTefInterativo" com o valor "0" aparentemente ele faz tudo certo, mas quando eu tento reimprimir o ultimo cupom ele consta como se não tivesse sido feito, diferentemente se eu retirar o cartão do pinpad, que ai consigo reimprimir sem problema. Você chegou a ter este problema de reimpressão?
  10. Boa tarde! Estou tendo o mesmo problema que você teve, mas estou tendo dificuldade por conta de ter utilizado o modelo do acbr como exemplo e, estar jogando algumas coisas pra dentro do nosso fonte. Essa questão que você informou logo acima eu não consegui entender muito bem a rotina, estou tendo um pouco de dificuldade nessa questão de ser novo no delphi. vou mostrar meu código pra ficar mais fácil de compreender var Sts,caractere: integer; ProximoComando: integer; TipoCampo: integer; TamanhoMinimo: smallint; TamanhoMaximo: smallint; Buffer: array [0..20000] of Ansichar; Msg : array [0..22000] of Ansichar; Aux : Ansistring; Resultado: integer; outp:string; Arq,ArqCrt:TextFile; iFormaPgto: integer; cancelarope:string; Continua, ItemSelecionado, I,n: Integer; // ProximoComando,TamanhoMinimo, TamanhoMaximo : SmallInt; // TipoCampo: LongInt; Mensagem, MensagemOperador, MensagemCliente, CaptionMenu : String ; Resposta : AnsiString; SL,LOG,LOG_CRT: TStringList ; Digitado, GerencialAberto, FechaGerencialAberto, ImpressaoOk, Cartaoselecionado, HouveImpressao, Voltar,CancelamentoCp,CrtCredito,CrtDebito : Boolean ; Est : AnsiChar; function ProcessaMensagemTela( AMensagem : String ) : String ; begin Result := StringReplace( AMensagem, '@', sLineBreak, [rfReplaceAll] ); Result := StringReplace( Result, '/n', sLineBreak, [rfReplaceAll] ); end; begin PnlMensagem.Visible:=true; PnlMensagem.BringToFront; LOG := TStringList.Create; LOG_CRT := TStringList.Create; try AssignFile(Arq,'log.txt'); ReWrite(Arq); AssignFile(ArqCrt,'LOG_CRT.txt'); ReWrite(ArqCrt); CancelamentoCp:=false; cpTransmitido:=0; CrtCredito:=FALSE; CrtDigitado:=FALSE; // if EdtFormaPgto.Text='3' then CrtCredito iFormaPgto:=StrToInt(EdtFormaPgto.Text); i:=0; n:=0; repeat Application.ProcessMessages; Sts:= ContinuaFuncaoSiTefInterativo (ProximoComando, TipoCampo, TamanhoMinimo, TamanhoMaximo, Buffer, sizeof (Buffer), Resultado); Aux := 'ProximoComando = ' + inttostr(ProximoComando) + ' Tipo = ' + inttostr(TipoCampo); LOG.Text:=('ContinuaFuncaoSiTefInterativo, Retornos: STS = '+IntToStr(Sts)+ ' ProximoComando = '+IntToStr(ProximoComando)+ ' TipoCampo = '+IntToStr(TipoCampo)+ ' Buffer = '+Mensagem + ' Tam.Min = '+IntToStr(TamanhoMinimo) + ' Tam.Max = '+IntToStr(TamanhoMaximo)) ; Writeln(Arq,LOG.Text+#13+'-- '+FormatDateTime('dd/mm hh:nn:ss:zzz',now)); Memo1.Lines.Add (Aux); Memo1.Lines.Add (Buffer); Resultado:=0; // Continua := 0; Mensagem := TrimRight( Buffer ) ; Resposta := '' ; Voltar := False; Digitado := True ; cancelarope:=''; // lblMensagem.Caption:=''; if Sts = 10000 then begin if TipoCampo > 0 then begin Resposta := IntToStr(TipoCampo); LOG_CRT.Text:='Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem; Writeln(ArqCrt,LOG_CRT.Text); end; case ProximoComando of 0 : begin // TACBrTEFDRespCliSiTef(Self.resp).GravaInformacao( TipoCampo, Mensagem ) ; {Grava arquivo quando tipo for cartão crédito, antes de tirar o cartão do pinpad. Para fazer esse teste, o cartão tem que estar ainda no pinpad, logo após a digitação da senha e a confirmação no pinpad. Sem esse tratamento o teste 16 do sitef para venda crédito não funciona} LOG_CRT.Text:='Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem; Writeln(ArqCrt,LOG_CRT.Text); // SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA); // Inc(n); case TipoCampo of 0: begin if CrtCredito then LOG_CRT.Text:='Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem; Writeln(ArqCrt,LOG_CRT.Text); // VERIFICAR Resposta:=Salva_Le_Ini(ansiuppercase('CUPOMVIA1_TEF'),'',Memo2.Text,cLe); // Impressao; end; // case TipoCampo of 15 : begin inttostr(TipoCampo) ;//Selecionou Debito; SALVA_LE_INI('CUPOM_TEF','TIPO_CARTAO','DEBITO',cSalva); CrtDebito := true; end; 25 : begin inttostr(TipoCampo) ;//Selecionou Credito; CrtCredito := true; SALVA_LE_INI('CUPOM_TEF','TIPO_CARTAO',Mensagem,cSalva); end; 29 : inttostr(TipoCampo) ;//Cartão Digitado; {Indica que foi escolhido menu de reimpressão} 100: begin {Verifica se é cartão de crédito para gravar o arquivo} // if copy(Mensagem,0,2) = '02' then if iFormaPgto=3 then begin SL := TStringList.Create; Memo2.Lines.Clear; if Mensagem <> '' then begin SL.Text := StringReplace( Mensagem, #10, sLineBreak, [rfReplaceAll] ) ; Memo2.Lines.Add(sl.Text); // IF i=0 then Salva_Le_Ini(ansiuppercase('CUPOM_TEFCANCELADO'),'',Memo2.Text,cSalva); Impressao; end; end; end; 101,102: begin LOG_CRT.Text:='101,102:==>Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem; Writeln(ArqCrt,LOG_CRT.Text); SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA); end; 56,57,58 : BEGIN LOG_CRT.Text:='Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem; Writeln(ArqCrt,LOG_CRT.Text); ; END; 110 : Cancelar_cupomtef:=true; 111,112: begin try SL := TStringList.Create; Memo2.Lines.Clear; if Mensagem <> '' then begin SL.Text := StringReplace( Mensagem, #10, sLineBreak, [rfReplaceAll] ) ; Memo2.Lines.Add(sl.Text); // IF i=0 then Salva_Le_Ini(ansiuppercase('CUPOM_TEFCANCELADO'),'',Memo2.Text,cSalva); Impressao; end; finally SL.Free; end; end ; 121, 122 : // if ImprimirComprovantes then begin { Impressão de Gerencial, deve ser Sob demanda } try SL := TStringList.Create; Memo2.Lines.Clear; if Mensagem <> '' then begin SL.Text := StringReplace( Mensagem, #10, sLineBreak, [rfReplaceAll] ) ; Memo2.Lines.Add(sl.Text); if CancelamentoCp=false then begin IF i=0 then Salva_Le_Ini(ansiuppercase('CUPOMVIA1_TEF'),'',Memo2.Text,cSalva); IF i=1 then Salva_Le_Ini(ansiuppercase('CUPOMVIA2_TEF'),'',Memo2.Text,cSalva); end else IF i=0 then Salva_Le_Ini(ansiuppercase('CUPOM_TEFCANCELADO'),'',Memo2.Text,cSalva); Impressao; end; inc(i); finally SL.Free; end; end ; 133, 952: begin if TipoCampo=133 then SALVA_LE_INI('CUPOM_TEF','DOC',Mensagem,cSalva);//documento LOG_CRT.Text:='133,952:==>Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem; Writeln(ArqCrt,LOG_CRT.Text); SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA); inc(n); // fArqBackUp := CopiarResposta; end; 2333: begin resposta:='0'; LOG_CRT.Text:='133,952:==>Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem; Writeln(ArqCrt,LOG_CRT.Text); SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA); end; 5074: begin LOG_CRT.Text:='133,952:==>Tipo Campo:'+inttostr(TipoCampo)+' Buffer: '+ Mensagem; Writeln(ArqCrt,LOG_CRT.Text); SALVA_LE_INI(ansiuppercase('BUFFER'),INTTOSTR(n),LOG_CRT.Text,cSALVA); end; end; end; 1 : begin // MensagemOperador := ProcessaMensagemTela( Mensagem ); LblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); Memo1.Lines.Add (Buffer);// DoExibeMsg( opmExibirMsgOperador, MensagemOperador, (TipoCampo=5005) ) ; end ; 2 : begin // MensagemCliente := ProcessaMensagemTela( Mensagem ); LblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); Memo1.Lines.Add (Buffer);// DoExibeMsg( opmExibirMsgCliente, MensagemCliente, (TipoCampo=5005) ) ; end; 3 : begin // MensagemOperador := ProcessaMensagemTela( Mensagem ); LblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); MensagemCliente := MensagemOperador; LblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); Memo1.Lines.Add (Buffer); //DoExibeMsg( opmExibirMsgOperador, MensagemOperador, (TipoCampo=5005) ) ; // DoExibeMsg( opmExibirMsgCliente, MensagemCliente, (TipoCampo=5005) ) ; end ; 4 : Memo1.Lines.Add (Buffer); 11 : begin MensagemOperador := '' ; // DoExibeMsg( opmRemoverMsgOperador, '' ) ; LblMensagem.Caption:='';//ProcessaMensagemTela( Mensagem ); end; 12 : begin MensagemCliente := '' ; Memo1.Lines.Add (Buffer); // DoExibeMsg( opmRemoverMsgCliente, '' ) ; LblMensagem.Caption:='';//ProcessaMensagemTela( Mensagem ); end; 13 : begin Memo1.Lines.Add (Buffer); LblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); // DoExibeMsg( opmRemoverMsgOperador, '' ) ; // DoExibeMsg( opmRemoverMsgCliente, '' ) ; end ; 14 :begin CaptionMenu := '' ; // continua:=0; end; {Deve limpar o texto utilizado como cabeçalho na apresentação do menu} 20 : begin // if Cancelar_cupomtef then resposta:='0'//confirmar reimpressão // else begin if Mensagem = '' then Mensagem := 'CONFIRMA ?'; lblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); // 0 = confirma e 1 = cancela if MessageDlg(Mensagem,mtConfirmation,[mbYes,mbNo],0) = mrYes then begin Resposta:='0';//confirmar cancelamento // confirma reimpressão cancelarope:= Resposta; // Interromper:=true; end else begin Resposta:='1';//abortar o cancelamento // cancela reimpressão cancelarope:= Resposta; end; // se a resposta a mensagem for não, não deixar interromper // voltar ao loop if (TipoCampo = 5013) and (Resposta = '1') then Interromper := False; end; end ; 21 : begin SL := TStringList.Create; try ItemSelecionado := -1 ; if Reimpressao then // REIMPRESSÃO CUPOM then begin SL.Text := StringReplace( Mensagem, ';', sLineBreak, [rfReplaceAll] ) ; ACBrTEFD1CliSiTefExibeMenu( CaptionMenu, SL, ItemSelecionado, Voltar ) ; if (not Voltar) then begin if (ItemSelecionado >= 0) and (ItemSelecionado < SL.Count) then Resposta := copy( SL[ItemSelecionado], 1, pos(':',SL[ItemSelecionado])-1 ) else Digitado := False ; end; end else case iFormaPgto of 2:begin //debito if i=0 then resposta:='2' else if CrtDigitado then//SELECIONAR CARTÃO DIGITADO begin resposta:='2'; CrtDigitado:=false; end else if CrtDebito then //SELECIONAR A FORMA MAGNETICO/CHIP begin resposta:='1';//CARTÃO CRÉDITO CrtDebito:=false; end else begin SL.Text := StringReplace( Mensagem, ';', sLineBreak, [rfReplaceAll] ) ; ACBrTEFD1CliSiTefExibeMenu( CaptionMenu, SL, ItemSelecionado, Voltar ) ; if (not Voltar) then begin if (ItemSelecionado >= 0) and (ItemSelecionado < SL.Count) then Resposta := copy( SL[ItemSelecionado], 1, pos(':',SL[ItemSelecionado])-1 ) else Digitado := False ; end; end; end; 3:begin //credito if i=0 then resposta:='3' else if CrtDigitado then//SELECIONAR CARTÃO DIGITADO begin resposta:='2'; CrtDigitado:=false; end else if CrtCredito then //SELECIONAR A FORMA MAGNETICO/CHIP begin resposta:='1';//CARTÃO CRÉDITO CrtCredito:=false; end else begin SL.Text := StringReplace( Mensagem, ';', sLineBreak, [rfReplaceAll] ) ; ACBrTEFD1CliSiTefExibeMenu( CaptionMenu, SL, ItemSelecionado, Voltar ) ; if (not Voltar) then begin if (ItemSelecionado >= 0) and (ItemSelecionado < SL.Count) then Resposta := copy( SL[ItemSelecionado], 1, pos(':',SL[ItemSelecionado])-1 ) else Digitado := False ; end; end; end; 4:; end; finally SL.Free ; Inc(i); end; end; 22 : begin if Mensagem = '' then Mensagem := CACBrTEFD_CliSiTef_PressioneEnter; lblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); // DoExibeMsg( opmOK, Mensagem ); end ; 23 : begin //INTERROMPER O FLUXO DO CARTAO COM UM BOTAO NO MOMENTO DA EXECUÇÃO // OnAguardaResp( '23', 0, Interromper ) ; // if Interromper then resposta:='-2'; if (cancelarope='0') then lblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); end; 30 : begin Resposta:='0'; SL := TStringList.Create; if TipoCampo=500 then Resposta:='0' else Form5.ACBrTEFD1CliSiTefObtemCampo( ACBrStr(Mensagem), TamanhoMinimo, TamanhoMaximo, TipoCampo, tcString, Resposta, Digitado, Voltar) ; {Se o tipo campo for 505 é a quantidade de parcelas} // TACBrTEFDRespCliSiTef( Self.Resp ).GravaInformacao( TipoCampo, Resposta ) ; // BloquearMouseTeclado(True); end; 31 : begin Resposta:='0'; // BloquearMouseTeclado(False); Form5.ACBrTEFD1CliSiTefObtemCampo( ACBrStr(Mensagem), TamanhoMinimo, TamanhoMaximo, TipoCampo, tcCMC7, Resposta, Digitado, Voltar ) ; // BloquearMouseTeclado(True); end; 34 : begin SL := TStringList.Create; Resposta:='0'; if TipoCampo=504 then Resposta:='0' else begin Form5.ACBrTEFD1CliSiTefObtemCampo( ACBrStr(Mensagem), TamanhoMinimo, TamanhoMaximo, TipoCampo, tcDouble, Resposta, Digitado, Voltar ) ; // if Voltar then Continua := 1 { Volta para o menu anterior } // Garantindo que a Resposta é Float // // Resposta := FormatFloat( StringToFloatDef(Resposta, 0)); end; end; 35 : begin Resposta:='0'; // input:= InputBox(Mensagem,'',''); // BloquearMouseTeclado(False); // OnObtemCampo Form5.ACBrTEFD1CliSiTefObtemCampo( ACBrStr(Mensagem), TamanhoMinimo, TamanhoMaximo, TipoCampo, tcBarCode, Resposta, Digitado, Voltar ) ; // BloquearMouseTeclado(True); end; { 514 : begin TamanhoMaximo:=TamanhoMaximo; end; } end; // GravaLog( '*** ContinuaFuncaoSiTefInterativo, Finalizando: STS = '+IntToStr(Result) ) ; end; // else if Voltar then Resultado := 1 { Volta para o menu anterior } else if (not Digitado) or Interromper then Resultado := -1 ; { Cancela operacao } if (Voltar and (sts = 10000)) or (not Digitado) then begin lblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); // DoExibeMsg( opmRemoverMsgOperador, '' ) ; // DoExibeMsg( opmRemoverMsgCliente, '' ) ; end ; StrPCopy(Buffer, Resposta); until sts <> 10000; CloseFile(ARQ); CloseFile(ArqCrt); if(sts <> 10000) and (sts >0) then case STS of -1: ShowMessage('Módulo não inicializado. O PDV tentou chamar alguma rotina sem antes executar a função configura.'); -2: ShowMessage('Operação cancelada pelo operador.'); -3: ShowMessage('O parâmetro função / modalidade é inválido.'); -4: ShowMessage('Falta de memória no PDV. -5 Sem comunicação com o SiTef.'); -6: ShowMessage('Operação cancelada pelo usuário (no pinpad).'); -7: ShowMessage('Reservado'); -8: ShowMessage('A CliSiTef não possui a implementação da função necessária, provavelmente está desatualizada (a CliSiTefI é mais recente).'); -9: ShowMessage('A automação chamou a rotina ContinuaFuncaoSiTefInterativo sem antes iniciar uma função iterativa.'); -10: ShowMessage('Algum parâmetro obrigatório não foi passado pela automação comercial.'); -12: ShowMessage('Erro na execução da rotina iterativa. Provavelmente o processo iterativo anterior não foi finalizado até o final (enquanto o retorno for igual a 10000).'); -15: ShowMessage('Operação cancelada pela automação comercial.'); -20: ShowMessage('Parâmetro inválido passado para a função.'); -21: ShowMessage('Utilizada uma palavra proibida, por exemplo SENHA, para coletar dados em aberto no pinpad. Por exemplo na função ObtemDadoPinpadDiretoEx.'); -25: ShowMessage('Erro no Correspondente bancário: Deve realizar sangria.'); -30: ShowMessage('Erro de acesso ao arquivo. Certifique-se que o usuário que roda a aplicação tem direitos de leitura/escrita.'); -40: ShowMessage('Transação negada pelo SiTef.'); -41: ShowMessage('Dados inválidos.'); -42: ShowMessage('Reservado'); -43: ShowMessage('Problema na execução de alguma das rotinas no pinpad.'); -50: ShowMessage('Transação não segura.'); -100: ShowMessage('Erro interno do módulo.'); end; finally lblMensagem.Caption:=ProcessaMensagemTela( Mensagem ); if sts= -5 then MessageDlg('Erro de comunicação sitef!',mtError,[mbOK],0); // if sts= -2 then MessageDlg('Cancelamento executado!',mtWarning,[mbOK],0); end; PnlMensagem.Visible:=false; end; Eu percebi que quando o cartão não é visa ele consegue me dar o retorno da função pra poder imprimir antes do que quando é visa, que somente após retirar o cartão do pinpad que ele me da um retorno entrando no tipocampo 121. Se alguém puder me dar um help, agradeço!!
×
×
  • 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.