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