Estoque e produtos
olá eu vou tentar me explicar. Eu estou fazendo um sistema de farmácia. Agora eu estou implementando o cadastro de produtos e pensando no estoque. Bom eu já havia feito as tabelas mas pensando bem está logicamente errado. Pq eu havia feito um única tabela q continha os dados de produto e sua qtde no estoque. Porém na hora de cadastrar remessas e lotes diferentes teria um problema com data de Validade e preço(ou seja característica de produtos iguais mas q se diferenciam conforme o lote).
Eu gostaria q alguém me ajudasse a definir os campos das tabelas produtos e Estoque.
E tem outro problema, por exemplo, se no lote 1000 o preço de custo foi 20 reais e no lote 2000 o preço de custo foi 30 reais(de um mesmo produto é claro) como eu faço pra refletir essa diferença na hora da venda pro consumidor.
Eu gostaria q alguém me ajudasse a definir os campos das tabelas produtos e Estoque.
E tem outro problema, por exemplo, se no lote 1000 o preço de custo foi 20 reais e no lote 2000 o preço de custo foi 30 reais(de um mesmo produto é claro) como eu faço pra refletir essa diferença na hora da venda pro consumidor.
Brunoluisfa
Curtidas 0
Mais Respostas
Aroldo Zanela
02/05/2004
Colega,
Eu considero que você deve utilizar entidades diferentes para representar o cadastro de [b:beeb714cd7]produtos [/b:beeb714cd7]e a quantidade e preço em [b:beeb714cd7]estoque[/b:beeb714cd7]. O relacionamento (cardinalidade) ocorre assim:
Produtos +------<- Estoque
Para obter o preço, sempre consulte a tabela estoque.
Eu considero que você deve utilizar entidades diferentes para representar o cadastro de [b:beeb714cd7]produtos [/b:beeb714cd7]e a quantidade e preço em [b:beeb714cd7]estoque[/b:beeb714cd7]. O relacionamento (cardinalidade) ocorre assim:
Produtos +------<- Estoque
Para obter o preço, sempre consulte a tabela estoque.
GOSTEI 0
Doc
02/05/2004
Boa tarde,
Acho que seria legal pensar no objeto produto separado do seu preço e do seu estoque. Assim, eu faria o seguinte: criaria uma tabela de produtos com a UFK (padrão internacional) do produto, sua especificação (ou nome) e outras característica de produto. Depois eu criaria uma tabela de estoque (ítens de estoque) que conteria a UFK como foreign key da tab. produtos, a quantidade daquele ítem no estoque e o tipo de armazenagem dele (endereço de estoque, se houver, prateleira ou freezer...) e criaria uma tabela de preços com a UFK da tabela de produtos, o valor atual dele, o valor anterior e a data do reajuste daquele preço.
É bom pensar em processos separados, onde a integração vem do sistema e não do banco. Assim, você adquire uma margem maior de flexibilidade para os procedimentos.
[]´s :)
Acho que seria legal pensar no objeto produto separado do seu preço e do seu estoque. Assim, eu faria o seguinte: criaria uma tabela de produtos com a UFK (padrão internacional) do produto, sua especificação (ou nome) e outras característica de produto. Depois eu criaria uma tabela de estoque (ítens de estoque) que conteria a UFK como foreign key da tab. produtos, a quantidade daquele ítem no estoque e o tipo de armazenagem dele (endereço de estoque, se houver, prateleira ou freezer...) e criaria uma tabela de preços com a UFK da tabela de produtos, o valor atual dele, o valor anterior e a data do reajuste daquele preço.
É bom pensar em processos separados, onde a integração vem do sistema e não do banco. Assim, você adquire uma margem maior de flexibilidade para os procedimentos.
[]´s :)
GOSTEI 0
Hard.disk
02/05/2004
Kra, eh possivel que tenha produtos de dois lotes diferentes a venda..
tipo..
produto 1 do lote 1000 que custa 20 reias
e produto 1 do lote 2000 que custa 30 reais..
e os dois a venda ao mesmo tempo..
c isso for possivel de acontecer.. como o preço eh calculado?
tipo..
produto 1 do lote 1000 que custa 20 reias
e produto 1 do lote 2000 que custa 30 reais..
e os dois a venda ao mesmo tempo..
c isso for possivel de acontecer.. como o preço eh calculado?
GOSTEI 0
Andretapxure
02/05/2004
Kra, eh possivel que tenha produtos de dois lotes diferentes a venda..
tipo..
produto 1 do lote 1000 que custa 20 reias
e produto 1 do lote 2000 que custa 30 reais..
e os dois a venda ao mesmo tempo..
c isso for possivel de acontecer.. como o preço eh calculado?
Ueh... neste caso o estabelecimento pode causar problemas com o cliente pois se o sistema vender no mesmo dia produtos iguais a preços diferentes pro mesmo cliente ou pra clientes diferentes isso dá bode! Como tratar?
GOSTEI 0
Emerson Nascimento
02/05/2004
geralmente as vendas são feitas em função de um campo no cadastro de produtos. lá vc tem o custo médio e o preço de venda. é nesse preço que vc deve se basear sempre. quando houver reajuste, este deverá ser aplicado sobre o preço médio ou sobre o preço de venda atual e sobrepor o preço de venda. assim nunca acontecerá o problema exposto.
já o custo médio deve ser refeito a cada entrada no estoque.
desenterrei... mas isso já foi discutido em um outro tópico...
já o custo médio deve ser refeito a cada entrada no estoque.
desenterrei... mas isso já foi discutido em um outro tópico...
GOSTEI 0
Tsfacchini
02/05/2004
Uma situação semelhante que venho enfrentando é a seguinte: como no exemplo do colega, tenho um mesmo produto com lotes diferentes, e na hora de faturar, é necessário determinar o lote certo por questões de vencimento, etc. Assim tenho que controlar não só as entradas e saídas dos produtos, mas também dos lotes de cada um. (Obs.: O lojista define o lote conforme o produto que está em sua mão).
Alguém já teve que fazer algo do tipo? Qual a melhor forma de controlar tanto o estoque normalmente como os lotes? Estou com dificuldades para realizar este relacionamento.
Alguém já teve que fazer algo do tipo? Qual a melhor forma de controlar tanto o estoque normalmente como os lotes? Estou com dificuldades para realizar este relacionamento.
GOSTEI 0
Emerson Nascimento
02/05/2004
isso pode ser feito de várias formas...
uma delas:
no cadastro de produtos você pode informar o tipo de rastreabilidade: lote, serie ou nenhuma
e o critério de avaliação do estoque desse produto:
[i:0a34371848]PEPS[/i:0a34371848] - (primeiro que entra, primeiro que sai - FIFO, na sigla em inglês)
[i:0a34371848]UEPS[/i:0a34371848] - (último que entra, primeiro que sai - LIFO, na sigla em inglês)
Data de validade - óbvio
(pode-se também usar um critério geral, a ser seguido por todos os produtos)
daí, quando você efetuar a venda, o sistema pode escolher o lote automaticamente, em função critério cadastrado ([i:0a34371848]PEPS[/i:0a34371848], [i:0a34371848]UEPS[/i:0a34371848] ou validade [size=8:0a34371848](01)[/size:0a34371848]), ou exibir os lotes que atendem a esse critério [size=8:0a34371848](01)[/size:0a34371848] para que o usuário possa selecionar qual deseja manipular. no caso de série, deve ser informada a série do produto em mãos.
[size=8:0a34371848](01)[/size:0a34371848] [size=9:0a34371848]- desde que haja saldo[/size:0a34371848]
então você deveria ter:
uma tabela de saldos em estoque:
ID
ID_PRODUTO
ID_LOCAL (ALMOXARIFADO/LOJA)
ID_EMPRESA
SALDO
uma tabela de movimentação de estoque:
ID
ID_PRODUTO
ID_LOCAL (ALMOXARIFADO/LOJA)
ID_EMPRESA
QUANTIDADE
DATA_MOVIMENTO
TIPO (ENTRADA/SAIDA)
HISTORICO
DOCUMENTO (INFORMA NOTA FISCAL OU QUALQUER DOCUMENTO QUE DEU ORIGEM À MOVIMENTAÇÃO)
LOTE/SERIE (LOTE/SERIE QUE FOI MOVIMENTADA)
(demais campos que se façam necessários)
* a manipulação dessa tabela movimenta automaticamente a tabela de saldos em estoque (via trigger, por exemplo):
uma tabela de lotes:
ID
ID_PRODUTO
ID_LOCAL (ALMOXARIFADO/LOJA)
ID_EMPRESA
LOTE
DATA (data de entrada do lote)
VENCIMENTO
SALDO
(demais campos que se façam necessários)
* sempre que um lote for criado, deve gerar um movimento na tabela de movimentação de estoque (esse procedimento pode ser automatizado via trigger)
uma tabela de séries (opcional - use se houver controle de série e validade):
ID
ID_PRODUTO
ID_LOCAL (ALMOXARIFADO/LOJA)
ID_EMPRESA
SERIE
DATA (data de entrada do produto)
VENCIMENTO
* sempre que uma série for criada, deve gerar um movimento na tabela de movimentação de estoque (esse procedimento pode ser automatizado via trigger)[size=12:0a34371848][/size:0a34371848]
P.S.: vale ressaltar que um lote abrange um conjunto de produtos iguais, enquanto que a série é um controle individual.
P.S.2: posso ter esquecido algo, pois estou escrevendo de um local público e com um pouco de pressa, mas creio que isso possa te dar uma luz do que fazer.
uma delas:
no cadastro de produtos você pode informar o tipo de rastreabilidade: lote, serie ou nenhuma
e o critério de avaliação do estoque desse produto:
[i:0a34371848]PEPS[/i:0a34371848] - (primeiro que entra, primeiro que sai - FIFO, na sigla em inglês)
[i:0a34371848]UEPS[/i:0a34371848] - (último que entra, primeiro que sai - LIFO, na sigla em inglês)
Data de validade - óbvio
(pode-se também usar um critério geral, a ser seguido por todos os produtos)
daí, quando você efetuar a venda, o sistema pode escolher o lote automaticamente, em função critério cadastrado ([i:0a34371848]PEPS[/i:0a34371848], [i:0a34371848]UEPS[/i:0a34371848] ou validade [size=8:0a34371848](01)[/size:0a34371848]), ou exibir os lotes que atendem a esse critério [size=8:0a34371848](01)[/size:0a34371848] para que o usuário possa selecionar qual deseja manipular. no caso de série, deve ser informada a série do produto em mãos.
[size=8:0a34371848](01)[/size:0a34371848] [size=9:0a34371848]- desde que haja saldo[/size:0a34371848]
então você deveria ter:
uma tabela de saldos em estoque:
ID
ID_PRODUTO
ID_LOCAL (ALMOXARIFADO/LOJA)
ID_EMPRESA
SALDO
uma tabela de movimentação de estoque:
ID
ID_PRODUTO
ID_LOCAL (ALMOXARIFADO/LOJA)
ID_EMPRESA
QUANTIDADE
DATA_MOVIMENTO
TIPO (ENTRADA/SAIDA)
HISTORICO
DOCUMENTO (INFORMA NOTA FISCAL OU QUALQUER DOCUMENTO QUE DEU ORIGEM À MOVIMENTAÇÃO)
LOTE/SERIE (LOTE/SERIE QUE FOI MOVIMENTADA)
(demais campos que se façam necessários)
* a manipulação dessa tabela movimenta automaticamente a tabela de saldos em estoque (via trigger, por exemplo):
uma tabela de lotes:
ID
ID_PRODUTO
ID_LOCAL (ALMOXARIFADO/LOJA)
ID_EMPRESA
LOTE
DATA (data de entrada do lote)
VENCIMENTO
SALDO
(demais campos que se façam necessários)
* sempre que um lote for criado, deve gerar um movimento na tabela de movimentação de estoque (esse procedimento pode ser automatizado via trigger)
uma tabela de séries (opcional - use se houver controle de série e validade):
ID
ID_PRODUTO
ID_LOCAL (ALMOXARIFADO/LOJA)
ID_EMPRESA
SERIE
DATA (data de entrada do produto)
VENCIMENTO
* sempre que uma série for criada, deve gerar um movimento na tabela de movimentação de estoque (esse procedimento pode ser automatizado via trigger)[size=12:0a34371848][/size:0a34371848]
P.S.: vale ressaltar que um lote abrange um conjunto de produtos iguais, enquanto que a série é um controle individual.
P.S.2: posso ter esquecido algo, pois estou escrevendo de um local público e com um pouco de pressa, mas creio que isso possa te dar uma luz do que fazer.
GOSTEI 0
Bolus
02/05/2004
Caro colega,
Conforme informaste o Sistema é para Farmacia, e consequentemente os Preços de Venda (Para Produtos Monitorados) são controlado pelo Governo, ou seja é tabelado, não podendo ser vendido com preço maior que o tabelado.....
Sobre a situação de Ter 2 lotes diferentes com Preço diferente, não vai ocorrer por causa do tabelamento...Ok....
No caso de Produtos Liberados ou Perfumaria, Você deverá calcular o Custo Médio do Estoque e Recalcular o Preço de Venda....
Custo + Margem + Imposto = Preco de Venda..
Espero ter ajudado...
Conforme informaste o Sistema é para Farmacia, e consequentemente os Preços de Venda (Para Produtos Monitorados) são controlado pelo Governo, ou seja é tabelado, não podendo ser vendido com preço maior que o tabelado.....
Sobre a situação de Ter 2 lotes diferentes com Preço diferente, não vai ocorrer por causa do tabelamento...Ok....
No caso de Produtos Liberados ou Perfumaria, Você deverá calcular o Custo Médio do Estoque e Recalcular o Preço de Venda....
Custo + Margem + Imposto = Preco de Venda..
Espero ter ajudado...
GOSTEI 0
Bolus
02/05/2004
Mais uma coisa....
Pela Lei do Consumidor, o mesmo produto não pode ser vendido com preço diferenciado, devendo ser praticado ao Consumidor o de menor valor.
Ou seja: caso na loja tenha um mesmo produto com 2 preços deverá ser cobrado do Cliente, o de menor valor....
Espero ter sido claro....
Pois caso seja praticado vendas em desacordo, poderá dar multa e fechamento da loja....
Não esqueça dos Produtos Psicotrópicos, você precisará de um controle de psicotrópico....
Pela Lei do Consumidor, o mesmo produto não pode ser vendido com preço diferenciado, devendo ser praticado ao Consumidor o de menor valor.
Ou seja: caso na loja tenha um mesmo produto com 2 preços deverá ser cobrado do Cliente, o de menor valor....
Espero ter sido claro....
Pois caso seja praticado vendas em desacordo, poderá dar multa e fechamento da loja....
Não esqueça dos Produtos Psicotrópicos, você precisará de um controle de psicotrópico....
GOSTEI 0