Ir para conteúdo
  • Cadastre-se

Destak

Membros Pro
  • Total de ítens

    311
  • Registro em

  • Última visita

Tudo que Destak postou

  1. Não testei pq se tiver q verificar se o ultimo digito é = 5 ai ja não é a solução adequada, bom pelo visto então o jeito é criar uma nova função mesmo, acredito que da para usar com base a dai fazer os ajustes nela gerando uma nova que atenda a segunda condição.
  2. Entendi essa função não resolve, O ideal é ter uma função que faca isso automaticamente, que trabalhe como definido na segunda condição que descrevi no primeiro post desse topico ou seja se o ultimo numero for = 5 e o anterior a ele for par ele deve truncar mas se for impar entao deve arredondar. Vou pedir ajuda no Discord quem sabe alguém la ja passou por isso ou atende esse mesmo provedor/cidade em questão.
  3. Ok partindo então que eles usam essa regra, conhece ou pode me indicar uma função que trate isso dessa forma? Porque de vdd melhor eu ja resolver pois contato com provedor de NFSe quem atua nisso sabe como funciona é um parto contatar e ou resolver algum problema com a maioria deles, isso quando conseguimos algum contato direto. Se alguem tiver uma função ai p indicar que trate isso como nessa segunda condição ja resolve.
  4. Boa tarde, Pessoal é o seguinte, vejam o exemplo Valor da NFSe R$ 50,00 e ISS 4,45% = R$ 2,225(resultado da calculadora do Windows) de imposto tenho a opção em meu sistema de arredondar, truncar ou não fazer nada apenas pegar o calcula direto como feito na calculadora o que tenho percebido que nesse caso ele sempre arredonda ou seja o valor do ISS fica R$ 2,23. O problema é que somente nesse provedor dessa cidade tenho tido esse problema recorrente que se a terceira casa decimal depois da virgula for = 5 entao o provedor retorna o erro de que o valor do ISS não bate, dai se eu truncar o valor que informo para o componente passando R$ 2,22 dai o provedor aprova a emissao da NFSe. para arredondar uso a seguinte função RoundTo5(ValorISS, -2); function RoundTo5(Valor: Double; Casas: Integer): Double; var xValor, xDecimais: String; p, nCasas: Integer; nValor: Double; begin nValor := Valor; xValor := Trim(FloatToStr(Valor)); p := pos(',', xValor); if Casas < 0 then nCasas := -Casas else nCasas := Casas; if p > 0 then begin xDecimais := Copy(xValor, p + 1, Length(xValor)); if Length(xDecimais) > nCasas then begin if xDecimais[nCasas + 1] >= '5' then SetRoundMode(rmUP) else SetRoundMode(rmNearest); end; nValor := RoundTo(Valor, Casas); end; Result := nValor; end; Vejal essa informação que peguei no Google: Arredondando Números Condições Procedimentos = 5 (i) Se ao 5 seguir em qualquer casa um algarismo diferente de zero, aumenta-se uma unidade no algarismo a permanecer. = 5 (ii) Se o 5 for o último algarismo ou se ao 5 só seguirem zeros, o último algarismo a ser conservado só será aumentado de uma unidade se for ímpar. Sera que esse provedor esta trabalhando com essa segunda condição, como posso resolver isso?
  5. Boa note, Problema corrigido obrigado e pode fechar o tópico.
  6. Boa note, Segue em anexo. Todos XMLs.zip
  7. Boa noite, Ao usar o método ACBrNFSeX1.ConsultarLoteRps(Protocolo,Lote) a consulta é realizada com sucesso porem esse provedor não retorna todos os dados da NFSe ele retorna somente um resumo, sendo assim se faz necessário fazer uma ACBrNFSeX1.ConsultarNFSeporRps(NumeroRps, SerieRps, TipoRps, CodVerificacao) para obter o XML completo da NFSe até ai ok. O problema é que ao fazer a ConsultarLoteRps o componente cria um indice [0] e ao fazer a ConsultarNFSeporRps ele cria um novo indice [1] indicando então que teria duas NFSe carregadas e não uma, visto que a primeira consulta do tipo lote não retornou a NFSe completa. Acho que a maneira mais pratica de resolver isso seria que ao realizar uma consulta qq que seja se o que tiver carregado no componente não for um XML completo então limpa o indice antes de realizar a consulta. Sei que nos mesmo podemos limpar o indice antes de realizar a consulta porem muitas vezes usamos os próprios dados carregados no componente para realizar a consulta, para não ter que criar novas variáveis nem novos campo no BD. O ideal seria padronizar esse comportamento para todos os provedores, seria muito util para quem atende varias cidades/provedores diferentes como eu.
  8. Boa tarde, Ok fiz isso e o erro foi resolvido, obrigado e pode fechar o topico.
  9. Boa tarde, É a primeira NF-e do contribuinte e o erro que ocorre é o 12030, ja verifiquei tudo, é win 10 atualizado, as configurações SSL e os arquivos XMLs e de imagem estao em anexo. 1-env-lot.xml 1-rec.xml 310009747281351-ped-rec.xml 31220605800387000184550010000000011900070580-ped-sit.xml 31220605800387000184550010000000011900070580-sit.xml
  10. Boa tarde, Ao tentar emitir usando o metodo meLoteAssincrono recebo o erro de access violation que ocorre na unit ISSDSF.Provider na linha 599, segue os arquivos XMLs e as imagens em anexo. Para complementar informo que estou tentando enviar um unico RPS no lote e esse unico RPS ja ja foi emitido anteriormente, sendo assim o correto era ele retornar o erro de que o RPS ja foi emitido. Se eu fizer a ACBrNFSeX1.ConsultarLoteRps(Protocolo,Lote) informando o Protocolo/lote original do RPS ele retorna a NFSe normalmente e se eu fizer essa consulta com o Protocolo/lote de agora quando ocorre o acess violation ele me informa o erro correto que o RPS ja foi emitido anteriormente inclusive nessa hora nessa msg ele me da o Protocolo/lote original do RPS. Em suma o access violation ocorre ao usar o metodo meLoteAssincrono que contem um RPS ja emitido anteriormente. 1-env-lot.xml 1-env-lot-soap.xml 1-rec.xml 1-rec-soap.xml
  11. Boa noite, Realizei o que pediu e deu certo, mais uma vez obrigado @Italo Giurizzato Junior e pode fechar o tópico, havendo outras questões abro outro.
  12. Bom dia, Sim eu sei que o componente novo não faz uso direto, eu carrego o XML original para utilizar dados do XML para realizar a consulta inicial da NFSe, faço isso para não ter que criar novos campos no BD e nem novas variáveis na procedure.
  13. Boa noite, Agora sim esta funcionando corretamente a parte de emissão obrigado, porem realizando novos testes o de cancelamento verifiquei que ocorre algo parecido, funciona assim: Para cancelar uma NFS-e eu carrego no componente o XML original do ato da emissão para poder utilizar as informações solicitadas no metodo ACBrNFSeX1.CancelarNFSe(InfCancelamento) e inclusive faco uma consulta ao provedor antes de usar o metodo para verificar se a NFS-e derepente ja não foi cancelada via site pelo usuario até ai ok. Reparei que se eu fizer a consulta pelo metodo ACBrNFSeX1.ConsultarNFSeporNumero(NumeroNFSe) ai o componente fica com 2 indices da mesma NFSe o primeiro é o que eu carreguei para usar as informações e o segundo é o resultado da consulta porem se trata da mesma NFSe. Mas se eu fizer a consulta pelo metodo ACBrNFSeX1.ConsultarNFSeporRps(NumeroRpsLocal,SerieRpsLocal,TipoRpsLocal,CodVerificacaoLocal) isso não ocorre ou seja o componente fica smente com um indice o do resultado da consulta, o ideal como tenho falado seria padronizar o comportamento do componente.
  14. Boa noite, Segue em anexo todos os XMLs solicitados da questão (1) e também 3 imagens onde as descrevo agora para ajudar a entender o problema: Imagem 1 - Apenas alimentei um RPS no componente e o mesmo ja criou um indice "0" no componente como se ele ja tivesse uma NFSe nele. Imagem 2 - Após eu enviar o lote para o provedor, aguardo 30 segundos e reconsulto esse lote para saber se ja foi processado, dai ele foi processado com sucesso e agora o componente tem dois indices sendo que o indice "0" não tem NFSe e o indice "1" tem a NFSe ok que foi processada com sucesso. Imagem 3 - Mostra justamente o descrito acima indice "0" gerando erro e indice "1" com a NFSe correta com sucesso. os XMLs em anexo são exatamente o resultado fiel da sequencia que descrevi acima tabem. XMLs_da_sequencia_descrita.zip
  15. Boa tarde, De forma geral o que tenho percebido é que para esse provedor o componente esta tendo um comportamento diferente em relação a os outros provedores mas só que nas mesmas exatas situações e é isso que não estra certo, vou explicar veja: Na questão (1) quando eu alimento um RPS no componente para qq provedor que não seja o de São Paulo/SP ele não adiciona um índice de NFSe, isso só ocorre nele, o correto é isso ser padronizado pois se trata de um comportamento padrão. Na questão (2) descobri o problema, ocorre que quando faço um envio ACBrNFSeX1.Emitir(IntToStr(NumLote),meLoteAssincrono,False) para esse provedor contendo um único RPS que ja foi emitido anteriormente, por tanto consequentemente ele retorna erro de que o RPS ja foi emitido (Segue em anexo os XMLs desse exemplo) ele retorna a propriedade ACBrNFSeX1.WebService.Emite.Sucesso como True, ja em qq outro provedor se eu fizer isso o componente retorna como False que é o correto pois o lote foi recusado, não foi nem aceito para processamento, foi recusado de imediato. @Italo Giurizzato Junior acredito que esses comportamentos e retornos de propriedades em circunstancia iguais devem ser exatamente os mesmos para todos os provedores, dai o grande benefício de usar um componente. 1-env-lot.xml 1-env-lot-soap.xml 1-rec.xml 1-rec-soap.xml
  16. Bom dia, São dois os problemas encontrados nesse provedor com o componente novo, mas ainda não testei todos os serviços disponíveis: 1. Em consulta ao usar o metodo ACBrNFSeX1.ConsultarNFSeporRps(NumeroRps, SerieRps, TipoRps, CodVerificacao) obtenho o XML na NFSe corretamente com sucesso no indice 0 do componente ACBrNFSeX1.NotasFiscais.Items[0] e se eu der um ACBrNFSeX1.NotasFiscais.Count ele retorna 1 normalmente como deve ser, até ai ok é assim mesmo que deve ser. Mas se antes de eu fazer o mencionado acima eu alimentar o componente com um RPS então o XML na NFSe vai vir no indice 1 do componente ACBrNFSeX1.NotasFiscais.Items[1] e se eu der um ACBrNFSeX1.NotasFiscais.Count ele retorna 2 o que esta errado pois existe apenas uma NFSe e não duas, o componente esta entendendo o RPS como uma NFSe nessa questão é esse o problema. 2. Em emissão ao usar o metodo ACBrNFSeX1.Emitir(IntToStr(NumLote),meLoteAssincrono,False) o componente não retorna o numero do protocolo na propriedade ACBrNFSeX1.WebService.Emite.Protocolo ela vem vazia.
  17. Bom dia, Ótimo atualizei, reinstalei o ACBr e agora a principio em todos os testes que pude fazer ficou 100% tudo ok obrigado e pode fechar o topico.
  18. Bom dia, Eu estava atribuindo retNenhum por isso o erro na emissão, agora a emissão deu certo obrigado. Porem fazendo teste de cancelamento notei que o cancelamento é realizado com sucesso mas ao fazer uma nova consulta da mesma NFSe o componente me da propriedade ACBrNFSeX1.NotasFiscais.Items[0].NFSe.SituacaoNfse = TStatusNFSe.snNormal ao inves de = TStatusNFSe.snCancelado e se eu tenta cancelar novamente recebo o erro de que a NFSe ja foi cancelada. Notei que no XML da NFSe de retorno apos essa nova consulta não esta vindo informação de cancelamento, segue os XMLs para analise. 1054-can.xml 1054-can-soap.xml 1054-ped-can.xml 1054-ped-can-soap.xml 000000000001054000000000000000000001-lista-nfse-con.xml 000000000001054000000000000000000001-lista-nfse-con-soap.xml 000000000001054000000000000000000001-con-nfse.xml 000000000001054000000000000000000001-con-nfse-soap.xml
  19. Boa noite, Obrigado li o topico agora. Boa noite, Ok fiz teste usando RecepcionarSincrono e estou tendo o erro 73 "Erro no RPS número 1.Campo Regime do prestador, diferente do cadastrado na prefeitura." porem estou informando os regime correto e no XML de envio a tag <Regime/> esta indo vazia, mesmo eu informando o regime, segue em anexo os XMLs para analise. 1-lista-nfse-sinc.xml 1-lista-nfse-sinc-soap.xml 1-env-lot-sinc.xml 1-env-lot-sinc-soap.xml
  20. Boa noite, O cliente usa o certificado digital A3 e se encontra em outra cidade onde não tenho acesso fisico, por isso não consigo debugar em detalhes, porem vamos la: Ao tentar ACBrNFSeX1.Emitir(IntToStr(NumLote),meLoteAssincrono,False) não retorna nada, não é salvo ao menos os XMLs de retorno com msg de erro ou algo do tipo, não retorna nada. Segue em anexo os XMLs de envio e tambem todos os manuais que peguei no site do provedor/prefeitura. 1-env-lot.xml 1-env-lot-soap.xml Manuais do site.zip
  21. Este "if ACBrNFSeX1.NotasFiscais.Count > 0 then" serve para saber se tem um RPS não uma NFSe carregada no componente? No caso estou perguntando sobre o RPS, visto que ao fazer uma ConsultarNFSeporRps e o retorno é false entao o RPS simplesmente some do componente entendeu?
  22. Boa tarde, Com essa unit deu certo o componente carregou as informações da NFSe do XML corretamente sem erro, pode subir para o SVN. Ja sobre a outra questão, qual o IF correto para saber se tem um RPS carregado no componente eu posso usar sem que ocorra o erro de inacessible value?
  23. Segunda questão, Apos eu contornar esse problema (provisoriamente até ver como ficara isso) informado acima, tentei emtir usando o metodo Gerar e verifiquei que a NFSe foi emitida com sucesso, porem deu um erro e o mesmo não carregou o XML corretamente no componente, segue os XML de envio e de retorno com sucesso contendo a NFSe nele, mas o componente não carregou em suas propriedades. 1-ger-nfse.xml 1-ger-nfse-soap.xml 1-lista-nfse-ger.xml 1-lista-nfse-ger-soap.xml
  24. Bom dia, Ok então agora antes das minhas verificações estou usando esse "if ACBrNFSeX1.NotasFiscais.Count > 0 then" recomendado por voce, até ai ok resolveu o problema de inacessible value, porem denovo somente nesse provedor ocorre o seguinte problema: Apos eu fazer uma ConsultarNFSeporRps e o retorno é false, o componente simplesmente limpa o RPS que eu havia acabado de carregar antes da consulta, repito, isso so ocorre com esse provedor, nesse caso voce pode verificar o porque somente com esse provedor isso ocorre ou a outra solução seria igual a anterior verificar se tem um RPS carregado senão carrego novamente o RPS q acabou de se perder apos a ConsultarNFSeporRps. Nesse qual o IF correto para saber se tem um RPS carregado posso usar sem que ocorra o erro de inacessible value?
×
×
  • 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.