VIRAR TABELA DE PRECOS

ABNER 13/02/2014 10:02:38
#434704
Srs., bom dia!

Atualmente na empresa em que atuo vamos passar por uma virada de preços na tabela de produtos. Por diversos anos esse reajuste de valor foi efetuado via script direto no BD e com ajustes manuais na aplicação para olhar uma tabela criada na hora caso a venda seja antiga.

Por exemplo: Dia 13/02/2014 reajustei todos produtos em 10%, caso a venda seja anterior a 13/02/2014 é criada no banco uma tabela [Ô]Produtos20140213[Ô] e a venda olha essa tabela, caso contrário olha a tabela atual que é a reajustada.

Gostariamos de automatizar esse processo para a aplicação e deixar menos gambiarrado haha.

A princípio tivemos a idéia de criar uma tabela padrão por exemplo [Ô]ProdutosOld[Ô] e [Ô]Produtos[Ô]. Criar uma tela aonde o user definiria a data de vigência da tabela nova e a porcentagem de reajuste. Ao fazer isso uma cópia da tabela atual passa para a tabela antiga e a tabela nova é reajustada. Caso a venda ocorra antes da data de vigência, utiliza a tabela antiga, caso contrário a nova.

O problema é que não temos certeza de que essa é a melhor saída, gostaria de saber se alguém já passou por experiência similar e pode compartilhar do conhecimento adquirido para que possamos adotar aqui a solução mais eficaz.

Desde já, obrigado pela atenção!
KERPLUNK 13/02/2014 11:59:03
#434717
Esse processo, não deveria ser por tabela, mas sim ter uma tabela para controlar preços por período, com uma estrutura mais ou menos assim:
IdRegistro int
IdProduto int(ou seu tipo de id de produto)
VigenciaInicio DateTime
VigenciaFim DateTime
Preco money(ou seu tipo de preço)

Com isso, o preço do produto nem precisa ficar na tabela de produto, mas sim na tabela de preços por período, onde você consulta por produto e data atual:
Select from PrecoProduto where idProduto = xxx and VigenciaFim = null

VigenciaFim = null, indica o registro mais atual de preço do produto. Se você precisar, você pode simular um pedido com valores de produto de qualquer período.
ABNER 13/02/2014 14:22:47
#434733
KERPLUNK Agradeço pela resposta. Vou estudar as alterações necessárias para aplicação e programar tudo certinho aqui. Muito mais viável fazer da maneira que você citou.

Muito obrigado!
Faça seu login para responder