Ir para conteúdo
  • Cadastre-se

dev botao

Problemas com Propriedades do ACBrSATExtratoFR no Delphi


Ver Solução Respondido por Daniel InfoCotidiano,

Recommended Posts

  • Membros Pro

Boa tarde,
Estou homologando o ACBrSAT no nosso ERP e implementando a opção de impressão em EscPos e FastReports. Ao utilizar o componente ACBrSATExtratoFR, notei que várias propriedades não surtem efeito na impressão nem no preview, mesmo após alterá-las.
Abaixo estão as propriedades que não apresentam efeito na impressão quando modificadas:

  • EspacoFinal;
  • ImprimeCodigoEan;
  • ImprimeCPFNaoInformado;
  • ImprimeDescAcrescItem;
  • ImprimeEmUmaLinha;
  • Informações do Logo: ImprimeLogoLateral, LogoAutoSize, LogoCenter, LogoHeigth, LogoStretch, LogoVisible e LogoWidth;
  • ImprimeMsgOlhoNoImposto;
  • QrCode: ImprimeQRCode e ImprimeQRCodeLateral;
  • LarguraBobina.

Estamos utilizando Delphi Alexandria, e ao procurar essas propriedades no arquivo do FastReports (ACBr\Fontes\ACBrSAT\Extrato\Fast\ACBrSATExtratoFR.pas), não as encontrei. Em seguida, busquei no Fortes (ACBr\Fontes\ACBrSAT\Extrato\Fortes) e constatei que todas essas propriedades estão implementadas. Além disso, observei os seguintes problemas:

  • MargemSuperior: A margem funciona, porém o papel não ajusta conforme a impressão, resultando em cortes no papel quando deveria exibir mais informações.
  • MargemDireita: Alguns componentes não estão respeitando o valor configurado para a margem.

Anexei imagens para ilustrar cada um dos problemas descritos acima.

* Observação: Tive que editar as imagens para que não ultrapassassem o limite de 2MB permitido no post. Abaixo, explico cada imagem:

  • EspacoFinal.png: independente da propriedade estar habilitada ou desabilitada, não faz diferença na impressão (nunca sai o espaço final). Ao buscar no ACBrSATExtratoFR.pas, não encontrei nada relacionado, mas ao buscar no ACBrSATExtratoFortesFr.pas, encontrei:
          //Para impressoras sem guilhotina não cortar no QrCorde
          pEspacoFinal.Height := EspacoFinal;
          pEspacoFinalCan.Height  := EspacoFinal;

     

  • ImprimeCodigoEan.pgn: independente da propriedade estar habilitada ou desabilitada, não faz diferença na impressão (nunca sai o código EAN). Ao buscar no ACBrSATExtratoFR.pas, não encontrei nada relacionado, mas ao buscar no ACBrSATExtratoFortesFr.pas, encontrei:
        if (Length( Trim( Prod.cEAN ) ) > 0) and (ACBrSATExtrato.ImprimeCodigoEan) then
          sCodigo := Trim(Prod.cEAN)
        else
          sCodigo := Trim(Prod.cProd);

 

  • ImprimeCPFNaoInformado.png: independente da propriedade estar habilitada ou desabilitada, não faz diferença na impressão (sempre exibe a frase: "CONSUMIDOR NÃO IDENTIFICADO"). Ao buscar no ACBrSATExtratoFR.pas, não encontrei nada relacionado, mas ao buscar no ACBrSATExtratoFortesFr.pas, encontrei:
        if (Trim(Dest.xNome) <> '') then
          NomeConsumidor := Trim(Dest.xNome)
        else if (ACBrSATExtrato.ImprimeCPFNaoInformado and (Trim(Dest.CNPJCPF) = '')) then
          NomeConsumidor := ACBrStr('CONSUMIDOR NÃO IDENTIFICADO')
        else
          NomeConsumidor := '';
    
        if (Trim(Dest.CNPJCPF) <> '') then
          NomeConsumidor := FormatarCNPJouCPF(Dest.CNPJCPF) +
                            IfThen(NomeConsumidor<>'', ' - '+NomeConsumidor, '');
    
        PrintIt := (NomeConsumidor <> '');
    
        if PrintIt then
          mConsumidorLateral.Lines.Text := NomeConsumidor;

 

 

  • ImprimeDescAcrescItem.png: independente da propriedade estar habilitada ou desabilitada, não faz diferença na impressão. Ao buscar no ACBrSATExtratoFR.pas, não encontrei nada relacionado, mas ao buscar no ACBrSATExtratoFortesFr.pas, encontrei:
    procedure TACBrSATExtratoFortesFr.rlbDescItemBeforePrint(Sender: TObject;
      var PrintIt: boolean);
    begin
      with ACBrSATExtrato.CFe.Det.Items[fNumItem] do
      begin
        PrintIt := ACBrSATExtrato.ImprimeDescAcrescItem and (not Resumido) and (Prod.vDesc > 0);
    
        if PrintIt then
          lDescItem.Caption := FormatFloatBr(Prod.vDesc,'-,0.00');
      end;
    end;
    
    procedure TACBrSATExtratoFortesFr.rlbRatDescSubTotBeforePrint(Sender: TObject;
      var PrintIt: Boolean);
    begin
      with ACBrSATExtrato.CFe.Det.Items[fNumItem] do
      begin
        PrintIt := ACBrSATExtrato.ImprimeDescAcrescItem and (not Resumido) and (Prod.vRatDesc > 0);
    
        if PrintIt then
          lRatDescSubTot.Caption := FormatFloatBr(Prod.vRatDesc,'-,0.00');
      end;
    end;
    
    procedure TACBrSATExtratoFortesFr.rlbAcresItemBeforePrint(Sender: TObject;
      var PrintIt: boolean);
    begin
      with ACBrSATExtrato.CFe.Det.Items[fNumItem] do
      begin
        PrintIt := ACBrSATExtrato.ImprimeDescAcrescItem and (not Resumido) and (Prod.vOutro > 0);
    
        if PrintIt then
          lAcrescItem.Caption := FormatFloatBr(Prod.vOutro,'+,0.00');
      end;
    end;
    
    procedure TACBrSATExtratoFortesFr.rlbRatAcresSubTotBeforePrint(Sender: TObject;
      var PrintIt: Boolean);
    begin
      with ACBrSATExtrato.CFe.Det.Items[fNumItem] do
      begin
        PrintIt := ACBrSATExtrato.ImprimeDescAcrescItem and (not Resumido) and (Prod.vRatAcr > 0);
    
        if PrintIt then
          lRatAcresSubTot.Caption := FormatFloatBr(Prod.vRatAcr,'+,0.00');
      end;
    end;

 

 

  • ImprimeEmUmaLinha.png: independente da propriedade estar habilitada ou desabilitada, não faz diferença na impressão (sempre vai imprimir em duas linhas). Ao buscar no ACBrSATExtratoFR.pas, não encontrei nada relacionado, mas ao buscar no ACBrSATExtratoFortesFr.pas, encontrei:
    if ACBrSATExtrato.ImprimeEmUmaLinha then
        begin
          LinhaItem := sCodigo + ' [DesProd] ' +
                       ACBrSATExtrato.FormatarQuantidade(Prod.qCom, False) + ' ' +
                       Trim( Prod.uCom) + ' X ' +
                       FormatFloatBr(Prod.vUnCom, mvUnCom) +
                       sVlrImpostos;
    
          // acerta tamanho da descrição
          nTamDescricao := maxCaracter - Length(LinhaItem);
          sDescricao := PadRight(Copy(Trim(Prod.xProd), 1, nTamDescricao), nTamDescricao);
    
          LinhaItem := StringReplace(LinhaItem, '[DesProd]', sDescricao, [rfReplaceAll]);
    
          mLinhaItem.Lines.Add(LinhaItem);
        end

 

 

  • Logo.png: independente das propriedades seguintes propriedades (ImprimeLogoLateral, LogoAutoSize, LogoCenter, LogoHeigth, LogoStretch, LogoVisible e LogoWidth) estarem habilitadas ou desabilitadas, não faz diferença na impressão. Ao buscar no ACBrSATExtratoFR.pas, não encontrei nada relacionado, mas ao buscar no ACBrSATExtratoFortesFr.pas, encontrei código para todas elas;

 

  • ImprimeMsgOlhoNoImposto.png: Mesmo com a propriedade desabilitada, continua imprimindo a frase "Valor aproximado dos Tributos deste Cupom" quando busco no ACBrSATExtratoFR.pas, dessa vez encontra o código abaixo:
    procedure TACBrSATExtratoFR.CarregaInformacoesAdicionais;
    var i: Integer;
    begin
      with FCFe, cdsInformacoesAdicionais do
      begin
        Close;
        CreateDataSet;
        Append;
    
        if (Emit.cRegTrib = RTSimplesNacional) then
          FieldByName('ObsFisco').AsString := Msg_ICMS_123_2006;
    
        for i := 0 to Pred(obsFisco.Count) do
          FieldByName('ObsFisco').AsString := FieldByName('ObsFisco').AsString + obsFisco[i].xCampo + '-' + obsFisco[i].xTexto;
    
        if (InfAdic.infCpl <> '') or (Self.ImprimeMsgOlhoNoImposto and (Total.vCFeLei12741 > 0)) then
          FieldByName('infAdic').AsString := StringReplace(InfAdic.infCpl,';',sLineBreak,[rfReplaceAll]);;
    
        Post;
      end;
    end;

 

 

  • QrCode.png: independente das propriedades seguintes propriedades ImprimeQrCode e ImprimeQRCodeLateral estarem habilitadas ou desabilitadas, não faz diferença na impressão e quando busco no ACBrSATExtratoFR.pas não encontra nada, mas buscando no ACBrSATExtratoFortesFr.pas encontra código para as duas; 

 

  • LarguraBobina.png: independente da propriedade estar habilitada ou desabilitada, não faz diferença na impressão, sempre imprimindo com a mesma largura. Ao buscar no ACBrSATExtratoFR.pas, não encontrei nada relacionado, mas ao buscar no ACBrSATExtratoFortesFr.pas, encontrei:
          // Largura e Margens do Relatório //
          RLLayout.Width := LarguraBobina;
          RLLayout.Margins.LeftMargin   := MargemEsquerda;
          RLLayout.Margins.RightMargin  := MargemDireita;
          RLLayout.Margins.TopMargin    := MargemSuperior;
          RLLayout.Margins.BottomMargin := MargemInferior;
    
          // Ajustando o tamanho da página //
          RLLayout.PageBreaking := pbNone;
          RLLayout.PageSetup.PaperSize   := fpCustom ;
          RLLayout.PageSetup.PaperWidth  := Round(LarguraBobina/MMAsPixels) ;

 

 

  • Margens.png: encontrei dificuldades com as seguintes propriedades:
    MargemSuperior: quando configurada, a impressão apresenta a margem superior, mas o papel acaba no código de barras e o QrCode não é exibido completamente. Na impressão em uma Bematech MP-4200 TH, o resultado é cortado logo após o código de barras.

    MargemDireita: alguns componentes não respeitam o valor configurado, ficando fora da impressão.

Gostaria de saber se há possibilidade de ajustar e implementar as propriedades mencionadas.
Atenciosamente,
Michel Meneghin

EspacoFinal.png

ImprimeCodigoEan.png

ImprimeCPFNaoInformado.png

ImprimeDescAcrescItem.png

ImprimeEmUmaLinha.png

Logo.png

ImprimeMsgOlhoNoImposto.png

QrCode.png

LarguraBobina.png

Margens.png

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Bom dia @SisMaster Sistemas
Muito obrigado por reportar !
Foi criado uma tarefa TK-5842 para analise destes comportamentos, vai entrar em nosso back log.
Quando analisada, será notificado aqui.
Caso deseje acelerar o processo e contribuir com a comunidade , basta anexar aqui as units corrigidas.
Abr

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

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.