Ir para conteúdo
  • Cadastre-se

maycoll

Membros
  • Total de ítens

    45
  • Registro em

  • Última visita

Posts postados por maycoll

  1. Estou tendo um problema com um cliente onde o responsável pela emissão do boleto é o banco.

    Neste cliente eu usava uma versão anterior do acbr onde mesmo o banco sendo o responsável pela emissão do boleto, eu informava o nosso número e ele aceitava normalmente.

    Depois de atualizar o acbr, percebi que o campo nosso número está sendo zerado quando o responsável pela emissão do boleto é o banco.

    O problema maior é que parece haver uma incoerência no manual do bradesco onde ele fala que se:

    Citar

    071 a 082 - Identificações do Título no Banco (Nosso Número) 
    Campo reservado para o Nosso Número do Título (Número Bancário), cujo procedimento a ser 
    adotado deve obedecer aos itens a seguir:  
     
    EMISSÃO DO BOLETO PELO BANCO  
    Cobrança com Registro: Neste caso, esse campo deverá ser enviado com "Zeros", pois o sistema informará o Nosso Número no Arquivo Retorno, quando da confirmação de entrada.  

    Citar

    093 a 093 - Condições para Emissão do Boleto de Cobrança

    Se for igual a 1 = o Banco emite o Boleto e processa o registro 

       - Se o Nosso Número for informado na posição 71 a 82 do registro de transação, o Banco assume. 
       - Se o Nosso Número não for informado, o Banco criará automaticamente. 

    Perceberam a incoerência, uma hora ele diz que deve ser zerado, mas se você informar o nosso número o banco assume.

    O acbr esta seguindo a primeira regra.

    Porem o nosso cliente sempre usou com a configuração:" O banco emite o boleto e informando o nosso número ( inclusive em sistemas anteriores ao nosso )".

    Eu resolvi o problema aqui da seguinte maneira:

    Código original:

    if (ACBrBoleto.Cedente.ResponEmissao = tbBancoEmite) then
    begin
      ANossoNumero      := StringOfChar('0', wTamNossoNum);
      DigitoNossoNumero := '0';
    end
    else
    begin
      ANossoNumero      := ACBrTitulo.NossoNumero;
      DigitoNossoNumero := CalcularDigitoVerificador(ACBrTitulo);
    end;       

    Alterado para:

    if Trim(ACBrTitulo.NossoNumero) = EmptyStr then
    begin
      ANossoNumero      := StringOfChar('0', wTamNossoNum);
      DigitoNossoNumero := '0';
    end
    else
    begin
       ANossoNumero      := ACBrTitulo.NossoNumero;
       DigitoNossoNumero := CalcularDigitoVerificador(ACBrTitulo);
    end;          

    Alguém também já teve esse problema?

  2. Olá pessoal,

    Hoje temos o seguinte cenário :

    Enviamos uma NFCe pra a receita, porém é retornado erro:

    Erro Interno: 10060
    Erro HTTP: 0

    Neste momento nosso sistema entra em modo de contingencia, criando outro xml com as respectivas tag's e com "uma nova chave". O danfe é impresso e a chave que será inserida no QRCode é a nova.

    Porém, algumas vezes a receita acaba acatando a nota anterior mesmo dando o erro 10060. Neste caso quando a conexão estabiliza e vamos enviar a nota em contingencia, temos duplicidade. Com isso, tratamos esse erro modificando as informações do sistema para a chave/xml que foi aceita anteriormente.

    Mas se o cliente for consultar o QRCode do danfe impresso em contingencia, as informações irão apontar para a chave que não foi aceita pela receita.

    Neste caso, existe a possibilidade de criar os xml's informando a chave que eu deseje?

    Por exemplo: Quando desse o primeiro erro, eu manteria a chave e criaria o novo xml informando a mesma chave, assim mesmo que a primeira nota tenha sido aceita se o cliente consultar o QRCode apontará para a mesma chave.

  3. Tive um problema com o banco Banestes que não estava aceitando o boleto justamente pela conta/cedente.

    O problema que o Banestes não usa o digito verificador em agencia e  conta do cliente.

    Porém como uso o AcbrMonitor tenho que passar assim os dados do cedente:
     

    BOLETO.ConfigurarDados("[Cedente]
    Nome=Nome do Cedente
    CNPJCPF=000000000000
    Logradouro=Av. 1
    Numero=2
    Bairro=Centro
    Cidade=Guarapari
    CEP=29.200-00
    UF=ES
    RespEmis=0
    TipoPessoa=1
    Modalidade=1
    CodigoCedente=1234567
    LayoutBol=3
    
    [Conta]
    Conta=123456
    DigitoConta=7
    Agencia=01740
    DigitoAgencia=0
    
    [Banco]
    Numero=21
    CNAB=240
    IndiceACBr=11")

    Reparem que na tag [CONTA] o digito assume o ultimo digito do código do cedente ( se não passar digito, o acbr da erro ).

    Tive que alterar a função abaixo para que fosse gerado o boleto corretamente para o banco aceitar.

    function TACBrBancoBanestes.MontarCampoCodigoCedente (
       const ACBrTitulo: TACBrTitulo ) : String;
    begin
      // Banestes não usa digitos verificadores em agência e conta
      //Result := ACBrTitulo.ACBrBoleto.Cedente.Agencia+ '/' +
      //           ACBrTitulo.ACBrBoleto.Cedente.Conta;
    
      Result := ACBrTitulo.ACBrBoleto.Cedente.Agencia+ '/' +
                ACBrTitulo.ACBrBoleto.Cedente.Conta + ACBrTitulo.ACBrBoleto.Cedente.ContaDigito;
    end;         

    Talvez ajude em alguma coisa :) 

  4. hleorj creio que a solução não seja trocar o antivirus .. pois os clientes de nossos clientes usam Avast ... e terão o mesmo problema ao abrir o arquivo.

    Desabilitei o avast e o pdf foi gerado .. enviei para um cliente que tem avast e quando ele foi abrir o problema tbm ocorreu.

    E que não da pre entender é que com uns xml's funciona e com outros não

  5. Olá pessoal,

    Acabei de atualizar os fontes do AcbrMonitorPlus e estou tendo um erro ao criar uma NFe.

    O problema ocorre pois o campo "número" no endereço do destinatário não esta sendo informado, isso porque o endereço nao possui numero.

    "Sendo que estou testando com todos os dados do projeto, executando pelo Lazarus mesmo."

    ERRO: Falha na validação dos dados da nota: 1495
    TAG:<dest><enderDest> ID:E07/nro(Número) - Nenhum valor informado.
    TAG:<dest><enderDest> ID:E07/nro(Número) - Nenhum valor informado.
    
    '' viola a restrição pattern de '[!-ÿ]{1}[ -ÿ]*[!-ÿ]{1}|[!-ÿ]{1}'.
    Falha da análise do elemento '{http://www.portalfiscal.inf.br/nfe}nro' com valor ''.

    Percebi tambem o que parece ser um erro de UTF-8 no retorno do log, mas acredito que isso não seja o problema.

     

    A questão é: Quando o endereço não possuir numero, a tag "numero" deve ser omitida ou informada com algum valor vazio;

    PS: Log em anexo.

    lognfe.txt

  6. Olá pessoal,

    Estou compilando o ACBrPlus Monitor e estou tendo problemas com os componentes TDateEdit.

    O erro que a aparece é esse: "Error reading deUSUDataCadastro.Text: Unknown property: "Text" "

    Tanto ao abrir ou compilar o projeto aparece essa mensagem de erro.

    Não consegui localizar nos fontes do projeto alguma linha que usasse a propriedade text do dateEdit, sendo que o erro também ocorre no componentes deRFDDataSwBasico.

    Alguém sabe como resolver isso?

    PS: Lazarus versão 1.2.6  -  FPC: 2.6.4

    "Fontes atualizado hoje 04/01/2016"

  7. Ola Juliana,

    Simplesmente quando mando o arquivo de remessa para analise do suporte ele me retorna esse erro. (Suprimi algumas informações do cliente)

    ======================================== HEADER ========================================
    Cedente centralizador: XX NOME DO CLIENTE XX
    Tipo de remessa: REMESSA-PRODUCAO
    Convenio: 0000.000.00000000-0 Inscricao: 00.000.000/0000-00
    Banco: CAIXA ECONOMICA FEDERAL        Geracao: 28/09/2015 as 14:29:08 seq 000001
    ======================================== HEADER OK =====================================
    ====================================== CAPA DE LOTE ====================================
    Num remessa: 00000001 Gravacao: 28/09/2015
    Cedente do lote: XX NOME DO CLIENTE XX 
    Convenio: 0000.000.00000000-0 Inscricao: 00.000.000/0000-00
    Geracao: 28/09/2015
    ===================================== CAPA DE LOTE OK ==================================
    Linha 3 SEGMENTO P. Codigos de erro: 31.3P
    Total de registros do lote = 4
    
    

  8. Bom dia pessoal,

    Estou homologando um boleto na Caixa Econômica com o layout SIGCOB pelo ACBrMonitor.

    Após corrigir a maioria dos erro, tem um que não estou conseguindo resolver, apesar de o arquivo não parecer estar errado segundo o manual.

    O erro é : "Linha 3 SEGMENTO P. Códigos de erro: 31.3P"

    Olhando o manual, o código 31.3P é relativo à data do desconto, porém no meu arquivo de remessa o código de desconto é zero(Sem desconto), logo a data e o valor do desconto também são zerados.

    Alguém sabe como resolver isso.

     

    Estou enviando o arquivo de remessa em anexo.

    000001.rem

  9. Eu estava tendo este mesmo problema com a função RoundTo5.

    O problema ocorria quando era feito o calculo do "ValorIss", isso quando dava mais de de duas casas decimais no resultado.

    No meu caso eu criei um DoAcbrNFSeUnit.pas, que fiz com base no DEMO, onde executo os comando processados. A função correspondente a minha no DEMO é a: 

    "procedure TfrmDemo_ACBrNFSe.AlimentaComponente(NumNFSe: String);"

    Troquei a linha:

    Servico.Valores.ValorIss := roundTo(ValorISS, -2);

    Por estas:

    ValorISS := StrToFloat(FormatFloat('0.00',ValorISS));
    Servico.Valores.ValorIss := ValorISS;
             

    Onde, ao invés de arredondar o valor, eu trunco com duas casas decimais.

     

  10. Ola Juliana,

    Na verdade a mensagem de erro que recebi do validador foi essa:

    "Linha 3 SEGMENTO P. Codigos de erro: 27.3P Este Título tem que estar marcado para protestar ou devolver. 31.3P"

    Apos a alteração do fonte como fiz acima, o erro retornado foi esse:

    "Linha 3 SEGMENTO P. Codigos de erro: Este Título tem que estar marcado para protestar ou devolver. 31.3P"

    Ou seja, o erro 27.3P que é relativo ao "Codigo de Juros Mora" não apareceu mais.

    Estou anexando o arquivo de remessa caro queiram analisar.

    Obrigado pela atenção.

    000001.rem

  11. Olá pessoal,

    Estou tendo um problema com a geração do arquivo remessa para o banco CAIXA ECONOMICA pelo CNAB240 layout SICOB

    O erro que estou tendo do validador é: "Codigos de erro: 27.3P Este Título tem que estar marcado para protestar ou devolver ou cancelar protesto."

    Analizando o post do amigo abaixo e verificando os fontes atualizados, percebi que o problema já foi resolvido no arquivo ACBrBancoCaixa.pas, porém o problema ainda persiste no arquivo ACBrBancoCaixaSICOB.pas, onde o layout permite apenas os numeros: 1,2,3,4.

     

    Estou alterando meu fonte na linha 784 da função TACBrCaixaEconomicaSICOB.GerarRegistroTransacao240 para:

    //ANTERIOR
    //IfThen(ValorMoraJuros > 0, '1', '0')                       + // 118 a 118 - Código de juros de mora: Valor por dia
    
    //ALTERADO
    IfThen(ValorMoraJuros > 0, '1', '3')                       + // 118 a 118 - Código de juros de mora: Valor por dia

    Gostaria de saber se este procedimento esta correto.

    Caso esta seja a solução gostaria de saber se pode ser incluido nas futuras correções do acbr.

    Obrigado.

  12. Olá pessoal,

     

    Uma coisa que ajuda bastante na hora de resolver alguns problemas nos clientes são os log's.

     

    Como exemplo temos um cliente que demorou "5 horas (isso mesmo)" para realizar a emissão de um cupom com 40 itens.

     

    Ao analisar o log do acbrmonitor não dá para saber quanto tempo demorou para o cupom ser realmente impresso.

     

    Com isso modificamos o fonte do "AcbrMonitor1.pas" no procedimento "TFrmACBrMonitor.Resposta" para inserir a data/hora de cada comando enviado para o monitor.

    //procedure TFrmACBrMonitor.Resposta(Comando, Resposta: ansistring);
    
    mResp.Lines.Add(FormatDateTime('dd/mm/yy hh:nn:ss', now) + ' ' + Comando + sLineBreak + Resposta); <<--- MODIFICADO PARA MOSTRAR NO MEMO
      if mResp.Lines.Count > CBufferMemoResposta then
      begin
         SL := TStringList.Create;
         try
            SL.Assign( mResp.Lines );
            SL.BeginUpdate;
            while SL.Count > CBufferMemoResposta do
               SL.Delete(0);
            SL.EndUpdate;
    
            mResp.Lines.Assign( SL );
            mResp.SelStart := mResp.Lines.Count;
         finally
            SL.Free;
         end ;
      end ;
      
      pTopRespostas.Caption := 'Respostas envidas ('+IntToStr(mResp.Lines.Count)+' linhas)';
    
      if cbLog.Checked then
         WriteToTXT(ArqLogTXT, FormatDateTime('dd/mm/yy hh:nn:ss', now) + ' ' + Comando + sLineBreak + Resposta, True, True);  <<--- MODIFICADO PARA INSERIR NO LOG
    
  13. Olá Daniel, obrigado pela resposta.

     

    Também vejo essa clareza na legislação, porém parece que há uma incoerência na mesma.

    Sei que o acbr não tem nada a ver com isso e segue o que está escrito.

     

    Mas segundo a grande experiencia que  vocês tem, não acha que pode ser usado o espaço?

    Sendo que no exemplo indicado na legislação é feito o uso do espaço (inclusive uma barra).

     

    post-2094-0-65402400-1428438226_thumb.jp

     

     

    Obrigado pela atenção.

     

     

     

     

  14. Olá pessoal,

     

    Estou usando um ECF Bematech MP4200 com o protocolo EcfEscEcf para fazer alguns teste.

     

    Quando vou realizar a gravação de relatórios gerencias a função não aceita espaços no nome dos relatórios

    procedure TACBrECFEscECF.ProgramaRelatorioGerencial(var Descricao: String;
       Posicao: String);
    var
       PosRel : Integer;
    begin
      if not Assigned( fpRelatoriosGerenciais ) then
         CarregaRelatoriosGerenciais ;
    
      Descricao := AjustaDescricao( Descricao ); //<<---- DESCRIÇÃO SÓ RECEBE LETRAS SEM ESPAÇOS
    
      EscECFComando.CMD := 86;
      if Posicao = '' then
         PosRel := RelatoriosGerenciais.Count + 1
      else
         PosRel := StrToInt( Posicao );
      EscECFComando.AddParamInteger( PosRel ) ;
      EscECFComando.AddParamString( Descricao ) ;
      EnviaComando;
    
      CarregaRelatoriosGerenciais;
    end;               
    

    Analisando mais a fundo a função, vi que "AjustaDescricao( Descricao );" chama a função "OnlyAlpha" que só retorna letras. 

    function TACBrECFEscECF.AjustaDescricao(ADescricao : String) : String ;
    begin
      { Ajusta uma descrição de acordo com as regras do protocolo EscECF
        Máximo de 15, Mínimo de 4 caracteres ASCII de posição 65 a 90 (letras maiúsculas)
        ou 97 a 122 (letras minúsculas) }
      Result := OnlyAlpha( LeftStr( TiraAcentos( ADescricao ),15) );
      
    end ;     
    

    Para resolver o meu problema, eu retirei do result da função  "AjustaDescricao" a chamada para "OnlyAlpha".

    Com isso consegui gravar relatórios gerenciais com espaços.

     

    Não sei se isso seria o certo ou se há outra maneira de resolver, pois segundo o comentário na função "AjustaDescricao", a mesma é chamada para atender as normas do protocolo EscEcf.

    E ainda, esta mesma função e usada em outros métodos dentro da Unit EscEcf.

     

     

     

  15. Ola Daniel,

     

    O acbrmonitor simplesmente retorna " ERRO: Unable to open file "C:\TMP\ESPELHO.TXT" "

     

    Tentando analisar o código, só consigo colocar um breakPoint  na linha 904 do função TACBrEAD.AssinarArquivoComEAD.

     

    Porém o Lazarus não passa deste ponto:

     FS := TFileStream.Create(NomeArquivo, fmOpenReadWrite or fmShareDenyWrite);

    Nenhum breakPoint inserido abaixo deste codigo é executado.

  16. Bom dia pessoal,

     

    Estou usando o acbrmonitor para gerar o espelho mfd na ecf Bematech MP-4200 protocolo ecfEscEcf.

    O espelho é gerado porém ocorre um erro na sua assinatura.

     

    Tudo indica que o erro ocorre na função:

    TACBrEAD.AssinarArquivoComEAD(const NomeArquivo : String ;  RemoveEADSeExistir : Boolean) : AnsiString ; 

     

     

    Comando: ECF.pafmf_mfd_espelhO("01/03/2015","10/03/2015","C:\TMP\ESPELHO.TXT")

    Retorno:   ERRO: Unable to open file "C:\TMP\ESPELHO.TXT"

     

     

    Ultima linha do arquivo espelho "C:\TMP\ESPELHO.TXT":

    EAD nao foi possivel gerar a assinatura EAD pois o arquivo original nao possui uma assinatura digital valida!                                                                                                    EAD1561B7984B0BB30966605C465C45CFC9315C62E60740FDFEA8FA80B58BF6EAC7CF70C6618EB1269546603C7A635CF2A9C0D9BDD2B520ECF225B27C8A3E73D24E9878852E6D29EE852912EE84A9B67665C1ED805BEB36418C991DFBFD72420E2F8ABB4C1B6E8788DE5BED206829E8229E054C2B94A26DF91691E7B43AFF540634

     

     

    A assinatura é gerada porem com uma mensagem de erro.

     

     

    Algum sabe o que pode ser feito?

     

     

     

     

     

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