Jump to content

click.png

click.png

click.png

click.png click.png click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

BrunoD

Membros
  • Posts

    10
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

BrunoD's Achievements

Rookie

Rookie (2/14)

  • Dedicated Rare
  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done

Recent Badges

1

Reputation

  1. Bom dia @José M. S. Junior, Certo, então vou considerar as correções efetuadas como corretas. Achei outras possíveis correções a Unit ACBrBoletoW_Itau. Neste trecho da procedure RequisicaoJson. Json.Add('nosso_numero').Value.AsString := Copy(NossoNumero, 1, Length(NossoNumero) - 1); Json.Add('digito_verificador_nosso_numero').Value.AsString := Copy(NossoNumero, Length(NossoNumero) - 1, 1); Estava retornando erro no dígito verificador do nosso número e o próprio nosso número ia incompleto na requisição. Então realizei a seguinte alteração: Json.Add('nosso_numero').Value.AsString := NossoNumero; Json.Add('digito_verificador_nosso_numero').Value.AsString := ACBrBoleto.Banco.CalcularDigitoVerificador(Titulos); Na unit ACBrBoletoRet_Itau também foram aplicadas mudanças. Neste trecho da procedure LerRetorno. if not(SucessResponse) then O variável SucessResponse é inicializado como false, e nunca é alterada, mesmo a requisição sendo processada corretamente. A solução básica que encontrei foi verificar se no Json de retorno existe algum código de erro. Caso contrário lê as informações do retorno do JSON. if (AJson.Values['codigo'].AsString <> '') then LerErrosJSON else LerJSONSucesso Ao aplicar a correção acima ocorreram erros de acess violation na Classe TTituloRet que está dentro de ACBrBoletoRetorno. Os campos: FMensagem: TStrings; FInformativo: TStrings; FInstrucoes: TStrings; Não estavam sendo instanciados no Construtor da Classe: constructor TTituloRet.Create; begin FSacadoAvalista := TSacadoAvalistaRet.Create; FSacado := TSacadoRet.Create; end; Ficou assim: constructor TTituloRet.Create; begin FSacadoAvalista := TSacadoAvalistaRet.Create; FSacado := TSacadoRet.Create; FMensagem := TStringList.Create; FInformativo := TStringList.Create; FInstrucoes := TStringList.Create; end; As mesmas alterações foram também adicionadas ao Destroy da Classe: destructor TTituloRet.Destroy; begin FSacadoAvalista.Free; FSacado.Free; FMensagem.Free; FInformativo.Free; FInstrucoes.Free; inherited Destroy; end; Após essas alterações a leitura de um retorno de sucesso estão sendo lidas corretamente.
  2. Boa tarde @José M. S. Junior, Possíveis correções a Unit ACBrBoletoW_Itau. Referente a procedure GerarMulta. if DataMulta > 0 then begin JsonMulta.Add('data_multa').Value.AsString := FormatDateTime('yyyy-mm-dd', DataMulta); if MultaValorFixo then JsonMulta.Add('percentual_multa').Value.AsString := IntToStrZero(round(ValorMoraJuros * 100), 17) else JsonMulta.Add('percentual_multa').Value.AsString := IntToStrZero(round(ValorMoraJuros * 100000), 12); end; Fiz a seguinte alteração: if DataMulta > 0 then begin JsonMulta.Add('data_multa').Value.AsString := FormatDateTime('yyyy-mm-dd', DataMulta); if MultaValorFixo then JsonMulta.Add('valor_multa').Value.AsString := IntToStrZero(round(PercentualMulta), 17) else JsonMulta.Add('percentual_multa').Value.AsString := IntToStrZero(round(PercentualMulta * 100000), 12); end; Fiquei em dúvida se o campo PercentualMulta é o mesmo quando utiliza percentual e valor.
  3. Boa tarde José, Com as alterações efetuadas o registro ocorreu com sucesso. Vou continuar o processo de homologação qualquer novidade posto aqui.
  4. Olá, Estou realizando a homologação com o Banco Itaú via API. E gostaria de compartilhar alguns ajustes que estão sendo necessários. Erro - conta cedente invalida - Segundo o manual a conta do cedente deve possuir 7 dígitos, caso o tamanho do número da conta utilizada for menor que 7 deve completar com zeros a esquerda utilizada a função PadLeft da ACBrUtil. A API retorna erros de validação na seção Sacador Avalista mesmo não sendo informado nenhum sacador avalista no componente - a seção sacador avalista do JSON só deve ser gerada caso exista um sacador avalista no componente - segundo o manual esta seção é opcional. A API retorna erros de validação na seção Debito - Aplicada a mesma correção do item anterior. Na seção Recebimento Divergente o índice do componente começa com zero e o da API começa com 1. Segue em anexo unit ACBrBoletoW_Itau com ajustes realizados. ACBrBoletoW_Itau.pas
  5. Caro amigo, após realizar alguns testes percebi que: O processo sugerido por você funciona somente se a tag ProtNFe não exista no XML. Quando tento o procedimento de Gerar, Assinar e Validar com um XML que tenha as tags ProtNFe (a tag foi adicionada ao realizar uma consulta) dá o erro mencionado anteriormente.
  6. Desculpe pela demora em responder, Mas realizei os testes com a versão atualizada do ACBr e acontece o mesmo erro. Ao chamar o método assinar gera a exception conforme imagem anexada anteriormente. Se tiver mais alguma sugestão eu agradeço.
  7. Fiz os devidos testes hoje como foi sugerido, e Infelizmente não funcionou, quando tento chamar o Assinar ocorre um erro: Erro ao carregar o XML.
  8. Prezados, Preciso de ajuda para adicionar as tags <infNFeSupl> <qrCode> no XML já gerado e enviado. Algumas notas emitidas em contigência, ao enviar não foi atualizado o XML no banco de dados, agora o contador precisa importar os XMLs e não consegue por conta das tags faltando. Segue XML em anexo. 15170816965024000115650010000876129000876122-nfe.xml
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.