Ir para conteúdo
  • Cadastre-se

bnobre

Membros Pro
  • Total de ítens

    1.459
  • Registro em

  • Última visita

  • Days Won

    4

Posts postados por bnobre

  1. Olá Italo... Com sua dica parou de dar o problema no projeto ao compilar, agora voltando ao assunto do cancelamento...

    Estava analisando as respostas obtidas no projeto de exemplo do ACBR ao consultar a NFC-e cancelada pela chave, e comparando as mesmas com um arquivo "*-procEventoNFe.xml" gerado normalmente pelo componente ACBR.

    Ao observar o arquivo "*-procEventoNFe.xml" gerado normalmente, vi que ele é todo formado pela tag <procEventoNFe>, exceto apenas pela primeira linha do mesmo, que sempre vem com o conteúdo "<?xml version="1.0" encoding="UTF-8"?>".

    Essa tag <procEventoNFe> também existe na resposta da consulta pela chave, seja no campo RESPOSTAS ou no campo RETORNO COMPLETO WS, e seu conteúdo a princípio é idêntico a mesma tag no arquivo "*-procEventoNFe.xml" gerado normalmente.

    Isso me gerou algumas dúvidas:

    1º - Realmente o arquivo "*-procEventoNFe.xml" sempre é formado na primeira linha com "<?xml version="1.0" encoding="UTF-8"?>" e o restante com a tag <procEventoNFe>?

    2º - Se a resposta da primeira pergunta for SIM, o conteúdo da tag <procEventoNFe> do retorno dado pela consulta (nas guias mencionadas) sempre será igual ao conteúdo da tag <procEventoNFe> do arquivo "*-procEventoNFe.xml" gerado normalmente?

    3º - Se sim para a primeira e segunda pergunta, suponho que para criar o arquivo "*-procEventoNFe.xml" basta apenas gerar um XML em que seu conteúdo na primeira linha tenha o texto "<?xml version="1.0" encoding="UTF-8"?>" e o restante tenha a tag <procEventoNFe> obtida pela consulta, sem a necessidade de utilizar o arquivo "*-ped-eve.xml" como mencionou anteriormente... Estou certo?

    4º - Por fim, se sim para todas as perguntas anteriores... Como obtenho somente o texto da tag <procEventoNFe> do retorno da consulta?

    Desde já agradeço a atenção sempre dada

  2. Olá a todos,

    Italo... Estou tentando efetuar o passo 3 estudando o projeto de exemplo do ACBR, mas sempre que tento compilar o projeto recebo o erro "WARNING: Duplicate resources(s)" e não consigo executá-lo. Tentei atualizar o componente agora, revisão 10481, mas o problema ainda persiste.

    Uso o Delphi 7.

    erro.JPG

  3. 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

  4. 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?

  5. 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

     

  6. 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?

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

  8. 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?

  9. 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

  10. 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
  11. 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?

  12. 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)?

  13. 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

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