Ir para conteúdo
  • Cadastre-se

BrunoD

Membros
  • Total de ítens

    11
  • Registro em

  • Última visita

Tudo que BrunoD postou

  1. BrunoD

    Boleto Itau WebService

    Bom dia, Na última atualização do ACBr, começamos a ter problemas para emissão de boletos via WebServices do Banco Itaú. O campo de CPF/CNPJ tinha uma formatação para 11 caracteres, o que fazia "cortar" quando o documento era CNPJ. procedure TBoletoW_Itau.GerarPagador(AJson: TJsonObject); var JsonDadosPagador: TJsonObject; JsonPairPagador: TJsonPair; begin if Assigned(Titulos) then with Titulos do begin if Assigned(AJson) then begin JsonDadosPagador := TJSONObject.Create; try JsonDadosPagador.Add('cpf_cnpj_pagador').Value.AsString := OnlyNumber(Sacado.CNPJCPF);//ACBrUtil.PadLeft(OnlyNumber(Sacado.CNPJCPF), 11, '0'); JsonDadosPagador.Add('nome_pagador').Value.AsString := Copy(Sacado.NomeSacado, 1, 30); JsonDadosPagador.Add('logradouro_pagador').Value.AsString := Trim(Copy(Sacado.Logradouro + ' ' + Sacado.Numero, 1, 40)); JsonDadosPagador.Add('bairro_pagador').Value.AsString := Copy(Sacado.Bairro, 1, 15); JsonDadosPagador.Add('cidade_pagador').Value.AsString := Copy(Sacado.Cidade, 1, 20); JsonDadosPagador.Add('uf_pagador').Value.AsString := Sacado.UF; JsonDadosPagador.Add('cep_pagador').Value.AsString := ACBrUtil.PadLeft(OnlyNumber(Sacado.CEP), 8, '0'); if (Sacado.Email <> '') then GerarEmailPagador(JsonDadosPagador); JsonPairPagador := TJsonPair.Create(AJson, 'pagador'); try JsonPairPagador.Value.AsObject := JsonDadosPagador; AJson.Add('pagador').Assign(JsonPairPagador); finally JsonPairPagador.Free; end; finally JsonDadosPagador.Free; end; end; end; end
  2. 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.
  3. 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.
  4. Boa tarde José, Com as alterações efetuadas o registro ocorreu com sucesso. Vou continuar o processo de homologação qualquer novidade posto aqui.
  5. BrunoD

    Ajustes ACBrBoletoW_Itau

    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
  6. 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.
  7. 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.
  8. 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.
  9. 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
×
×
  • 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.