Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Galera, seguinte: Eu tenho um cliente que é uma pizzaria Delivery. Ele tem duas impressoras Bematech MP 4200 TH Não Fiscal, uma fica no balcão onde os entregadores pegam a pizza pra sair pra entrega e a outra fica dentro da cozinha. Quando o usuário emite o cupom fiscal, eu tenho um programinha a parte que fica minimizado na bandeija, esse programa lê o banco, verifica que tem um registro novo e, através do ACBrECF, emite a guia de entrega porém, agora, preciso que ele imprima também, na impressora da cozinha, a ordem de produção. Então, eu instancio outro objeto TACBrECF e faço da seguinte maneira:

procedure TFrmRotRestaurante.VerificaImpressaoComanda(Id: Integer);
var Query:TFirebirdQuery;
    Setor:String;
    Lista:TStringList;
    Ptr:TACBrECF;
begin
   Setor := '';
   Lista := TStringList.Create;
   Query := TFirebirdQuery.Create;
   Ptr := TACBrECF.Create(Self);
   Ptr.Modelo := ecfNaoFiscal;
   Ptr.Porta := 'C:\Cupom2.txt';
   try
      Ptr.Ativar;
   Except on e:exception do
      Mensagem(e.Message,mtError);
   end;
   try
      if (Query.OpenSQLQuery(Format('SELECT              ' +
                                    '  PRO.IDSETOR||''-''||STR.DESCRICAO AS SETOR,' +
                                    '   ITE.IDSEQUENCIA,' +
                                    '   ITE.IDPRODUTO,' +
                                    '   PRO.DESCRICAO AS DESCRICAPRODUTO,' +
                                    '   ITE.QUANTIDADE ' +
                                    'FROM ' +
                                    '  RESCOMANDAITEM ITE LEFT OUTER JOIN ESTPRODUTOS PRO ON (PRO.ID=ITE.IDPRODUTO) ' +
                                    '                     LEFT OUTER JOIN ESTSETORES  STR ON (STR.ID=PRO.IDSETOR) ' +
                                    'WHERE ' +
                                    '   ITE.CANCELADO = ''N'' AND ' +
                                    '   ITE.ORDEMPRODUCAOIMPRESSA = ''N''  AND ' +
                                    '   STR.IMPRIMEORDEMPRODUCAO = 1 AND ' +
                                    '   ITE.IDCOMANDA = %d ' +
                                    'ORDER BY PRO.IDSETOR ',[Id]))) then
      begin
         Query.SQLQuery.First;
         while not Query.eof do
         begin
            if ((Setor='')  or (Query.FieldByName('Setor').AsString<>Setor)) then
            begin
               Lista.Add('Setor'+Query.FieldByName('Setor').AsString);
            end;
            Query.Next;
         end;
         Ptr.RelatorioGerencial(Lista);
      end;
   finally
      Query.Free;
      Lista.Free;
      Ptr.Desativar;
      Ptr.Free;
   end;
end.

Veja que eu conecto na outra impressora e, pra questão de testes, estou mandando em 'C:\Cupom2.txt'.

Porém, não imprime, me retorna I/O error 102. Alguem pode me dar uma luz?

Sistemas para toda área Goumert, pequeno varejo e baladas.

www.controleautomacao.com.br

Postado

Então Regys, eu tenho duas opções, uma delas é enviar a impressão pra uma impressora comum. Com isso que você me disse ai, então eu poderia simplesmente instalar uma impressora, apontando pra porta dessa bematech e enviar esse relatório que eu tenho ( com os devidos ajustes de tamanho) para esta impresssora, certo?

Sistemas para toda área Goumert, pequeno varejo e baladas.

www.controleautomacao.com.br

Postado (editado)

Eu desenvolvi um cenário parecido como esses que comentam  , só que um dos meus Clientes tem um fluxo alto em seu estabelecimento e tem 4 impressoras , 1 Daruma USB  fixa no Delivery  e 3 Bematech's com interface ethernet na produção , no caso fiz um mapeamento dos itens do Cadastro de Produtos informando para cada produto o seu destino=impressora achando pelo Nome do Driver instalado , tipo :

 

Tem que estar mapeando a impressora para o driver no momento da impressão do item .

 

-Suco de laranja = Impressora Sucos (Sucos = Nome da Impressora)

-X-Tudo = Impressora Lanches ...

-Fritas = Impressora Frituras ...

-E o pedido completo impresso na impressora Delivery .

 

Os Pocket's de atendimento também mandam as informações no mesmo ambiente e funciona exatamente como vcs fizeram com o sistema de impressão minimizado utilizando-se sempre do Driver .

Editado por marcelo_sp
  • Curtir 1
  • Moderadores
Postado

Eu faço dessa forma:

- tenho no cadastro da empresa duas configurações, uma para dizer qual a impressora da empresa e outra para a impressora cozinha.

- no cadastro do produto eu tenho duas marcações, uma para impressão na cozinha e outra para impressão no terminal.

- as impressoras são instaladas normalmente no windows utilizando o driver da bematech, ele gera uma impressora normal como outro qualquer.

- ao fazer um novo pedido o sistema envia os produtos conforme a marcação e configurações acima.

 

Funciona com um alto volume de transações e nunca me deu problema.

 

Para a impressão dos relatórios eu utilizo o FastReport, nele eu tenho a opção de configurar como rolo e a largura também.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Este tópico foi criado há 4183 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.

The popup will be closed in 10 segundos...