Ir para conteúdo
  • Cadastre-se

Augusto

Membros
  • Total de ítens

    44
  • Registro em

  • Última visita

Últimos Visitantes

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

Augusto's Achievements

Contributor

Contributor (5/14)

  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

0

Reputação

  1. Desculpe esta reabrindo este POST, mais estou com o mesmo problema ao tentar cancelar uma NFCe: segue o codigo abaixo: #define _NUM_LOTE 01 UnicodeString sXML = ADQuery_NFCeNFCE_XML->AsString; if(sXML != EmptyStr) { ACBrNFe->NotasFiscais->LoadFromString(sXML); //ACBrNFe->EventoNFe->LerXMLFromString(sXML); } ADQuery_NFCe->Close(); ACBrNFe->EventoNFe->idLote = _NUM_LOTE; sCNPJ = PegarCNPJ_LOJA(sCodLoja); ACBrNFe->EventoNFe->Evento->Add(); ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->versaoEvento = "4.00"; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->detEvento->versao = "4.00"; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->detEvento->tpAutor = taEmpresaEmitente; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->chNFe = sID_NFCe; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->CNPJ = sCNPJ; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->dhEvento = Now(); ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->tpEvento = teCancelamento; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->cOrgao = 26; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->detEvento->nProt = sProtocolo; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->detEvento->xJust = sJustificativa; ACBrNFe->EventoNFe->Evento->Items[00]->InfEvento->detEvento->cOrgaoAutor= UFtoCUF("PE");//---PE--- ACBrNFe->EnviarEvento(_NUM_LOTE); Já tentei de tudo e ele retorna a rejeição: UF informado no campo cUF não é aceito pelo WebService! Estou configurando o web service para PE e ambos o destinatário e o emitente também são de Pernambuco! A NFCe é enviada e validada com sucesso, mais ao tentar cancelar ele dá este erro mencionado acima! Já tentei atualizar o ACBr, já fiz tudo informado aqui neste POST e nada! Alguem poderia me ajudar?
  2. Ufaaaa! Ontem, depois de quase 3 dias de homologação consegui homologar minha aplicação em C++ Builder para o VeSPague usando o ACBrTEFD e com as novas exigencias do CIELO PREMIA! Fomos a primeira empresa a homologar com CIELO PREMIA usando o VeSPague! Os testes aumentaram bastante por causa desta nova exigencia da CIELO de ter o CIELO PREMIA! Obrigado pela atenção de todos e até a proxima! Qualquer dúvida estou a disposição! Atenciosamente, Augusto Cezar (ZerOne System!)
  3. Daniel, O Moises da VeSpague me passou o texto abaixo: Metodo a ser utilizado para abilitar a aplicação para a Cielo Premia: A automação deve enviar a TAG (transacao_valor_ajuste) no final do buffer de solicitação de VENDA com o valor -> 00. sera retornando num buffer junto com a primeira via do comprovante TEF o valor com desconto na TAG chamada (transacao_valor). Para testar o CIELO PREMIA o valor da transação do cartão deve ser 10.010,02. //------------------------------------------------------------------------------------------------------------ PS. Acredito que não vá causar imcompatibilida pois o novo parâmetro do evento recebe como Default o valor 0(zero). Com isso, mesmo que chame o evento sem a passagem deste parâmetro não dará erro de compilação! E este valor deve ser pego justamente no momento do pagamento! No caso se não quiser colocar um novo parâmetro neste evento, este valor pode ser retornado no parametro 'VALOR' deste evento, pois caso não seja retornado o valor com desconto do CIELO PREMIA na tag transacao_valor ele retorna o valor sem o desconto nesta mesma tag! Antenciosamente, Augusto Cezar.
  4. Daniel, As Units tem tem algumas alterações que foram feitas apenas para ter compatibilidade com o C++ Builder a podem ser ignoradas! AlteraçõesACBrTEFD.rar
  5. Daniel, Segue abaixo as alterações em vermelho realizadas por mim para adicionar ao componente ACBrTEFD para a homologação pela VeSPague da nova implementação do CIELO PREMIA, exigida pela CIELO! Ela foi testada pelo homologador Moises e está conforme o solicitado pela CIELO! //---Nova Declaração da função ProcessarRespostaPagamento com o novo parametro com valor Default = 00--- //---Esta nova declaração deve ser modificada em todos o .PAS que ela for declarada, no caso eu modifiquei em //---ACBrTEFDClass.pas, ACBrTEFDBanese.pas, ACBrTEFDAuttar.pas, ACBrTEFDCliDTEF.pas, ACBrTEFDCliSiTef.pas e ACBrTEFDTicketCar.pas Function ProcessarRespostaPagamento( const IndiceFPG_ECF : String; const Valor : Double; const ValorAjuste : Double = 00) : Boolean; override; //---Função modificada no ACBrTEFDVeSPague.pas------------------------------------------------------------- //---Novo corpo da função ProcessarRespostaPagamento--- Function TACBrTEFDVeSPague.ProcessarRespostaPagamento( const IndiceFPG_ECF : String; const Valor : Double; const ValorAjuste : Double) : Boolean;//---A funcao recebe o ValorAjuste com valor default 0 var ImpressaoOk : Boolean; RespostaPendente : TACBrTEFDResp ; begin Result := True ; with TACBrTEFD(Owner) do begin Self.Resp.IndiceFPG_ECF := IndiceFPG_ECF; { Cria Arquivo de Backup, contendo Todas as Respostas } CopiarResposta ; { Cria cópia do Objeto Resp, e salva no ObjectList "RespostasPendentes" } RespostaPendente := TACBrTEFDRespVeSPague.Create ; RespostaPendente.Assign( Resp ); RespostasPendentes.Add( RespostaPendente ); if AutoEfetuarPagamento then begin ImpressaoOk := False ; try while not ImpressaoOk do begin try ECFPagamento( IndiceFPG_ECF, Valor, ValorAjuste );//---O ValorAjuste é passado para a função ECFPagamento--- RespostasPendentes.SaldoAPagar := RoundTo( RespostasPendentes.SaldoAPagar - Valor, -2 ) ; RespostaPendente.OrdemPagamento := RespostasPendentes.Count + 1 ; ImpressaoOk := True ; except on EACBrTEFDECF do ImpressaoOk := False ; else raise ; end; if not ImpressaoOk then begin if DoExibeMsg( opmYesNo, 'Impressora não responde'+sLineBreak+ 'Deseja imprimir novamente ?') <> mrYes then begin try ComandarECF(opeCancelaCupom); except {Exceção Muda} end ; break ; end; end; end; finally if not ImpressaoOk then CancelarTransacoesPendentes; end; end; if RespostasPendentes.SaldoRestante <= 0 then begin if AutoFinalizarCupom then begin FinalizarCupom; ImprimirTransacoesPendentes; end; end ; end; end; //---Novo corpo da função FazerRequisicao--- Function TACBrTEFDVeSPague.FazerRequisicao( Transacao : String; AHeader : AnsiString = ''; Valor : Double = 0; Documento : AnsiString = ''; ListaParams : AnsiString = '') : Integer ; begin if fpAguardandoResposta then raise Exception.Create( ACBrStr( 'Requisição anterior não concluida' ) ) ; fCancelandoTransacao := (AnsiUpperCase(Transacao) = 'ADMINISTRACAO CANCELAR'); ServicoIniciar ; ReqVS.Servico := 'executar' ; ReqVS.AddParamString( 'transacao', Transacao ) ; if Valor > 0 then ReqVS.AddParamDouble('transacao_valor', Valor); // V&SPague não coleta o Documento if TransacaoOpcao <> '' then ReqVS.AddParamString( 'transacao_opcao', TransacaoOpcao ) ; //---Adicionando a TAG de solicitacao do CIELO PREMIA--- ReqVS.AddParamDouble( 'transacao_valor_ajuste', 00) ; //------------------------------------------------------ if ListaParams <> '' then ReqVS.Params.Add(ListaParams); TransmiteCmd ; Result := RespVS.Retorno; Resp.Clear; if not (Result in [0,1]) then exit ; with TACBrTEFDRespVeSPague( Resp ) do begin if Documento = '' then Documento := IntToStr(fpIDSeq) ; { Adiciona Campos já conhecidos em Resp, para processa-los em métodos que manipulam "RespostasPendentes" (usa códigos do G.P.) } Conteudo.GravaInformacao(899,100, AHeader ) ; Conteudo.GravaInformacao(899,101, IntToStr(ReqVS.Sequencial) ) ; Conteudo.GravaInformacao(899,102, Documento ) ; Conteudo.GravaInformacao(899,103, IntToStr(Trunc(SimpleRoundTo( Valor * 100 ,0))) ); // Grava valor de "Transacao|Sequencia" em 27(Finalizacao) para usar no CNF, NCN Conteudo.GravaInformacao(27,0, Transacao+'|'+IntToStr(ReqVS.Sequencial) ); Resp.TipoGP := fpTipo; end; Req.Clear; Req.Header := AHeader; Req.ID := ReqVS.Sequencial; Req.DocumentoVinculado := Documento; Req.ValorTotal := Valor; end; //--------------------------------------------------------------------------------------------------------- //---Função modificada no ACBrTEFD.pas--------------------------------------------------------------------- //---Nova Declaração da função ECFPagamento com o novo parametro com valor Default = 00--- function ECFPagamento(Indice : String; Valor : Double; ValorAjuste : Double = 00) : Integer; //---Novo corpo da função ECFPagamento--- Function TACBrTEFD.ECFPagamento( Indice: String; Valor: Double; ValorAjuste : Double ) : Integer ;//---Função recebe a variavel ValorAjuste com valor Default = 0 Var Erro : String ; begin fTefClass.GravaLog( fTefClass.Name +' ECFPagamento: Indice: '+ Indice + ' Valor: '+FormatFloat('0.00',Valor) ) ; Result := -1 ; // -1 = Não tratado OnComandaECFPagamento( Indice, Valor, Result, ValorAjuste ) ;//---O ValoAjuste(Valor do Cielo Premia) é passado para o Evendo OnCommandaECFPagamento--- if Result < 1 then begin if Result = 0 then Erro := 'Erro ao executar "OnComandaECFPagamento"' else Erro := '"OnComandaECFPagamento" não tratada' ; fTefClass.GravaLog(Erro); raise EACBrTEFDECF.Create( ACBrStr( Erro ) ) end; end; //--------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------- Function TACBrTEFDVeSPague.CRT( Valor : Double; IndiceFPG_ECF : String; DocumentoVinculado : String = ''; Moeda : Integer = 0 ) : Boolean; var Retorno : Integer ; begin VerificarTransacaoPagamento( Valor ); Retorno := FazerRequisicao( fTransacaoCRT, 'CRT', Valor, DocumentoVinculado) ; if Retorno = 0 then Retorno := ContinuarRequisicao( False ) ; { False = NAO Imprimir Comprovantes agora } Result := ( Retorno in [0,1] ) ; if Result then ProcessarRespostaPagamento( IndiceFPG_ECF, Valor, Resp.ValorTotal )//---É passado agora como parametro 'Resp.ValorTotal' contendo o valor com destonto do CIELO PREMIA--- else FinalizarRequisicao; end; //--------------------------------------------------------------------------------------------------------- No evento do ComandaECFPagamento do componente ACBrTEFD, deve pegar a diferenca do parametros recebidos (Valor - ValorAjuste) e colocar para sair como desconto no ECF quando for Totalizar o cupom! Atenciosamente, Augusto Cezar. AlteraçõesACBrTEFD.rar
  6. RESOLVIDO!!! No momento da solicitação de um pagamento, deve ser enviado a TAG transacao_valor_ajuste com o valor 00; E caso tenha algum desconto o valor já com o desconto é devolvido na TAG transacao_valor ! Eu coloquei para este valor retornado ser passado como mais um parametro do tipo double de valor default 00 no evento OnEfetuaPagamento do componente ACBrTEFD! Ai está a dica! Valeu ai pessoal ! E até a próxima!
  7. Juliomar, Vc poderia me ajudar, o que eu poderia fazer no ACBrTEFD para cumprir o requisito acima exigido pela CIELO para homologação usando VeSPague em modo Background ? Obrigado!
  8. Metodo a ser utilizado para a Cielo Premia: A automação deve enviar a TAG (transacao_valor_ajuste) no final do buffer de solicitação de VENDA com o valor -> 00. sera retornando num buffer junto com a primeira via do comprovante TEF o valor com desconto na mesma TAG chamada (transacao_valor_ajuste). O Valor dado como desconto deve sair no cupom como desconto! Para testar o valor da transação do cartão deve ser 10.010,02. CIELO PREMIA_VeSPague.rar
  9. Alguem já sabe como adequar o ACBrTEFD para esta nova exigencia da CIELO ? Obrigado!
  10. Pessoal, a homologadora a partir do dia 18/06/2012 está exigindo que a aplicação comercial tenha o módulo Cielo Premia! Alguem já implementou isso no ACBrTEFD ou de outra forma que possa me ajudar? Obrigado!
  11. Boa tarde, Estou com mais uma duvida: Na pré-homologação nos testes de desligamento foi exigido mostrar uma mensagen de transações pendentes no momento que está inicializando a aplicação, esta mensagem tem que aparecer antes de pedir o login do usuário VeSpague para entrar no ADM ! Gostaria de saber como detecto que tem transações pendentes usando o ACBrTEFD para poder exibir esta mensagem: Eu achava que era a variavel "TemPendencias" mais não funcionou não! Segue a mensagem que foi solicitada pelos homologadores antes de entrar no ADM "Transacoes Pendentes" Há pelo menos uma transação PENDENTE. Favor realizar o DESFAZIMENTO no menu administrativo-> pedende. Cancelar o cupom fiscal! Obrigado!
  12. Bom dia Juliomar Problema resolvido! Obrigado pela atenção!
  13. Tudo bem Daniel ? Não é erro no ACBr não, eu só gostaria de saber como eu chamo a tela (Cancelar, Ler ou Digitar) quando está pedindo para passar o cartão no PIN-PAD, pois quaqndo eu dou seguindo o demo do ACBRTEFD ele,[ simplesmente cancela a transação, e o pessoal da homologadora disse que precisa aparecer uma janela com as opções (Cancelar, Ler ou Digitar) retornada pelo ACBrCliente!
  14. Em primeiro lugar, parabens pelo projeto ACBr ! Em segundo lugar, segue o problema abaixo: Estou homologando para VeSPague Background usando o ACBrTEFD! Duvida: Como eu faço para digitar o numero do cartão caso o cartão esteja danificado e não passe no PinPad ? Tipo: Pressionar a tecla no momento que está pedindo para passar o cartão e aparecer uma tela com as opções de Cancelar, Ler ou Digitar ! Obrigado!
  15. Existe um teste do roteiro de homologação PAF que diz que o sistema não pode realizar uma venda com a ECF fora de linha! Ele fizeram o seguinte teste: 1-> Ligaram a Elgin X5 (ECF que estava sendo feita o teste) 2 -> Colocaram fora de linha (Pressionando um botão na ECF e apagando o LED laranja denominado 'LINE') 3 -> Tentar realizar uma abertura de cupom e registro de itens Esperado: A o sistema deveria apresentar um erro de Fora de Linha! Resultado ERRADO: A impressora abriu o cupom e e registrou o item! PS. Fui reprovado na análize por causa disso, mais a impressora não retornou nada e funciona normalmente! Gostaria de saber se isso é problema ou carcteristica desta impressora, ou qual procedimento deve ser feito pelo ACBrECF para eu detectar se a impressora está FORA DE LINHA ! Obrigado !
×
×
  • 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.