-
Total de ítens
129 -
Registro em
-
Última visita
Tudo que TiagoTecchio postou
-
Bom dia, Se me permite uma dica, instale o aplicativo Everything no seu PC (https://www.voidtools.com/). Ele indexa todos os arquivos do HD e você consegue localizar qualquer arquivo instanteamente. Uma vez instalado basta colocar a string abaixo para localizar todas as referências do ACBR e removê-las antes de uma nova instalação: ACBr*.bpl|ACBr*.dcp|ACBr*.dcu|PCN*.bpl|PCN*.dcp|PCN*.dcu|SYNA*.bpl|SYNA*.dcp|SYNA*.dcu|pnfs*.dcu|pcte*.bpl|pcte*.dcp|pcte*.dcu|pmdfe*.bpl|pmdfe*.dcp|pmdfe*.dcu|pgnre*.dcp|pgnre*.bpl|pces*.bpl|pgnre*.dcu|pces*.dcp|pces*.dcu|pca*.dcp|pca*.dcu
-
Você está utilizando a versão 2 da API do BB? Porque se não me engano, a versão 1 é válida somente para clientes que foram contratados até maio ou junho - novas aplicações ou contratos somente na v2.
-
Boa tarde, Eu adaptei o método de geração de QrCode, aplicando um zoom no bitmap. Desta forma, o fator do zoom representa o fator de multiplicação dos pixels da imagem. Se não me engano, a classe TDelphiZXingQRCode está distribuída junto ao ACBR. procedure MontaQRCode( const ATexto: string; var pBmpQRCode: TBitmap; const pZoom: Integer = 1 ); var J, I, xi, xj, TJ, TI, zoom : Integer; objQRCode : TDelphiZXingQRCode; cor: TColor; begin zoom := FH.SeSenao(pZoom >= 1, pZoom, 1); objQRCode := TDelphiZXingQRCode.Create; try objQRCode.Data := ATexto; objQRCode.Encoding := qrISO88591; objQRCode.QuietZone := 4; pBmpQRCode.SetSize(objQRCode.Rows * zoom, objQRCode.Columns * zoom); for I := 0 to objQRCode.Rows - 1 do begin for J := 0 to objQRCode.Columns - 1 do begin if (objQRCode.IsBlack[I, J]) then cor := clBlack else cor := clWhite; if zoom > 1 then begin TI := ((I+1) * zoom); for xi := 1 to zoom do begin Dec(TI); TJ := ((J+1) * zoom); for xj := 1 to zoom do begin Dec(TJ); pBmpQRCode.Canvas.Pixels[TJ, TI] := cor; end; end; end else pBmpQRCode.Canvas.Pixels[J, I] := cor end; end; finally objQRCode.free; end; end; Para testar: procedure TFSisUtil.Button4Click(Sender: TObject); var path, tx: string; bitmap : TBitmap; begin tx := 'este é um teste de zoom de qrcode'; bitmap := TBitmap.Create; try MontaQRCode(tx, bitmap, 4); path := 'c:\teste\' + FormatDateTime('ddmmyyyy.hhmmsszzzz', Now) + '.bmp'; bitmap.SaveToFile(path); finally bitmap.Free; end; end;
-
Bom dia. O documento foi publicado pela Fecomercio RS. http://sindiatacadistas.sindisoft.net/Estatisticas/ContadorClique/?parm=XO8tFmYWZzyqCm9bGewoLj5QYr6i3KsnnFnUx67pLzbxCohdUKkF4eILFDwikLwiYoQvo1CpAlasem9bGeY5j7PG5kX0LMZeRzCyJD0kDxFcUtY7xSnscSYhCtHrjdmYhulnxubWMBUj0rYLCb6difqksDk7C24kyP0qHNihteMrEFHmm0K4Bj8v7XE9cooEmg==
-
Integração Pix (ACBrPixCD) com mTLS banco brasil
TiagoTecchio replied to delmir_henrique's tópico in Dúvidas Gerais sobre o ACBr
OK, testado. Funcionando. -
Integração Pix (ACBrPixCD) com mTLS banco brasil
TiagoTecchio replied to delmir_henrique's tópico in Dúvidas Gerais sobre o ACBr
Boa tarde Elias. Grato pelo pronto retorno. Neste meio tempo alterei o fonte desabilitando a consistência e consegui gerar a cobrança. A título de informação, a API v2 do BB está intermitente, verificando o forum deles me deparei com várias pessoas relatando 404 ao criar o PIX. Na insistência, a cobrança é criada. Obrigado. -
Integração Pix (ACBrPixCD) com mTLS banco brasil
TiagoTecchio replied to delmir_henrique's tópico in Dúvidas Gerais sobre o ACBr
Boa tarde. Estou tentando validar a v2 da API do BB e me deparei com as situações abaixo (em produção). Veja que configurei para utilizar arquivo PFX, mas o componente não reconhece a configuração corretamente. Atualizei os fontes hoje de manhã. Estou deixando passar alguma coisa? -
Boa tarde. Anexo está o arquivo Infisc.LerXml.pas com ajustes para ler as tags do grupo dadosDaObra e tag empreitadaGlobal. Infisc.LerXml.pas
-
Boa tarde Italo, Teste OK. Obrigado pelo retorno.
-
Boa tarde Italo, Anexo está um XML de exemplo com os dados. Obrigado. NFS-Sai-15630.xml
-
Boa tarde, Avaliando algumas situações em clientes que utilizam nota fiscal de serviço para o município de Caxias do Sul (provedor Infisc) me deparei com o seguinte. O método LerEnderecoTomador na unit Infisc.LerXml invoca a função ObterNomeMunicipio para recuperar o nome do município do tomador. Mas por quê? Pelo debug que fiz, este método internamente chama uma API do IBGE e que eventualmente me causa problemas. Então não vejo motivos para que seja chamada a API já que o XML que está sendo carregado já contém a tag xMun (o nome do município). Seria possível ter uma property para não executar este trecho de código? Ou modificar para ler diretamente a tag xMun?
-
Erro HTTP/1.1 403 Forbidden PIX
TiagoTecchio replied to Salatiel de Sousa's tópico in Dúvidas Gerais sobre o ACBr
Me parece erro de scope. Tentou revisar no ambiente de desenvolvimento do BB? Geralmente é "cob.read cob.write pix.read pix.write" -
Vincular TMultipartFormData ao http.HTTPPost
TiagoTecchio replied to andreyjardim's tópico in Dúvidas Gerais sobre o ACBr
Boa tarde, Qual a mensagem de erro? Precisa detalhar melhor. As DLLs OpenSSL estão atualizadas? A URL em "/Endereco.php" suporta o formato que você está tentando postar? Se usar o synapse diretamente funciona? -
Bom dia, Seria interessante se você postasse um trecho do seu código. Eu tenho feito o registro online de boletos do BB sem problemas e capturado o EMV para geração do QrCode. Contudo não gero a impressão dos docs usando o ACBrBoleto devido a customização do cliente.
-
Boleto Via API - Banco do Brasil - Enviar Juros e Multa
TiagoTecchio replied to sistemp's tópico in ACBrBoleto
Bom dia, Também cometi este erro, então creio que você esteja utilizando as propriedades erradas. Se fizer uma pesquisa na unit ACBrBoletoW_BancoBrasil_API.pas no método TBoletoW_BancoBrasil_API.GerarMulta(AJson: TJsonObject) verá que deve utilizar as propriedades PercentualMulta, MultaValorFixo e DataMulta. No caso dos juros são as propriedades ValorMoraJuros e CodigoMora. A propriedade CodigoMoraJuros:=cjTaxaDiaria que você utilizou não tem efeito. Como esta classe AcbrBoleto gera muita abstração e para vários bancos, é importante sempre olhar "dentro do capô". -
NFSeX - Provedor Infisc - Caxias do Sul/RS
TiagoTecchio replied to TiagoTecchio's tópico in ACBrNFSe
Boa tarde Italo, Atualizado, funcionando. Obrigado pela ajuda. -
NFSeX - Provedor Infisc - Caxias do Sul/RS
TiagoTecchio replied to TiagoTecchio's tópico in ACBrNFSe
Bom dia Italo, Fiz um update dos fontes contudo o método TNFSeR_Infisc.LerServicos está com campos faltando. Eu havia incluído a leitura da Alíquota e Base de INSS, o Valor da Redução de ISS e corrigido a leitura do campo ValorIRRF. Você consegue revisar por gentileza? -
NFSeX - Provedor Infisc - Caxias do Sul/RS
TiagoTecchio replied to TiagoTecchio's tópico in ACBrNFSe
Boa tarde Italo, Grato pelo retorno. Atualizei os fontes conforme sua orientação, porém precisei realizar alguns ajustes na unit Infisc.LerXml (anexo), referente a campos relacionados a alíquota e valor de retenção de INSS, valor de redução de ISS e valor do IR. Adicionei um tratamento com try...except ao ler o campo nFat pois como descrevi anteriormente, o provedor permite que este campo seja string, assim acabo recebendo notas com barras, traço e pontos. Infisc.LerXml.pas -
NFSeX - Provedor Infisc - Caxias do Sul/RS
TiagoTecchio replied to TiagoTecchio's tópico in ACBrNFSe
Bom dia Italo, Realizei alguns ajustes nas units do provedor Infisc para tratar corretamente a questão da retenção de ISS e a leitura das propriedades relativas a retenção de IR, PIS, COFINS e CSLL, pois não estavam completamente implementadas. Outro ponto é referente ao grupo de totais da Nota, onde a tag vtNF não coincidia com o total da tag vServ, conforme o manual. Infisc.LerXml.pas Infisc.GravarXml.pas -
Boa tarde, Detectei uma situação de incompatibilidade entre o componente ACBrNFSeX e o xml gerado para o provedor Infisc para a cidade de Caxias do Sul. Ao tentar ler um XML já autorizado utilizando o método LoadFromFile uma exceção é disparada. Debugando os fontes me deparei com a seguinte situação. O componente ao ler a tag <nFat> que está dentro da tag <fat> espera que o número da fatura seja um inteiro, porém o provedor permite informar um valor alfanumérico de até 15 caracteres. Penso que a solução seria modificar a property Parcela da classe TParcelasCollectionItem na unit ACBrNFSeXClass.pas de integer para string. Seria possível este ajuste? NFS-Sai-700.xml
-
Boleto Hibrido Banco do Brasil - Retorno Envio: HTTPCode=500
TiagoTecchio replied to jburda's tópico in ACBrBoleto
Pelas imagens você está usando o ambiente de homologação do BB, e pela minha experiência é instável (ou não prioritário). Erro 500 é algo dentro do servidor. Não parece o seu caso, mas já recebi este tipo de erro sem mensagem alguma de explicação ao enviar caracteres como (% e &) nas requisições das APIs de PIX. Na produção está normal, nenhum cliente reportou problema. -
ACBrBoleto - API Banco do Brasil - Erro - Demo e Tutorial furados
TiagoTecchio replied to alexpt's tópico in ACBrBoleto
Esqueci de mencionar, mas pela mensagem o seu erro refere-se ao scope. Veja na imagem anexada o "pulo do gato" -
ACBrBoleto - API Banco do Brasil - Erro - Demo e Tutorial furados
TiagoTecchio replied to alexpt's tópico in ACBrBoleto
Respondendo a sua dúvida: sim, eu já implementei com sucesso o uso da API do BB tanto com o ACBR quanto sem ele (fazendo as requisições manualmente usando o Synapse). Creio que as suas configurações estejam incorretas, deve atentar ao fato de você ter que criar uma aplicação no portal de desenvolvedores do BB, o seu cliente deve autorizar o uso para então ter acesso as credenciais (devKey, ClientID e ClienteSecret). O BB é de longe o banco mais fácil de ser implementado. -
ACBrBoletoAPI consulta erro Campo Carteira
TiagoTecchio replied to Thiago Duarte's tópico in ACBrBoleto
Bom dia, Seria uma consulta individual de boleto? Se for o caso tenho feito assim e funciona: //FGerador é uma instancia do acbrBoleto FGerador.ListadeBoletos.Clear; FGerador.Configuracoes.WebService.Filtro.Clear; FGerador.Configuracoes.WebService.Operacao := tpConsultaDetalhe; FGerador.Configuracoes.WebService.Filtro.indiceContinuidade := 0; FGerador.Configuracoes.WebService.Filtro.indicadorSituacao := TACBrIndicadorSituacaoBoleto.isbBaixado; if FTipoData = 1 then begin FGerador.Configuracoes.WebService.Filtro.dataVencimento.DataInicio := FDataInicial; FGerador.Configuracoes.WebService.Filtro.dataVencimento.DataFinal := FDataFinal; end else begin FGerador.Configuracoes.WebService.Filtro.dataMovimento.DataInicio := FDataInicial; FGerador.Configuracoes.WebService.Filtro.dataMovimento.DataFinal := FDataFinal; end; if FH.StrOk(FCPF) then FGerador.Configuracoes.WebService.Filtro.cnpjCpfPagador := FCPF; // doc => TACBrTitulo; doc := FGerador.CriarTituloNaLista; doc.Carteira := '17'; doc.NossoNumero := FCds.FieldByName('APINUMERO').AsString; // nosso número ok := FGerador.EnviarBoleto; if ok and (FGerador.ListaRetornoWeb.Count > 0) then // etc....