É uma boa prática ou uma solução viavel ?  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
d34d_d3v1l
GUJ Ranger
[Avatar]

Membro desde: 17/03/2010 12:08:14
Mensagens: 895
Offline

Gente,

novamente referindo ao software de bar que estou fazendo.. Eu tinha feito o seguinte, me digam se é uma boa prática:

No meu objeto "Produto" criei dois atributos para me ajudar a fazer relatórios.. Eis os atributos:



Para que que eu fiz isso? Saber quantos itens foram vendidos do produto X .. Tanto em quantidade quanto em valor..
Por exemplo,

Se um "pão de queijo" custa R$1,00 ... e eu vender 12 itens em um dia.. as variaveis ficariam assim:




Isso ficaria guardado no banco de dados (cuja nao implementei ainda, na verdade estou totalmente perdido.. mas tudo bem)...

Acham isso uma boa prática? Ou deve ser feito de outra maneira ?

Provavelmente vocês vão falar para criar vínculos entre Produtos e Pedidos.. Porem no meu software funciona da seguinte maneira:

Objeto mesa:
-Lista de Produtos
-Numero da mesa
-Total [dos produtos consumidos]


... No banco eu penso em colocar a data, para futuramente fazer relatorios do tipo:
Dia X a mesa Y realizou tantas vendas...

Porém acho isso dificil, pois na mesma data, varias pessoas vão sentar, consumir e fechar a conta na mesma mesa...
Então to meio perdido quanto a isso...

Iai,
qual a opinião de vcs?

Vamos abandonar o DefaultTableModel? Criando o seu próprio modelo irá 'gerenciar' sua jTable de forma mais fácil... Não use o DTM:
http://www.guj.com.br/java/231928-morte-definitiva-ao-default-table-model

Meus projetos
Sugestões e críticas são bem vindas:
http://www.nortev.net63.net/projetos


Att.,
Marco Túlio Jacovine Noronha
gilvan.sfilho
JavaChild
[Avatar]

Membro desde: 08/09/2010 14:17:21
Mensagens: 112
Localização: Rio Branco, Acre
Offline

Amigo, já fiz um sistema com algo parecido.. No caso era para motel.
Um motel tem muitos quartos e cada quarto e ocupado várias vezes ao dia.. durante essa ocupação existe consumo.. também necessitava de relatório, por quarto, por periodo.. etc.

Sugiro que você faça assim:

O bar têm várias mesas cadastradas. Cada mesa vai ter várias ocupações (no mesmo dia ou não. Nesse ponto entra a data).
Cada ocupação vai ter um consumo. O consumo consiste em N produtos, consumidos X vezes, gera um total Y.

Deu para entender?

Com base nas ocupações vai ser possivel você extrair o relatório que mencionou.


Abraços.

Gilvan A. dos Santos Filho
Bacharel em Sistemas de Informação pela Universidade Federal do Acre.

MSN: gfilho2002@hotmail.com
Skype: gilvan.sfilho
Linkedin: http://br.linkedin.com/in/gilvansfilho

www.ganhonoclick.com.br
[WWW]
jurunaloco
JavaChild
[Avatar]

Membro desde: 16/06/2006 16:18:10
Mensagens: 117
Localização: Zion
Offline

gilvan.sfilho wrote:Amigo, já fiz um sistema com algo parecido.. No caso era para motel.
Um motel tem muitos quartos e cada quarto e ocupado várias vezes ao dia.. durante essa ocupação existe consumo.. também necessitava de relatório, por quarto, por periodo.. etc.

Sugiro que você faça assim:

O bar têm várias mesas cadastradas. Cada mesa vai ter várias ocupações (no mesmo dia ou não. Nesse ponto entra a data).
Cada ocupação vai ter um consumo. O consumo consiste em N produtos, consumidos X vezes, gera um total Y.

Deu para entender?

Com base nas ocupações vai ser possivel você extrair o relatório que mencionou.


Abraços.



permuta detected hehe

bURPPP!!

aaaWWwwwAAAaaYYyyyy!!!!!!!
[WWW]
d34d_d3v1l
GUJ Ranger
[Avatar]

Membro desde: 17/03/2010 12:08:14
Mensagens: 895
Offline

Não entendi...

Mas a ideia é essa

qual a chave primaria do se uqaurto ?

Vamos abandonar o DefaultTableModel? Criando o seu próprio modelo irá 'gerenciar' sua jTable de forma mais fácil... Não use o DTM:
http://www.guj.com.br/java/231928-morte-definitiva-ao-default-table-model

Meus projetos
Sugestões e críticas são bem vindas:
http://www.nortev.net63.net/projetos


Att.,
Marco Túlio Jacovine Noronha
gilvan.sfilho
JavaChild
[Avatar]

Membro desde: 08/09/2010 14:17:21
Mensagens: 112
Localização: Rio Branco, Acre
Offline

Ahn? a chave primaria do quarto? não entendi o motivo da pergunta ...
Amigo, o quarto é uma entidade com chave primeira do tipo long, auto incremental, como a maioria das classes.


A questão é: para tirar os relatórios você precisa armazenar as informações em algum canto. Por isso entra a ocupação.

Sendo que 1 quarto pode ter N ocupações. Você vai tirar os relatórios a partir das ocupações cadastradas no sistema.
Na ocupação (entidade) vai ficar data, hora, itens consumidos, garçom responsável pelo mesa.. etc. =)

Quando você quizer saber o movimento de determinado dia, basta buscar no banco pelas ocupações com o dia desejado.
Daria para saber a rotatividade de cada mesa também, etc...

Abraços =)))

Gilvan A. dos Santos Filho
Bacharel em Sistemas de Informação pela Universidade Federal do Acre.

MSN: gfilho2002@hotmail.com
Skype: gilvan.sfilho
Linkedin: http://br.linkedin.com/in/gilvansfilho

www.ganhonoclick.com.br
[WWW]
d34d_d3v1l
GUJ Ranger
[Avatar]

Membro desde: 17/03/2010 12:08:14
Mensagens: 895
Offline

gilvan.sfilho wrote:Ahn? a chave primaria do quarto? não entendi o motivo da pergunta ...
Amigo, o quarto é uma entidade com chave primeira do tipo long, auto incremental, como a maioria das classes.


A questão é: para tirar os relatórios você precisa armazenar as informações em algum canto. Por isso entra a ocupação.

Sendo que 1 quarto pode ter N ocupações. Você vai tirar os relatórios a partir das ocupações cadastradas no sistema.
Na ocupação (entidade) vai ficar data, hora, itens consumidos, garçom responsável pelo mesa.. etc. =)

Quando você quizer saber o movimento de determinado dia, basta buscar no banco pelas ocupações com o dia desejado.
Daria para saber a rotatividade de cada mesa também, etc...

Abraços =)))


realmente eu fiz a pergunta errada...

Tipo, as ocupações tem chave primaria?
Data e Hora ? é isso?

ai vc pesquisa no relatorio todas as ocupações da data x
é isso?
obrigado por me ajudar cara,
esta sendo muito util!
vlw msmo

Vamos abandonar o DefaultTableModel? Criando o seu próprio modelo irá 'gerenciar' sua jTable de forma mais fácil... Não use o DTM:
http://www.guj.com.br/java/231928-morte-definitiva-ao-default-table-model

Meus projetos
Sugestões e críticas são bem vindas:
http://www.nortev.net63.net/projetos


Att.,
Marco Túlio Jacovine Noronha
d34d_d3v1l
GUJ Ranger
[Avatar]

Membro desde: 17/03/2010 12:08:14
Mensagens: 895
Offline

detalhe a tabela Quarto (no meu caso a tabela Mesa) vai ter quais atributos?

Numero,
"Ocupação" ?



Vamos abandonar o DefaultTableModel? Criando o seu próprio modelo irá 'gerenciar' sua jTable de forma mais fácil... Não use o DTM:
http://www.guj.com.br/java/231928-morte-definitiva-ao-default-table-model

Meus projetos
Sugestões e críticas são bem vindas:
http://www.nortev.net63.net/projetos


Att.,
Marco Túlio Jacovine Noronha
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Sugestão:
Crie uma tabela de Vendas. Cada venda terá um código, uma data, uma mesa e um cliente.

Depois crie uma tabela de ItensConsumidos. Cada registro da tabela associará uma venda a um produto. Dessa forma, cada linha terá o código da venda, o código do produto e a quantidade comprada.

Note que a tabela de ItensConsumidos serviria de intermédio para a relação muitos-para-muitos entre Vendas e Produtos.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
gilvan.sfilho
JavaChild
[Avatar]

Membro desde: 08/09/2010 14:17:21
Mensagens: 112
Localização: Rio Branco, Acre
Offline

Fala d34d_d3v1l ,

então cara, quando implementei fiz assim
Os quartos (no seu caso mesa) tinha chave primaria , long, auto incremento...
As ocupações também, cada ocupação com um id único.

Desta forma, uma mesa vai ter um conjunto de ocupações, isso pode ser feito colocando na entidade mesa um artributo List<Ocupacao>,
que guardará todas as ocupações de determinada mesa. (hibernate faz isso tranquilo)

A data e hora não utilizei como chave primaria não.. mas armazei elas na ocupacao.

A sugestão que o marcobiscaro2112 deu é interessante. Inclusive utilizei algo bem parecido com o que ele falou, não mencionei aqui por que não era o foco.
Enfim, acredito que suas classes irão fica algo do tipo:

Mesa.java


Ocupacao.java


ItemConsumo.java


Produto.java


Acho que algo desse tipo ai cara, lembrando que fiz algo para que funcione no hibernate. Não sei se ta tdo certinho pq digitei direto aqui no editor do forum.

OBS: o valor armazenado no itemConsumido é importante pois guardara o valor do produto no dia que o mesmo foi vendido. Desta forma, caso o valor do produto mude, o relatoria ira mostrar a realidade. Aconteceu um problema comigo quanto a isso. Eu calculava o valor da venda com base no preco do produto que tava armazenado no banco... Desta forma, se o valor do produto mudasse os relatorios tambem mudavam, ficando consequentemente tudo errado.

Cada venda terá um código, uma data, uma mesa e um cliente.

marcobiscaro2112, acho que data, mesa pode ser puxado direto do relacionamento, no caso a ocupacao. Então não tem por que armazenar a data e a mesa tanto na ocupação como na venda. Caso use hibernate não vejo também a necessidade de criar a entidade venda, pode ser feito direto utilizando itemConsumido.

Quando fiz o sistema para o motel não conhecia o hibernate, ai sim utilizei venda, pois não tinha como mapear.




Abraços..

Gilvan A. dos Santos Filho
Bacharel em Sistemas de Informação pela Universidade Federal do Acre.

MSN: gfilho2002@hotmail.com
Skype: gilvan.sfilho
Linkedin: http://br.linkedin.com/in/gilvansfilho

www.ganhonoclick.com.br
[WWW]
gilvan.sfilho
JavaChild
[Avatar]

Membro desde: 08/09/2010 14:17:21
Mensagens: 112
Localização: Rio Branco, Acre
Offline

d34d_d3v1l wrote:
int quantidadeVendida; //cada vez que vender, incrementa
double quantidadeVendidaDinheiro; //cada vez que vende, adicionava o seu preço


Isso ai acredito que não vai mais ser necessário,
pois com base no que ja foi dito do topico voce vai poder puxar a quantidade consumida de acordo com a data ou periodo que voce especificar.
Ai consequentemente tera tambem o valor em reais do consumo.



Abraços

Gilvan A. dos Santos Filho
Bacharel em Sistemas de Informação pela Universidade Federal do Acre.

MSN: gfilho2002@hotmail.com
Skype: gilvan.sfilho
Linkedin: http://br.linkedin.com/in/gilvansfilho

www.ganhonoclick.com.br
[WWW]
d34d_d3v1l
GUJ Ranger
[Avatar]

Membro desde: 17/03/2010 12:08:14
Mensagens: 895
Offline

Veja minha classe Mesa:



Guarda isso ai na mente que eu já comento....

Cara eu nao queria usar o Hibernate na minha aplicação, por isso não queria armazenar objetos no banco de dados...
Queria trabalhar com tabelas mesmo... queria fazer isso para aprender mais sobre sql... e vai ser util para mim em outras situações...

entãoo, não tem como eu fugir da ocupação, pois é através dela q vou gerar relatorios (correto?)... entao teria que ficar:




Tranquilo...
minha classe de ocupação:




resolveram 90% do meu problema... E agora, como transformar isso em tbelas?

Vamos abandonar o DefaultTableModel? Criando o seu próprio modelo irá 'gerenciar' sua jTable de forma mais fácil... Não use o DTM:
http://www.guj.com.br/java/231928-morte-definitiva-ao-default-table-model

Meus projetos
Sugestões e críticas são bem vindas:
http://www.nortev.net63.net/projetos


Att.,
Marco Túlio Jacovine Noronha
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

gilvan.sfilho wrote:
Cada venda terá um código, uma data, uma mesa e um cliente.

marcobiscaro2112, acho que data, mesa pode ser puxado direto do relacionamento, no caso a ocupacao. Então não tem por que armazenar a data e a mesa tanto na ocupação como na venda.

De fato, se a data estiver em alguma outra tabela, não há porque duplicar este dado.

Quando disse que cada venda tem uma data, mesa e cliente, não considerei que a utilização de uma tabela de ocupação. No caso, pensei em relacionar diretamente o cliente, com a mesa na qual ele sentou e quando ocorreu isso (ou seja, os dados da ocupação ficariam nessa mesma tabela).

Na hora de gerar o relatório, poderia ser feita uma consulta na tabela de vendas, filtrando pelo número da mesa específica. Com isso é possível saber quantos clientes passaram por aquela mesa em determinado dia, o valor total acumulado por mesa, etc.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

d34d_d3v1l wrote:resolveram 90% do meu problema... E agora, como transformar isso em tbelas?

Acho que antes respondermos isso, seria interessante termos uma visão geral de como seu sistema está. Você poderia fazer um diagrama UML de classes e postar aqui?

Isso vai permitir sugerir melhorias tanto no código quanto na parte do banco de dados posteriormente.

This message was edited 2 times. Last update was at 19/02/2011 18:02:42


Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
d34d_d3v1l
GUJ Ranger
[Avatar]

Membro desde: 17/03/2010 12:08:14
Mensagens: 895
Offline



ta ae

Vamos abandonar o DefaultTableModel? Criando o seu próprio modelo irá 'gerenciar' sua jTable de forma mais fácil... Não use o DTM:
http://www.guj.com.br/java/231928-morte-definitiva-ao-default-table-model

Meus projetos
Sugestões e críticas são bem vindas:
http://www.nortev.net63.net/projetos


Att.,
Marco Túlio Jacovine Noronha
d34d_d3v1l
GUJ Ranger
[Avatar]

Membro desde: 17/03/2010 12:08:14
Mensagens: 895
Offline

no caso nao fiz as modificações que deveria .. criar outra classe "Ocupação" e tal

Vamos abandonar o DefaultTableModel? Criando o seu próprio modelo irá 'gerenciar' sua jTable de forma mais fácil... Não use o DTM:
http://www.guj.com.br/java/231928-morte-definitiva-ao-default-table-model

Meus projetos
Sugestões e críticas são bem vindas:
http://www.nortev.net63.net/projetos


Att.,
Marco Túlio Jacovine Noronha
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team