[firebase-br] RES: Composição de produtos, select recursivos e afins...

lazaro lazaro em usinaalvorada.com.br
Ter Abr 28 12:58:20 -03 2009


Amigo simplifica sua vida...
Faz um tabela mestre produtos com uma chave primaria e tudo
Coloca um atributo Tipo_produto 'P','k','s'
Sendo p=produto, K=kit, S= serviço
Quando for kit vc vende os itens da tabela kit (PRODUTOCOMPOSICAO), se for p
então vende normalmente e assim sucessivamente.

Foi assim que fiz a 2 anos atrás, em um sistema para bicicletaria.


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Lucas Zampar
Enviada em: terça-feira, 28 de abril de 2009 12:43
Para: lista em firebase.com.br
Assunto: [firebase-br] Composição de produtos, select recursivos e afins...

Bom dia senhores,


Estou tentando resolver um problema há vários tinhas porém sem sucesso.
Na empresa em que trabalho, vendemos produtos que podem ser compostos 
ou  simplesmente comerciais.
O problema está sendo eu criar a árvore de relacionamento de produtos 
compostos.

Por exemplo:
Um HD é um produto tipo = "C", pois é comercial e não tem estrutura de 
composição.
Uma MEM RAM é um produto tipo = "C", pois é comercial e não tem 
estrutura de composição.
Um GABINETE é um produto tipo = "C", pois é comercial e não tem 
estrutura de composição.

Os produtos manufaturados são do tipo = "M", exemplo:

Já um COMPUTADOR MOD1 tem em sua composição:
1 HD
2 MEM RAM
1 GABINETE

Um COMPUTADOR MOD2 tem em sua composição:
2 HD
1 MEM RAM
1 GABINETE

Já um SERVIDOR tem sua composição:
1 COMPUDATOR MOD1
2 HD
2 MEM RAM

Observem que tenho de ter n níveis e adicionar vários produtos tanto 
comerciais, como compostos.
Sabendo que todos produtos compostos são feitos de comerciais...

Segue em anexo as DDL das minhas duas tabelas:

CREATE TABLE PRODUTO (
     CODIGO                INTEGER NOT NULL,
     TIPO                  VARCHAR(1),
     CODPRODUTO            VARCHAR(16),
     DESCRICAO             VARCHAR(255),
     QUANTIDADEATUAL       NUMERIC(6,2),
     QUANTIDADEMINIMA      NUMERIC(6,2),
     PESO                  NUMERIC(3,2),
     CUSTOCOMPRA           NUMERIC(9,3),
     CUSTOFINAL            NUMERIC(9,3),
     PRECOVENDA            NUMERIC(9,3),
     IPI                   NUMERIC(5,2),
     MARKUP                NUMERIC(5,2),
     MEDIDAS               VARCHAR(15),
     LOCALIZACAO           VARCHAR(4),
     OBS                   VARCHAR(255),
     DETALHAMENTOPROPOSTA  BLOB SUB_TYPE 1 SEGMENT SIZE 16384,
     FOTOS                 BLOB SUB_TYPE 1 SEGMENT SIZE 16384,
     UNIDADE               SMALLINT,
     GRUPO                 SMALLINT
);


Minha tabela de relacionamentos:

CREATE TABLE PRODUTOCOMPOSICAO (
     CODIGO                   INTEGER NOT NULL,
     CODIGOPRODUTO            INTEGER NOT NULL,
     CODIGOPRODUTOADICIONADO  INTEGER NOT NULL,
     QUANTIDADE               NUMERIC(9,3) NOT NULL
);


1) Aí pergunto a vocês, estão estruturadas corretamente as minhas tabelas?

2) Como fazer para que o custo final de um produto composto sempre se 
mantenha atualizado através dos custos dos componentes comerciais?

3) Como realizar um select que me mostre a raiz de todos os componentes 
que compõem um produto composto?
Ex:

Composição do Servidor
- 1 Computador MOD 1
-- 1 HD
-- 2 MEM RAM
-- GABINENTE
- 2 HD
- MEM HD

Atualmente tenho uma tabela que mantém o cadastro de produtos e outra 
que mantém o relacionamento entre eles.
O preço de venda dos produtos compostos são calculados toda vez que é 
alterada a estrutura da tabela de relacionamento através de um trigger.

Agradeceria muito quem pudesse me dar uma ajuda!

E desculpem pelo longo e-mail!


Atenciosamente,


Lucas Zampar Bernardi

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista