Ir para conteúdo
  • Cadastre-se

SaraHidalgo

Membros
  • Total de ítens

    29
  • Registro em

  • Última visita

Posts postados por SaraHidalgo

  1. Boa tarde,

    Em um cliente aconteceu algo parecido, porém o registro está um pouco diferente no log -> em anexo.
    No aplicativo gerou 1 cupom mas no SAT criou 2, inclusive foram salvos 2 XMLs na pasta.

    No log, o comando "EnviarDadosVenda" foi chamado duas vezes em seguida (16:47:35:036 e 16:47:39:662) para o mesmo cupom (log), um em cada sessão. Posteriormente a resposta foi recebida com um mesmo número de sessão porém referenciando os dois cupons, cada um enviado em uma sessão diferente.

    Isso aconteceu mais de uma vez na mesma empresa dentro de um mês.


    É possível enviar dois cupons de uma vez desta maneira ou seria alguma outra coisa?

    Obrigada.

    ACBrSAT.txt

  2. Boa tarde!

    Encontramos um erro ao gerar o arquivo de remessa no padrão 240 do banco Sicredi.

    No segmento Q, posição 152 a 153, deve ser enviado a UF do sacado, porém, no arquivo, é gerado com a literal "UF" ao invés de preencher com a UF informada no componente.

    Fizemos a correção no arquivo, que está anexado a este post.

    Trecho corrigido:

        {SEGMENTO Q}
        Result:= Result + #13#10 +
                 '748'                                                          + // 001 a 003 - Código do banco na compensação
                 '0001'                                                         + // 004 a 007 - Lote de serviço = "0001"
                 '3'                                                            + // 008 a 008 - Tipo de registro = "3" DETALHE
                 IntToStrZero(
                   (2 * ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)) + 2 , 5) + // 009 a 013 - Nº sequencial do registro do lote
                 'Q'                                                            + // 014 a 014 - Cód. segmento do registro detalhe
                 Space(1)                                                       + // 015 a 015 - Uso exclusivo FEBRABAN/CNAB
                 '01'                                                           + // 016 a 017 - Código de movimento de remessa
                 TipoSacado                                                     + // 018 a 018 - Tipo de inscrição
                 PadLeft(OnlyNumber(Sacado.CNPJCPF), 15, '0')                   + // 019 a 033 - Número de inscrição
                 PadRight(TiraAcentos(Sacado.NomeSacado), 40)                                + // 034 a 073 - Nome
                 EndSacado                                                      + // 074 a 113 - Endereço
                 PadRight(TiraAcentos(Sacado.Bairro), 15)                                    + // 114 a 128 - Bairro
                 Copy(PadLeft(OnlyNumber(Sacado.CEP),8,'0'),1,5)                + // 129 a 133 - CEP
                 Copy(PadLeft(OnlyNumber(Sacado.CEP),8,'0'),6,3)                + // 134 a 136 - Sufixo do CEP
                 PadRight(TiraAcentos(Sacado.Cidade), 15)                                    + // 137 a 151 - Cidade
    //             PadLeft(UF, 2)                                                 + // 152 a 153 - Unidade da Federação
                 PadLeft(Sacado.UF, 2)                                                 + // 152 a 153 - Unidade da Federação

                 TipoAvalista                                                   + // 154 a 154 - Tipo de inscrição
                 PadRight(Sacado.SacadoAvalista.CNPJCPF, 15, '0')               + // 155 a 169 - Número de inscrição
                 PadRight(TiraAcentos(Sacado.SacadoAvalista.NomeAvalista),40,' ')            + // 170 a 209 - Nome do sacador/avalista
                 PadRight('', 3, '0')                                           + // 210 a 212 - Cód. bco corresp. na compensação
                 Space(20)                                                      + // 213 a 232 - Nosso nº no banco correspondente
                 Space(8);                                                        // 233 a 240 - Uso exclusivo FEBRABAN/CNAB

     


    Obrigada.

     

    ACBrBancoSicredi.pas

  3. Bom dia!

    Estou no processo de homologação da carteira Com Registro do HSBC em um cliente, e encontrei um problema ao ler o arquivo de retorno no padrão CNAB400.

    A mensagem original era "Cedente do arquivo inválido. Informado = '11251477284' Esperado = '' ".
    Trecho do código da leitura do cedente:
    rCodigoCedente := Copy(ARetorno[0], 109, 11);
    Mas, no manual do banco da cobrança registrada, este campo é reservado ao banco.

    Fiz uma alteração no código, de acordo com o manual do site do banco, prevendo ainda o caso da carteira sem registro:
      if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA' Then
        rCodigoCedente := Copy(ARetorno[0], 34, 11)        
      else
        rCodigoCedente := Copy(ARetorno[0], 109, 11);


    Além disso, precisei alterar o código onde os campos são comparados, pois era realizada uma conversão de string para inteiro estourando o valor máximo permitido para este tipo de dado:

    DE:
         if not(LeCedenteRetorno) and
           (StrToIntDef(rCodigoCedente, -1) <> StrToIntDef(OnlyNumber(Cedente.CodigoCedente), 0)) then
            raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 +
                                           'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 +
                                           'Esperado = '+ rCodigoCedente));
    PARA:
         if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA CNR' Then
           if not(LeCedenteRetorno) and
             (StrToIntDef(rCodigoCedente, -1) <> StrToIntDef(OnlyNumber(Cedente.CodigoCedente), 0)) then
              raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 +
                                             'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 +
                                             'Esperado = '+ rCodigoCedente))
         else
           if not(LeCedenteRetorno) and
             (rCodigoCedente <> OnlyNumber(Cedente.CodigoCedente)) then
              raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 +
                                             'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 +
                                             'Esperado = '+ rCodigoCedente));



    Em anexo a unit alterada para análise e aprovação.
    Abaixo o link com o manual do banco.

    https://www.hsbc.com.br/1/PA_esf-ca-app-content/content/hbbr-pws-gip16/portugues/business/comum/pdf/cob400_jan.pdf 


    Obrigada!

    ACBrBancoHSBC.pas

  4. Boa tarde,

    Estou configurando uma carteira do Santander (101-Rápida com Registro) com o campo "Aceite" = S.
    O problema está no arquivo de remessa, que trabalha com os valores "N" ou "S", e, ao importar este arquivo no site do banco, o mesmo é rejeitado com o erro "Código de aceite diferente de (A/N)".

    No manual do banco está definido que o campo é travado como "N", tanto no arquivo de 400 quanto de 240 posições, mas, no site no banco é aceito o valor "A" ou "N".

    Fiz a alteração no fonte:

    240 posições:
     {SEGMENTO P}
        Result := '033'                                                   + // 001 - 003 / Código do Banco na compensação
    ........
                  Space(1)                                                + // 106 - 106 / Reservado (uso Banco)
                  sEspecie                                                + // 107 – 108 / Espécie do título
                  //ifThen(Aceite = atSim,  'S', 'N')                       + // 109 - 109 / Identif. de título Aceito/Não Aceito
                  ifThen(Aceite = atSim, 'A', 'N')                       + // 109 - 109 / Identif. de título Aceito/Não Aceito

                  FormatDateTime('ddmmyyyy',DataDocumento)                + // 110 - 117 / Data da emissão do título
    ......
        {SEGMENTO P - FIM}

     

    400 posições:

             wLinha:= '1'                                                         +  // 1- ID Registro
    ................
                      IntToStrZero( round( ValorDocumento * 100), 13)             +  // 127 a 139
                      '033' + aAgencia                                            +  // 140 a 147
    //                  PadRight(aEspecie,2) + 'N'                                  +  // 148 a 150
                      PadRight(aEspecie,2)                                        +  // 148 a 149
                      ifThen(Aceite = atSim, 'A', 'N')                            +  // 150

                      FormatDateTime( 'ddmmyy', DataDocumento )                   +  // 151 a 156
    ..................
                      IntToStrZero( aRemessa.Count + 1, 6 );                         // 395 a 400


    Em anexo o arquivo .pas para análise e aprovação.


    Obrigada.
     


     

    ACBrBancoSantander.pas

  5. Boa tarde,

    Esqueci de mencionar que estou gerando o arquivo de remessa no layout de 400 posições.

    Analisando os fontes mais detalhadamente, resolvi gerar o arquivo de 240 posições, que atribui valor ao campo "Código da Carteira" no arquivo de remessa a partir da propriedade "CaracTitulo".
    Desta forma consegui utilizar a propriedade "Carteira" com a literal "RCR" para ser impressa no boleto mantendo os valores antigos no arquivo de remessa.

     

    Obrigada.
     

     

  6. Boa tarde!

    Estou em processo de homologação de uma carteira do Santander, a Rápida com Registro (101), e o banco precisa das seguintes configurações:

    Carteira a inserir na remessa: 5 – Cobrança Rápida com Registro (cliente imprime)
    Carteira a inserir nos boletos: RCR (corpo do boleto) / 101 (linha digitavel/código de barras)

    Hoje, para emitir o boleto, eu informo o valor "101" na propriedade ACBrTitulo.Carteira e "101" em ACBBoleto.Cedente.Modalidade.
    Desta forma, a linha digitável fica correta e o arquivo de remessa também, mas, na impressão do boleto, o banco precisa que o campo "Carteira" seja "RCR".
    Alguém já passou por um caso parecido? 
    Pensei em utilizar algum outro campo do componente na impressão do boleto e informar o "RCR", mas tenho medo que comprometa outros bancos.

    Obrigada.

     

  7. Boa tarde!

     

    Estou com os fontes atualizados, onde o código do cedente é gerado pela função MontarCampoCodigoCedente.

    Para resolver este problema, alterei o report de impressão do boleto (já utilizo um diferente do "oficial" disponibilizado no SVN) onde, antigamente, o campo do código do beneficiário era composto pela agência + código do cedente e, após alteração para utilização da função MontarCampoCodigoCedente a agência ficou "duplicada". Removi então o campo agência do report, mantendo somente o campo código do cedente.

     

    Espero ter ajudado.

  8. Boa tarde,

    O gerente da caixa disse que este campo precisa ser em branco pois não há essa troca de arquivo entre bancos.

    Ele está realizando a validação do arquivo por aquele validador do banco Caixa e ele que não está aceitando (mando imagem em anexo), não sei se pode ser algo na versão do validador que ele utiliza, já que, pelo que vi, essa alteração no fonte de enviar brancos para enviar zeros foi feita mês passado.

    De qualquer forma agradeço.

     

    erro validador caixa.png

  9. Bom dia!

     

    Estou em processo de homologação de uma carteira Caixa utilizando o layout CNAB240, e o banco me retornou que no segmento Q, posição 210, campo "Cód. Bco. Corresp. na Compensação" deveria estar em branco ao invés de "000". 

    No manual vi que está especificando que o campo é numérico, porém, deve ser preenchido em branco:

    Código do Banco Correspondente na Compensação
    Código fornecido pelo Banco Central para identificação na Câmara de Compensação, do Banco ao qual
    será repassada a Cobrança do Título.
    Deixar branco (Somente para troca de arquivos entre Bancos).

    No fonte está passando travado o valor "000". 

    Inclusive procurei no fórum e vi que há alguns meses o arquivo de remessa foi recusado por conter estes espaços em branco.

     

    Alguém com o mesmo erro? Será alguma configuração interna do banco para o CNPJ que estou configurando.

     

    Obrigada!
     

     

  10. ACBrBoletoFCFR -> function PrepareBoletos

    Está da seguinte forma no svn:

    ...
          with DmBoleto.cdsCedente do
          begin
             Append;
             FieldByName('Nome').AsString              := Cedente.Nome;
             FieldByName('CodigoCedente').AsString     := Banco.MontarCampoCodigoCedente(Titulo); //Cedente.CodigoCedente;
             FieldByName('CodigoTransmissao').AsString := Cedente.CodigoTransmissao;
             FieldByName('Agencia').AsString           := Cedente.Agencia;
             FieldByName('AgenciaDigito').AsString     := Cedente.AgenciaDigito;

    ....

     

    Pelo que vi, essa alteração é recente (29/02), porém, no layout de impressão do boleto, o campo Agência/Código Beneficiário é preenchido com a Agencia e o Código do Cedente.

    Em alguns bancos, na função MontarCampoCodigoCedente o campo Agência é informado, então o mesmo acaba sendo repetido no boleto impresso.

    Utilizei da forma antiga (FieldByName('CodigoCedente').AsString     := Cedente.CodigoCedente;) e o campo foi impresso corretamente.

     

  11. Bom dia,

    Estamos em processo de homologação de uma carteira do banco SICOOB e encontramos um problema no arquivo de remessa gerado.

    Estou utilizando o layout c240, porém a remessa está sendo gerada com 241 posições.

    Alguém já teve este problema? É algum campo que estou informando indevidamente?

    Obrigada!

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