| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2005 20:12:41
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Olá pessoal,
Estou precisando de algumas opiniões sobre uma modelagem que eu fiz aqui. O problema é um sistema de estoques e vendas, onde é necessário que se mantenha o controle da quantidade de mercadorias vendidas, quais foram vendidas, quais ainda não foram e que seja possível reconstituir todo o histórico para análizes futuras.
Pensando nisso, eu modelei o seguinte, uma classe "Produto" que tem três propriedades, nome, descricão e "Marca" (que é outra entidade). O produto apenas define alguma coisa que "pode" ser vendida, ele não tem preço nem quantidade. Já pra lidar com os problemas do preço e da quantidade eu criei mais uma entidade, "Item" quem tem como propriedades "dataDeEntrada", "valor" e "percentual" (pra quando forem necessários os descontos) e cada item se referencia a um produto, assim, quando eu quizer saber se existem produtos de um certo tipo a venda, posso procurar por referências não vendidas em "itens".
De resto é só a nota, o cliente e o vendedor. O que é que vocês acham? Tá bom? Tá ruim? Alguém já fez um sistema de estoque e vendas por aí e pode dar um toque?
Estou aceitando toda a ajuda
| Nome do arquivo |
modelo claro.png |
Download
|
| Descrição |
Diagrama de classes |
| Tamanho |
5 Kbytes
|
| Baixado: |
20052 vez(es) |
This message was edited 1 time. Last update was at 11/08/2005 20:13:24
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2005 21:01:57
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5796
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Raciocinando mais como modelagem de base de dados do que com classes, se poderia fazer o seguinte:
- Uma classe cliente com todos seus dados
- Uma classe vendedor com todos seus dados
- Uma classe notas de vendas (NFs) com todos seus dados
- Uma classe itemNF com todos seus dados
- Uma classe produto com todos seus dados com inclusive preço do produto e quantidade em estoque
- Uma classe fornecedor (= marca) com todos seus dados
Até aqui está quase igual ao seu modelo. Onde estão as diferenças?
1) A classe NFs precisa conter também os dados do cliente, do vendedor e a classe itemNF precisa dos dados do produto. O motivo disto é que depois da venda efetuada pode haver mudanças nos dados do cliente ou do vendedor. Você vai popular as classes a partir de tabelas na base de dados ou de dados digitados. Mas as notas depois de emitidas passam a ter vida própria independente do que mudou.
2) A classe produto precisa ter preço e qtde em estoque. O preço do itemNF é apenas um retrato instantâneo do que foi o preço no momento da venda.
3) Para reconstituir o histórico seria bom armazenar os movimentos.
4) Seu sistema precisa no mínimo de telas para cadastrar clientes, produtos, vendedores, NFs, consultas às qtdes vendidas, qtde em estoque e histórico.
Lembre-se que seu sistema é completamente fictício pq na prática seria preciso tb considerar outros tipos de operação como NF de entrada, NF de devolução, cancelamento e muitos outros que normalmente ocorrem no comércio.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2005 21:23:38
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Eita que é informação demais
Vamos ver se eu entendi tudo, a modelagem continua parecida, mas agora eu mudo a quantidade e o preço direto pra produto e item vai virar uma tabela "espelho" do "produto", que vai se relacionar com nota pra garantir que as coisas vão continuar as mesmas quando o preço e outras coisas do produto mudarem.
A nota vai conter os produtos (os itens, no caso), o vendedor e o cliente. Mas vai conter apenas com chaves ou eu tenho que criar tabelas espenho pro vendedor e pro cliente também?
E agora mais uma dúvida... o pagamento da nota! (como foi que eu me esqueci disso... )
Eu havia pensado no seguinte, criar uma nova tabela de movimentos relacionada a tabela de "notas" que vai ter a data que o pagamento deve ser feito e a quantidade que deve ser paga, pra poder simular pagamentos parcelados.
Mas agora você me pegou com esses outros movimentos, não tinha pensado neles ainda. Eu poderia ter um flag na nota que mostrasse se ela era de entrada ou saída, e sendo devolução ou cancelamento a própria nota (que já existiria nesses dois casos) poderia ter métodos pra se devolver ou se cancelar.
E aí, é mais ou menos nesse caminho mesmo?
Valeu Luca!
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2005 21:45:40
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5796
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Tudo o que vc disse faz sentido ao colocar os produtos em uma Collection dentro da nota lembre-se que eles serão itens desta nota. Na base de dados os itensNF serão uma tabela relacionada a NF. ItemNF é quase um espelho do produto, não precisa de todos os campos. Por exemplo, não precisa da qtde em estoque. ItemNF só precisa dos dados relativos a NF
Uma nota normalmente é composta do cabeçalho com seu número, data, tipo da operação e dados do cliente. No corpo da nota vão os itens (produtos) vendidos e depois as condições de pagamento, local de entrega, local de cobrança, transportadora, etc. Procure ver modelos de NFs para reconhecer todos os campos normalmente usados.
Quanto às condições de pagamento se você se preocupar com isto vai complicar muito seu problema. Mas se for necessário lembre-se que para o histórico de estoque as condições de pagamento não importam.
Os movimentos devem permitir obter rapidamente as informações do histórico. Geralmente se prestam para uma eventual auditoria onde se busca erros nas vendas. Na vida real é comum haver erros no estoque e às vezes a gente precisa rever muitos os movimento para descobrir onde ocorreu o erro. Guarde neles tudo que achar necessário e agrupe-os em lotes. Por exemplo: um lote para cada dia.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2005 22:58:20
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Pronto!
Peguei a nota da perdigão aqui (ser filho de comerciante ajuda ó). Tem o cliente (o meu pai, com o enredeço de cobrança e entrega), tem as informações da filial que vendeu, o transportador, tem dois quadrinhos pra dizer se é de entrada ou saída, até aqui nada de novo. Mas eu percebi mais uma coisinha nela, a quantidade de unidades de cada item
Nos produtos tem os dados deles, o preço unitário e a quantidade de unidades que foram compradas, então item também deve ter a quantidade de itens vendidos pra não ficar repetindo itens na nota.
Nas condições de pagamento (que realmente são necessárias) eu pensei no seguinte, ter um "tipo de pagamento" base com o "nome do cobrado", porque o meu nome não é igual ao que aparece no cartão e informações adicionais se forem necessárias (essa base também poderia ser a de pagamentos a vista). Aí, dessa classe base vão sair mais duas classes, que são pagamento em cheque e cartão, com as informações adicionais sobre eles.
Os pagamentos realmente não vão fazer muita diferença pro estoque mesmo não, é só cruzar entrada com saída. Mas eu não entendi bem esse negócio de agrupamentos, eu crio mais uma tabela pra reunir os agrupamentos ou agrupo eles usando a data que eles chegaram?
O novo modelo que eu imaginei é esse aí embaixo.
| Nome do arquivo |
modelo-claro-2.png |
Download
|
| Descrição |
Segundo modelo imaginário do sistema. |
| Tamanho |
14 Kbytes
|
| Baixado: |
1287 vez(es) |
| Nome do arquivo |
modelo-claro-3.png |
Download
|
| Descrição |
Segundo modelo menor |
| Tamanho |
193 Kbytes
|
| Baixado: |
20798 vez(es) |
This message was edited 9 times. Last update was at 11/08/2005 23:10:06
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2005 23:23:13
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5796
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Cada vez que se acrescentam detalhes a coisa vai mais longe.
1. Para que a gente guarda o nome do vendedor?
Para acumular comissões ou para saber quem emitiu a NF. No seu caso só servirá para a 2a hipótese.
2. A NF sempre tem um transportador, seja ele uma empresa ou quem comprou a mercadoria
3. NFs tem ao menos um item
4. Questões de pagamento costumam ser amarradas ao cliente. Afinal não queremos que mau pagadores comprem de novo. Veja a enrascada q se mete tratando meios de pagamento em sistemas puramente de estoque. Seu sistema passa a ser também financeiro (faturamento) e precisa de mais coisas além do que já fez. Se este é um projeto escolar cuidado para não estragá-lo com coisas a mais sem funcionar direito.
5. Preço não pode ser double devido às dificuldades de rerepresentar números reais de forma binária. Seus produtos de 1,99 acabarão custando 1.989999999.
6. Geralmente para facilitar a indexação, todas as tabelas usam códigos ou sequências e estas grandezas às vezes também vão para as classes que as representam.
Poderia falar mais coisa. Converse com seu pai comerciante que vai aprender muito sobre sistemas de controle de estoques e faturamento.
[]s
Luca
This message was edited 2 times. Last update was at 11/08/2005 23:23:54
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2005 23:44:27
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Na verdade o mais importante é modelar (é "análise e projeto de sistemas"), mas quem sabe esse negócio um dia pode virar alguma coisa de verdade
Essa do Double eu realmente não sabia, então eu usaria o que? BigDecimal? Separava inteiros de centavos? Guardava como String?
Sobre os códigos, eu num coloquei pra num repetir, eu costumo usar o AspectJ pra colocar essas coisas (já que é igual em todo mundo), fica mais fácil de trocar depois
Mas as dúvidas de pagamentos ainda me perseguem
Nesse caso dos clientes mau pagadores, eu poderia fazer uma query que procurasse as notas pendentes e visse quais clientes estão com notas pendentes (ainda bem que se eu implementar alguma coisa vai ser com o Hibernate ).
Você acha que essa divisão de tipos de pagamento tá boa?
Valews!
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2005 23:56:07
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5796
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Só tenho tempo para mais um conselho:
Na vida real, quando a gente precisa analisar e modelar um determinado negócio, sempre há alguém que domina os meandros do negócio que passa as informações a serem modeladas. Isto significa que você deve restringir seu papel a modelar exatamente o que foi pedido sem tentar acrescentar mais nada. Presumo que seja um trabalho de escola e que deva ter algum enunciado fazendo o que seria feito por um analista de negócios ou conhecedor do ramo. Caso afirmativo, fixe-se neste documento pois fazer exatamente o que foi pedido é uma das coisas mais difíceis em informática e pode ser que seu professor exija isto.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/08/2005 09:32:08
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Luca.lasPost().agree();
Mauricio, acho que viajei aqui.. proque tipo de pagamento herda de duas(!) classes? Setinhas invertidas?
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/08/2005 11:41:22
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
pcalcado wrote:Luca.lasPost().agree();
Mauricio, acho que viajei aqui.. proque tipo de pagamento herda de duas(!) classes? Setinhas invertidas?
Cara, eu tava no décimo quinto sono quando fiz aquele diagrama, kkkk
Mas o maior problema de todos, é que não tem ninguém que "saiba do riscado", o "trabalho" é escolher um problema e modelar ele, então eu pensei em modelar um sistema de vendas e estoque on-line. Só que o comércio do meu pai é pequeno, nós não usamos nenhum sistema de gerenciamento, então não dá pra contar com a experiênia dele usando essas coisas, só com a experiência comercial de vendas e pagamentos mesmo.
Valeu a ajuda, assim que eu tiver mais dúvidas venho aperriar denovo
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/08/2005 12:55:53
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5796
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Maurício Linhares wrote: o "trabalho" é escolher um problema e modelar ele, então eu pensei em modelar um sistema de vendas e estoque on-line.
Então modele somente controle de estoque. Vendeu, baixou o estoque. Devolveu ou deu entrada, aumentou o estoque. Venda somente a vista e esqueça outros meios de pagamento.
Simplifique, KISS!
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/08/2005 00:55:11
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Olá pessoal, aqui estou eu aperriando denovo
Nas minhas andanças pela rede procurando por uma aplicação de Exemplo encontrei a osCommerce, que é uma loja virtual feia tem PHP. Já baixei e estou começando a dar uma estudada no código deles (e é até muito mais bem feito do que eu ando acostumado a ver em PHP, ainda tô pra ver coisa mais feia que o PHP Nuke ). O único problema é que ele é bem mais direcionado pra vendas do que pra estoque
Alguém sabe de algum outro projeto open source de vendas e estoque (de preferência em Java, PHP ou C#)?
This message was edited 1 time. Last update was at 14/08/2005 02:20:07
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/08/2005 11:08:47
|
thiagopdn
What is classpath?
![[Avatar]](/images/avatar/479f499df3bbc0deda265b92316d362f.jpg)
Membro desde: 31/07/2005 23:20:47
Mensagens: 7
Offline
|
Opa
Eu modelei um avez assim :
1 - Faz parte da logica de negocio para que um produto seja vendido tem que se ter uma proposta.
2 - Os planos de pagamentos , são usados para gerar as parcelas
3- Coloquei as parcelas contendo um pagamento poques as vezes os cliente paga de antecipado e com um tipoDepagamento diferente do original. ex : O cliente liguida todos os boletos do ano com dinhero pago no 3 mes .
ps : Qualquer critica/sugestão será muito bem vinda
flw
|
PMMX 266 - 64 RAM
MYSQL - HTTP - FTP
http://www.thiagonobrega.cjb.net
http://rotaparaiba.hopto.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2008 14:58:25
|
opcaoba
Smalltalk
Membro desde: 17/11/2008 14:54:11
Mensagens: 1
Offline
|
Boa Tarde
Vc ainda tem esse sistema em PHP entre em contato por favor
opcaoba@opcaoba.com.br
Mauricio Linhares wrote:Olá pessoal, aqui estou eu aperriando denovo
Nas minhas andanças pela rede procurando por uma aplicação de Exemplo encontrei a osCommerce, que é uma loja virtual feia tem PHP. Já baixei e estou começando a dar uma estudada no código deles (e é até muito mais bem feito do que eu ando acostumado a ver em PHP, ainda tô pra ver coisa mais feia que o PHP Nuke  ). O único problema é que ele é bem mais direcionado pra vendas do que pra estoque
Alguém sabe de algum outro projeto open source de vendas e estoque (de preferência em Java, PHP ou C#)?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2008 15:06:12
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3009
Offline
|
não olhei tudo... mas uma parte que eu notei neste ultimo modelo postado foi a imensidades de pagamentos que tem... tipo pagamento, pagamento com cheque, cartão e porai vai... porque não tenta minimizar este monte de pagamentos?
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
|
|