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

Sidnei sidnei em amcom.com.br
Seg Dez 6 10:44:55 -03 2004


Na verdade, a maquina B nao vai conseguir fazer a mudanca na tabela ate 
que a maquina A nao feche a sua transacao, Rollback ou Commit.

Sidnei

Marcelo Siqueira wrote:

> 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
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>





Mais detalhes sobre a lista de discussão lista