Ir para conteúdo
  • Cadastre-se

denerbuzato

Membros
  • Total de ítens

    152
  • Registro em

  • Última visita

  • Days Won

    4

Posts postados por denerbuzato

  1.  

    Disponha, mas corrigindo uma informação:

    7 minutos atrás, denerbuzato disse:

    O conteúdo do Nosso Numero que você vê no boleto impresso é o que vai no arquivo remessa. O componente usa o mesmo critério para gerar o boleto e a remessa.

    Em alguns bancos, o Nosso Numero poderá ser concatenado com algum outro campo, fazendo com que o que você vê no boleto não seja o que irá no arquivo remessa. Mas o critério para compor o Nosso Numero, esse sim é o mesmo tanto para geração do boleto quanto para geração do arquivo remessa.

    Flw

    • Curtir 2
  2. Depende do banco. Banco do Brasil por exemplo vai completo.

    O conteúdo do Nosso Numero que você vê no boleto impresso é o que vai no arquivo remessa. O componente usa o mesmo critério para gerar o boleto e a remessa.

    O detalhe é a leitura do retorno que talvez você terá que realizar algum tratamento no seu sistema para localizar o boleto, visto que o Nosso Numero no retorno pode vir "cru".

    • Curtir 1
  3. Entendi Alonso, eu faço o seguinte, tenho três campos na minha tabela, um para armazenar o Nosso Numero completo (como sai no boleto - formatado com digito, com o cedente ou carteira, depende o banco), outro campo para armazenar o Nosso Numero "cru" como você disse, e outro para armazenar o digito do Nosso Numero (DV).

    Desta forma, tenho como localizar o boleto de várias maneiras. Posso pesquisar completo, ou não. Por exemplo para o SICOOB e Banestes tenho que compor o Nosso Numero com o DV, pois o componente copia apenas as primeiras posições sem o DV. (Isso no arquivo retorno)

    Espero que te dê uma luz.

    • Curtir 1
  4. Bom dia!

    O Nosso Número é um número sequencial que serve para identificar os boletos unicamente. Cada boleto emitido deve ter um 'nosso número' diferente, de forma que o sistema possa identificar o boleto pago no momento do processamento dos arquivos de retorno do banco.

    O Nosso Número é impresso no boleto, vai na remessa e vem no retorno, fazendo com que o boleto em questão seja identificado entre a empresa e o banco.

  5. Bom dia,

    Segue as alterações na unit “ACBrBancoBanestes” na procedure LerRetorno400

    Removido a primeira citação da carteira "Carteira := copy(Linha,83,3);" pois o correto é Carteira := Copy(Linha,108,1); 
    Removido o bloco:
    
       ACBrBanco.ACBrBoleto.DataCreditoLanc := StringToDateTimeDef(Copy(ARetorno[1],111,2)+'/'+
    
                                                                   Copy(ARetorno[1],113,2)+'/'+
    
                                                                   Copy(ARetorno[1],115,2),0, 'DD/MM/YY' );
    
    Pois as posições que estão sendo copiadas são referente ao filler – brancos, não tem valor algum.
    Incluso CodigoLiquidacao := Copy(Linha,83,2); //Código Lançamento (Aviso de Movimentação)

    Obs.: O nosso número não foi alterado visto que foi orientado recalcular o digito para compor o mesmo.

    Segue unit em anexo.

    ACBrBancoBanestes.pas

  6. Boa tarde,

    Em 25/05/2016 at 17:45, Juliana Tamizou disse:

    Boa tarde.

    Em 25/05/2016 at 17:32, rrommullo disse:

    Você me sugere usar alguma propriedade do ACBrBoleto ou criar uma nova para essa finalidade? Visto que terei que passar do ACBrBancoBanestes para o ACBrBoleto.

    Acho interessante  observar se realmente será necessário uma nova propriedade.

    Não há necessidade de criar uma nova propriedade para tratar o "Código do Lançamento (Aviso Movimentação)". Podemos usar a propriedade "CodigoLiquidacao".

    Para isso basta acrescentar na procedure LerRetorno400 o código

    CodigoLiquidacao := Copy(Linha,83,2); //Código Lançamento (Aviso de Movimentação)

    Juliana, você prefere que eu inclua esse código, ou quando você for disponibilizar os demais itens solicitados pelo colega você faz essa inclusão?

    Att

  7. Prezado,

    Acho que não foi implementado ainda, pois se alguém tivesse implementado com certeza teria já sido subido ao svn!

    O que sugiro você fazer é pegar o manual do banco pegar um unit parecida e implementar!

    Depois de homologado, cria um tópico da unit SafraItau para o pessoal avaliar e subir ao svn.

    Att

  8. Prezados,

     

    Realizei algumas alterações bem como correções na unit “ACBrBancoBanestes”, sendo elas:

    procedure LerRetorno400

     

    No manual na pagina 14 item 6.1.2 fala a respeito do tamanho do nosso numero no arquivo retorno

    ac01.png

    Notem que o nosso numero é composto de 10 números, mas eles estava copiando apenas 8. Corrigido isso.ac02.png

    Antes:

    NossoNumero          := Copy(Linha,63,8);

    Depois:

     

    NossoNumero          := Copy(Linha,63,10);

    Também a propriedade "Carteira" está sendo atribuída com sendo aviso de movimentação. Mas logo abaixo no código a mesma "Carteira" está sendo atribuída com a informação correta.

    1 Vez:

     

    Carteira               := copy(Linha,83,3);

    2 Vez

     

     Carteira             := Copy(Linha,108,1);

    Removido a primeira citação da carteira "Carteira := copy(Linha,83,3);" pois o correto é Carteira := Copy(Linha,108,1);

    Removido o bloco:

       ACBrBanco.ACBrBoleto.DataCreditoLanc := StringToDateTimeDef(Copy(ARetorno[1],111,2)+'/'+

                                                                   Copy(ARetorno[1],113,2)+'/'+

                                                                   Copy(ARetorno[1],115,2),0, 'DD/MM/YY' );

    Pois as posições que estão sendo copiadas são referente ao filler – brancos, não tem valor algum.

    Criado variável “CodAvisoMov” referente ao “Código do Lançamento (Aviso Movimentação)”

    No manual na pagina 14 menciona essa informação que vem no retorno. No anexo XII contém uma lista de códigos que segundo o banco são meios para identificar se deve ou não realizar a baixa.

    ac03.png

    Por exemplo, o banco informou que se nesta posição vier os códigos abaixo a baixa poderá ser processada.

    ac04.png

    Obs.: Apesar desta informação ser parecida com o código de ocorrência, não é a mesma coisa, por exemplo no arquivo de retorno mencionado acima, temos duas informações em cada uma de suas posições.

    ac05.png

    Segue unit em anexo.

     

    ACBrBancoBanestes.pas

    • Curtir 1
  9. Entendeu Célio? Para simplificar para você.

    Antes do seu código:

    30 minutos atrás, Celio Souza disse:

    dCredito:=ACBrBoleto.ListadeBoletos.Objects[iCont].DataCredito;

    Coloque:

    8 minutos atrás, denerbuzato disse:

     

    
            //Feito isto para garantir que a data de crédito (data de recebimento) sempre tenha valor, mesmo para bancos que não retornem nesta variavel "DataCredito" (Ex. HSBC)
            if (ACBrBoleto1.ListadeBoletos.Objects[i].DataCredito = 0) then
              ACBrBoleto1.ListadeBoletos.Objects[i].DataCredito := ACBrBoleto1.ListadeBoletos.Objects[i].DataOcorrencia
            else
              if (ACBrBoleto1.ListadeBoletos.Objects[i].DataOcorrencia = 0) then
                ACBrBoleto1.ListadeBoletos.Objects[i].DataCredito := ACBrBoleto1.DataCreditoLanc;
            //

     

    Veja se terá a data que deseja.

    • Curtir 2
  10. Essa variável que você esta usando "DataCredito" está em outro ponto
     

            if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA CNR' Then
            begin
               if StrToIntDef(Copy(Linha, 83, 6), 0) <> 0 Then
                  DataCredito := StringToDateTimeDef(Copy(Linha, 83, 2) + '/' +
                                                     Copy(Linha, 85, 2) + '/' +
                                                     Copy(Linha, 87, 2), 0, 'DD/MM/YY');
    

    Como seu arquivo é "COBRANCA" ele não atende a esse requisito e não entra neste bloco, além de não ter data nesta posição 83.

    Recomendo que você use como data de recebimento a data de ocorrencia. Caso você esteja passando para seu dataset a data de credito, poderá fazer algum tratamento antes para que sempre sua data de crédito tenha valor, como por exemplo:

            //Feito isto para garantir que a data de crédito (data de recebimento) sempre tenha valor, mesmo para bancos que não retornem nesta variavel "DataCredito" (Ex. HSBC)
            if (ACBrBoleto1.ListadeBoletos.Objects[i].DataCredito = 0) then
              ACBrBoleto1.ListadeBoletos.Objects[i].DataCredito := ACBrBoleto1.ListadeBoletos.Objects[i].DataOcorrencia
            else
              if (ACBrBoleto1.ListadeBoletos.Objects[i].DataOcorrencia = 0) then
                ACBrBoleto1.ListadeBoletos.Objects[i].DataCredito := ACBrBoleto1.DataCreditoLanc;
            //

     

    • Curtir 1
  11. 20 minutos atrás, Celio Souza disse:

    rCodigoCedente := Copy(ARetorno[0], 109, 11);

    entao essa é minha duvida. Como devo proceder ?

    Bom dia,

    No HSBC o código do cedente é a conta do cliente (Conta+DigitoConta), esse pedaço do código deve ser por motivo de muitas das rotinas terem sidas copias e ajustadas para cada banco e esse código ficou sobrando, pois essa variavel " rCodigoCedente " só é usada para comparar se o cedente é válido "LeCedenteRetorno" assim como já é feito com a agencia e conta logo abaixo no mesmo bloco do código.

    Ccomo ele está lendo " ARetorno[0] " significa que está lendo o arquivo header. No arquivo header nesta posição vem brancos.

    O que você precisa? Talvez falando a informação que precisa poderemos de dizer onde busca-la.

    • Curtir 1
×
×
  • 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.