-
Total de ítens
165 -
Registro em
-
Última visita
Últimos Visitantes
O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.
gutembergscosta's Achievements
-
Olá, Segue o arquivo devidamente ajustado ... nesse caso houve mais ajustes, tanto no envio, quanto no retorno, então as alterações ocorreram nas seguintes procedures; procedure GerarRegistroTransacao400(ACBrTitulo : TACBrTitulo; aRemessa: TStringList); override; Procedure LerRetorno400(ARetorno:TStringList); override; Percebi que essa funcition que retorna a descrição da rejeição está desatualizada em conformidade com a documentação / layout, caso desejem atualizar. function TACBrBancoSantander.CodMotivoRejeicaoToDescricao( const TipoOcorrencia:TACBrTipoOcorrencia; CodMotivo: Integer) : String; Obrigado. ACBrBancoSantander.pas 24-08-05_132259_cobrancas_400_ptbr[1].pdf
-
Olá pessoal, homologuei o boleto Santander via cnab400 hibrido, contudo, para homologar o registro relacionado ao Pix, se fez necessário duas alterações, as quais reporto aqui para ajuste no projeto. Anexei duas imagens uma como o registro ficou, depois de alterado, e a outra com a nota/instrução do manual do banco onde fala sobre isso. 1) O registro=8, obrigatoriamente precisa ser inserido no arquivo logo depois do registro=1, e no caso antes do registro=2 (imagem anexada), somente assim o registro hibrido foi aceito pelo banco. 2) no registro 8 tem um uppercase, foi necessário retirar, uma vez que a chave pix passada foi um e-mail, e no caso o banco considera em minusculo. Abaixo a procedure TACBrBancoSantander.GerarRegistroTransacao400, modificada. procedure TACBrBancoSantander.GerarRegistroTransacao400(ACBrTitulo :TACBrTitulo; aRemessa: TStringList); var DigitoNossoNumero, Ocorrencia,aEspecie :String; Protesto, aAgencia, TipoSacado, wLinha :String; aCarteira, I: Integer; LMensagem1, LMensagem2, LMensagem3 : String; LTipoChaveDICT, Ltipopagamento : string; begin aCarteira := StrToIntDef( DefineCarteira(ACBrTitulo) , 0); if aCarteira = 5 then aAgencia := PadLeft(OnlyNumber(ACBrTitulo.ACBrBoleto.Cedente.Agencia) + ACBrTitulo.ACBrBoleto.Cedente.AgenciaDigito,5,'0') else aAgencia:= '00000'; FvTotalTitulos := FvTotalTitulos + ACBrTitulo.ValorDocumento; with ACBrTitulo do begin DigitoNossoNumero := CalcularDigitoVerificador(ACBrTitulo); {Tipo de Ocorrencia} ocorrencia := TipoOcorrenciaToCodRemessa(ACBrTitulo.OcorrenciaOriginal.Tipo); {Especie Documento} aEspecie := DefineEspecieDoc(ACBrTitulo); {Instruções} Protesto := InstrucoesProtesto(ACBrTitulo); {Pegando Tipo de Sacado} TipoSacado := DefineTipoSacado(ACBrTitulo); with ACBrBoleto do begin wLinha:= '1' + // 1- ID Registro IfThen(Cedente.TipoInscricao = pJuridica,'02','01') + // 2 a 3 PadLeft(trim(OnlyNumber(Cedente.CNPJCPF)),14,'0') + // 4 a 17 PadRight(trim(Cedente.CodigoTransmissao),20,'0') + // 18 a 37 PadRight( SeuNumero ,25,' ') + // 38 a 62 PadLeft(RightStr(NossoNumero,7),7,'0') + DigitoNossoNumero + // 63 a 70 IfThen(DataAbatimento < EncodeDate(2000,01,01), '000000', FormatDateTime( 'ddmmyy', DataAbatimento)) + // 71 a 76 ' '+IfThen(PercentualMulta > 0,'4','0') + // 77 a 78 IntToStrZero( round( PercentualMulta * 100 ), 4) + // 79 a 82 '00'+StringOfChar( '0', 13)+space(4) + // 83 a 101 IfThen((DataMulta <= 0),'000000', FormatDateTime( 'ddmmyy', DataMulta)) + // 102 a 107 IntToStr(aCarteira) + Ocorrencia + // 108 a 110 PadRight( NumeroDocumento,10,' ') + // 111 a 120 FormatDateTime( 'ddmmyy', Vencimento) + // 121 a 126 IntToStrZero( round( ValorDocumento * 100), 13) + // 127 a 139 '033' + aAgencia + // 140 a 147 PadLeft(aEspecie, 2) + 'N' + // 148 a 150 FormatDateTime( 'ddmmyy', DataDocumento ) + // 151 a 156 PadLeft(trim(Instrucao1),2,'0') + // 157 a 158 PadLeft(trim(Instrucao2),2,'0') + // 159 a 160 IntToStrZero( round(ValorMoraJuros * 100 ), 13) + // 161 a 173 IfThen(DataDesconto < EncodeDate(2000,01,01), '000000', FormatDateTime( 'ddmmyy', DataDesconto)) + // 174 a 179 IntToStrZero( round( ValorDesconto * 100), 13) + // 180 a 192 IntToStrZero( round( ValorIOF * 100 ), 13) + // 193 a 205 IntToStrZero( round( ValorAbatimento * 100 ), 13) + // 206 a 218 TipoSacado + PadLeft(OnlyNumber(Sacado.CNPJCPF),14,'0') + // 219 a 234 PadRight( Sacado.NomeSacado, 40, ' ') + // 235 a 274 PadRight( Sacado.Logradouro + ' '+ Sacado.Numero, 40, ' ') + // 275 a 314 PadRight( Sacado.Bairro,12,' ') + // 315 a 326 PadRight( OnlyNumber(Sacado.CEP) , 8, ' ' ) + // 327 a 334 PadRight( Sacado.Cidade, 15, ' ') + PadRight( Sacado.UF, 2 ) + // 335 a 351 Space(30) + // 352 a 381 ' I' + // 382 a 383 Copy( Cedente.Conta, length( Cedente.Conta ),1 ) + // PadLeft( Cedente.ContaDigito, 1 ) + // 384 a 385 Space(6) + // 386 a 391 Protesto + ' ' + // 392 a 394 IntToStrZero( aRemessa.Count + 1, 6 ); // 395 a 400 if (ACBrTitulo.ACBrBoleto.Cedente.PIX.TipoChavePIX <> tchNenhuma) then begin case ACBrTitulo.ACBrBoleto.Cedente.PIX.TipoChavePIX of tchCPF : LTipoChaveDICT := '1'; tchCNPJ : LTipoChaveDICT := '2'; tchCelular : LTipoChaveDICT := '3'; tchEmail : LTipoChaveDICT := '4'; tchAleatoria : LTipoChaveDICT := '5'; end; case tipopagamento of tpAceita_Qualquer_Valor : Ltipopagamento := '01'; tpAceita_Valores_entre_Minimo_Maximo: Ltipopagamento := '02'; tpNao_Aceita_Valor_Divergente: Ltipopagamento := '03'; end; wLinha:= '8' + // 001 - 001 PIX Ltipopagamento + // 002 - 003 Identificação do tipo de pagamento IntToStrZero(QtdeParcelas,2) + // 004 - 005 Quantidade de pagamento possíveis '2' + // 006 - 006 Tipo de valor informado (1=%, 2=Valor) IntToStrZero( round( ValorDocumento * 100), 13) + // 007 - 019 Valor Máximo PadLeft('0',5,'0') + // 020 - 024 % (Percentual) Máximo IntToStrZero( round( ValorDocumento * 100), 13) + // 025 - 037 Valor Mínimo PadLeft('0',5,'0') + // 038 - 042 % (Percentual) Mínimo LTipoChaveDICT + // 043 - 043 Tipo de Chave Pix PadRight(ACBrTitulo.ACBrBoleto.Cedente.PIX.Chave,77,' ') + // 044 - 120 Chave Pix PadRight(QrCode.txId,35,' ') + // 121 - 155 Código de identificação do Qr Code (TXID) Space(239) + // 156 - 394 Reservado (uso Banco) IntToStrZero( aRemessa.Count + 1 , 6 ); // 395 - 400 Sequencial de Registro aRemessa.Add(wLinha); aRemessa.Add(UpperCase(wLinha)); LMensagem1 := ''; LMensagem2 := ''; LMensagem3 := ''; if Mensagem.Count >= 1 then LMensagem1 := TiraAcentos(Mensagem[0]); if Mensagem.Count >= 2 then LMensagem2 := TiraAcentos(Mensagem[1]); if Mensagem.Count >= 3 then LMensagem3 := TiraAcentos(Mensagem[2]); wLinha:= '2' + // 001-001 "2" - Recibo Pagador space(16) + // 002-017 Reservado Banco PadLeft(Cedente.CodigoTransmissao,20,'0') + // 018-037 Agencia / Conta Movimento / Conta Cobranca Space(10) + // 038-047 Reservado Banco '01' + // 048-049 SubRegistro "01" PadRight(LMensagem1, 50) + // 050-099 Mensagem Variavel '02' + // 100-101 SubSequencia "02" PadRight(LMensagem2, 50) + // 102-151 Mensagem Variavel '02' + // 152-153 SubSequencia "02" PadRight(LMensagem3, 50) + // 154-203 Mensagem Variavel Space(179) + // 204-382 Reservado Banco 'I' + // 383-383 Identificação do Complemento PadLeft(Copy( Cedente.Conta, length( Cedente.Conta ),1 ), 1, '0') + PadLeft( Cedente.ContaDigito, 1, '0' ) + // 384-385 Complemento Space(9) + // 386-394 Reservado Banco IntToStrZero( aRemessa.Count + 1 , 6 ); // 395-400 Sequencial de Registro aRemessa.Add(UpperCase(wLinha)); end; end; end; end;
-
Alguém que já implementou e está funcional poderia fornecedor informações, tipo a integração está legal, envia vários boletos, o retorno é na própria requisição, ou tem que consultar depois, na consulta volta o lote com todos os titulos do dia, como seria a consulta, retorno, perrengues ... agradeço quem puder enviar informações a dispeito da implantação e uso nesse banco.
-
Fiz a comparação, mudou o header e trailer do arquivo, isso por que o numero de protocolo que recebemos ao enviar aumentou de tamanho, essa foi a diferença que encontrei header antigo : 025739872900018520217602440 header novo : 0257398729000185240000744059230 aumentou por conta do numero de protocolo, vou aguardar pra ver se por acaso a versão do software importado do banco sofre alguma alteração por conta disso - obrigado.
-
Arquivo retorno de pagamento banco do Brasil vindo do Portal GNRe Online
um tópico no fórum postou gutembergscosta ACBrGNRe
Boa tarde, Alguém usa o arquivo de retorno de pagamento oriundo do portal da GNRE para automatizar o pagamento, importando o arquivo via soft do Banco do Brasil ? Até poucos dias estava ok, mas houve uma mudança onde o header e trailer sofreram alteração de tamanho, acredito que face o numero de protocolo que aumentou de tamanho, agora o software do banco do brasil ao tentar importar, informa que o arquivo está inconsistente. Não consegui inserir os dois arquivos o antigo e o novo, apresenta erro de upload. -
Boa tarde, Alguém usa o arquivo de retorno de pagamento do portal para automatizar o pagamento importando o arquivo via soft do Banco do Brasil ? Até poucos dias estava ok, mas houve uma mudança onde o header e trailer sofreram alteração de tamanho, acredito que face o numero de protocolo que aumentou de tamanho, agora o software do banco do brasil ao tentar importar, informa que o arquivo está inconsistente.
-
Bacana, obrigado pela atenção, vou acessar para ver a solução.
-
Boa tarde, Atualizado todo o acbr (reinstalando), apresenta o erro nos report do Fortes Report, é preciso usar alguma nova versão do Fortes, se sim, poderia informar qual versão devo instalar. Não foi possível localizar o ponto de entrada do procedimento @Rlreport@TRLCustomReport@SetDefaultFilter$qqrpx25Rlfilters@TRLCustomFilter na biblioteca de vínculo dinâmico \NFe_ACBR_Novo\Lib\Delphi\LibD7\Win32\ACBr_BoletoRL.bpl.