Ir para conteúdo
  • Cadastre-se

dev botao

Impressão de "Dados para Entrega" em um extrato pelo ESCPOS


Intelliware
  • Este tópico foi criado há 3028 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Bom dia,

Notamos que ao identificar um cliente em uma venda utilizando o EscPos, aparece o bloco "Dados para Entrega" com o nome do consumidor, mesmo sem possuir entrega vinculada. Este parâmetro não é registrado no XML, até porque não existe um "nome do destinatário" no leiaute do SAT. Vasculhando o fórum, encontramos o tópico "Nome do destinatario cupom sat", onde foi inserida a linha "Trim(CFe.Dest.xNome)'' na procedure "TACBrSATExtratoESCPOS.GerarDadosEntrega". Há possibilidade de existir um meio termo, afinal não foi identificado entrega no cupom.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Para o nosso caso, efetuamos nas units as seguintes alterações:

procedure TACBrSATExtratoESCPOS.GerarDadosEntrega; //ACBrSATExtratoESCPOS.pas
begin
  if Trim(CFe.Entrega.xLgr)+
     Trim(CFe.Entrega.nro)+
     Trim(CFe.Entrega.xCpl)+
     Trim(CFe.Entrega.xBairro)+
     Trim(CFe.Entrega.xMun)+
     Trim(CFe.Entrega.xNome) <> '' then
   begin
     FBuffer.Add('</fn></linha_simples>');
     FBuffer.Add('DADOS PARA ENTREGA');

     if Trim(CFe.Entrega.xLgr)+
        Trim(CFe.Entrega.nro)+
        Trim(CFe.Entrega.xCpl)+
        Trim(CFe.Entrega.xBairro)+
        Trim(CFe.Entrega.xMun) <> '' then
     begin
        FBuffer.Add('<c>'+Trim(CFe.Entrega.xLgr)+' '+
                    Trim(CFe.Entrega.nro)+' '+
                    Trim(CFe.Entrega.xCpl)+' '+
                    Trim(CFe.Entrega.xBairro)+' '+
                    Trim(CFe.Entrega.xMun));
     end;
     if Trim(CFe.Entrega.xNome) <> '' then FBuffer.Add(CFe.Entrega.xNome);
   end;
end;

    E na unit 'pcnCFe.pas':

  { TEntrega }

  TEntrega = class
  private
    FxNome: string;
    FxLgr: string;
    Fnro: string;
    fxCpl: string;
    FxBairro: string;
    FxMun: string;
    FUF: string;
  public
    constructor Create;
    procedure Clear;
  published
    property xNome: string read FxNome write FxNome;
    property xLgr: string read FxLgr write FxLgr;
    property nro: string read Fnro write Fnro;
    property xCpl: string read FxCpl write FxCpl;
    property xBairro: string read FxBairro write FxBairro;
    property xMun: string read FxMun write FxMun;
    property UF: string read FUF write FUF;
  end;

    Com isso, caso o colaborador, deseja identificar o emitente do CF-e como o destinatário de entrega, efetuaria a atribuição:

CFe.Entrega.xNome := CFe.Dest.xNome;

    E no nosso caso, como utilizamos a tag 'Informações complementares' para efetuar a manipulação dos dados quando existe fechamento na forma de recebimento em 'CLIENTE' mantemos:

CFe.Entrega.xNome := '';

    Lembrando que é somente uma sugestão. Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Humm.. não posso aceitar... a unit pcnCFe, é um "De/Para" do XML descrito na Especificação Técnica do SAT

Seus fontes estão atualizados ?

Observe que o "CFe.Dest.xNome" será impresso em "GerarCabecalho"

 

procedure TACBrSATExtratoESCPOS.GerarCabecalho(Cancelamento: Boolean);
var        
  nCFe: String;
begin
.......
......
  if Trim(CFe.Dest.xNome) <> '' then
    FBuffer.Add( ACBrStr('Razão Social/Nome: ')+CFe.Dest.xNome );
end;

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Então, o cabeçalho está perfeito, sem problema. O que validamos com o source atual, foi que quando utilizamos ESC/POS e identificamos o destinatário do CF-e, automaticamente é mostrado no corpo do extrato o nome do mesmo como sendo para entrega. Conforme o arquivo em anexo. Pelo que vimos, foi um tratamento incluso no tópico:

 

No caso abaixo, não efetuamos a entrada de nenhuma informação para entrega, mas mesmo assim, no corpo do extrato temos DADOS PARA ENTREGA. No nosso caso, informações de entrega são tratadas no nosso AC em módulo separado. Por isso, fizemos a proposta de alteração no source acima.

ACBr-Entrega-20160122.jpg

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Agora compreendi... Você não quer que conste no "Dados para entrega", caso apenas o Nome do Cliente seja informado... isso parece correto ?

Se SIM, tente essa modificação:

procedure TACBrSATExtratoESCPOS.GerarDadosEntrega;
begin
  if Trim(CFe.Entrega.xLgr)+
     Trim(CFe.Entrega.nro)+
     Trim(CFe.Entrega.xCpl)+
     Trim(CFe.Entrega.xBairro)+
     Trim(CFe.Entrega.xMun) <> '' then
   begin
     FBuffer.Add('</fn></linha_simples>');
     FBuffer.Add('DADOS PARA ENTREGA');

     if Trim(CFe.Entrega.xLgr)+
        Trim(CFe.Entrega.nro)+
        Trim(CFe.Entrega.xCpl)+
        Trim(CFe.Entrega.xBairro)+
        Trim(CFe.Entrega.xMun) <> '' then
     begin
        FBuffer.Add('<c>'+Trim(CFe.Entrega.xLgr)+' '+
                    Trim(CFe.Entrega.nro)+' '+
                    Trim(CFe.Entrega.xCpl)+' '+
                    Trim(CFe.Entrega.xBairro)+' '+
                    Trim(CFe.Entrega.xMun));
     end;
     FBuffer.Add(CFe.Dest.xNome);
   end;
end;  

(O IF foi modificado para não verificar a presença de dados no xNome)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não necessariamente... quem faz a escrita do XML é a Unit pcnCFeW.pas

Mas pode confundir o usuário, achar uma propriedade onde ela não deveria estar...

 

Enviei a modificação para o SVN...

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Show. Entendi Daniel. É que tivemos que fazer uma modificação específica para um outro caso de controle interno aqui e apesar de fazer os testes e analisar o XML ainda fiquei meio preocupado.

Agradeço novamente a explicação.

Já atualizei aqui com a correção do SVN.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3028 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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.