Ir para conteúdo
  • Cadastre-se

Destak

Membros Pro
  • Total de ítens

    273
  • Registro em

  • Última visita

Tudo que Destak postou

  1. Pois é então, Sei que essa questão de emissão de NFSe é um caos devido a quantidade de provedores/prefeituras em nosso pais, esses dias o @Daniel Simoes disse no video em que falava do mais novo ultimo projeto piloto para NFSe nacional que é uma bagunça e é mesmo sem duvida por diversos, varios, muitos motivos que nem vamos gastar nosso tempo para descrever aqui. Pois bem, tem algumas mazelas desse caos que o componente pode ajudar muito, um exemplo é esse caso de agora, o ideal é padronizar o comportamento do componente para situações exatamente iguais independente do provedor. No caso especifico desse topico poderia deixar padrão para todos os provedores que ao consultar o lote, ele sempre carregue as propriedades acima menciondas por voce, mesmo que o provedor X retorne a NFSe completa nessa consulta e claro se retornar a NFSe completa dai popular a lista de notas normalmente como ja ocorre hoje. Padronizando esse comportamento no componente para todos os provedores, podemos comparar e automatizar nosso codigo para comparar e fazer as ações necessarias conforme o retorno. Mas ai @Italo Giurizzato Junior voce pode ver o que é melhor fazer, sempre carrega ou não carrega as propriedades acima descritas por voce, o que precisamos é padrão comportamento igual do componente.
  2. Boa tarde, Para os demais provedores em que ao consultar o lote retorna o XML completo essas propriedades acima citadas por você são preenchidas também pelo componente?
  3. Bom dia, Desculpe a solicitação mas alguma novidade a vista?
  4. 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, porem nesse resumo tem a tag <NumeroNFe>51183</NumeroNFe> a qual o compnente não esta carregando na propriedade ACBrNFSeX1.NotasFiscais.Items[0].NFSe.Numero, segue os XMLs em anexo. 4968937-con-lot.xml 4968937-con-lot-soap.xml 4968937-lista-nfse-con-lot.xml 4968937-lista-nfse-con-lot-soap.xml
  5. Boa tarde, Se eu usar ponto ao invés de virgula retorna o erro de invalid point value ou algo assim não lembro agora, mas de qq forma vou esperar aparecer a próxima NFSe de produção do cliente apresentar o problema relatado e ai trago aqui novamente o caso concreto, enquanto isso vou pesquisar mais sobre a segunda condição de arredondamento, o que pelo que vi parece uma novidade para todos nos, favor não fechar o tópico por enquanto.
  6. Boa tarde, Ao fazer uma ACBrNFSeX1.ConsultarNFSeporRps(NumeroRpsLocal,SerieRpsLocal,TipoRpsLocal,CodVerificacaoLocal) de um RPS onde a NFSe ja foi cancelada anteriormente ocorre o erro de exceção ''28/06/2022' is not a valid date and time' segue as imagens e XMLs em anexo, pelo que vi o XML é baixado com sucesso corretamente mas o componente parece não estar tratando algum dado e por isso ocorre a exceção. 69MY-comp-nfse.xml 69MY-comp-nfse-soap.xml 69MY-con-nfse-rps.xml 69MY-con-nfse-rps-soap.xml
  7. Bom dia, Ao usar o metodo ACBrNFSeX1.Emitir(IntToStr(NumLote),meLoteAssincrono,False) o lote é recebido com sucesso pelo provedor porem o componente retorna a propriedade ACBrNFSeX1.WebService.Emite.Sucesso = False o que não esta certo pois o lote foi recebido com sucesso. segue em anexo todos os XMLs. 1-env-lot.xml 1-env-lot-soap.xml 1-rec.xml 1-rec-soap.xml
  8. @Italo Giurizzato Junior olha que curioso, reparei que quando uso essa minha função alterada o componente esta gerando a tag ValorIss>0.00</tc:ValorIss> então decidi "martelar" a propriedade do componente ValorIss := StrToFloat('1,34') e ocorre a mesma coisa o componente gera a tag zerada, seguem em anexo todos os XMLs. 1-env-lot.xml 1-env-lot-soap.xml 1-rec.xml 1-rec-soap.xml 9fdc9c7f67ef49d78a0b524df35ba368-con-lot.xml 9fdc9c7f67ef49d78a0b524df35ba368-con-lot-soap.xml 9fdc9c7f67ef49d78a0b524df35ba368-lista-nfse-con-lot.xml 9fdc9c7f67ef49d78a0b524df35ba368-lista-nfse-con-lot-soap.xml
  9. Boa noite, Então precisa ver que se o numero antes do 5 for impar dai ele arredonda para cima mas se for par dai ele arredonda para baixo, nesse trecho de codigo seu não esta sendo considerado isso.
  10. Boa noite, Fiz uma alteração na RoundTo5 para poder atender a segunda condição porem ela esta remarcando para baixo veja que o trecho do codigo que eu acrescentei esta em negrito: function RoundTo5Cond2(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') and odd(StrToInt(xDecimais[nCasas])) then SetRoundMode(rmUP) else if (xDecimais[nCasas + 1] = '5') and not odd(StrToInt(xDecimais[nCasas])) then SetRoundMode(rmNearest) else} if xDecimais[nCasas + 1] >= '5' then SetRoundMode(rmUP) else SetRoundMode(rmNearest); end; nValor := RoundTo(Valor, Casas); end; Result := nValor; end; O caso concreto é valor da NFSe R$ 30,00 ISS 4,45% = R$ 1,335 usando essa função acima ele da como result R$ 1,33 onde estou errando?
  11. 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.
  12. 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.
  13. 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.
  14. 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?
  15. Boa note, Problema corrigido obrigado e pode fechar o tópico.
  16. 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.
  17. Boa tarde, Ok fiz isso e o erro foi resolvido, obrigado e pode fechar o topico.
  18. 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
  19. 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
  20. 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.
  21. 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.
×
×
  • 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.