Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    691
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. Mano, como vc coloca os dados no componente? parece falta de DV Me preocupa essa msg... parar clientes. kkk
  2. Lembrando que é apenas PJ, aquele site azul.. quem é laranja, MEI, não ainda. aff
  3. 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
  4. 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
  5. 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.
  6. @Daniel InfoCotidiano tinha ligação com a altura? Parecia mais com a espessura das barras. O zoom.
  7. 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
  8. 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 ...
  9. 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;
  10. 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.
  11. clientid e clientsecret, informou?
  12. 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 ?
  13. 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 ?
  14. 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.
  15. 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.
  16. 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.
  17. da versão 1 tenho, mas, falando com um amigo, segundo me informou, a v2, tem pouca diferença.
  18. sim, vc muda a url. Acontece que eu não sou de mandar isso, para evitar fadiga, mas, ja vou criar uma rotina para deletar ele da pasta, quando o programa for atualizado com a versao certa.
  19. 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>
  20. ACbr não, mas não é dificil fazer.
  21. Dica: Vai pela API, é muito prático, o boleto sai na hora.
  22. 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
  23. 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;
  24. 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 ?
×
×
  • 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.

The popup will be closed in 10 segundos...