Ir para conteúdo
  • Cadastre-se

dev botao

ACBrBoleto - Banco Banese


Ver Solução Respondido por José M. S. Junior,
  • Este tópico foi criado há 2013 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Sim, já está em produção.
Sim, no caso do erro acima, informe aceite no titulo no acbr.

0470001300001P 020001100000001034574 0000000000000200269311222350139         0407201800000000006250000000 02A13062018105072018000000000000188000000000000000000000000000000000000000000000000000000350139                   30010250900000000001
0470001300001Q 021000025680455587JOSE DA GAMA RIBEIRO                    R. JOSE AVELINO DE OLIVEIRA             CENTRO         49000000SIMAO DIAS     SE0000000000000000                                        00000000000000000000000        
0470001300001R 02000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                              00000000000000000000000000000  0         
0470001300002P 020001100000001034574 0000000000000200463711222350333         2907201800000000006575000000 02A28062018130072018000000000000197000000000000000000000000000000000000000000000000000000350333                   30010250900000000001
0470001300002Q 021000042596114887JOAO GARCIA DE MATOS                    PCA ANTONIO DA SILVA VIEIRA             CENTRO         49400000LAGARTO        SE0000000000000000                                        00000000000000000000000        
0470001300002R 02000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                              00000000000000000000000000000  0         
0470001300003P 020001100000001034574 0000000000000200479311222350349         2007201800000000001750000000 02A29062018121072018000000000000052000000000000000000000000000000000000000000000000000000350349                   30010250900000000001
 

Minha remessa:

image.thumb.png.0a6e1e613e4461f35ce54ccdd4901081.png

 

 

O que podemos fazer é adicionar um "else" na  409 setando o padrão para "A"

image.png.5943c2837a7aa8a7581c19dbe5767ea7.png

Postado
10 minutos atrás, estinque disse:

Sim, já está em produção.
Sim, no caso do erro acima, informe aceite no titulo no acbr.

0470001300001P 020001100000001034574 0000000000000200269311222350139         0407201800000000006250000000 02A13062018105072018000000000000188000000000000000000000000000000000000000000000000000000350139                   30010250900000000001
0470001300001Q 021000025680455587JOSE DA GAMA RIBEIRO                    R. JOSE AVELINO DE OLIVEIRA             CENTRO         49000000SIMAO DIAS     SE0000000000000000                                        00000000000000000000000        
0470001300001R 02000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                              00000000000000000000000000000  0         
0470001300002P 020001100000001034574 0000000000000200463711222350333         2907201800000000006575000000 02A28062018130072018000000000000197000000000000000000000000000000000000000000000000000000350333                   30010250900000000001
0470001300002Q 021000042596114887JOAO GARCIA DE MATOS                    PCA ANTONIO DA SILVA VIEIRA             CENTRO         49400000LAGARTO        SE0000000000000000                                        00000000000000000000000        
0470001300002R 02000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                              00000000000000000000000000000  0         
0470001300003P 020001100000001034574 0000000000000200479311222350349         2007201800000000001750000000 02A29062018121072018000000000000052000000000000000000000000000000000000000000000000000000350349                   30010250900000000001
 

Minha remessa:

image.thumb.png.0a6e1e613e4461f35ce54ccdd4901081.png

 

 

O que podemos fazer é adicionar um "else" na  409 setando o padrão para "A"

image.png.5943c2837a7aa8a7581c19dbe5767ea7.png

Sobre o Aceite estou passando como Sim.

 

 

Postado (editado)
6 horas atrás, washington disse:

 

Boa noite, depois de muita demora ao retornar os arquivos do Banese, veio mais esses erros:


403830 40383 34 1 3-Entrada Rejeitada 79-Data Juros de Mora Inválido
27-Valor/Taxa de Juros de Mora Inválido
403946 40394 34 2 3-Entrada Rejeitada 79-Data Juros de Mora Inválido
27-Valor/Taxa de Juros de Mora Inválido
403954 40395 34 3 3-Entrada Rejeitada 79-Data Juros de Mora Inválido
27-Valor/Taxa de Juros de Mora Inválido
403997 40399 34 4 3-Entrada Rejeitada 79-Data Juros de Mora Inválido
27-Valor/Taxa de Juros de Mora Inválido

Como você está fazendo o preenchimento desses campos?

Estou fazendo dessa forma:

//JUROS %(Percentual)

Titulo.ValorMoraJuros      := 0.00;

if (getField(DM_Dados.qFiltro1,'VW_CONTA_BANCO','JUROS_PERC','DOUBLE PRECISION',0.00) > 0) then
begin

	rDescVencimento          := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('JUROS_PERC').AsFloat)/100);
    Titulo.ValorMoraJuros    := RoundABNT(rDescVencimento,2);
    Titulo.DataMoraJuros     := CdsConta.FieldByName('VENCIMENTO').AsDateTime;

end;


Obrigado.

Editado por washington
Postado (editado)

Bom dia,

O Banese não aceita Mora "0", e sempre tem data de mora/juros, então veja como ficou meu código:

image.thumb.png.9f1614ac45e90104752bd03872c02723.png

Editado por estinque
Postado
8 minutos atrás, estinque disse:

Bom dia,

O Banese não aceita Mora "0", e sempre tem data de mora/juros, então veja como ficou meu código:

image.thumb.png.9f1614ac45e90104752bd03872c02723.png

Bom dia.

Já resolvi obrigado.

Estava vinculado ao código de mora e juros
Case Titulo.CodigoMoraJuros Of
        cjValorDia
        cjTaxaMensal
        cjIsento
End;

Caso seja 0 informar como cjIsento.
Assim que terminar tudo informo aqui como foi o procedimento e ai já ajuda o pessoal.

 

  • Curtir 1
  • Obrigado 1
  • Moderadores
Postado
Em 10/08/2018 at 14:36, estinque disse:

Boa Tarde,

Segue o arquivo que estamos usando atualmente, tanto para remessa, quanto para retorno, na última versão do ACBR.

ACBrBancoBanese.pas.patch

ACBrBancoBanese.pas

Bom dia

@estinque, existem muitas inconsistências entre o seu fonte e o fonte disponível no SVN. Não há como compatibilizar fazendo uma simples comparação... Se possível, baixe os fontes do SVN e aplique as suas correções baseado no fonte do SVN, assim poderemos atualizar com estes e outros possíveis ajustes... Obrigado.

  • Obrigado 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • 1 mês depois ...
Postado

Boa Tarde,

Junior ou Juliana, sei do empenho de vocês com o projeto ACBR, e o que vocês fazem de forma voluntária, peço desculpa até em insistir, mais verifiquem a possibilidade de incluir o código do BANESE no SVN do ACBR, agradeceria muito.
Iria não só ajudar a comunidade, mas, também a mim.

Obrigado.

ACBrBancoBanese.pas

  • Moderadores
Postado

Boa tarde, como informado existem muitas diferenças na comparação do arquivo disponibilizado no SVN e a sua versão... A diferença não é apenas com as novas funcionalidades implementadas tem funções com nomes e funcionalidades diferentes...

A preocupação maior é a quebra de compatibilidade para todos que já utilizam a versão do SVN... De qualquer forma está na lista de tarefas para análise... Obrigado!

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Boa tarde,

Realmente, foi feito muitas mudanças, tinha métodos que não estavam sendo implementados, como CalcularNomeArquivoRemessa, e o arquivo que estava no SVN tinha muitos erros e não tratava o retorno.
Vou aguarda a sua avaliação.

Obrigado pela atenção.

Postado
1 hora atrás, estinque disse:

Boa Tarde,

Junior ou Juliana, sei do empenho de vocês com o projeto ACBR, e o que vocês fazem de forma voluntária, peço desculpa até em insistir, mais verifiquem a possibilidade de incluir o código do BANESE no SVN do ACBR, agradeceria muito.
Iria não só ajudar a comunidade, mas, também a mim.

Obrigado.

ACBrBancoBanese.pas

Boa tarde, Mano você consegue emitir um boleto em PDF e enviar aqui, vamos trabalhar juntos nessa mudança, na ultima versão que peguei esta com divergência no boleto banese o setor de homologação informou que falta a chave asbace no boleto e que o numero da agencia estava com 3 dígitos e não 2.

 

Postado

Boa tarde Washington,

Quem tem 3 dígitos, é a linha digitável, e não o asbace, conforme manual que anexo, já o boleto, segue o que estou gerando abaixo.

LINHA DIGITÁVEL:

image.png.f653e50ce167f23bf19ae9081da0fc6d.png

 

 

ASBACE:

image.png.e80b55e67d9b5f702d60a0c19d25458f.png

 

Boleto

image.thumb.png.8efcceae199e44db0324c0d15cb79102.png

 

 

 

Postado
16 horas atrás, estinque disse:

Boa tarde Washington,

Quem tem 3 dígitos, é a linha digitável, e não o asbace, conforme manual que anexo, já o boleto, segue o que estou gerando abaixo.

LINHA DIGITÁVEL:

image.png.f653e50ce167f23bf19ae9081da0fc6d.png

 

 

ASBACE:

image.png.e80b55e67d9b5f702d60a0c19d25458f.png

 

Boleto

image.thumb.png.8efcceae199e44db0324c0d15cb79102.png

 

 

 

Bom dia, Depois de ter atualizado com os fontes aqui postado(ACBrBancoBanese.pas). o Boleto ainda esta saindo com a linha digitável incorreta.

Segue imagem do boleto.

Como esta sendo setado os dados no componente, pode ser isso que esta ocasionando o problema.
A agencia ela vem com 3 dígitos que no meu caso é 028 e na chave asbace ela pega apenas 2 posições:
Composição da Chave Asbace
AACCCCCCCCCNNNNNNNNNBBBDD
A - agência do cedente (2 posições)
C - conta corrente do cedente (9 posições)
N - nosso número, incluindo o dígito (9 posições)
B - código do banco, 047 para o Banese (3 posições)
D - duplo dígito (2 posições)
Cálculo do duplo dígito verificador da Chave Asbace

 

Vale ressaltar que no construtor esta com essas informações:
constructor TACBrBancoBanese.create(AOwner: TACBrBanco);
begin
   inherited create(AOwner);
   fpDigito                := 7;
   fpNome                  := 'Banese';
   fpNumero                := 047;
   fpTamanhoMaximoNossoNum := 8;
   fpTamanhoAgencia        := 3;
   fpTamanhoConta          := 9;
   fpTamanhoCarteira       := 1;
   fValorTotalDocs         := 0;
   fQtRegLote              := 0;
   fRegLote                := 0;
end;

 

fpTamanhoAgencia        := 3;(2)

fpTamanhoMaximoNossoNum := 8; (9)

 

Se for o caso pra poder Seguir o que Junior informou baixo a versão do SVN e faço as alterações necessárias a fim de ter um componente compatível e no padrão.
 

 

 

Screenshot_10.png.a7b5aa6ea1b252f4265b814c65782c8a.png

 

Postado
23 horas atrás, estinque disse:

Boa tarde Washington,

Quem tem 3 dígitos, é a linha digitável, e não o asbace, conforme manual que anexo, já o boleto, segue o que estou gerando abaixo.

LINHA DIGITÁVEL:

image.png.f653e50ce167f23bf19ae9081da0fc6d.png

 

 

ASBACE:

image.png.e80b55e67d9b5f702d60a0c19d25458f.png

 

Boleto

image.thumb.png.8efcceae199e44db0324c0d15cb79102.png

 

 

 

Boa Tarde , depois de analisar o código verifiquei que a function TACBrBancoBanese.MontarCampoNossoNumero (const ACBrTitulo: TACBrTitulo ) : String;, ela esta retornando o Nosso Numero errado, pelo manual ele aceita apenas 9 posições já com o digito verificador, ou seja informamos apenas 8 e a function TACBrBancoBanese.CalcularDigitoVerificador(const ACBrTitulo: TACBrTitulo ): String; retorna o 9º digito, conforme o DEBUG ele esta retornando o número da Agência com 3 posições "028".

O primeiro Código que disponibilizei aqui no forum eles estava assim:


function TACBrBancoBanese.MontarCampoNossoNumero (
   const ACBrTitulo: TACBrTitulo ) : String;
begin
   ACBrTitulo.NossoNumero     := IntToStrZero( StrToIntDef((Trim(ACBrTitulo.NossoNumero)+Trim(CalcularDigitoVerificador(ACBrTitulo))),0) ,Self.TamanhoMaximoNossoNum);
   Result := ACBrTitulo.NossoNumero;
end;

function TACBrBancoBanese.MontarCampoNossoNumero (
   const ACBrTitulo: TACBrTitulo ) : String;
begin
   ACBrTitulo.NossoNumero     := IntToStrZero( StrToIntDef((Trim(ACBrTitulo.NossoNumero)+Trim(CalcularDigitoVerificador(ACBrTitulo))),0) ,Self.TamanhoMaximoNossoNum);
   Result := ACBrTitulo.NossoNumero;
end;

 

A principio seguir os conselhos de um membro no grupo que pegasse um código fonte de um outro banco renomeasse pra o banco novo e assim fizesse as modificações.

 

O que os Senhores me aconselham, pra ter um fonte no SVN e para que todos possam usar o mesmo.

Desde já agradecido.

 

 

 

 

 

 

 

 

image.png.4cf09f8cf51fd29e58503c3680140750.png

Postado
Em 14/09/2018 at 15:34, José M. S. Junior disse:

Boa tarde, como informado existem muitas diferenças na comparação do arquivo disponibilizado no SVN e a sua versão... A diferença não é apenas com as novas funcionalidades implementadas tem funções com nomes e funcionalidades diferentes...

A preocupação maior é a quebra de compatibilidade para todos que já utilizam a versão do SVN... De qualquer forma está na lista de tarefas para análise... Obrigado!

Bom dia José M. S. Junior.

Fiz a atualização da versão do SVN e alterei a classe com as informações do estinque.
O único método que vi gerando algo diferente foi o método MontarCampoNossoNumero .

As demais funções peguei da alteração do estinque e seguir o que estava nas alterações dele.

Peço que os envolvidos façam o teste e comentem se possível.

Recebi o retomo do Banese hoje informado que esta tudo normal com os arquivos de remessa e retorno.

Um outro Arquivo que modifiquei foi o ACBrBoletoFCFR.pas onde adicionei o seguinte código pra exibir a chave ASBACE no boleto:

ACBrBoletoFCFR.pas

if ACBrBoleto.Banco.Numero = 21 then
   Field_Asbace.AsString := TACBrBancoBanestes(Banco).CalcularCampoASBACE(ListadeBoletos[iFor])
else
if ACBrBoleto.Banco.Numero = 47 then
begin
   Field_Asbace.AsString := 'CHAVE ASBACE: '+TACBrBancoBanese(Banco).CalcularCampoASBACE(ListadeBoletos[iFor]) +' BANESE';
end;

 

Se possível analisar as alterações e subir ao SVN, Muito Obrigado.

Acbr Boleto Homologado.rar

  • Curtir 1
Postado

Boa tarde.

Conforme algumas alterações acima caso alguém tenha alguma dificuldade ao preencher os dados no componente, segue como estou fazendo aqui.

Preenchimento do Cedente/Beneficiário.

//CEDENTE - EMPRESA
  cBoleto.Banco.TipoCobranca    := TACBrTipoCobranca(DM_Dados.qFiltro1.FieldByName('TIPO_COBRANCA').AsInteger);
  cBoleto.Cedente.CaracTitulo   := TACBrCaracTitulo(DM_Dados.qFiltro1.FieldByName('CARACTER_TITULO').AsInteger);
  cBoleto.Cedente.TipoCarteira  := TACBrTipoCarteira(DM_Dados.qFiltro1.FieldByName('TIPO_CARTEIRA').AsInteger);

  //LAYOUT REMESSA
  cBoleto.LayoutRemessa         :=  TACBrLayoutRemessa(DM_Dados.qFiltro1.FieldByName('LAYOUT_REMESSA').AsInteger);
  cBoleto.LeCedenteRetorno      :=  verificaAcao(DM_Dados.qFiltro1.FieldByName('LER_CEDENTE_RETORNO').AsString);

  //LAYOUT
  cBoleto.ACBrBoletoFC.LayOut           :=  TACBrBolLayOut(DM_Dados.qFiltro1.FieldByName('LAYOUT').AsInteger);
  cBoleto.ACBrBoletoFC.SoftwareHouse    :=  sSoftHouse;
  cBoleto.ACBrBoletoFC.DirLogo          :=  sCaminhoDir(getField(DM_Dados.sConfigBoleto,'CONFIG_BOLETO','BOLETO_REPORT_DIR_LOGO','VARCHAR(255)','\Boleto\Logos\Colorido',bDebug),'\Boleto\Logos\Colorido');

  if (cBoleto.ACBrBoletoFC is TACBrBoletoFCFR) then
     TACBrBoletoFCFR(cBoleto.ACBrBoletoFC).FastReportFile := sCaminhoDir(getField(DM_Dados.sConfigBoleto,'CONFIG_BOLETO','BOLETO_REPORT_FAST','VARCHAR(255)','\Boleto\Report\Boleto.fr3',bDebug),'\Boleto\Report\Boleto.fr3');


  //TACBrTipoDocumento = (Tradicional=1, Escritural=2);
  cBoleto.Cedente.TipoDocumento := Tradicional;

  //VERIFICACAO
  cBoleto.Cedente.Modalidade    :=  AllTrim(DM_Dados.qFiltro1.FieldByName('MODALIDADE').AsString);
  cBoleto.Cedente.Convenio      :=  AllTrim(DM_Dados.qFiltro1.FieldByName('CONVENIO').AsString);
  cBoleto.Cedente.TipoInscricao :=  TACBrPessoaCedente(DM_Dados.qFiltro1.FieldByName('TIPO_INSCRICAO').AsInteger);

        
  //AGENCIA
  if contemCaracter(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString,'-') then
  begin
    posConta                      := pos('-',DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString);
    cBoleto.Cedente.Agencia       := Copy(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString,1,(posConta-1));
    cBoleto.Cedente.AgenciaDigito := Copy(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString,posConta+1,(Length(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString)));
  end
  else
  begin
    cBoleto.Cedente.Agencia       := Copy(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString,1,4);
    cBoleto.Cedente.AgenciaDigito := '0';
  end;

  //CONTA
  if contemCaracter(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,'-') then
  begin
    posConta                      := pos('-',DM_Dados.qFiltro1.FieldByName('CONTA').AsString);
    cBoleto.Cedente.Conta         := Copy(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,1,(posConta-1));
    cBoleto.Cedente.ContaDigito   := Copy(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,posConta+1,(Length(DM_Dados.qFiltro1.FieldByName('CONTA').AsString)));
  end
  else
  begin
    cBoleto.Cedente.Conta         := Copy(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,1,(length(DM_Dados.qFiltro1.FieldByName('CONTA').AsString)-1));
    cBoleto.Cedente.ContaDigito   := Copy(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,(length(DM_Dados.qFiltro1.FieldByName('CONTA').AsString)),1);
  end;

  if Length(AllTrim(SomenteNumero(cBoleto.Cedente.AgenciaDigito))) = 0 then
     cBoleto.Cedente.AgenciaDigito  := '0';
           
  if ( (UpperCase(cBoleto.Cedente.ContaDigito) = 'X') and (cBoleto.Banco.Numero = 1) ) then
  else
  if Length(AllTrim(SomenteNumero(cBoleto.Cedente.ContaDigito))) = 0 then
     cBoleto.Cedente.ContaDigito    := '0';

  cBoleto.Cedente.CodigoCedente     := DM_Dados.qFiltro1.FieldByName('CEDENTE').AsString;
  cBoleto.Cedente.CodigoTransmissao := DM_Dados.qFiltro1.FieldByName('CODIGO_TRANSMISSAO').AsString;

  cBoleto.Cedente.Nome              :=  DM_Dados.sConfig.FieldByName('NOME').AsString;
  cBoleto.Cedente.CNPJCPF           :=  SomenteNumero(DM_Dados.sConfig.FieldByName('CGC_CNPJ').AsString);
  cBoleto.Cedente.NumeroRes         :=  DM_Dados.qFiltro1.FieldByName('NUMERO_RESP').AsString;

  cBoleto.Cedente.ResponEmissao     :=  TACBrResponEmissao(DM_Dados.qFiltro1.FieldByName('RESP_EMISSAO').AsInteger);
  

  //ENDERECO - CEDENTE - EMPRESA
  cBoleto.Cedente.Logradouro    :=  DM_Dados.sConfig.FieldByName('LOGADOURO').AsString+', '+DM_Dados.sConfig.FieldByName('NUMERO').AsString;
  cBoleto.Cedente.Complemento   :=  DM_Dados.sConfig.FieldByName('COMPLEMENTO').AsString;
  cBoleto.Cedente.Bairro        :=  DM_Dados.sConfig.FieldByName('BAIRRO').AsString;
  cBoleto.Cedente.CEP           :=  SomenteNumero(DM_Dados.sConfig.FieldByName('CEP').AsString);
  cBoleto.Cedente.Cidade        :=  DM_Dados.sConfig.FieldByName('NOME CIDADE').AsString;
  cBoleto.Cedente.Telefone      :=  DM_Dados.sConfig.FieldByName('FONE').AsString;
  cBoleto.Cedente.UF            :=  DM_Dados.sConfig.FieldByName('UF').AsString;

  //CEDENTE - EMPRESA - FIM

 

Preenchimento do Titulo

//DADOS BOLETOS
  Titulo := cBoleto.CriarTituloNaLista;

  Titulo.Carteira          := AllTrim(DM_Dados.qFiltro1.FieldByName('CARTEIRA').AsString);
  Titulo.EspecieDoc        := 'DM';
  Titulo.EspecieMod        := 'R$';


  //IMPRESSAO
  Titulo.TipoImpressao     := TACBrTipoImpressao(DM_Dados.qFiltro1.FieldByName('TIPO_IMPRESSAO').AsInteger);

  //CARTEIRA DE ENVIO
  Titulo.CarteiraEnvio     := TACBrCarteiraEnvio(DM_Dados.qFiltro1.FieldByName('TIPO_CARTEIRA_ENVIO').AsInteger);


  Titulo.Aceite            := atNao;
  if verificaAcao(DM_Dados.qFiltro1.FieldByName('ACEITE').AsString) then
     Titulo.Aceite := atSim
  else
     Titulo.Aceite := atNao;

  Titulo.LocalPagamento    := 'Pagável em qualquer banco até o vencimento.';
  Titulo.Vencimento        := CdsConta.FieldByName('VENCIMENTO').AsDateTime;
  Titulo.DataDocumento     := Now;{CdsConta.FieldByName('EMISSAO').AsDateTime;}
  Titulo.DataProcessamento := Now;

  Titulo.NumeroDocumento   := Copy(CdsConta.FieldByName('NUMERO').AsString,1,9)+'/'+GeraOrdemBoletoBancario(CdsConta.FieldByName('ORDEM').AsString);
  Titulo.NossoNumero       := CdsConta.FieldByName('CODIGO').AsString;
  Titulo.SeuNumero         := CdsConta.FieldByName('CODIGO').AsString;

  Titulo.ValorDocumento    := CdsConta.FieldByName('VALOR').AsFloat;


  //DESCONTO PRA PAGAMENTO ATE O VENCIMENTO DE %(Percentual)
  Titulo.ValorDesconto     := 0.00;
  Titulo.DataDesconto      := 0.00;

  //TACBrTipoDesconto = (tdNaoConcederDesconto, tdValorFixoAteDataInformada, tdPercentualAteDataInformada, tdValorAntecipacaoDiaCorrido, tdValorAntecipacaoDiaUtil, tdPercentualSobreValorNominalDiaCorrido, tdPercentualSobreValorNominalDiaUtil, tdCancelamentoDesconto);
  //Titulo.TipoDesconto      := TACBrTipoDesconto(DM_Dados.qFiltro1.FieldByName('TIPO_DESCONTO').AsInteger);
  //Titulo.TipoDesconto2  - falta implementar - não vi necessidade nos boletos homologados

  //TACBrCodigoDesconto    = (cdSemDesconto, cdValorFixo);
  Titulo.CodigoDesconto    := TACBrCodigoDesconto(DM_Dados.qFiltro1.FieldByName('TIPO_DESCONTO').AsInteger);
  Titulo.ValorDesconto     := 0;
  if ( (getField(DM_Dados.qFiltro1,'CONTA_BANCO','DESCONTO_PERC','DOUBLE PRECISION',0.00) > 0) and (Titulo.CodigoDesconto <> cdSemDesconto) ) then
  begin

    rDescVencimento          := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('DESCONTO_PERC').AsFloat)/100);
    Titulo.ValorDesconto     := RoundABNT(rDescVencimento,2);
    Titulo.DataDesconto      := (CdsConta.FieldByName('EMISSAO').AsDateTime + VarToIntDef(getField(DM_Dados.qFiltro1,'CONTA_BANCO','DIAS_DESCONTO','INT',0),0));

  end;
  //FIM DESCONTO

  //ABATIMENTO PRA PAGAMENTO ATE A DATA DE ABATIMENTO DE %(Percentual)
  Titulo.ValorAbatimento     := 0.00;
  if (getField(DM_Dados.qFiltro1,'CONTA_BANCO','ABATIMENTO_PERC','DOUBLE PRECISION',0.00) > 0) then
  begin

    rDescVencimento           := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('DESCONTO_PERC').AsFloat)/100);
    Titulo.ValorAbatimento    := RoundABNT(rDescVencimento,2);
    Titulo.DataAbatimento     := CdsConta.FieldByName('VENCIMENTO').AsDateTime;

  end;

  //TACBrCodigoNegativacao = (cnNenhum, cnProtestarCorrido, cnProtestarUteis, cnNaoProtestar, cnNegativar, cnNaoNegativar);
  Titulo.CodigoNegativacao  :=  TACBrCodigoNegativacao(DM_Dados.qFiltro1.FieldByName('CODIGO_NEGATIVACAO').AsInteger);

  //TACBrTipoDiasIntrucao = (diCorridos, diUteis);
  Titulo.TipoDiasProtesto   :=  TACBrTipoDiasIntrucao(DM_Dados.qFiltro1.FieldByName('TIPO_DIAS_INSTRUCAO').AsInteger);

  if (VarToIntDef(getField(DM_Dados.qFiltro1,'CONTA_BANCO','DIAS_PROTESTO','INT',0),0) > 0) then
  begin

    //Titulo.DiasDeProtesto   :=  DM_Dados.qFiltro1.FieldByName('DIAS_PROTESTO').AsInteger;
    //DataProtesto      := StrToDateDef(edtDataProtesto.Text, 0);

  end;


  //JUROS MORA %(Percentual)
  //TACBrCodigoJuros       = (cjValorDia, cjTaxaMensal, cjIsento);
  Titulo.CodigoMoraJuros  := TACBrCodigoJuros(DM_Dados.qFiltro1.FieldByName('TIPO_JUROS').AsInteger);
  Titulo.ValorMoraJuros   := 0.00;
  if ( (getField(DM_Dados.qFiltro1,'CONTA_BANCO','JUROS_PERC','DOUBLE PRECISION',0.00) > 0) and (Titulo.CodigoMoraJuros <> cjIsento) ) then
  begin

    Case Titulo.CodigoMoraJuros Of
        cjValorDia    :begin end;
        cjTaxaMensal  :begin end;
    End;

    rDescVencimento         := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('JUROS_PERC').AsFloat)/100);
    Titulo.ValorMoraJuros   := RoundABNT(rDescVencimento,2);
    Titulo.DataMoraJuros    := CdsConta.FieldByName('VENCIMENTO').AsDateTime + 1;

  end;

  //MULTA %(Percentual)
  Titulo.MultaValorFixo   := False;
  //TACBrCodigoMulta      = (cmValorFixo, cmPercentual);
  Titulo.CodigoMulta      := TACBrCodigoMulta(DM_Dados.qFiltro1.FieldByName('TIPO_MULTA').AsInteger);
  Titulo.PercentualMulta  := 0.00;

  if (getField(DM_Dados.qFiltro1,'CONTA_BANCO','MULTA_PERC','DOUBLE PRECISION',0.00) > 0) then
  begin

    Case Titulo.CodigoMulta Of
        cmValorFixo   :begin end;
        cmPercentual  :begin end;
    End;
    
    rDescVencimento         := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('MULTA_PERC').AsFloat)/100);
    Titulo.PercentualMulta  := RoundABNT(rDescVencimento,2);

  end;


  Titulo.Mensagem.Clear;

  if Length(AllTrim(sOBS.Text)) > 0 then
  begin
    Titulo.Mensagem.Assign(sOBS);
  end;

  if Length(AllTrim(DM_Dados.qFiltro1.FieldByName('OBS').AsString)) > 0 then
  begin

    vListMSG.Clear;
    vListMSG.Text  := DM_Dados.qFiltro1.FieldByName('OBS').AsString;
    for iObs := 0 to vListMSG.Count -1 do
    begin
      Titulo.Mensagem.Insert(iObs,vListMSG.Strings[iObs]);
      {
      Case iObs Of
            0:Instrucao1        := vListMSG.Strings[iObs];//padL(trim(''),2,'0');
            1:Instrucao2        := vListMSG.Strings[iObs];
            2:Instrucao3        := vListMSG.Strings[iObs];
      End;
      }
      if iObs = 4 then
         Break;
    end;

  end;


  vListMSG.Free;
  
  //01-Registrar Remessa
  Titulo.OcorrenciaOriginal.Tipo := toRemessaRegistrar;

  //ACBrBoleto1.AdicionarMensagensPadroes(Titulo,Mensagem);

  //FIM DADOS BOLETOS

  //SACADO - CLIENTE
  Case Length(SomenteNumero(DM_Dados.qFiltro2.FieldByName('CGC_CNPJ').AsString)) Of
     11:Titulo.Sacado.Pessoa := pFisica;
     14:Titulo.Sacado.Pessoa := pJuridica;
     else
     Titulo.Sacado.Pessoa := pFisica;
  End;

  Titulo.Sacado.NomeSacado := DM_Dados.qFiltro2.FieldByName('NOME').AsString;
  Titulo.Sacado.CNPJCPF    := SomenteNumero(DM_Dados.qFiltro2.FieldByName('CGC_CNPJ').AsString);

  Titulo.Sacado.Logradouro := DM_Dados.qFiltro2.FieldByName('LOGADOURO').AsString;
  Titulo.Sacado.Numero     := DM_Dados.qFiltro2.FieldByName('NUMERO').AsString;
  Titulo.Sacado.Bairro     := DM_Dados.qFiltro2.FieldByName('BAIRRO').AsString;
  Titulo.Sacado.Cidade     := DM_Dados.qFiltro2.FieldByName('NOME CIDADE').AsString;
  Titulo.Sacado.UF         := DM_Dados.qFiltro2.FieldByName('UF').AsString;
  Titulo.Sacado.CEP        := SomenteNumero(DM_Dados.qFiltro2.FieldByName('CEP').AsString);
  //FIM SACADO - CLIENTE

Só pra um entendimento melhor nessa linha:
//01-Registrar Remessa
Titulo.OcorrenciaOriginal.Tipo := toRemessaRegistrar;

Deve colocar a ocorrência do titulo, ou seja se for uma alteração de vencimento deve-se informar a ocorrência desejada. ex: toRemessaAlterarVencimento.

Espero que ajude alguém.

  • Moderadores
  • Solution
Postado
Em 17/09/2018 at 10:58, washington disse:

Bom dia José M. S. Junior.

Fiz a atualização da versão do SVN e alterei a classe com as informações do estinque.

Bom dia, vamos avaliar assim que possível. Obrigado!

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • 7 meses depois ...
  • Administradores
Postado

Bom dia.

Temos algumas contribuições a incluir, porém como esta tem algum tempo, pode dar um pouco mais de trabalho para analisar devido as diferenças poderem ser maiores...caso tenha feito o merge em sua máquina queira por favor anexar aqui.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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 !!

  • Este tópico foi criado há 2013 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.