Ir para conteúdo
  • Cadastre-se

bnobre

Membros Pro
  • Total de ítens

    1.480
  • Registro em

  • Última visita

  • Days Won

    4

Posts postados por bnobre

  1. Olá a todos,

    Através da função ACBrNFe1.SSL.SelecionarCertificado, por exemplo, conseguimos selecionar o certificado a ser usado. Existe alguma função que retorne a data de validade do certificado que o cliente está utilizando?

    Isso é importante para avisar o mesmo sobre a proximidade de sua expiração.

    Desde já agradeço a atenção

  2. Olá Italo... Conforme disse quase 24 horas depois, finalmente, ambas as notas apareceram canceladas. Creio ter ocorrido um atraso na SEFAZ em anunciar o cancelamento.

    Pois bem,  agora preciso tratar esse tipo de problema para ocorrências futuras... Como consulto se a nota realmente foi cancelada e como recuperar o XML do cancelamento?

  3. Olá a todos,

    Hoje em um de meus clientes ocorreram os erros 12002 em duas tentativas de cancelamentos de 2 notas. Após isso ao tentar cancelar as mesmas só recebo: "Rejeição: Duplicidade de Evento"

    Visualizo a nota na SEFAZ e a mesma se encontra ainda AUTORIZADA. Copiei o certificado para a minha máquina e também tentei cancelar, mesma coisa. Tenho apenas 24 horas para resolver isso... Alguém poderia me dar uma luz?

    Desde já agradeço a atenção de todos

     

  4. Olá a todos,

    Agradeço pelas dicas. Fiz como recomendaram e a princípio a nota que estavam dando o problema calculou certo, vou atualizar nos clientes e ver o dia a dia.

    Mas me surgiu outra dúvida, conforme informei no início desse tópico, a função SimpleRoundTo não funcionou corretamente em seu objetivo de fazer o arredondamento aritmético, uso o Delphi 7. No seguinte tópico (http://www.projetoacbr.com.br/forum/topic/4964-spedpiscofins-arredondamento/) o EMBarbosa afirma que essa função tem problemas.

    Não posso usar o RoundTo para arredondar pois ele efetua o "arredondamento de banqueiro". Estou usando uma função que achei na internet http://gustavohinterholz.blogspot.com.br/2011/11/funcao-de-arredondamento.html

    A questão é... Vocês também possuem esses problemas com arredondamento? Que funções vocês usam para esse fim?

  5. Agora aconteceu outra coisa interessante no valor resultante da linha " (dtm_banco.z_formulas.Fields[0].AsFloat + dtm_banco.z_formulas.Fields[2].AsFloat + dtm_banco.z_formulas.Fields[3].AsFloat) / 100 * dtm_banco.z_nfcevendas_itensvl_total.AsFloat; ", exemplo 0.105.

    Em outro teste que fiz,   vTotTrib  NÃO MAIS arredondou sozinho para 0.11, dessa vez ficando em 0.10. Que loucura.

  6. Analisando uma nota com o tal problema, observei onde ocorre o erro.

    Exemplo, o valor resultante da linha " (dtm_banco.z_formulas.Fields[0].AsFloat + dtm_banco.z_formulas.Fields[2].AsFloat + dtm_banco.z_formulas.Fields[3].AsFloat) / 100 * dtm_banco.z_nfcevendas_itensvl_total.AsFloat; " é 0.105.

    vTotTrib  arredonda sozinho (não sei como) para 0.11 (que é o correto), enquanto que o RoundTo arredonda para 0.10. Olhando em http://www.devmedia.com.br/rotinas-de-arredondamento-round-roundto-simpleroundto-setroundmode-e-getroundmode/21114, observei que o RoundTo faz o arredondamento de banqueiro e por isso tem esse comportamento estranho (hora arredonda pra cima, hora arredonda para baixo).

    Não sei como o vTotTrib arredonda sozinho certo, mas ao ler o texto do link eu tentei usar o SimpleRoundTo, mas ao contrário do que estava escrito, não fez o arredondamento aritmético que aprendemos na escolha, continuando com 0.10.

    Como vocês fazem em suas aplicações para arredondar isso certo? Porque o vTotTrib arredonda certo sem comandos adicionais?

  7. Olá a todos,

    Estou com um problema chato em meu aplicativo na hora de calcular a tag <vTotTrib> dentro de <total>.

    Vira e mexe, quando tem muitos itens na nota, essa tag acaba dando um valor 2 ou 3 centavos menor que o total dos tributos de cada item somados, o que me remete ao erro: Rejeicao: Total do Valor Aproximado dos Tributos difere do somatorio dos itens

    Pois bem... No inicio eu fazia assim:

    with Imposto do
                    begin

    • vTotTrib := RoundTo((dtm_banco.z_formulas.Fields[0].AsFloat + dtm_banco.z_formulas.Fields[2].AsFloat + dtm_banco.z_formulas.Fields[3].AsFloat)/100,-2)* dtm_banco.z_nfcevendas_itensvl_total.AsFloat;
    • total_tributos := total_tributos + vTotTrib; //variavel do tipo Double

    E esse erro acontecia direto, ao analisar o resultado dessas linhas, observei que o vTotTrib recebia corretamente arredondando para 2 casas decimais, exemplo o número 1,567 era recebido como 11,57... Mas por algum motivo a variável "total_tributos" recebia o valor 1,567, ocasionando em diferenças de mais de 0,01 com muitos itens e rejeição posterior.

    Sem saber porque isso ocorria, tentei uma nova abordagem, e estou fazendo assim agora:

    • vTotTrib := (dtm_banco.z_formulas.Fields[0].AsFloat + dtm_banco.z_formulas.Fields[2].AsFloat + dtm_banco.z_formulas.Fields[3].AsFloat) / 100 * dtm_banco.z_nfcevendas_itensvl_total.AsFloat;
    • total_tributos := RoundTo(total_tributos + vTotTrib,-2);

    Se observarem, tirei o RoundTo da primeira linha. Fiz isso porque observei que usando ele ou não, por algum motivo, sempre recebo o valor arredondado para 2 casas decimais, CREIO que isso seja feito internamente pelo componente.

    Na linha debaixo, forcei arredondar para duas casas, já que ele não recebia o valor arredondado. Com isso fiquei na expectativa de os valores passarem a bater certo, o que realmente ocorreu em testes que realizei reproduzindo notas das quais tive tal problema.

    Isso diminuiu drasticamente a ocorrência desse erro, mas não o eliminou totalmente. Ainda ocorre com notas onde possuem muitos itens, onde ele simplesmente soma menos do que deveria.

    Procurei explicar detalhadamente o problema para que algum amigo possa me indicar como o mesmo faz em seu aplicativo.

    Desde já agradeço a atenção

  8. Olá Antônio, tudo bom?

    Não sei se contribui, mas eu estava com o mesmo problema que você após uma atualização no componente, apesar de eu instalar pelo ACBRInstall.

    A falta desse pacote 'frce' no meu caso, ocorreu porque o Fortes versão 4 agora usa um instalador que tem esse pacote e creio que os DANFEs do ACBR estão sendo desenvolvidos sobre o mesmo. Resolvi removendo o Fortes e o reinstalando com a última versão disponível no site, a qual possui o instalador que mencionei.

    Abraços

    • Curtir 1
  9. Régys... Estava repassando o vídeo aqui na minha mente e relembrei sobre a questão de aumentar o tempo do Timeout, que na DLL da daruma são 10 s por padrão. Você,assim como eu, usa o envio SINCRONO em suas NFC-es, mas não tem o problema de BURACO NEGRO que ocorre comigo.

    Portanto surgiu a seguinte dúvida: Aumentar o tempo de timeout pode minimizar tal problema? Se sim, como ajustar isso no componente e qual tempo você usa em suas aplicações?

  10. Eu prefiro tratar os codigos de retorno:

             (pos('12007 - ', E.Message.ToUpper) > 0) or // erro de conexão
             (pos('12002 - ', E.Message.ToUpper) > 0) or // timeout
             (pos('12029 - ', E.Message.ToUpper) > 0) or // limite de tempo de conexão
             (pos('ERRO NAO CATALOGADO', E.Message.ToUpper) > 0) then // erros de tratamento do webservice

    Acho que por aqui matamos.

    Para fechar bem Régys...

    Sei que o 12002 é do timeout, pois sempre que tenho essa problemática, é com esse código. Pela leitura de suas descrições acima, o 12007 seria o de falha de internet. Estou certo?

    E em que categoria entra o 12029, falha de internet ou timeout (buraco negro)?

  11. Mas se entendi bem, o xml que ficou no banco tem a chave de acesso diferente da que está autorizada na sefaz, neste caso não atualiza. Correto?

    Não tem porque eu MANUALMENTE atualizo a chave e o XML depois que consulto a nota e checo que ela foi emitida ONLINE

  12. Acho que "matei" o problema através do vídeo https://www.youtube.com/watch?v=znVzIe8T4PE. E a solução é mais uma questão de não observar o óbvio do que pode ser feito.

    Se observarem o vídeo e trazerem a nossa realidade do ACBR, a contingência só pode acontecer através de 2 motivos:

    1 - Falta de internet

    2 - Timeout (ou o tal BURACO NEGRO citado no vídeo)

    No caso da falta da internet é fácil, emite em contingência e pronto. Pois temos a certeza que a nota não foi autorizada.

    No caso do Timeout, não sabemos o que aconteceu. O problema está no tratamento que damos a ela, pois nós emitimos ela em contingência, entregamos para o cliente e REZAMOS para que ela realmente não tenha sido autorizada. O que o Claudenir faz no vídeo é uma grande "sacada". Como ele não sabe o que aconteceu, ele pula o número e já emite direto em contingência, para ter certeza que essa nota realmente não foi autorizada. Aí depois ele checa o que aconteceu com a anterior, se autorizou então CANCELA, se não, INUTILIZA. Pronto.

    Cliente com chave certa, QR Code certo, além de nossa aplicação está com a base certa.

    Acho que fechamos a problemática.

    Agora surgiu outra... Como diferenciar o erro se é de internet ou de timeout (BURACO NEGRO)?

    • Curtir 3
  13. Olá flavio80s... Sobre seu comentário:

    Por "Assíncrono" eu entendo "Contingência". Estou certo?

    Está errado. Segue abaixo:

    O método de enviar NFCe   Sincrono   , é o modo em que ao enviar o XML da Nota, o servidor já retorna a resposta se a nota foi autorizada ou rejeitada na mesma requisição. Neste formato de envio é possível enviar apenas um lote com uma nota.

     

    O método de enviar NFCe   Assincrono   (EnviarNF) é o modo convencional, igual ao do NFe, onde o usuário envia um lote de NFCe, contendo no máximo 50 notas. Com o lote enviado, o servidor retorna que o lote está em processamento. Para verificar se as notas foram realmente autorizadas é necessário fazer uma consulta de recibo.

     

    Fonte: https://ciranda.me/tsdn/base-de-conhecimento/post/componente-nfc-e-enviarnfcesincrono-e-enviarnfceassincrono

    Portanto na verdade os mesmos problemas que terei em relação a internet no modo SINCRONO, também terei no modo ASSINCRONO, mas ao meu ver, com uma menor complexidade de tratamento.

    Observe, no primeiro (Sincrono) eu envio e já recebo a resposta se deu tudo certo ou não. Se deu algum problema envio em CONTINGÊNCIA (envio offline e imprimir duas vias - Cliente e Estabelecimento) e continuo vendendo.

    No segundo (Assincrono) eu tenho que enviar, consultar o recibo e só depois, da mesma forma, checo se deu algum problema e envio em CONTINGÊNCIA e continuo vendendo.

    • Curtir 2
  14. Neste caso eu acho que não tem jeito. Pois se a nota chegou e você não teve retorno e emitiu a nota em contigencia e o cliente saiu com a chave de contigencia, não há o que fazer. Isso só tem como evitar se você trabalhar somente de modo síncrono o que é totalmente o inviável no ponto de venda ou totalmente de modo assincrono o que eu não sei se é permitido. Acho que como a nfce ainda esta engatinhando talvez surja uma maneira de resolver. Hoje não vejo como.

    Caro magnosystem, grato pela resposta.

    Mais tem um detalhe, eu só trabalho nos PDVs em modo SINCRONO e mesmo assim tenho esse problema, em todos os meus clientes. É relativo, com a internet boa a incidência é menor, mas com a internet ruim (por exemplo o 3G que aqui é péssimo) a incidência é bem maior.

    Outro detalhe, assim como o Régys questionou... Porque é inviável trabalhar nos PDVs somente em modo síncrono???

  15. Consegui contato com eles. Me responderam rapidamente... Segue problema abaixo:

    Não, a tag não foi preenchida corretamente.

     

    Essa tag deve conter a data e hora da emissão, seguida do indicador do fuso horário. Para o horário de Brasília, o indicador deve ser “-03:00” no horário normal, e “-02:00” no horário de verão.

     

    A figura abaixo mostra o XML que foi transmitido. Vocês podem ver que o indicador do fuso horário está informado como “-03:00” no horário de verão. É isso que está causando o problema.

     

    Vocês devem corrigir o preenchimento dessa tag, em seu sistema.

    Portanto, como corrijo esse indicador do fuso horário?

×
×
  • 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.