-
Total de ítens
691 -
Registro em
-
Última visita
-
Days Won
1
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Antonio Gomes postou
-
Mano, como vc coloca os dados no componente? parece falta de DV Me preocupa essa msg... parar clientes. kkk
-
Lembrando que é apenas PJ, aquele site azul.. quem é laranja, MEI, não ainda. aff
-
Envio de boletos em lote Banco Inter API
Antonio Gomes replied to jefferson01's tópico in ACBrBoleto
Uai, suspeito que seja pelo tempo que ele pede, vc nao pode gerar outro token, se o anterior tiver valido, mas apenas usar, contar o tempo em minutos. Senao eles poem a gente na geladeira: olha: Obter token oAuth POSThttps://cdpj.partners.bancointer.com.br/oauth/v2/token A autenticação OAuth é a mais recente forma de autenticar os novos serviços disponibilizados pelo Inter. O Token gerado será necessário para consumir as APIs do Inter. O tempo de vida de um token gerado é de uma hora. Com isso, é possível realizar um número determinado de requisições nas apis, de acordo com o rate limit de cada api, utilizando um único token. Rate limit: 5 chamadas por minuto fonte: https://developers.bancointer.com.br/reference/token-1 -
voce quer carregar essas opções? toRemessaRegistrar, toRemessaBaixar etc. case ARem_Ocorrencia_Remban of 0: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaRegistrar; 1: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaBaixar; 2: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaConcederAbatimento; 3: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarAbatimento; 4: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarVencimento; 5: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarNumeroControle; 6: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaProtestar; 7: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtestoBaixa; 8: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtesto; 9: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaOutrasAlteracoes; else Raise Exception.Create('Código de ocorrência: ' + aRem_Ocorrencia_Remban.ToString + ' inválida.'); end; Essa lista vc pega ela assim Acbrboleto1.GetOcorrenciasRemessa() : TACBrOcorrenciasRemessa; A ocorrencia varia de acordo com o banco sim, voce deve tomar uma atitude/ação, de acordo com o codigo do retorno que vem, no caso, para baixar, vem 05 ou 06 vem em ListadeBoletos[X].OcorrenciaOriginal.Tipo
-
Campo livre do santander: O erro parece ser o codigo do cedente... tem banco que não é o numero da conta, mas o cedente na cip Result := '9' + PadLeft(trim(Cedente.CodigoCedente),7,'0') + PadLeft(ACBrTitulo.NossoNumero + CalcularDigitoVerificador(ACBrTitulo), 13,'0') + '0' + PadLeft(trim(Cedente.Modalidade),3,'0'); E para voce fazer a impressao do mesmo boleto, é preciso ter o mesmo numero do campo nosso numero.
-
Altura do código de barras diferente após atualização recente
Antonio Gomes replied to DouglasGV's tópico in ACBrBoleto
@Daniel InfoCotidiano tinha ligação com a altura? Parecia mais com a espessura das barras. O zoom. -
Envio de boletos em lote Banco Inter API
Antonio Gomes replied to jefferson01's tópico in ACBrBoleto
Eu salvo o meu no banco de dados, e se caso o operador sair do sistema, fica gravado os dados do token, para nao precisar processar de novo, a cada boleto, é verificado o tempo. Pois ele é fixo, o retorno do inter ja vem com o tempo somado, bom, era assim... Tipo, entra o comando no endpoint as 15hs, vem que ele vale ate 16hs -
Envio de boletos em lote Banco Inter API
Antonio Gomes replied to jefferson01's tópico in ACBrBoleto
o meu tem uma falha ali, ao salvar o valor do tokentime. a proposito, no acbr, é aqui que valida o token function TBoletoW_Inter_API.GerarTokenAutenticacao: string; begin OAuth.Payload := True; Result := inherited GerarTokenAutenticacao; end; Na funcao: GerarTokenAutenticacao chama a funcao da boletaws base dessa derivacao: TBoletoW_Inter_API = class(TBoletoWSREST) o tempo de validade, vem no retorno do if OAuth.GerarToken then Result := OAuth.Token para mim, o tempo deve ser aqui: property Expire : TDateTime read FExpire; na unit ACBrBoletoWS.Rest.OAuth Sempre que posso ajudo ... -
Envio de boletos em lote Banco Inter API
Antonio Gomes replied to jefferson01's tópico in ACBrBoleto
tem que colocar no cadastro da sua conta corrente, um campo campo com data e hora Ex: pega no cadastro de conta: Clear; Add('select '); Add(' CONTA_CORRENTE_SERV_BANCARIO.CODIGO_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.CLIENT_ID_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.CLIENT_SECRET_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_DATA_HORA_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_VALIDADE_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.NOME_CRT_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.CRT_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.NOME_KEY_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.KEY_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.NOME_PFX_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.PFX_SER'); // SENHA_CRT_KEY_SER Add('from CONTA_CORRENTE_SERV_BANCARIO'); Add('where CONTA_CORRENTE_SERV_BANCARIO.CODIGO_SER = ' + AServicoBancario.ToString); TFuncoesBancoDeDados.ExecuteReaderFD(Text, ATransacao, FDS); finally DisposeOf; end; AToken := FDS.FieldByName('SESSAO_TOKEN_SER').AsString; ATokenTime := FDS.FieldByName('SESSAO_TOKEN_VALIDADE_SER').AsDateTime; ClientId := FDS.FieldByName('CLIENT_ID_SER').AsString; ClientSecret := FDS.FieldByName('CLIENT_SECRET_SER').AsString; // venceu ou nao tem if (AToken = '') or (ATokenTime <= Now) then begin HoraTmp := Now; Inter := TBancoInter.Create(nil); try Inter.ClientId := ClientId; Inter.ClientSecret := ClientSecret; Inter.CertFile := CrtTmp; Inter.KeyFile := KeyTmp; Inter.GetToken; AToken := Inter.Token; ATokenTime := Inter.TokenTime; if AToken <> '' then begin with TStringList.Create do try Clear; Add('update CONTA_CORRENTE_SERV_BANCARIO set'); Add(' CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_SER = ' + QuotedStr(AToken)); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_DATA_HORA_SER = ' + TFuncoesSQL.DataHoraSQL(HoraTmp)); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_VALIDADE_SER = ' + TFuncoesSQL.DataHoraSQL(HoraTmp)); Add('where CONTA_CORRENTE_SERV_BANCARIO.CODIGO_SER = ' + AServicoBancario.ToString); TFuncoesBancoDeDados.ExecuteCommand(Text, ATransacao); finally DisposeOf; end; end; finally Inter.DisposeOf; end; end; -
Então: Tem um caso, que vc precisa limpar e tem um caso que precisa colocar dados do cedente no objeto, olha onde é isso function TACBrBancoClass.ValidarDadosRetorno(const AAgencia, AContaCedente: String; const ACNPJCPF: String= ''; const AValidaCodCedente: Boolean= False Boolean; begin try With ACBrBanco.ACBrBoleto do begin if NaoEstaVazio(ACNPJCPF) then if (not LeCedenteRetorno) and (ACNPJCPF <> OnlyNumber(Cedente.CNPJCPF)) then raise Exception.CreateFmt(ACBrStr('CNPJ\CPF: %s do arquivo não corresponde aos dados do Cedente!'), [ACNPJCPF]); Logo que começa ler o retorno, é feito isso: rCNPJCPF := DefinerCnpjCPFRetorno240(ARetorno[0]); // primeira linha do retorno function TACBrBancoClass.DefinerCnpjCPFRetorno240(const ALinha: String): String; begin Result := OnlyNumber( copy(ALinha, 19, 14) ); end; ValidarDadosRetorno('', '', rCNPJCPF); Quando LeCedenteRetorno for false, é comparado com os dados que voce colocou no cedente do componente, isso ja tem bastante tempo que é assim. Sugestão, colocar ele True, se vc nao quer alimentar antes o objeto acbrboleto Ex: como eu uso: FuncBoleto.ACBrBoleto.LeCedenteRetorno := true; // problema do sicoob 756 FuncBoleto.ACBrBoleto.Cedente.Conta := '0'; // Ocultar erro do ACBr FuncBoleto.ACBrBoleto.LerRetorno(ArquivoDeRetorno); Porem, eu uso o objeto para ler, e eu acho a conta no meu sistema, tem casos, que a pessoa lê, com a conta ja selecionada na tela, ou seja, o erro ali, pode ser isso, vc passou uma informacao, e leu outra.
-
Retorno via API do Banco Inter sem resultado
Antonio Gomes replied to Luiz Carlos Panoni Junior's tópico in ACBrBoleto
clientid e clientsecret, informou? -
Retorno via API do Banco Inter sem resultado
Antonio Gomes replied to Luiz Carlos Panoni Junior's tópico in ACBrBoleto
ah: me peguei confuso com esse buscar hoje, da api nova... quando é filtrado por situacao pago, o filtro do campo datainicial e datafinal, é a data de pagamento... Logo, tive que ajustar hoje em um cliente, para pegar data inicial - 7 e datafinal = date. ou o seu ai, é caso de erro mesmo ? -
Retorno via API do Banco Inter sem resultado
Antonio Gomes replied to Luiz Carlos Panoni Junior's tópico in ACBrBoleto
no que eu tenho aqui, é preciso vincular um certificado e colocar a conta no header, fez isso? e o codigo do retorno, salvo engano, é 200, teve qual numero de retorno ? -
Banco Inter via API - Faltando escopos necessários.
Antonio Gomes replied to Luiz Carlos Panoni Junior's tópico in ACBrBoleto
respondi no privado, para não me encherem o saco aqui ... prints. Esqueci de mencionar, mesmo com emissao via acbr dá para montar, no meu caso, é boleto via api. Nem sei por onde passa essa de mandar retorno desse banco, coloquei o cliente usar via api, é mais prático. -
Banco Inter via API - Faltando escopos necessários.
Antonio Gomes replied to Luiz Carlos Panoni Junior's tópico in ACBrBoleto
fi, eu montei o boleto aqui, pelo que eles retornam. Linha digitavel e codigo de barras. o resto a gente tem para colocar na impressao. -
ou fi, isso dai, é quando vc envia remessa, quitado, vem como 06 se nao me engano, vem como liquidacao normal. o banco manda isso, se caso vc quiser processar algo no seu bordero de retorno bancario... tem casos, que quando é banco emite, vc precisa gravar o campo nosso numero, pois é o banco quem gera, dá uma olhada nos codigos de retornos, para entender legal isso.
-
Duvida sobre o banco Inter
Antonio Gomes replied to Luiz Carlos Panoni Junior's tópico in ACBrBoleto
da versão 1 tenho, mas, falando com um amigo, segundo me informou, a v2, tem pouca diferença. -
MG: Produção: Até dia 21/09, a url de consulta estava URL-ConsultaNFCe_2.00=http://nfce.fazenda.mg.gov.br/portalnfce A partir desse dia, está gerando a rejeição, a url foi alterada para <urlChave>https://portalsped.fazenda.mg.gov.br/portalnfce</urlChave> Isso vai ser mudado mesmo ou trocaram por engano, a do QR code está correta. Até dia 21/09 <infNFeSupl> <qrCode>https://portalsped.fazenda.mg.gov.br/portalnfce/sistema/qrcode.xhtml?p=</qrCode> <urlChave>http://nfce.fazenda.mg.gov.br/portalnfce</urlChave> </infNFeSupl> Apos 21/09 <infNFeSupl> <qrCode>https://portalsped.fazenda.mg.gov.br/portalnfce/sistema/qrcode.xhtml?p=</qrCode> <urlChave>https://portalsped.fazenda.mg.gov.br/portalnfce</urlChave> </infNFeSupl>
-
Duvida sobre o banco Inter
Antonio Gomes replied to Luiz Carlos Panoni Junior's tópico in ACBrBoleto
ACbr não, mas não é dificil fazer. -
Duvida sobre o banco Inter
Antonio Gomes replied to Luiz Carlos Panoni Junior's tópico in ACBrBoleto
Dica: Vai pela API, é muito prático, o boleto sai na hora. -
IfThen(MultaValorFixo,'1','2') + // Cocidgo da Multa 1- Cobrar Multa Valor Fixo / 2- Percentual / 0-Não cobrar multa Juros, vc escolhe, entre ser percentual ou valor, voce colocou os 2 ali... olha como eu faço.; Titulo := FuncBoleto.ACBrBoleto.CriarTituloNaLista; TFuncBoleto.AtribuirDadosAoTitulo(Titulo, IBQryServBanc, IBDSPai.FieldByName('DATA_BOR').AsDateTime, IBDSPai.FieldByName('REM_OCORRENCIA_BOR').AsInteger, IBDSReceber.FieldByName('DOCUMENTO_REC').AsString, IBDSReceber.FieldByName('BOLETO_REC').AsString, // IBDSReceber.FieldByName('DV_BOLETO_REC').AsString, IBDSReceber.FieldByName('VENCIMENTO_REC').AsDateTime, 1, 1, IBDSReceber.FieldByName('EMPRESA_REC').AsInteger, IBDSReceber.FieldByName('TIPO').AsString, IBDSReceber.FieldByName('CODIGO_REC').AsLargeInt, IBDSReceber.FieldByName('AI_AGRUP_BOLETO_REC').AsLargeInt, (IBDSReceber.FieldByName('VALOR_REC').AsCurrency + IBDSReceber.FieldByName('BOLETO_VLR_COBRADO_REC').AsCurrency), IBDSReceber.FieldByName('FISJUR_CLI').AsString, CnpjCpf, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_CLI').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('ENDERECO_CLI').AsString), IBDSReceber.FieldByName('NUM_ENDERECO_CLI').AsString, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('COMPL_END_CLI').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('BAIRRO_CLI').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOMCID').AsString), IBDSReceber.FieldByName('ESTCID').AsString, TFuncoesString.SoNumero(IBDSReceber.FieldByName('CEP_CLI').AsString), IBDSReceber.FieldByName('EMAIL_COBRANCA_CLI').AsString, IBDSReceber.FieldByName('TELEFONE_CLI').AsString, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_AVALISTA').AsString), CnpjCpfAvalista, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('ENDERECO_AVALISTA').AsString), IBDSReceber.FieldByName('NUM_END_AVALISTA').AsString, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('COMPL_END_AVALISTA').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('BAIRRO_AVALISTA').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_CID_AVALISTA').AsString), IBDSReceber.FieldByName('UF_CID_AVALISTA').AsString, TFuncoesString.SoNumero(IBDSReceber.FieldByName('CEP_AVALISTA').AsString), IBDSReceber.FieldByName('EMAIL_AVALISTA').AsString, IBDSReceber.FieldByName('TELEFONE_AVALISTA').AsString, IBDSReceber.FieldByName('IE_AVALISTA').AsString, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('TEXTO_LIVRE_BOLETO_REC').AsString)); { inicio tratamento de juros/multa/desconto } Titulo.ValorDesconto := 0; Titulo.CodigoDesconto := cdSemDesconto; // , cdValorFixo Titulo.TipoDesconto := tdNaoConcederDesconto; if (IBDSReceber.FieldByName('CONCEDER_DESCONTO_ATE_REC').AsString = 'S') and ((IBDSReceber.FieldByName('VLR_DESCONTO_ATE_REC').AsCurrency > 0) or (IBDSReceber.FieldByName('PERC_DESCONTO_BOLETO_REC').AsCurrency > 0)) then begin { tdNaoConcederDesconto, tdValorFixoAteDataInformada, tdPercentualAteDataInformada, tdValorAntecipacaoDiaCorrido, tdValorAntecipacaoDiaUtil, tdPercentualSobreValorNominalDiaCorrido, tdPercentualSobreValorNominalDiaUtil, tdCancelamentoDesconto); } if IBQryServBanc.FieldByName('REM_DESCONTO_VP_SER').AsString = 'P' then begin Titulo.ValorDesconto := IBDSReceber.FieldByName('PERC_DESCONTO_BOLETO_REC').AsCurrency; Titulo.TipoDesconto := tdPercentualAteDataInformada; end else if IBQryServBanc.FieldByName('REM_DESCONTO_VP_SER').AsString = 'V' then begin Titulo.ValorDesconto := IBDSReceber.FieldByName('VLR_DESCONTO_ATE_REC').AsCurrency; Titulo.TipoDesconto := tdValorFixoAteDataInformada; end; if Titulo.ValorDesconto > 0 then begin Titulo.CodigoDesconto := cdValorFixo; Titulo.DataDesconto := IBDSReceber.FieldByName('CONSIDERAR_DESC_ATE_REC').AsDateTime; end; end; Titulo.DataMoraJuros := Titulo.Vencimento + 1; Titulo.DataMulta := Titulo.Vencimento + 1; Titulo.CodigoMoraJuros := cjIsento; // cjValorDia, cjTaxaMensal, // indicação de multa, valor fixo só se for por valor Titulo.MultaValorFixo := (IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'F'); if IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'P' then begin Titulo.PercentualMulta := IBDSReceber.FieldByName('PERC_MULTA_BOLETO_REC').AsCurrency; Titulo.CodigoMulta := cmPercentual; end else if IBQryServBanc.FieldByName('REM_MULTA_VP_SER').AsString = 'F' then begin if IBDSReceber.FieldByName('MULTA_VALORFIXO_REC').AsCurrency > 0 then Titulo.PercentualMulta := IBDSReceber.FieldByName('MULTA_VALORFIXO_REC').AsCurrency else Titulo.PercentualMulta := IBDSReceber.FieldByName('MULTA_CALC_REC').AsCurrency; Titulo.CodigoMulta := cmValorFixo; end; { Santander 1 = Valor por dia - Informar no campo o valor/dia a mora a ser cobrada. 2 = Taxa Mensal - Informar no campo taxa mensal o percentual a ser aplicado sobre valor do titulo que será calculado por dia de atraso. 3 = Isento 4 = Utilizar comissão permanência do Banco por dia de atraso 5 = Tolerância valor por dia (cobrar juros a partir de) 6 = Tolerância taxa mensal (cobrar juros a partir de) * Para o código igual 4, o campo “taxa mensal” não deverá conter informação. } { Juro: 0-Isento (Usado p/Banco) 1-Valor por Dia (Usado p/Banco) 2-Taxa Mensal (Usado p/Banco) 3-Valor Mensal (Usado p/Banco) 4-Taxa Diaria V-Valor (Usado p/Pag Fácil) P-Percentual (Usado p/Pag Fácil) } if IBQryServBanc.FieldByName('COD_MORAJUROS_REMESSA_SER').AsString <> '' then Titulo.CodigoMora := IBQryServBanc.FieldByName('COD_MORAJUROS_REMESSA_SER').AsString; // Indicacao de mora de juros cjValorDia, cjTaxaMensal, cjIsento, cjValorMensal, cjTaxaDiaria if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '1' then begin Titulo.ValorMoraJuros := IBDSReceber.FieldByName('JURO_CALC_REC').AsCurrency; Titulo.CodigoMoraJuros := cjValorDia; end else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '2' then // taxa mensal begin // 'JURO_CALC_MES_FIN' > valor por mes // santander 33 Titulo.ValorMoraJuros := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency; Titulo.CodigoMoraJuros := cjTaxaMensal; CorrigirTaxaMensalBanco33 := true; PercentualJurosUsado := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency; end else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '3' then // Valor Mensal begin Titulo.ValorMoraJuros := IBDSReceber.FieldByName('JURO_CALC_REC').AsCurrency; Titulo.CodigoMoraJuros := cjValorMensal; end else if IBQryServBanc.FieldByName('REM_JURO_VP_SER').AsString = '4' then // taxa diaria begin Titulo.ValorMoraJuros := IBDSReceber.FieldByName('PERC_JURO_BOLETO_REC').AsCurrency / 30; Titulo.ValorMoraJuros := TFuncoesNumero.RoundDCurrency(Titulo.ValorMoraJuros, 2); Titulo.CodigoMoraJuros := cjTaxaDiaria; end; ----------------------------- class procedure TFuncBoleto.AtribuirDadosAoTitulo( var ATituloNaLista : TACBrTitulo; AQryServico : TDataSet; ADataEmissaoTituloDataDocumento: TDate; Rem_Ocorrencia_Remban: Integer; ADocumentoRec : string; ANumeroSlip, ADVSlip : string; AVencimento: TDate; ATotalParcelas, AParcela: Integer; AEmpresaRec : Integer; ATipoAgrupamento : string; AAutoIncRec : Int64; AAutoIncAgrupamento : Int64; AValor : Currency; AFisicaJuridica, ACnpjCpf, ANome, AEndereco, ANumeroEndereco, AComplementoEndereco, ABairro, ACidade, AUF, ACEP, AEmail, ATelefone, AAvalista, ACnpjCpfAvalista, ALogradouroAvalista, ANumeroEnderecoAvalista, AComplementoAvalista, ABairroAvalista, ACidadeAvalista, AUFAvalista, ACepAvalista, AEmailAvalista, ATelefoneAvalista, AInscricaoNrAvalista, AObsTextoCedente: string ); var L: Integer; begin ATituloNaLista.EspecieDoc := AQryServico.FieldByName('ESPECIE_DOCUMENTO_SER').AsString; // banco inter 77 ATituloNaLista.UsoBanco := AQryServico.FieldByName('USO_BANCO_SER').AsString; if AQryServico.FieldByName('ACEITE_SER').AsString = 'S' then ATituloNaLista.Aceite := atSim else ATituloNaLista.Aceite := atNao; ATituloNaLista.LocalPagamento := AQryServico.FieldByName('LOCAL_PAGAMENTO_SER').AsString; if AQryServico.FieldByName('TIPODOCUMENTO_SER').AsInteger = 2 then ATituloNaLista.TipoImpressao := tipCarne else ATituloNaLista.TipoImpressao := tipNormal; // ATituloNaLista.Moeda := QryServico.FieldByName('MOEDA_SER').AsString; ATituloNaLista.Carteira := AQryServico.FieldByName('CARTEIRA_SER').AsString; if AQryServico.FieldByName('RESPONSABILIDADE_ENVIO_SER').AsInteger = 1 then ATituloNaLista.CarteiraEnvio := tceBanco else // 0 zero ATituloNaLista.CarteiraEnvio := tceCedente; // read fCarteiraEnvio write fCarteiraEnvio default tceCedente; ATituloNaLista.TotalParcelas := ATotalParcelas; ATituloNaLista.Parcela := AParcela; ATituloNaLista.DataAbatimento := 0; ATituloNaLista.DataBaixa := 0; ATituloNaLista.DataCredito := 0; ATituloNaLista.DataDesconto := 0; ATituloNaLista.DataMoraJuros := 0; ATituloNaLista.DataOcorrencia := 0; ATituloNaLista.DataProtesto := 0; ATituloNaLista.PercentualMulta := 0; ATituloNaLista.ValorAbatimento := 0; ATituloNaLista.ValorDesconto := 0; ATituloNaLista.ValorDespesaCobranca := 0; ATituloNaLista.ValorIOF := 0; ATituloNaLista.ValorMoraJuros := 0; ATituloNaLista.ValorOutrasDespesas := 0; ATituloNaLista.ValorOutrosCreditos := 0; ATituloNaLista.MultaValorFixo := (AQryServico.FieldByName('REM_MULTA_VP_SER').AsString = 'F'); ATituloNaLista.DataDocumento := ADataEmissaoTituloDataDocumento; ATituloNaLista.DataProcessamento := Now; ATituloNaLista.NossoNumero := ANumeroSlip; // Não pode somar o DV aqui ATituloNaLista.Vencimento := AVencimento; ATituloNaLista.NumeroDocumento := ADocumentoRec; ATituloNaLista.DescricaoMotivoRejeicaoComando.Clear; ATituloNaLista.MotivoRejeicaoComando.Clear; if (ATituloNaLista.ACBrBoleto.Banco.Numero = 104) and (ATituloNaLista.ACBrBoleto.LayoutRemessa = c240) then // caixa - nojento - 19 ATituloNaLista.NumeroDocumento := ATituloNaLista.ACBrBoleto.Banco.MontarCampoNossoNumero(ATituloNaLista); if AQryServico.FieldByName('REM_PROTESTAR_SER').AsInteger = 1 then begin ATituloNaLista.DataProtesto := AVencimento + AQryServico.FieldByName('REM_PROTESTAR_APOS_XDIAS_SER').AsInteger; ATituloNaLista.TipoDiasProtesto := diCorridos; // , diUteis end else begin ATituloNaLista.DataProtesto := 0; ATituloNaLista.TipoDiasProtesto := diUteis; end; // baixar if AQryServico.FieldByName('REM_BAIXAR_DEVOLVER_SER').AsInteger = 1 then begin ATituloNaLista.DataBaixa := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger; ATituloNaLista.DataLimitePagto := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger; end else begin ATituloNaLista.DataBaixa := 0; end; ATituloNaLista.SeuNumero := TFuncBoleto.GerarSeuNumeroAML( (AQryServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = 'S'), AEmpresaRec, AAutoIncRec, AAutoIncAgrupamento); (* 0=Registrar remessa {Gerar primeira remessa} 1=Baixar {Pedido de Baixa} 2=Conceder Abatimento {Concessão de Abatimento} 3=Cancelar Abatimento {Cancelamento de Abatimento concedido} 4=Alterar Vencimento {Alteração de vencimento} 5=Alterar Numero Controle {Alteração de seu número} 6=Protestar {Pedido de protesto} 7=Cancelar Instrucao Protesto Baixa {Sustar protesto e baixar} 8=Cancelar Instrucao Protesto {Sustar protesto e manter na carteira} 9=Outras Ocorrencias {Alteração de Outros Dados} *) case Rem_Ocorrencia_Remban of 0: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaRegistrar; 1: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaBaixar; 2: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaConcederAbatimento; 3: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarAbatimento; 4: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarVencimento; 5: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarNumeroControle; 6: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaProtestar; 7: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtestoBaixa; 8: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtesto; 9: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaOutrasAlteracoes; else Raise Exception.Create('Código de ocorrência: ' + Rem_Ocorrencia_Remban.ToString + ' inválida.'); end; ATituloNaLista.ValorDocumento := AValor; if AFisicaJuridica = 'J' then ATituloNaLista.Sacado.Pessoa := pJuridica else if AFisicaJuridica = 'F' then ATituloNaLista.Sacado.Pessoa := pFisica else ATituloNaLista.Sacado.Pessoa := pOutras; ATituloNaLista.Sacado.CNPJCPF := ACnpjCpf; ATituloNaLista.Sacado.NomeSacado := ANome; ATituloNaLista.Sacado.Logradouro := AEndereco; ATituloNaLista.Sacado.Complemento := AComplementoEndereco; ATituloNaLista.Sacado.Numero := ANumeroEndereco; ATituloNaLista.Sacado.Bairro := ABairro; ATituloNaLista.Sacado.CEP := ACEP; ATituloNaLista.Sacado.Cidade := ACidade; ATituloNaLista.Sacado.UF := AUF; ATituloNaLista.Sacado.Email := AEmail; ATituloNaLista.Sacado.Fone := ATelefone; // Avalista L := Length(TFuncoesString.SoNumero(ACnpjCpfAvalista)); if (L > 0) and (L <= 11) then ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pFisica else if L > 11 then ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pJuridica else ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pNenhum; // santanter, deu erro ATituloNaLista.Sacado.Avalista := AAvalista; ATituloNaLista.Sacado.SacadoAvalista.CNPJCPF := ACnpjCpfAvalista; ATituloNaLista.Sacado.SacadoAvalista.NomeAvalista := AAvalista; ATituloNaLista.Sacado.SacadoAvalista.Logradouro := ALogradouroAvalista; ATituloNaLista.Sacado.SacadoAvalista.Numero := ANumeroEnderecoAvalista; ATituloNaLista.Sacado.SacadoAvalista.Complemento := AComplementoAvalista; ATituloNaLista.Sacado.SacadoAvalista.Bairro := ABairroAvalista; ATituloNaLista.Sacado.SacadoAvalista.Cidade := ACidadeAvalista; ATituloNaLista.Sacado.SacadoAvalista.UF := AUFAvalista; ATituloNaLista.Sacado.SacadoAvalista.CEP := ACepAvalista; ATituloNaLista.Sacado.SacadoAvalista.Email := AEmailAvalista; ATituloNaLista.Sacado.SacadoAvalista.Fone := ATelefoneAvalista; ATituloNaLista.Sacado.SacadoAvalista.InscricaoNr := AInscricaoNrAvalista; ATituloNaLista.Mensagem.Text := AObsTextoCedente; ATituloNaLista.Informativo.Text := ''; // Não pode passar, senao vai como valor para remessa, posicao 157 a 158 no cnab400 sicoob ATituloNaLista.Instrucao1 := ''; ATituloNaLista.Instrucao2 := ''; ATituloNaLista.Instrucao3 := ''; end; Sugestão, olhar na pasta do componente, particularidades, nem tudo que se vê, pode usar para o banco em questão. \ACBr2wc\Fontes\ACBrBoleto\Particularidades.pdf
-
quando gera a segunda linha, indica que voce informa multa e juros em percentual. Atente para esse bloco no fonte do acbr //Registro Complemento Detalhe - Multa if PercentualMulta > 0 then begin inc( iSequencia ); wLinhaMulta:= '2' + // Tipo de registro - 2 OPCIONAL – COMPLEMENTO DETALHE - MULTA IfThen(MultaValorFixo,'1','2') + // Cocidgo da Multa 1- Cobrar Multa Valor Fixo / 2- Percentual / 0-Não cobrar multa ifThen((DataMulta > 0), FormatDateTime('ddmmyyyy', DataMulta), Poem_Zeros('',8)) + // Data da Multa 9(008) IntToStrZero( round(PercentualMulta * 100 ), 13) + // Valor/Percentual 9(013) space(371) + // Complemento IntToStrZero(iSequencia , 6); // Sequencial aRemessa.Add(UpperCase(wLinhaMulta)); end;
-
Isso aqui não está errado? ACBrBoleto1.Cedente.Agencia := agenciaDigito[0]; << somente uma posição ? if (Length(agenciaDigito)>1) then ACBrBoleto1.Cedente.AgenciaDigito := agenciaDigito[1]; << ?? contaDigito:=Split(QCobreBemXCONTA_CORRENTE_COBREBEMX.Value, '-'); ACBrBoleto1.Cedente.Conta := contaDigito[0]; << ?? if (Length(contaDigito)>1) then ACBrBoleto1.Cedente.ContaDigito := contaDigito[1]; ou isso é vetor assim: agenciadigito[1..2] of string ?