RES: [firebase-br] Problema para controlar saldo de produtos

Marcelo Siqueira marcelo em bredas.com.br
Seg Dez 6 11:25:04 -03 2004


Rildecy,

Obrigado pelas dicas. Mas ainda tenho algumas duvidas. Se eu entendi bem 
o seu exemplo você apenas atualiza os saldos de produtos no final, 
quando o usuario escolhe que tipo de operação ele quer realizar, certo?

No meu caso eu quero atualizar os saldos assim que o usuario escolher os 
produtos, antes mesmo de fechar a venda. Mas caso o usuario cancele a 
venda eu tenho que voltar os saldos para o valor correto.

Eu imagino assim:

Maquina A:
- Abro uma transação
- Saldo atual do produto X: 100
- Usuario escolhe para comprar 2 unidade do produto X
- Saldo do produto X agora é 98
- Transação ainda não foi completada

Em quanto isso na Maquina B:
- Abro uma transação
- O Saldo atual do produto X é 98
- O usuario compra 5 unidades do produto X
- Agora o saldo o produto X é 93
- Venda confirmada e transação comitada

Bom, ai na maquina A o usuario resolve cancelar tudo e eu dou um 
Rollback. Como então vai ficar o saldo do produto X? Vai voltar para 100 
ou ficar em 93? Essa é minha duvida, como o rollback do banco vai se 
comportar nesse tipo de situação de atualização de saldos?

Marcelo



Rildecy de Queiroz Borba wrote:
> Vou tentar passsa como fiz o meu.
> 
> Tenho duas tabelas uma com os dados do pedido e outra com os itens do pedido
> Elas possuem o campo numero do pedido e tipo de saída.
> Quando inicio uma operação, chamo de operação pois ate o momento não sei se
> o que o cliente quer é uma venda ou um orçamento, eu colocou um numero
> aleatório no numero do pedido com valor negativo,so para não aparecer nos
> outros terminais, e no campo tipo de saída marco como operação indefinida,
> aqui vc pode usar uma tabela de códigos de saída, ao final da operação eu
> pergunto se esta operação é uma venda ou se é uma reserva de mercadoria, se
> é um orçamento , se é uma transferência, etc.
> E se for um pedido eu so mudo o campo numero do pedido para a seqüência
> correta e o campo tipo de saída como venda, daqui por diante é o
> procedimento normal, e estou gravando tudo na tabela de itens que possui uma
> triger que atualiza o meu saldo de acordo com a entrada dos dados e comito a
> cada item pois se houver falta de energia posso apagar os itens e o saldo
> fica correto. 
> 
> O bom é que vc tem uma relação de saída de mercadorias genérica que vc pode
> adaptar da forma que quiser.
> 
> Se quiser mais informações to aqui
> rildecy em msn.com
> 
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
> nome de Marcilio Soares
> Enviada em: sexta-feira, 3 de dezembro de 2004 18:20
> Para: FireBase
> Assunto: Re: [firebase-br] Problema para controlar saldo de produtos
> 
> eu faco em trigger e ainda nao me apareceu problemas !
> 
> ----- Original Message ----- 
> From: "Marcelo Siqueira" <marcelo em bredas.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Friday, December 03, 2004 4:38 PM
> Subject: [firebase-br] Problema para controlar saldo de produtos
> 
> 
> Boa tarde,
> 
> Preciso controlar o saldo de produtos durante uma operação de venda e
> estou em duvida sobre qual a melhor maneira de fazer isso.
> 
> Meu plano é fazer uma tela de vendas onde pego todas as informações do
> usuário e gravo tudo em estruturas de memória, para só no final abrir
> uma transação e gravar o pedido efetivamente no banco.
> 
> Porém existe uma exceção nessa idéia de gravar toda venda em memória: o
> saldo do produto. Assim que o usuário escolhe um produto eu decremento o
> seu saldo da tabela para evitar que outro usuário faça um pedido do
> mesmo produto caso este tenha saldo zero.
> 
> Por fim, se o usuário confirmar a venda, o saldo do estoque já vai estar
> certo, caso ele cancele o pedido eu incremento os saldos dos produtos
> para que eles fiquem com o valor original. Mas ai existe um problema. Se
> a maquina cliente travar antes do cliente confirmar ou cancelar o pedido
> eu perco os meus dados que estavam em memória e o banco vai ficar com
> informações inconsistentes.
> 
> Enfim, gostaria de saber sobre a experiência de outros programadores no
> modo como controlam o saldo de produtos durante telas de venda. Alguém
> poderia me dar algumas dicas sobre como é maneira correta de se fazer
> isso dentro de um ambiente cliente/servidor?
> 
> Marcelo





Mais detalhes sobre a lista de discussão lista