Ir para conteúdo
  • Cadastre-se

dev botao

Carregar em Tempo de Execução informações de Outro Banco


Ver Solução Respondido por Victor H. Gonzales - Panda,
  • Este tópico foi criado há 1254 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Olá Tudo Bem!

Estou tentando gerar Boleto de dois Bancos diferentes, então pra isso preciso mudar em tempo de execução qual o Banco que vai ser gerado o boleto.

O problema é que escolho o banco e seto a propriedade TipoCobranca, mas quando gera o boleto o campo Local de Pagamento sai como ''Não Definido"(segue a imagem em anexo).

Isso ocorre na primeira vez que é carregado o form onde é Gerado o Boleto! Se eu gerar novamente o boleto com aquele mesmo Banco ae sim sai corretamente escrito o nome do Banco. Mas se sair do executável e entrar de novo e entrar no form na primeira vez sai como Não Definido, mas se gerar novamente sem sair do executável ou trocar de Banco sai correto o nome.

Parece que ele carrega ACBrBoleto na primeira vez.

Estou setando o banco da seguinte forma:

               Vcodbanco:=IBQCnab.FieldByName('BANCOD').AsInteger;
                 case Vcodbanco of
                   1: begin //001
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBancoDoBrasil;
                      end;
                   4: begin //004
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBancoDoNordeste;
                      end;
                  21: begin //021
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBanestes;
                      end;
                  8,33,353: begin //033,353,008
                               dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobSantander;
                            end;
                  41: begin //041
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBanrisul;
                      end;
                  70: begin //070
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBRB;
                      end;
                  85: begin //085
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBancoCECRED;
                      end;
                  104:begin //104
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobCaixaEconomica;
                      end;
                  237:begin //237
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBradesco;
                      end;
                  341:begin //341
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobItau;
                      end;
                  389:begin //389
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBancoMercantil;
                      end;
                  748:begin //748
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobSicred;
                      end;
                  756:begin //756
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBancoob;
                      end;
                  399:begin //399
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobHSBC;
                      end;
                  422:begin //422
                           dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobBancoSafra;
                      end;
                 end;

O resto do boleto sai corretamente com as informações do banco escolhido, só o campo Local de Pagamento que notei essa diferença.

Tentei colocar o nome na propriedade nome do banco no ACBrBoleto assim:

 ACBrBoleto.Banco.Nome:=nomedobanco;

Mas não deu certo.

Como faço pra quando escolher o banco em tempo execução não precise executar duas vezes pra gerar corretamente o boleto?

Preciso setar alguma outro propriedade do ACBrBoleto?

Desde já Muito Obrigado pela Atenção e Ajuda!

Local_Pagamento_nao_definido.jpg

  • Consultores
  • Solution
Postado

Bom dia,

você pode matar todos esses seus IF simplificando assim <ACBrBol>.Banco.TipoCobranca := <ACBrBol>.GetTipoCobranca(Vcodbanco); e no Titulo.LocalPagamento você pode forçar o literal desejado.

Abraços.

obs : eu faria múltiplos bancos em fluxos distintos de processamento.

  • Curtir 1
Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Membros Pro
Postado

Boa Tarde 

Em 22/06/2021 at 11:36, Daniel Simoes disse:

Não sei se compreendi direito.. mas você quer adicionar na Lista de Boletos, Títulos de dois Bancos diferentes, ao mesmo tempo ?

Obrigado pela Ajuda Daniel! Não o cliente possuí conta em dois bancos e ele emite boleto pelos dois, quando vai gerar boleto de um banco, o cliente seleciona a conta do banco e gera todos os boletos daquele banco. Quando for gerar do outro seleciona a conta do outro banco e gera todos desse outro banco.

O componente ACBrBoleto na propriedade Banco tipocobranca fica como default cobNenhum, então quando vai gerar o boleto pela conta escolho qual o banco e seto a opção pelo case. 

Ao gerar os boletos sai com com a logo e formatação do banco da conta mas o campo Local de Pagamento sai como ''Não Definido" isso entro no form a 1ª vez. Se saio deste form entro de novo e gero boletos para o mesmo banco que acabei de gerar, ae o campo Local de Pagamento sai correto com o nome do banco. Se eu escolher outro banco sai com o logo formatação, mas o campo Local de Pagamento sai como Não definido. Mas se eu sair do form e entrar de novo e gerar boleto por esse último banco ae sai corretamente.

A minha dúvida e se tem setar mais algum propriedade ou estou  esquecendo de algum detalhe.

  Vitor Obrigado por me ajudar.

Em 22/06/2021 at 11:43, Victor H. Gonzales - Panda disse:

Bom dia,

você pode matar todos esses seus IF simplificando assim <ACBrBol>.Banco.TipoCobranca := <ACBrBol>.GetTipoCobranca(Vcodbanco); e no Titulo.LocalPagamento você pode forçar o literal desejado.

Abraços.

obs : eu faria múltiplos bancos em fluxos distintos de processamento.

Vou simplificar fazendo como você disse Obrigado.

Então estou tentando forçar o nome na seguinte propriedade: dmSISTEMA.ACBrBoleto.Banco.Nome:='NOME DO BANCO'; depois de ter escolhido o TipoCobranca, mas não da certo, não sei se essa propriedade Banco.Nome seria essa? Não achei essa propriedade Titulo.LocalPagamento. Ela é propriedade do Banco?

Mesmo se deixar um dos bancos default e gerar boletos por ele quando entra a 1ª vez no form ele gerar correto com o Local Pagamento tudo certo, mas se usar outra conta que não a do default então sai Não definido ae tenho que entrar de novo no form ae sim na segunda vez gera correto.

Mais uma vez Obrigado ambos por me ajudarem. 

  • Moderadores
Postado

Por acaso está criando o Titulo antes de definir o Banco.TipoCobranca?

O que vale é o que está no Titulo:

constructor TACBrTitulo.Create(ACBrBoleto:TACBrBoleto);
begin
   inherited Create;

   fACBrBoleto        := ACBrBoleto;
   fLocalPagamento    := ACBrBoleto.Banco.LocalPagamento;

Então se estiver criando o título antes não vai atualizar a propriedade do título.

56 minutos atrás, Mauricio Elias disse:

Não achei essa propriedade Titulo.LocalPagamento. Ela é propriedade do Banco?

 

var
  Titulo: TACBrTitulo;
begin
  Titulo := ACBrBoleto1.CriarTituloNaLista;
  Titulo.LocalPagamento := 'Pagável em qualquer banco ou casa lotérica';

 

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Membros Pro
Postado

Olá BigWings Obrigado por me Ajudar!

1 hora atrás, BigWings disse:

Por acaso está criando o Titulo antes de definir o Banco.TipoCobranca?

O que vale é o que está no Titulo:


constructor TACBrTitulo.Create(ACBrBoleto:TACBrBoleto);
begin
   inherited Create;

   fACBrBoleto        := ACBrBoleto;
   fLocalPagamento    := ACBrBoleto.Banco.LocalPagamento;

Então se estiver criando o título antes não vai atualizar a propriedade do título.

 


var
  Titulo: TACBrTitulo;
begin
  Titulo := ACBrBoleto1.CriarTituloNaLista;
  Titulo.LocalPagamento := 'Pagável em qualquer banco ou casa lotérica';

 

Bom vamos lá antes de eu entrar no laço em que gero os boletos eu executo esse comando:

o ACBrBoleto fica no data module.

dmSISTEMA.ACBrBoleto.ListadeBoletos.Clear;

já dentro do loop do laço primeiro executo o comando:

Titulo := dmSISTEMA.ACBrBoleto.CriarTituloNaLista;

depois dele que seleciono o layout exemplo:

dmSISTEMA.ACBrBoleto.ACBrBoletoFC.DirLogo  := vDirLogo;

dmSISTEMA.ACBrBoleto.ACBrBoletoFC.LayOut:=lReciboTopo

depois vem o tipocobranca exemplo

dmSISTEMA.ACBrBoleto.Banco.TipoCobranca:=cobSicred;

no fim dmSISTEMA.ACBrBoleto.GerarPDF;

depois do fim do laço

 dmSISTEMA.ACBrBoleto.Imprimir;

Eu tenho que definir o layout, tipocobranca antes de executar a linha: Titulo := dmSISTEMA.ACBrBoleto.CriarTituloNaLista ?

Tenho que chamar esse constructor ?

Desde já Muito Obrigado pela Atenção e Ajuda!

 

  • Moderadores
Postado
40 minutos atrás, Mauricio Elias disse:

Eu tenho que definir o layout, tipocobranca antes de executar a linha: Titulo := dmSISTEMA.ACBrBoleto.CriarTituloNaLista ?

Sim.

Ou preencher a propriedade Titulo.LocalPagamento manualmente.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Membros Pro
Postado
17 horas atrás, BigWings disse:

Sim.

Ou preencher a propriedade Titulo.LocalPagamento manualmente.

Olá BigWings Obrigado por responder.

Deu certo problema resolvido! Mudei ae linha de comando Titulo := dmSISTEMA.ACBrBoleto.CriarTituloNaLista; pra depois de definir o layout e tipoCobranca ae gerou corretamente agora. Seja qual banco eu escolher agora gera corretamente com a propriedade Titulo.LocalPagamento preenchida sem eu precisar preencher manualmente.

Muito Obrigado a todos que me ajudaram!

Problema resolvido!

Obrigado!  

  • Obrigado 1
  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Este tópico foi criado há 1254 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.