Fórum Controle de estoque durante a venda #329171

13/09/2006

0

Olá pessoal,

Imaginemos a seguinte situação:

5 terminais realizando vendas simultaneamente, um vendedor durante a venda consulta o estoque do produto A, disponível 10 unidades, quando ele vai dar a saída nessas 10 unidades (na mesma tela de vendas) um outro vendedor em outro terminal (que digita mais rápido) vendeu 5 unidades desse mesmo produto, ficando apenas 5 unidades disponíveis...

então pergunto, como controlar isto de forma eficiente ?

[]´s
AASN


Aasn

Aasn

Responder

Posts

13/09/2006

Silviogs

Olá amigo

vc precisa especificar alguns itens para poder ajudá-lo:

So, IDE, BD e etc.

Silvio Guedes


Responder

Gostei + 0

13/09/2006

Aasn

Ah tá... esqueci deste pequeno detalhe! rs

Delphi 5 + IBO + IB6

[]´s
AASN


Responder

Gostei + 0

13/09/2006

Aasn

sobe


Responder

Gostei + 0

13/09/2006

Macario

Olá.

Um metodo seria implementar a Reserva de Itens. Que poderá ser desde a inclusao de um pedido de venda até a efetiva venda(faturamento da NF).


Responder

Gostei + 0

14/09/2006

Aasn

E o controle de transação ?

para que os outros terminais vejam as reservas, tenho que comitar os lançamentos, daí caso o usuário cancele a operação teremos que deletar as reservas ´na mão´ ?!

[]´s
AASN


Responder

Gostei + 0

14/09/2006

Macario

É ´sinistro´ dessa maneira. Mas foi a solução que encontrei.
:roll:

Vamos ver se nos apresentam outras soluções.


Responder

Gostei + 0

14/09/2006

Moura

Eu criei uma VIEW que é controlada pelo proprio servidor FB.
E para funcionar de modo eficiente essa função deve ser carregada, checar estoque e ser encerrada imediatamente.

Deve-se rodar uma rotina de checagem antes de efetivar a venda. Normalmente no evento beforepost do componente que estiver utilizando.

[b:fa9c9b9707]A view ficou assim:[/b:fa9c9b9707]
[i:fa9c9b9707]CREATE VIEW VIEW_ESTOQUEVENDA(
FILIAL,
CODIGO,
DESCRICAO,
ICMS,
IPI,
UND,
QTD_ESTOQUE,
PRC_VENDA)
AS
select
FILIAL,
CODIGO,
DESCRICAO,
ICMS_ALIQ,
ALIQ_IPI,
UND,
QTD_TOTAL,
PRC_VENDA
from ESTOQUE ;
[/i:fa9c9b9707]

**************************

No ´Beforepost´ deve-se repassar item por item e checar a quantidade real. Exemplo:

[i:fa9c9b9707]// Checar estoque real
db_VendasItens.first;
while not db_VendasItens.eof do
begin
db_view_estoque.Close;
db_view_estoque.ParamByName(´PRODUTO´).AsString :=db_VendasItens.FieldByName(´PRODUTO´).AsString;
db_view_estoque.Open;


// checar quantidade
if db_VendasItens.FieldByName(´QTDE´).AsFloat>db_view_estoque.FieldByName(´QTD_ESTOQUE´).AsFloat then
begin
ShowMessage(´Quantidade insuficiente´+#13+10+
´Produto......: ´+ db_VendasItens.FieldByName(´PRODUTO´).AsString +13+10+
´Descrição....: ´+ db_VendasItens.FieldByName(´DESCRICAO´).AsString +13+10+13+10+
´Solicitados..: ´+ FormatFloat(´,0´,db_VendasItens.FieldByName(´QTDE´).AsFloat)+
´ mas há apenas ´+FormatFloat(´,0´,db_view_estoque.FieldByName(´QTD_ESTOQUE´).AsFloat )+
´ no estoque´+13+10+
´O PRODUTO FICARÁ COM QUANTIDADE ZERADA NA VENDA´
);
db_VendasItens.FieldByName(´QTDE´).AsFloat :=0;

db_view_estoque.Close; // fechar VIEW para que ao abrir na proxima vez, venha com dados atualizados pelo servidor.

end;
end;
db_VendasItens.first;
[/i:fa9c9b9707]

Espero ter ajudado!

.


Responder

Gostei + 0

14/09/2006

Moura

outro detalhe, eu estava esquecendo, não esqueça de colocar um [i:f5156fdcb5][b:f5156fdcb5]NEXT[/b:f5156fdcb5][/i:f5156fdcb5].


(...)
end;

[i:f5156fdcb5][b:f5156fdcb5]db_VendasItens.Next;[/b:f5156fdcb5][/i:f5156fdcb5]

end;

db_VendasItens.first;

*** fim ***

valeu!

.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar