Ir para conteúdo
  • Cadastre-se

adriano.quintino

Membros Pro
  • Total de ítens

    62
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que adriano.quintino postou

  1. Pelo que entendi, se o componente estiver parametrizado pra confirmar a transação ao concluir, conforme for inserindo os cartões e digitando a senha, então o usuário quiser cancelar algum pagamento, deverá ser feito o cancelamento de tudo. Porém, é possível configurar o componente pra deixar a transação pendente e então seria possível cancelar pagamento por pagamento individualmente. O problema que estou tendo, é porque configurei o componente pra confirmar as transações ao serem concluídas, porém, o usuário pressiona ESC pra retornar a tela anterior, é exibido a tela pra digitar a senha gerencial 9999, mas muitos usuários não sabem dessa senha e pressionam ESC várias vezes e então o componente está apagando tudo que está em memória e o arquivo, a transação não é cancelada e fica impossível cancelar ela posteriormente. Minha pergunta é: seria possível cancelar todas as transações ou cada uma individualmente, mesmo que estivesse configurado pra confirmar as transações, mas que não solicitasse a senha gerencial nem perguntasse se o cartão é débito ou crédito ? Isso facilitaria bastante a vida do usuário e a nossa também, rsrs.
  2. Me desculpa @Victor H. Gonzales - Panda. Houve um equívoco da minha parte. Realmente o código está de acordo com o que enviei acima. Talvez no momento em que fiz a atualização, ainda não estava disponível a versão mais recente.
  3. Olá! boa noite! Pelo que percebi no código que foi enviado pro repositório, não há mudança alguma referente as modificações que eu fiz nos arquivos em anexo acima. Então vou permanecer com o meu código que está funcionando sem problemas e mantendo o tratamento dos valores de multa e juros dentro de cada classe de banco correspondente. Não vou fazer o tratamento dentro do meu projeto, pois deixaria o código pra gerar boleto e arquivo de remessa muito extenso, já que o tratamento deve ser feito pra cada banco individualmente. Desde já agradeço a atenção! Att.: Adriano Quintino
  4. Muito obrigado @Victor H. Gonzales - Panda Vou fazer a atualização do source e farei os devidos testes.
  5. Oi Italo! O problema estava no modo assíncrono. Daí eu vi no grupo Pro que deve ser enviado a partir de agora através do modo síncrono, foi resolvido. Muito obrigado!
  6. Olá! Estou obtendo este retorno de erro ao executar a função de Enviar do MDFe. Project Zyon.exe raised exception class EACBrDFeException with message 'Erro Interno: 0 Erro HTTP: 404 URL: https://mdfe-homologacao.svrs.rs.gov.br/ws/mdferetrecepcao/MDFeRetRecepcao.asmx <!DOCTYPE html> <html> <head> <title>The resource cannot be found.</title> <meta name="viewport" content="width=device-width" /> <style> body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px} b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px} H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red } H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon } pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt} .marker {font-weight: bold; color: black;text-decoration: none;} .version {color: gray;} .error {margin-bottom: 10px;} .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:pointer; } @media screen and (max-width: 639px) { pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; } } @media screen and (max-width: 479px) { pre { width: 280px; } } </style> </head> <body bgcolor="white"> <span><H1>Server Error in '/WS' Application.<hr width=100% size=1 color=silver></H1> <h2> <i>The resource cannot be found.</i> </h2></span> <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif "> <b> Description: </b>HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. &nbsp;Please review the following URL and make sure that it is spelled correctly. <br><br> <b> Requested URL: </b>/ws/mdferetrecepcao/MDFeRetRecepcao.asmx<br><br> </font> </body> </html>
  7. Bom dia Daniel! Sim, testei em produção e ficou 100%. Talvez vocês não tenham relato porque os demais programadores atribuem manualmente o valor no campo "CodigoMora", onde "A" é pra Valor R$ e "B" pra %. Penso eu que seja desnecessário colocar a condição pra cada banco ao gerar a remessa, ex.: if Bradesco then "B" else if Sicredi then If ValorFixo then "A" else "B", etc. Então, creio que seria mais viável colocar dentro de cada classe de banco correspondente para automatizar, já que é possível fazer esta automatização.
  8. Fiz correções pertinentes à cobrança de Juros e Multa no boleto do Sicredi e do Bradesco segundo o layout CNAB400 de ambos os bancos. Gostaria muito que analisassem e se possível, subir pro repositório. O componente do Boleto existe duas propriedades CodigoMulta e CodigoMoraJuros, onde programamos o tipo de juros e multa a ser cobrando, porém, o Bradesco por exemplo só aceita Multa em % e a multa só é permitida em R$ diário, então criei rotina para conver o valor de juros em valor diário. Ou seja, independente do parâmetro que o usuário selecionar na propriedade CodigoMoraJuros, o sistema irá converter o valor informado no campo "ValorMoraJuros" para valor diário. No boleto do Sicredi foi feito algo semelhante pra calcular a multa, porém, Sicredi aceita multa tanto em R$ quanto em %, mas a propriedade "CodigoMora" estava recebendo somente o valor "A" para multa em R$. Então coloquei uma rotina pra pegar o tipo de multa de acordo com o parâmetro CodigoMulta e os juros permite tanto R$ e % somente diariamente, então coloquei a rotina pra converter o valor informado no campo "ValorMoraJuros" para valor diário. ACBrBancoBradesco.pas ACBrBancoSicredi.pas
  9. Bom dia! @Daniel Simoes agora o componente ficou perfeito! Valew, obrigado. Eu realmente não tinha me atentado ao "LimparRespostasTEF" e só estava faltando ele mesmo no meu código.
  10. Ficou legal @Daniel Simoes, só tem um detalhe agora: Ao inicializar o componente, ele está cancelando a última transação efetuada com sucesso, mesmo que não tenha sido solicitado o cancelamento, pois ele verifica que existe um arquivo de backup na pasta TEF e chama o cancelamento da transação.
  11. Até onde eu sei, segundo os manuais do SiTEF, devemos confirmar a transação anterior em caso de mais de uma forma de pagamento. E também, da forma que está o componente agora, ele só cancela a última transação pendente. Creio que deveria haver uma classe Lista em que o sistema armazenasse nesta Lista todas as transações pendentes, já que pode haver mais de uma transação pendente. O procedimento exigido pela SiTEF é primeiro cancelar as transações que ficaram pendentes de confirmação e posteriormente cancelar as transações vinculadas ao mesmo pedido de venda que foram confirmadas. Atualmente ele só está cancelando a transação pendente. Quando fui fazer minha homologação, eu estava sendo reprovado porque havia 5 transações pendentes, na forma que eu coloquei no fonte do ACBr consegui cancelar todas elas de uma só vez, porém, está ocorrendo memory leak quando entra em alguns códigos retornados da função 130.
  12. Olá! Fiz a atualização do ACBr e realmente funcionou legal a questão da chamada da função 130 recuperando a última transação tef pendente, mas por algum motivo, ainda não tive tempo de olhar o código fonte a fundo, o componente não está mais cancelando transações que foram recém-confirmadas. Ex.: Faz uma venda com 2 ou mais cartões e ao tentar cancelar qualquer um dos cartões, o componente não está conseguindo cancelar. E também, quando houver queda de energia com mais de 1 cartão, a transação que estava pendente o sistema consegue cancelar pela função 130 ao iniciar o componente, já a transação que foi aprovada, ele não consegue mais cancelar. Algum dos colegas que puderem fazer mais testes pra verificar se realmente é uma falha geral ou se é apenas no meu ACBr, ficaremos gratos.
  13. Compreendo. Meu questionamento foi porque o @Daniel Simoes disse que estava tendo dificuldades nos testes, então eu me disponibilizei pra realizar testes, caso quisesse.
  14. Oi @rodrigoogioni te informaram de alguma novidade ? Gostaria que o @Daniel Simoesme enviasse o código que foi alterado pra eu poder fazer os testes, mas até o momento não me enviaram nada também.
  15. Bom dia! @Daniel Simoes nos encaminha as units modificadas que podemos realizar os testes.
  16. Boa tarde! Também estou ancioso para fazer os testes neste código. Gostei da ideia de criar uma classe pra receber as transações pendentes na execução da função 130 e posteriormente cancelar ou aprová-las (conforme a configuração do componente) fazendo uma varredura na classe criada com as pendências sem a necessidade de se criar arquivos de backup das transações pendentes. Quanto ao memory leak mencionado pelo @Daniel Simoes está ocorrendo porque ao descomentar a parte do código dos tipo de campos pra retorno de pendências, alguns códigos daqueles são retornados em transações de vendas e o sistema acaba entrando lá e como o objeto estava sendo criado apenas no retorno 160, gerava exceção de acessó de memória, objeto não criado, por isso eu tive a necessidade de verificar se o objeto já estava instanciado, caso não estivesse, ele seria destruído, porém, o sistema só libera da memória no 1319 que só é chamado na função 130. Separar a função 130 pra uma função própria onde executa, armazena em uma classe de pendentes e em seguida executa a finalização delas, é muito interessante, conforme o @EMBarbosacomentou.
  17. Boa tarde @Daniel Simoes Dê uma olhada na página 18, item 9.1 - Exemplo 1 ou exemplo 2. CliSiTef - Projeto TLS - 1.05.pdf
  18. Eu só não coloquei os parâmetros para proxy porque eu não utilizo, mas caso queiram acrescentar estes parâmetros também é possível. Um detalhe é que estes parâmetros são exigidos nos testes de homologação, pelo menos o Token e o TLSGWP.
  19. Segundo o manual do TLS, temos que passar estes parâmetros ao chamar a função ConfiguraIntSiTefInterativoEx em ParametrosAdicionais
  20. Oi @EMBarbosa. É verdade, pode remover ele. Acabei me esquecendo de retirá-lo. Eu estava utilizando ele pra fazer o loop de cancelamento conforme fosse recebendo os registros pendentes. Daí eu fiz as correções depois e acabei me esquecendo de remover este parâmetro. Segue a correção em anexo ACBrTEFAPICliSiTef.pas
  21. Bom dia @rodrigoogioni Tudo bem ? No caso, estávamos tratando apenas de homologação SiTEF, eu não tratei código de PayGoWeb.
  22. Oi @rodrigoogioni. Sim, eles estão anexados na mensagem logo acima.
  23. Teste realizados junto à SiTEF e finalmente estou homologado. Obrigado a todos! Em especial a @Juliana Tamizou@EMBarbosa@Juliomar Marchetti e @Daniel Simoes pelo brilhante trabalho no código do ACBrTEFAPI e demais componentes, e a toda equipe ACBr. Agora quero homologar no PayGOWeb.
  24. Na classe TACBrTEFAPIDadosTerminal da unit ACBrTEFAPIComum, acrescentei a propriedade TokenRegistro para receber o valor que a SiTEF passar para a empresa. Coloquei apenas pra me atender na homologação. Então, é algo que não precisam levar em consideração, ou então dá pra fazer alguns ajustes, tipo, colocar uma propriedade TipoComunicacaoExterna para receber o valor TLSGWP, como é um valor fixo, eu já deixei no próprio código. Daria pra acrescentar também o proxy, como não é algo que eu uso, não coloquei nada a respeito de proxy. Obrigado @EMBarbosa, aqui funcionou 100%
  25. Boa tarde a todos! Com a ajuda do @EMBarbosa, fiz alguns ajustes nestes arquivos abaixo, porém, as propriedades (TratamentoTransacaoInicializacao e TratamentoTransacaoPendente) do componente ACBrTEFAPI devem estar setado da seguinte maneira (tefopiCancelarOuEstornar e tefpenEstornar) respectivamente para solucionar quedas de energias quando houver 2 ou mais cartões e o problema ocorrer depois de ter sido aprovado pelo menos 1 transação. Assim como está, caso haja uma transação aprovada, o sistema cria o arquivo de backup que deverá ser incluido na lista de Respostas na inicialização do SiTEF e as transações que estão pendentes não irão sobrescrever o backup já criado. Para isso, tive a necessidade de fazer a chamada TefAPI.CarregarRespostasDoDiretorioTrabalho na procedure Inicializar do CliSiTEF, linha 413. Tive a necessidade de criar a propriedade 899-105 para armazenar a informação da propriedade "Confirmar" nos retornos de transações pendentes para o componente dar continuidade nos cancelamentos. ACBrTEFAPICliSiTef.pas ACBrTEFAPIComum.pas ACBrTEFCliSiTefComum.pas ACBrTEFComum.pas
×
×
  • 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.

The popup will be closed in 10 segundos...