Sistema para Lanchonetes

Delphi

01/01/2013

Eu estava vendo alguns post''s no Devmedia , e vi assunto relacionados a " controle de bares,restaurantes " sao similares ao meu problema , que por ventura poderia que vocês me auxiliacem , se for possivel de nós nos se comunicar para que trocamos algumas ideias relacionadas ao fato.
Pois então, eu estou com um sistema de lanchonetes em faze de termino , unica coisa que precisa ser fenalizado é : Controle de mesas , minha parte de vendas esta toda completa ,a unica peça do quebra cabeça é este de movimento de mesas. Bom espero que você leia este email e veja com carinho se poderia me ajudar , se caso tiver algum projeto feito pra eu ter uma base , comparar com o meu, pra que eu tenha pelo menos uma base necessária.
Abraço
Att Junior Rezende
Clovis Junior

Clovis Junior

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

01/01/2013

E aí, Clovis, beleza?
Amigo, qual é exatamente sua dificuldade? Tente deixar o mais claro possível para que possamos tentar te ajudar.
Abraço.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Meu problema amigo eh , ao clicar num formulario q tem botoes de mesas ele automaticamente ele irá abrir uma nova venda de cada mesa , ou seja se eu clicar no botao "mesa 1" ele abrirá uma tela de vendas da mesa 1 assim por diante, quando for mesa 2 , mesa 2
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Estou postando a minha idéia ,para que capturasse alguma ideia de vocês no qual preciso elaborar a parte final do meu sistema para lanchonentes, bom galera, minha ideia é um seguinte ,criei um formulario de mesas no qual tem de primeramente 4 mesas ou seja 4 botoes , nestes botoes ainda nem incrementei meu código ainda , correto ?.Bom a minha tela de vendas esta pronta , tudo certinho , esta realizando desconto etc...
Agora minha lógica é , ao clicar no botao da "mesa 1" vai abrir a tela de vendas ,nesta tela de vendas vai ter uma label mostrando o numero da mesa e uma editOcupantes pra mostrar quantos ocupantes estão na "mesa 1", bom ao realizar a abertura desta mesa , o funcionario do caixa incluirá os produtos realizados daquela mesa , mais enquanto isso esta mesa poderá ser aberta quanto puder ate a realização do pagamento da mesma, inquanto isso o funcionario poderá abrir outras mesas assim por diante. Ao abrir a mesa 1, no botão da mesa 1 , apresentará o status da mesa ou seja " ocupado,reservado,livre, fechada" .Pois ao realizar outra venda para outras mesas , será realizado o mesmo processo. caso queira voltar pra mesa 1 , mais os dados não serão habilitados para edição ou seja terá um botão para edição da determinada mesa.Por fim a mesa que for efetuar o pagamento dos teus determinados pedidos , será realizado uma emissão de um cupom nela com os detalhes dos determinados produtos e suas caracteristicas,ao fechar a conta desta mesa , automaticamente ela será realizada a liberação da mesma. Bom este é meu projeto no qual falta pouco pra terminar que é a inclusao de mesas dos pedidos de vendas. Espero que alguem do forun pode me auxiliar e fico muito grato com isso , muito obrigado !!!
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Existe uma quantidade predefinida de mesas? Ou as mesas estão cadastradas no banco?
Você já gerou os vários botões representando as mesas, ou essa é uma das coisas que está faltando?

Há cerca de dois anos fiz um sisteminha assim em C# para um bar, só que ocorreu uma desgraça no PC e acabei perdendo todos os fontes.
GOSTEI 0
Renato

Renato

01/01/2013

Ola Clovis eu tenho um sistema (rodando) de lanchonete, mas eu fiz diferente da sua ideia , criei a tabela MESAS (os campos voce escolhe conforme sua necessidade) , mas em vez de usar botões para cada mesa eu peço ao usuario digitar o numero da mesa que quer usar(para acrescentar produtos, fechar, etc..): e no canto direito da tela coloquei um DBGrid com as mesas que estão abertas (sendo usados no momento).
Não sei como por imagem aqui, se souber me explica que eu coloco a tela do meu soft de lanchonete/pizzaria.

Feliz Ano Novo

Renato
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

O meu amigo ,se vc tiver teu msn me passa pra gente trocar os fontes ? eu te passo o meu como esta , ai vc me passa o teu ?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Amigo é um seguinte , vc vai fazer assim , vc vai pegar ir neste link
http://imageshack.us/
ai vc acessa com teu usuario do facebook caso tiver , ai escolhe a imagem este link eh bom
quando carregar a imagem
vc pega e cola no forun aki :D

ai de boa amigo
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Entao amigo , a quantidade especifica nao precisa ,ele tem apenas 15 mesas , mais vamos iniciar com duas mesas exemplares pra pegar o ritmo como pode fazer o restante :D
GOSTEI 0
Laelson Fagundes

Laelson Fagundes

01/01/2013

Fiz um sistema de resraurante para a empresa q trabalho e agora estou fazendo outro sistema mais estruturado para o novo sistema, a função q vc quer é facil basta capturar o caption do botao q se refere a mesa assim vc preenche as suas funcionalidade, lembrando se o seu sistema possui paf-ecf as coisas mudao um pouco no fechmaneto das vendas.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Bom, começa colocando um TGridPanel, ele ajudará a organizar os botões. Então adicione uma certa quantidade de linhas e colunas, de forma a ter um número razoável de células para adicionar os botões.
Depois você faz um loop criando TButtons e inserindo nesse painel. Para cada TButton, defina a Tag ou Caption com o número da mesa, isso será usado posteriormente para saber qual mesa está sendo aberta.
GOSTEI 0
Renato

Renato

01/01/2013

Clovis esta é a tela :
http://imageshack.us/photo/my-images/37/telamesas.jpg/
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

é deste jeito mesmo amigo , deste jeito q seria
deixa eu te falar , no botao "MESA 1 " eu coloco o mesmo codigo na hora de adicionar uma nova venda ?la no formualario de vendas ?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Olha meu sistema amigo, a tela de vendas dele , esta seria como se fosse pra receber os pedidos de mesa, mais como eu ainda nao incrementei pra fazer pedido de mesas , fiz como se fosse ,"vendas diretas"

[URL=http://imageshack.us/photo/my-images/855/semttuloqq.png/][IMG]http://img855.imageshack.us/img855/5641/semttuloqq.png[/IMG][/URL]

Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

http://img855.imageshack.us/img855/5641/semttuloqq.png
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Clovis, se liga só em um procedimento básico pra gerar os botões:
procedure TForm2.AbrirMesa(Sender: TObject);
begin
  ShowMessage((Sender as TButton).Caption);
end;

procedure TForm2.FormCreate(Sender: TObject);
var
  i : Integer;
  b : TButton;
begin
  for i := 1  to 15 do
  begin
    b := TButton.Create(Self);
    b.Caption := 'Mesa ' + IntToStr(i);
    b.Align := alClient;
    b.Click := AbrirMesa;
    GridPanel1.InsertControl(b);
  end;
end;


Nesse caso eu tenho um GridPanel com 15 células, quando adiciono os botões, eles são organizados automaticamente em forma de tabela.

Veja só como fica: https://dl.dropbox.com/u/78226427/TelaMesas_01.jpg.

No método AbrirMesa, que nada mais é que um Event Handler para o evento OnClick dos botões, eu coloquei apenas um ShowMessage com o caption do botão que está sendo clicado, mas você poderia implementar ali a abertura da tela de vendas para aquela mesa.

Eu usei o Caption dos TButtons, mas para armazenar apenas o valor inteiro referente ao número da mesa, você poderia usar a Tag.

Abraço.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Correto , eu usei uma Stringrid aki so que como adciono os botoes nela ? eu coloco botoes normais ?dentro de cada celula?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Cara, vá por mim, não use String Grid pra isso não, dá mais trabalho e o resultado nem é melhor, para que valha a pena. O próprio nome já diz STRING grid, o objetivo desse controle é dispor texto em forma tabular.
Por que não usa o GridPanel, como eu sugeri?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

GridPanel eh melhor amigo ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Sem dúvida, para esse fim, é melhor. No exemplo da imagem eu adicionei 5 colunas e 3 linhas. Você verá que ao adicionar os botões eles já são organizados automaticamente. Faça o teste e verá.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

pra adicionar os botoes eu coloco onde ?dentro do panel ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Se quiser adicionar diretamente, sim, basta soltar os botões no painel. Se preferir use o método que eu postei para adicioná-los dinamicamente.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ah intendi amigo , perai vou fazer ja mostro pra você
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Este procedimento Abrirmesas vai receber String la em Public ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Coloque em private a declaração
AbrirMesa(Sender: TObject);


GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

coloquei assim


procedure TfrmMovMesa.abrirmesa;
begin
ShowMessage((Sender as TButton).Caption);
end;

só que esta dando erro grifando de vermelho em cima do SENDER
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Você declarou na seção private do form?
Por exemplo:
TFormMesas = class(TForm)
private
  procedure AbrirMesa(Sender : TObject);


Então você pode pressionar CTRL+SHIFT+C com o cursor sobre o procedure para implementar o corpo do método.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

[DCC Error] UMesa1.pas(46): E2064 Left side cannot be assigned to

erro nesta linha quando copila - > b.click := abrirmesa;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Perdão, Clovis, foi falha minha ao copiar o código. O correto é b.OnClick e não b.Click.

GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

kkkk , da nada amigo

agora de deu certo mais agora deu erro na mesma linha de baixo



procedure TfrmMovMesa.abrirmesa;
begin
ShowMessage((Sender as TSpeedButton.Caption)); aqui //[DCC Error] UMesa1.pas(54): E2233 Property 'Caption' inaccessible here
end;


GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

No método de criação você usou TSpeedButton ou TButton?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

TSpeedButton :D pq ai eu poderia colocar imagemd dentro do TSpeedButton :D
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

TSpeedButton :D pq ai eu poderia colocar imagemd dentro do TSpeedButton :D
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Bom, vou fazer uns testes aqui pra ver o que pode ser e já te dou um retorno.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

ok amigo ;D , eu aguardo :]
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Ah ha, saquei.. você botou o .Caption depois do TSpeedButton, e deveria ser após o parêntese.
Veja:
  ShowMessage((Sender as TSpeedButton).Caption);
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

verdade agora deu certo amigo rs
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

agora ta tudo certo amigo ,
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ficou assim amigo


http://img189.imageshack.us/img189/9929/semttuloery.png
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Alguem do forum esta por aqui ? ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

A quantas anda o projeto, amigo? Onde paramos?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Pois eh amigo paramos la na tela das mesas consegui criar a gridPanel , agora quando clico no botao Mesa 1 ele aparece uma mensagem informando qual mesa :D
agora falta implementação do codigo, deixa eu te pergunta amigo , vc nao tem um exemplo pratico pra mim só eu ter uma ideia ?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

ficou assim , olha a imagem

http://imageshack.us/photo/my-images/189/semttuloery.png/
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Não tenho nada pronto, por isso não posso te passar. Mas agora qual é a maior dificuldade?
Você já tem o código da mesa ao clicar no botão (pegar pelo caption ou pela tag), agora você passa esse código pra tela de vendas e faz o pedido normalmente.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Entao isso ai ate de boa só que se eu for fazer com varias mesas ? , tpw eu faço um pedido da mesa 1 ,mesa 2 , nao vai mostrar os dados de outros pedidos de outras mesas?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

ou seja , se caso eu for voltar pra mesa 1 eu to na mesa dois , irá mostrar os dados normalmente ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Então, cara, se tu vai abrir um novo form e considerando que você está gravando os dados corretamente no BD (com os relacionamentos e estrutura corretos), quando abrir o form da venda, vai filtrar somente a mesa que foi clicada e seus itens.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

oks , irei, criar 4 formualrios se for 4 botoes vao ser 4 formalario de mesas correto ?estes formularios sao pedidos no quais os clientes irá pedir para o garçon correto ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Sim, exato. Mas só será um único formulário, cara. Você vai ter um form tipo "FormPedido" ou "FormVenda" (depende de como você chama). Você vai abrí-lo e passar o número da mesa como parâmetro. Esse formulário vai ter lá os campos tudo direitinho (código da venda, data, etc) e os itens.
Você só vai abrir/editar uma mesa por vez, não várias ao mesmo tempo. Para abrir outra mesa, você sai da atual e abre a outra.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

a intendi , queria sabeer era isso mesmo , intao eu crio uma tela de formulario de pedidos correto ? normalzinha , nesta tela ele vai capturar os dados dos produtos correto da mesa tal.Entao se eu for ter 4 mesas nao precisa eu criar 4 formularios de pedidos de mesas ne ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

N mesas = N formulários? Jamais, cumpade. É um form só =)

Como está seu banco de dados?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

vc quer que eu te passe a relação de todas as tabelas do meu banco ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Não todas, apenas as envolvidas nessa situação. Acho que deve ter uma tabela de PEDIDOS/VENDAS e uma de ITENS, correto?
É basicamente oque precisamos.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ok vou te passar
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Tabela de vendas

Cod_venda
cod_cliente
cod_mesa
data_venda
total_venda
desconto
venda

tabela de produtos (estoque)
cod_produto
nome_produto
estoque
marca
preco_uni
cod_fornecedor
cod_tipo
cod_unidade
descricao

tabela de itensdavenda
codigo_itens
cod_venda
cod_produto
quantidade
preco_unitario


tabela de mesa
cod_mesa
numero_mesa
status_mesa
situação
obs
data_mesa
hora_entrada
hora_saida
ocupantes
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Você já tem a tela de vendas/itens? Se tiver, como ela está?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

ja tenho a tela de venda completinha , mais esta tela de venda eh de caixa direito sabe. vou te mostra a imagem
http://img145.imageshack.us/img145/7876/semttulousw.png
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

quero jogar todos pedidos/comandas para esta tela de vendas , intendeu ?
vai ser esta jogada , esta tela de pedido vai ser como uma tabela temporaria ,vai servir só pra isso!
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Pronto, show de bola, a tela tá legal. Só que aí você não tem o número da mesa atendida, não é? Precisa começar adicionando.
Declare na seção PUBLIC do formulário uma variável para receber o número da mesa, por exemplo:
NumeroMesa : Integer;


Lá no evento OnClick dos botões gerados dinamicamente, você vai instanciar esse form (de vendas) e atribuir um valor a essa variável, por exemplo::
FormVenda := TFormVenda.Create(Application);
FormVenda.NumeroMesa := (Sender as TSpeedButton).Tag; //Considerando que você atribuiu o número da mesa à tag do botão
FormVenda.ShowModal();


Para testar, coloque um label para exibir essa propriedade na tela de vendas.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Pronto, show de bola, a tela tá legal. Só que aí você não tem o número da mesa atendida, não é? Precisa começar adicionando.
Declare na seção PUBLIC do formulário uma variável para receber o número da mesa, por exemplo:
NumeroMesa : Integer;


Lá no evento OnClick dos botões gerados dinamicamente, você vai instanciar esse form (de vendas) e atribuir um valor a essa variável, por exemplo::
FormVenda := TFormVenda.Create(Application);
FormVenda.NumeroMesa := (Sender as TSpeedButton).Tag; //Considerando que você atribuiu o número da mesa à tag do botão
FormVenda.ShowModal();


Para testar, coloque um label para exibir essa propriedade na tela de vendas.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Como no banco está COD_MESA, você pode usar CodigoMesa no lugar de NumeroMesa, como preferir.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

vou declarar dentro do formulario de vendas ?


NumeroMesa : Integer;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Exatamente, dentro do form de vendas, pois você vai precisar do código da mesa (ou número) para filtrar o pedido referente a ela.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Entao perai , este codigo q vc me passou é pra colocar dentro do botao ?
este codigo de aplicação
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Veja bem: na tela de vendas você precisa conhecer o código da mesa selecionada, certo?
Então no botão que vai abrir a tela de vendas (aqueles botões gerados automaticamente), você vai chamar o form de vendas passando para ele o código da mesa seleionada. Para isso você vai precisar de algo do tipo:
FormVenda := TFormVenda.Create(Application);
FormVenda.NumeroMesa := (Sender as TSpeedButton).Tag; //Considerando que você atribuiu o número da mesa à tag do botão
FormVenda.ShowModal();
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Entao eu colocarei uma label la em vendas como se fosse pra receber o numero da mesa que foi clicado no botao da mesa 1 correto ? isso vai aparecer la em vendas ?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

la no meu GridPanel amigo nao apresenta botoes , so quando copilo ele apresenta os botoes , tem alguma coisa de errado ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Não, cara, afinal os botões são gerados em tempo de execução. Mas lembra que você trata o evento OnClick lá com o método AbirMesa? Lá onde você mostra o ShowMEssage, é lá que você vai chamar o form de venda.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ah intendi cara vou colocar este codigo la?


frmnovavenda := TfrmNovaVenda.Create(Application);
frmnovavenda.NumeroMesa := (Sender as TSpeedButton).Tag; //Considerando que você atribuiu o número da mesa à tag do botão

frmnovavenda.ShowModal();
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

coloquei la so qui da este erro

: Connot make a visible windows modal'.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Coloquei assim deu certo


procedure TfrmMovMesa.abrirmesa;
begin
frmnovavenda := TfrmNovaVenda.Create(Application);
frmnovavenda.NumeroMesa := (Sender as TSpeedButton).Tag;
//Considerando que você atribuiu o número da mesa à tag do botão

frmnovavenda.Show;


ShowMessage((Sender as TSpeedButton).Caption);
end;
end.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

ACho que o form de venda tá com Visible = True, ponha false.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Então, aí temos duas obsevações a fazer:
1) pode tirar o show message;
2) lá onde você cria os botões, eu passe "Mesa + IntToStr(i)" pro caption do botão, no caso você precisaria atribuir a variável "i" à Tag do botão. Caso contrário, vai ser sempre 0.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

na hora quando coloquei apenas show ficou de boa nem deu erro mais :D
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Então ate agora esta de boa meu codigo ?


procedure TfrmMovMesa.FormCreate(Sender: TObject);
var
i : Integer;
b : TSpeedButton;
begin
for i := 1 to 4 do
begin
b := TSpeedButton.Create(Self);
b.Caption := 'Mesa' + IntToStr(i);
b.Align := alClient;
b.OnClick := abrirmesa;
GridPanel1.InsertControl(b);
end;
end;


procedure TfrmMovMesa.abrirmesa;
begin
frmnovavenda := TfrmNovaVenda.Create(Application);
frmnovavenda.NumeroMesa := (Sender as TSpeedButton).Tag;
 //Considerando que você atribuiu o número da mesa à tag do botão

frmnovavenda.Show;


ShowMessage((Sender as TSpeedButton).Caption);
end;
end.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Tirei o showmessage agora ao inves de apresentar em message o numero da mesa
vou apresentar la em vendas o numero da mesa que eu cliquei
ficaria assim


frmNovavenda.lblmesa.text;


??
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Primeiro, como eu disse, lá no FormCreate onde você cria os botões, é preciso atribuir a variável "i" à Tag do botão criado. Assim:
b.Tag := i; //isso atribui 1, 2, 3... à tag, senão todos seriam zero


Com relação a mostrar no label, você vai fazer isso direto no form da venda, então não precisa usar o nome do form para referenciar o label, apenas o nome do label. Por exemplo, no evento OnShow do form de vendas você faria:[
lblmesa.Caption := IntToStr(NumeroMesa);
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ficaria assim


b.Tag := i;
b.Caption := 'Mesa' + IntToStr(i);
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Exatamente.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Só que não apareceu nada la na label de vendas o numero da mesa amigo :S
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

meu codigo fico assim la no onshow do meu formvenda


LBLSTATUSMESA.Caption := IntToStr(NumeroMesa);

quando clico no botao da mesa 1 , ele aparece a tela de vendas la na label ele apresenta um numero "0"
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Em que evento você colocou isso? No OnShow?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Isso foi la mesmo :D
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Ponha um breakpoint na linha
frmnovavenda.NumeroMesa := (Sender as TSpeedButton).Tag;
e veja qual valor está sendo passado para a variável NumeroMesa.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ok perai
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Não aparecer valor algum amigo :S
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

É que fica complicado de dizer algo assim sem ver o código todo. Mas façamos o seguinte: no momento estou de saída e só terei acesso ao Delphi amanhã, então tentarei de mandar um exemplo básico, no qual você poderá se basear para fazer essa parte. Ok?
Abraço.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ok intao amigo ,rs desculpa lhe incomodar cara :/
mais eu sei que eu posso contar com você (Y
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

se for possivel me manda pelo assistec.rezende@hotmail.com
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Saca só, arrumei 5 minutos aqui pra fazer um exemplo dessa parte. Aqui funcionou legal, acho que você não está atribuindo a variável "i" à Tag, como discutimos.
Baixe o exemplo nesse link: https://dl.dropbox.com/u/78226427/Mesas.rar.

Até amanhã e boa sorte.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ae galera agora deu certo , agora quando clico no botao da mesa 1 ele abre a mesa 1 ,em vendas mostra numa label o numero da mesa que eu cliquei. agora so que fiz um teste , fiz uma venda da mesa 1 , depois fui pra mesa 1 fazer outra venda , ai voltei pra mesa 1 os dados da mesa 1 q eu tava efetuando a venda ele sumiu :S
porque sera ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Amigo, o fato de mostrar o número da mesa lá no label não significa absolutamente nada para a venda. Você está gravando corretamente o campo COD_MESA com o número da mesa? Quando abre a tela de vendas, você abre a venda que já estava em andamento, filtrando pelo COD_MESA?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Pois Entao amigo na hora de abrir minha venda , no caso la no botao adicionar nova venda tem este codigo


//inicializa a venda para um cliente
  dm.ib_venda.Append;
  //importa o código do cliente para a tabela venda
  dm.ib_vendaCOD_CLIENTE.Value := dm.ib_clienteCOD_CLIENTE.Value;
  //inicializa o total da venda com o valor zero
  dm.ib_vendaTOTAL_VENDA.Value := 0;
  //atribui ao campo datavenda a data atual do sistema

 dm.ib_vendaDATA_VENDA.value := Date;

  //salva as informações na tabela venda
  dm.ib_venda.Post;




 dm.IBTransaction1.CommitRetaining;
 botaoCancelar.Visible:=true;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Pronto, percebe que a[i você não indica o número da mesa em uso? Tem de preencher aquele campo COD_MESA, não? Senão, como você vai saber a que mesa se refere essa venda?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Entao neste código terei que implemente o cod_mesa ? depois o numero da mesa correto ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Bom, aí depende da sua estrutura. O que é o campo COD_MESA? É uma chave estrangeira para a tabela de mesas, correto?
Ao criar os botões lá no outro form, você não está usando essa tabela, está criando as mesas sequencialmente e atribuindo a cada uma um número. Por isso eu estou chamando de NÚMERO. Como você não está usando a tabela de mesas, esse COD_MESA por enquanto é aquela variável NumeroMesa.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Ah, revisando suas tabelas eu entendi agora como você pensou. Inicialmente não acho que esteja bem adequado, vou te pedir um tempo para propôr uma estrutura diferente, com base no que usei no meu sistema (semelhante a esse, só que para um bar).
Até mais.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Mais amigo , se eu colocar uma um componente virtual , vai coletar todos os dados da minha mesa , sera que nao da certo ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

O que seria esse componente virtual? Bom, tente fazer, se der certo, ótimo. É até melhor que você ponha suas ideias em prática do que eu me meter no seu banco de dados.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

é criar um componente tem tempo de execução
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Certo, mas qual seria esse componente? E como você o utilizaria?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Este componente seria um dataset : Tdataset em uma class correto
e chamava chamava o botão

b:=tspeedbutton; colocava um procedimento no qual irá pegar os dados da mesa com os dados da venda colocaria dentro de um form
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Faz sentido, mas veja bem: a forma como você está fazendo hoje não está erada, o form de vendas só precisa saber qual mesa foi selecionada.
Eu não entendi o porquê da tabela de mesas. Ao meu ver, a estrutura básica seria a seguinte:
TABELA DE VENDAS/PEDIDO
- COD_VENDA
- COD_MESA / NUMERO_MESA
- DATA_HORA
- STATUS (EM ANDAMENTO, FINALIZADO, CANCELADO)

Explicando:
- COD_VENDA: o código único da venda, pode ser um campo auto incremento;
- COD_MESA: o código/número da mesa selecionada, apenas isso importa, pois não haverá duas mesas com o mesmo número;
- DATA_HORA: importante para identificar o momento da venda/atendimento;
- STATUS: indica a situação do atendimento/mesa/venda. A mesma mesa poderá ser usada várias vezes, mas só após encerrar uma comanda é que se pode abrir outra com a mesma mesa. Por isso, é preciso saber se a mesa está em uso.

Veja se concorda comigo.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

A tabela de mesas referece à : eu posso fazer uma venda direta correto ?talves o cliente chega la na lanchonete nem senta na mesa apenas pede o que quer e vai embora , ou seja isso será uma venda direta, ai caso contrario o cliente for sentar na mesa , esta venda ja vai pegar la de mesas a inclusao dos dados da mesma, correto ? ou seja intao daquela tabela de mesas eu vou puxar os dados para venda ,correto ? ou seja , a parte da mesa eu pensei comigo criar um inner join pra capturar os dados da mesa para venda , correto ? ai que eu ia fazer , pegava estes dados alocava dentro de uma query tipo temporaria,mais pelo que eu vejo seria mt mais complexo fazer deste tipo.Porque na minha tabela de mesas , vai conter os dados


- Cod_mesa
- numero_mesa
- Ocupantes
-Status
- Total_Mesa
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Então, eu acho um pouco desnecessária essa tabela de mesas, pois seria basicamente os mesmos dados da venda, só que para armazenamento temporário.
Para a venda direta você poderia, por exemplo, usar uma mesa padrão (tipo aquele CLIENTE BALCÃO que é usado em alguns estabelecimentos).
*** Observação: os campos que eu citei foram apenas aqueles relevantes para essa questão, claro que ainda precisa de outros como TOTAL da venda.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Se eu fazer na unha mesmo tpw , criar os 15 formularios de mesas , ai fica menos complexo nao fica ?a cada botao que eu chamar vai ser uma tela de pedidos. ou seja uma outra venda !
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Cara, faz isso não, deu até um desgosto agora. rsrs
O que eu posso fazer agora é um exemplo com Access pra tentar esclarecer as ideias, isso te ajudaria? Pelo menos pra ter uma ideia?
Um abraço e não desista! Nós vamos desenrolar isso.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

kkkkkkkkkkkkkkkkk ,cara to quase pra desanimar amigo kkkk , poder ser com acess sim , só pra eu estudar mesmo esta lógica como seria amigo , porque ta osso de ruer em kkk
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Não sei nem como agradescer nao cara ! fico agradescido de mais em !
deixa um horario especifico que você esta no forun pra gente trocar sempre ideia !
abraço
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

01/01/2013

Saquei, então segura a onda que nós vamos conseguir. Vou precisar instalar o Delphi em casa pra fazer esse exemplo, pois só uso Delphi aqui na empresa e já já estamos encerrando o expediente. Assim que eu terminar, eu te mando por email.
Um abraço.
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

Ah blz amigo , Entao você tem meu email ?
GOSTEI 0
Clovis Junior

Clovis Junior

01/01/2013

assistec.rezende@hotmail.com por alguma duvida meu email esta ai :D
GOSTEI 0
Josenildo Rosa

Josenildo Rosa

01/01/2013

Olá J.R, sou o Josenildo Rui e estou fazendo um programa exatamente igual ao seu, e estou com muita dificuldade de fazer a imagem do cupom não fiscal igual a esse de sua tela de vendas, se não for incômodo, teria como você me explicar como faz para montar o layout e que de acordo que eu vou incluindo o produto, ele vai mostrando na imagem do cupom não fiscal do lado, identico ao seu.

Abraços e aguardo retorno.
GOSTEI 0
Rafael Oliveira

Rafael Oliveira

01/01/2013

Bom dia! Joel tem como vc me passar um contato seu pra podermos conversarmos? preciso mt de ajuda
GOSTEI 0
POSTAR