Uma outra alternativa de controlar os itens da venda e o estoque.

Delphi

11/02/2010

Imagine esta situação: O vendedorX esta tirando pedido para o clienteX e ele verificou que consta 10 itens do produto no estoque e incluiu no pedido 8 itens e este cliente leva 30 minutos para finalizar o pedido, mas "15 minutos antes" o vendedorZ finalizou um pedido para o clienteZ que levou 10 itens do mesmo produto, ou seja, zerou o estoque. Conclusão o clienteX passa no caixa para finalizar o pedido e receber os produtos, mas isso não ocorerrá, porque será informado que o estoque esta zerado, porque o clienteZ comprou todo os itens do estoque. E isso pode causar transtorno! Por causa disso, pensei em criar a tabela Reserva que além de reservar os itens da venda, controla o seu andamento. Que explicarei logo abaixo:   O que eu estou querendo fazer é dar baixa no estoque quando Finalizar a Venda. Ao incluir um novo pedido no banco o status fica como Pendente e o sistema reserva os itens na tabela Reserva, mas não da baixa no estoque. Se o cliente desistir do pedido, então não precisa retornar a quantidade dos itens do pedido no estoque, porque não foi dado baixa no estoque. O caixa que é responsável por Finalizar a Venda e automaticamente o sistema da baixa no estoque.   Ao consultar o estoque é informado para o usuário: Estoque Atual, Reservado e Disponível. Com esta tabela de "Reserva" tambem se controla o andamento dos itens do pedido: 1) Qual é a data que foi retirado o item do pedido (retirada parcial do pedido) ou quando vai ser retirado. 2) Esta retirada vai ser no balção, Entrega ou até mesmo uma Encomenda (o cliente pagou pelo o produto, mas esta encomendando). 3) Tambem controla a quantidade a ser retirada, p. ex.: o cliente solicitou 10 itens do produtoX, mas será retirado no balcão 2 e o restante (8) a empresa vai entregar no dia Y. Ou seja, controla a quantidade unitária do item do pedido solicitado pelo o cliente.   Bom é a primeira vez que estou fazendo desta forma. O controle de vendas era mais simples, mas hoje estou necessitando alterar a forma de como é controlado os itens do pedido e seu estoque.
Alguem utiliza esta solução? O que eu gostaria de saber se é isso mesmo e se não vou ter problemas com este tipo de controle? O que vocês fazem nesta situação? Como eu já disse é a primeira vez que estou desenvolvendo desta forma, pode ser que isso na prática não funciona. Qualquer ajuda é sempre muito bem vindo!!!   Obrigado!
 
Rogerio

Rogerio

Curtidas 0

Respostas

Thiago Santana

Thiago Santana

11/02/2010

Rogério vc pensou bem e eh uma boa para tentar se sobresair de uma eventual complicação, na teoria está td blza... Terá tentar isso aí na prática! Coloque a extrutura das tabelas para que possamos analisar e te ajudar! AbraçoO
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/02/2010

não crie uma tabela reserva. crie um campona tabela estoque.

ESTOQUE
------------
id_estoque (PK)
id_prdouto (FK)
saldoatual
reservado


na sua tabela de itens de venda, crie um campo para a quantidade entregue.

VENDAITEM
------------
id_vendaitem (PK)
id_venda (FK)
id_produto
descricao
qtdven
prcunit
qtdent
[etc]

dessa forma, ao incluir o pedido, você reserva o produto, preenchendo o campo estoque.reservado.


ao finalizar a venda, você abate o valor de estoque.reservado e de estoque.saldoatual e adiciona ao campo vendaitem.qtdent.

entendeu?

mas esse funcionamento depende muito do ramo de atividade e do procedimento executado.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Thiago e Emerson muito obrigado por particiar deste tópico! Emerson eu pensei na sua solução, mas eu me esbarrei no fator histórico do andamento do produto, como seria isso? p.ex: Supondo um novo pedido: .... .... Item do Produto: ProdutoX - Qtde: 10 - ....  Andamento do Produto: ProdutoX - Qtde: 2 - Data: 12/02 - Status: Balcão                                 Qtde: 3 - Data: 15/02 - Status: Balcão                                 Qtde: 5 - Data: 20/02 - Status: Entrega    Eu estou pensando no histórico para comprovar o andamento do produto do item do pedido. Por isso que pensei na tabela Reserva, por que nesta tabela ficaria como um histórico. Se amanhã você precisa comprovar como foi a trajetoria do ProdutoX para um cliente desconfiado, com um histórico você diria a ele que no dia 12/02 ele retirou no balcão 2 item do ProdutoX, depois no dia 15/02 ele retirou mais 3 item no balcão e no dia 20/02 a empresa entregou o restante (5).   O que você acha disso?
GOSTEI 0
Thiago Santana

Thiago Santana

11/02/2010

Se fosse uma coisa mais simples esse lance do Emerson de adicionar apenas o campo na tabela seria legal... Mas como vc quer ter um acompanhamento maior desse histório, deverá ser mais útil utilizar esta tabela reserva, pois serão muitos os dados que serão gravados nela! Uma dica está tabela reserva terá que ser uma tabela bastante "fixa" bem desenvolvida para evitar transtornos como por exemplo uma mistura de históricos entre os produtos e os clientes! AbraçoO
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Esta é a estrutura que montei. O que vocês acham? Alem da tabela Reserva_Saida acrescentei a tabela Atendido_Saida para armazenar os itens atendidos.    
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/02/2010

pro histório eu teria a nota fiscal.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Você esta supondo que o usuário vai emitir a nota fiscal, não é isso? mas se não for emitir a nota fiscal? O vendedor tirou um pedido de venda para o cliente, mas não emitiu a nota fiscal, no seu caso eu fico sem o controle do andamento dos itens da venda! Para conseguir este controle eu precisaria emitir a nota fiscal. Você não acha que vai fugir do conceito da realidade? sabendo que no mundo real não é assim que funciona, é isso mesmo? ou eu estou enganado?  
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/02/2010

por isso que eu disse que depende muito do ramo de atividade, do negócio.

no ramo de atividade em que eu atuo a mercadoria só sai da empresa/armazém com nota fiscal; um item de pedido pode ser entregue em várias vezes, mas só sai com NF.

mas na verdade o esquema funciona pra qualquer um. no meu caso é gerado um número de documento (NF). no seu pode ser somente um RECIBO, que indicaria que a entrega foi efetuada e ainda seria mantido como histórico.

GOSTEI 0
Rogerio

Rogerio

11/02/2010

Este recibo que você diz funciona da mesma maneira da nota fiscal, mas em vez do número do documento (NF) seria o número do recibo? é isso? eu não entendi, você poderia explicar melhor?     Obrigado!
GOSTEI 0
Fábio Pelicer

Fábio Pelicer

11/02/2010

Olha, já que você tem uma estrutura de pedido e nota fiscal, controle o saldo  no ato do pedido pelo saldo estoque - os pedidos em aberto do item, quando emitir a NF (pedido atendido), fecha o pedido e atualiza o estoque.  Ficaria mais simples?
GOSTEI 0
Diogo Gobatto

Diogo Gobatto

11/02/2010

Qual a sua intenção em reservar os itens? se a idéia é como descreveu acima, para evitar a situação onde 2 vendedores podem estar negociando o mesmo produto e não ter saldo de estoque para as duas vendas blz. Agora analisando o que disse em "Se o cliente desistir do pedido, então não precisa retornar a quantidade dos itens do pedido no estoque, porque não foi dado baixa no estoque" nessa situação como o sistema vai identificar que os itens do pedido não são mais itens de reserva? para que possa ser utilizado em outra transação(venda). esse ponto é muito delicado e implantar uma solução estática(que não é flexivel) para isso não vejo com bons olhos no seguinte ponto, se imagine como empresario que visa lucros o cliente "X" desistiu da venda porém o cliente "Z" queria realmente comprar, e não conseguil porque o itens que ele procurava estavam reservados por um outro cliente que na verdade nem vai levar os produtos esta apenas cotando. eu gostei da sua logica de negocios porém existem clientes e clientes não é verdade pode ser que esse seu cliente do sistema, tenha esse processo assim dessa forma como descreveu, porém pode existir um outro que não queira trabalhar dessa forma, ai. quando voce disse "O caixa que é responsável por Finalizar a Venda e automaticamente o sistema da baixa no estoque." Você quis dizer que a ação de "vender" que o vendedor dispara no sistema irá gerar apenas um contas a receber para que o caixa possa quitar e respectivamente fazer baixas no estoque? se a resposta é sim, então não vejo porque a venda não disparar o contas a receber e baixa no estoque. por que dá forma como entendi serão duas rotinas disparadas em momentos distintos para realizar a mesma transação tipo a venda gera o a receber e o caixa efetua baixas em estoque.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

tb bem Fábio e Diogo, obrigado por me ajudar!   Fábio
...quando emitir a NF (pedido atendido), fecha o pedido e atualiza o estoque.... Mas se aquela venda não for emitir nota fiscal? eu estava pensando em deixar isso a cargo do pedido, quando se finaliza o pedido baixa do estoque. Diogo
..."Se o cliente desistir do pedido, então não precisa retornar a quantidade dos itens do pedido no estoque, porque não foi dado baixa no estoque" ... Ao gravar o pedido como pendente, alem do itens serem gravados na tabela Item_Saida tambem serão gravados na tabela Reserva, mas ainda não será dado baixa no estoque e se por acaso o cliente não quer mais o pedido, então quando excluir o pedido tambem será excluído da tabela de Reserva. Diogo
...se imagine como empresario que visa lucros o cliente "X" desistiu da venda porém o cliente "Z" queria realmente comprar, e não conseguil porque o itens que ele procurava estavam reservados por um outro cliente que na verdade nem vai levar os produtos esta apenas cotando... Eu vou explicar mais detalhadamente o processo: O clienteX esta tirando pedido com o vendedorX, quando o clienteX solicita o produtoY o vendedorX vai consultar o produto e verifica que consta no estoque: Atual: 10      {qtde atual em estoque}
Reservado: 0   {qtde reservado do estoque: Qtde total nos pedidos que estão pendentes}
Disponível: 10 {qtde disponivel em estoque: Disponível = Atual - Reservado} então neste momento o vendedorX acresenta 8 unidade do produtoY no pedido. Depois grava o pedido e o status do pedido fica como Pedido Pendentre. Antes do clienteX passar no caixa para pagar o pedido o clienteZ esta tirando pedido com o vendedorZ que solicita o mesmo produtoY, quando o vendedorZ consultar o produto vai veriricar que consta no estoque:Atual: 10
Reservado: 8
Disponível: 2 Agora supondo que o clienteZ queria 5 unidades, mas esta disponivel somente 2, então o vendedorZ consulta atravez de um botão para saber para qual(is) pedido(s) foi(ram) reservado(s) 8 unidades do produtoY e fica sabendo que foi o vendedorX que tirou pedido para o clienteX, então o vendedorZ vai conversar com o vendedorX para saber se o clienteX vai mesmo querer o pedido. Se o clienteX não querer mais o pedido, então o vendedorZ acrecenta as 5 unidades que o clienteZ queria e com isso, não deixa de vender! Quando clienteZ passa no caixa para pagar, o funcionário do caixa finalizar o pedido e quando o pedido é finalizado o sistema da baixa no estoque. Agora supondo que um outro vendedor vai consultar o estoque e as informações serão estas:Atual: 5
Reservado: 0
Disponível: 5 Lembrando que o clienteZ levou 5 unidades do produtoY.   >> Tambem tem o trecho que expliquei no primeiro post:   Com esta tabela de "Reserva" tambem se controla o andamento dos itens do pedido:   1) Qual é a data que foi retirado o item do pedido (retirada parcial do pedido) ou quando vai ser retirado. 2) Esta retirada vai ser no balção, Entrega ou até mesmo uma Encomenda (o cliente pagou pelo o produto, mas esta encomendando). 3) Tambem controla a quantidade a ser retirada, p. ex.: o cliente solicitou 10 itens do produtoX, mas será retirado no balcão 2 e o restante (8) a empresa vai entregar no dia Y. Ou seja, controla a quantidade unitária do item do pedido solicitado pelo o cliente.
O objetivo e fazer este controle do andamente dos itens do pedido sem precisar emitir nota fiscal.   A questão de cotação que o Diogo comentou, seria um pedido comum, somente para fazer um orçamento e não teria estes controles, já que orçamento não dá baixa no estoque.     bom tomara que eu não compliquei mais ainda.   Se por acaso presicar eu eu explicarei novamente.
GOSTEI 0
Tiago Melo

Tiago Melo

11/02/2010

olá aqui é o Diogo...analisando o seguinte:   Agora supondo que o clienteZ queria 5 unidades, mas esta disponivel somente 2, então o vendedorZ consulta atravez de um botão para saber para qual(is) pedido(s) foi(ram) reservado(s) 8 unidades do produtoY e fica sabendo que foi o vendedorX que tirou pedido para o clienteX, então o vendedorZ vai conversar com o vendedorX para saber se o clienteX vai mesmo querer o pedido. Se o clienteX não querer mais o pedido, então o vendedorZ acrecenta as 5 unidades que o clienteZ queria e com isso, não deixa de vender!   eu havia pensado que com essa amarração a nível de reserva você queria garantir a integridade da reserva, e se com uma simples rotina um vendedor conseguir mandar pro ar a reserva do outro sinceramente não vejo porque implementar essa rotina. eu já trabalhei muito tempo implantando sistemas e sei como é nas empresas a disputa pela venda e esse é um ponto delicado. Agora se você me disser que pode implementar ai um nível de segurança onde somente o usuario do perfil gerente pode desfazer essa reserva, ai tudo bem, seria então dois passos, vendedor z pergunta ao x se pode utilizar o que ele havia reservado, caso sim, solicita ao gerente de loja que desfaça a reserva do item. ai sim.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

TIAGO F. MELO Agora se você me disser que pode implementar ai um nível de segurança onde somente o usuario do perfil gerente pode desfazer essa reserva, ai tudo bem, seria então dois passos, vendedor z pergunta ao x se pode utilizar o que ele havia reservado, caso sim, solicita ao gerente de loja que desfaça a reserva do item. ai sim.
Sinceramente amigo eu não havia pensado nesta situação, mas você esta certo! isso só faz sentido se haver um nível de segurança. Eu vou acrescentar o que você disse no projeto! Você tem mais alguma ídeia pra melhorar este processo? e tambem os demais colegas do fórum? Emerson como é que você resolve este problema, mesmo que o sistema não precise emitir NF para obter o controle?  
Obrigado!
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/02/2010

somente quem digitou o pedido - ou alguém com perfil de administrador - pode eliminar a reserva/empenho.
GOSTEI 0
Tiago Melo

Tiago Melo

11/02/2010

"somente quem digitou o pedido - ou alguém com perfil de administrador - pode eliminar a reserva/empenho." Assim não flui, imagine se amanhã esse vendedor não trabalhar mais na loja?...tem que ser um usuario com perfil adequado, geralmente gerente de vendas...recomendo um componente se estiver utilizando o delphi, que é o UserControl, trabalhando com ele você conseguirá implementar um gerenciamento perfeito no seu sistema.

 
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/02/2010

TIAGO, você disse exatamente o mesmo que eu havia dito:

somente quem digitou o pedido (vendedor, atendente) - ou alguém com perfil de administrador (gerente, supervisor) - pode eliminar a reserva/empenho.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Thiago se o vendedor consultar o produto e verificar que o estoque se encontra na seguinte situação:Estoque:Atual: 10
Reservado: 8
Disponível: 2 agora se o vendedor desejar vender 5 unidades do produto, mas está disponível 2, então o sistema não deixa vender mais do que esta disponível, porque vai ficar estoque negativo. Para que isso seja possível é necessario de uma senha do funcionário supervisor! é isso mesmo? Porque se o sistema permitir que o vendedor possa vender mais do que tem disponível em estoque ao meu ver não será um controle eficaz, mas sim somente uma mensagem informando a situação do estoque. Eu acredito que precisa de um funcionário supervisor (p.ex: gerente de vendas...) que sejá responsável para permitir atravez de sua senha que o vendedor possa vender mais produtos do que esta disponível no estoque.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Eu vou colocar um exemplo, talvez eu não consegui me expressar claramente: Em uma ambiente em que os vendedores podem vender a quantidade de produtos menor do que o estoque disponível: p.ex: em uma grande empresa que tem muitos vendedores tirando pedido ao mesmo tempo e algum deles decide vender o produto que não contenha no estoque, agora imagine vários clientes querendo retirar este mesmo produto na mesma hora, algum destes clientes não vai conseguir retirar todo a quantidade solicitada deste produto ou não vai retirar nada. Se conter um controle em que somente o funcionário supervisor é responsável por permitir que o vendedor pode vender a quantidade de produtos abaixo do estoque disponível, então no caso do exemplo que foi citado acima o responsável seria o supervisor. Porque se não for assim, como é que você vai descobrir qual foi o vendedor que vendeu produto que não tinha no estoque? nesta hora você não encontrar o culpado.  ou existe outros meios de descobrir?
Se vocês não conseguiram entender é só falar que eu explicarei novamente!!!
GOSTEI 0
Tiago Melo

Tiago Melo

11/02/2010

sim eu acholegal essa idéia de trabalhar com estoque negativo sim desde que: no seu sistema tenha um parametro para que você possa configurar isso de acordo com a empresa.por exemplo, pode ser que o seu cliente X queira trabalhar com estoque negativo, e pode ser que o y não queira, então deve ter um parametro no seu sistema que indique se a empresa vai ou não trabalhar com esse estoque negativo. O estoque negativo é legal nas situações onde o cliente vai comprar porém vai deixar na loja para fazer uma retirada futura e também para ser utilizada pelos funcionários do compras. Para que possam providenciar esses itens que não constam na empresa, dessa forma ai, é mais um caso a se pensar não? 
GOSTEI 0
Tiago Melo

Tiago Melo

11/02/2010

só pra frizar o que o Rogério disse: qual foi o vendedor que vendeu produto que não tinha no estoque? uma venda sempre deve estar associada a um vendedor, assim como a um cliente, então dessa forma sabe-se qual o vendedor responsável por aquela venda.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Sim, mas independente do parametro que permite vender com estoque negativo ou não, tem a situação abaixo:
Imagine se tem vários vendedores tirando pedidos e todos incluíram o mesmo produto, mas um vendedor olhou que o estoque disponível estava negativo e mesmo assim vendeu para o cliente, quando todos os clientes chegarem para retirar o produto um deles não vai conseguir retirar o produto, porque não consta no estoque. Se 10 vendedores tiraram pedidos que contém o mesmo produto solicitado, como você vai descobrir de qual dos 10 vendedores foi o felizado? Por isso que eu digo, que eu acho melhor que somente um funcionário supervisor tem que ter permissão para autorizar os vendedores quando querem vender produto com estoque negativo. Porque? se acontecer um caso da situação logo acima quem foi o culpado? foi o funcionário que forneceu a senha de acesso para que o vendedor possa vender produto com estoque negativo, ou seja, o funcionário supervisor. Se um fornece a senha de acesso para vender produtos com estoque negativo eu sei que foi ele quem fez isso, mas agora se 10 vendedore tiram pedido simultaneamente e todos incluíram o mesmo produto, neste caso, fica impossível saber qual foi o vendedor que vendeu com estoque negativo.   Conclusão: Para vender produtos com estoque negativo é necessário autorização do funcionário que tenha este privilégio, caso contrario, não pode vender. Independente se o parametro esta indicando que pode vender produtos com estoque negativo.   Posso até estar enganado, por isso que eu estou querendo uma opnião!  
GOSTEI 0
Thiago Santana

Thiago Santana

11/02/2010

Estou com o Rogerio!   Para vender produtos com estoque negativo é necessário autorização do funcionário que tenha este privilégio, caso contrario, não pode vender. Independente se o parametro esta indicando que pode vender produtos com estoque negativo.   Ou então conste na tabela de estoque qual foi o vendedor juntamente o dia e o horário da venda! Mas aí axo que irá ocorrer uma bagunça no banco!  
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Thiago Darlei Ou então conste na tabela de estoque qual foi o vendedor juntamente o dia e o horário da venda!   No meu caso, como o estoque serve como um histórico, então acho que não seria necessário armazenar estes valores como parte do histórico. É só uma opnião minha! Mas mesmo assim é muito bom ter opniões diferentes!  
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Só por curiosidade, vocês fazem este tipo de controle para evitar transtorno quando um vendedor (iniciante ) vende produtos que não consta no estoque? caso sim, como faz?   Obrigado!
GOSTEI 0
Thiago Santana

Thiago Santana

11/02/2010

Rogerio nunca fiz este tipo de controle, mas acho que séria bem melhor utilizar um funcionário com privilégio para poder liberar a venda! Apenas minha opnião!....
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Ok, muito obrigado pela a sua opnião!!!     vamos ver o que os outros colegas dizem.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Existe outras formas de se resolver isso?
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/02/2010

isso depende muito do ramo de atividade.

ou permite estoque negativo ou não permite. não existe o caso de permitir condicionalmente.

uma loja não deveria permitir estoque negativo. já fui a várias lojas que consultam o estoque e, estando zerado, não vendem, pedindo pra voltar outro dia para ver se o artigo chegou. outras, em que você pega e produto e vai direto ao caixa nem se dão ao trabalho de olhar o estoque: se está na sua mão é porque tem em estoque.
se há saldo negativo, na medida que novos produtos entrarem no estoque, já serão reservados para os pedidos correspondentes, tentando sempre atender ao prazo de entrega.

já comprei num depósito de materiais para construção que me prometeu a entrega num dia, mas entregou dois dias depois, justamente por não ter saldo no dia necessário.

uma indústria pode deixar o saldo tornar-se negativo, pois pode fabricar a diferença, dando prazo ao cliente.

cada caso é um caso e é preciso saber com qual problema a empresa quer conviver.
GOSTEI 0
Rogerio

Rogerio

11/02/2010

Entendi Emerson!     Eu fiz o que vocês sugeriram e ficou ótimo. Agradeço muito a todos que me ajudaram!!!  
GOSTEI 0
POSTAR