[firebase-br] Calculo de reajuste de valores

Alex Ricardo Parolin arparolin em gmail.com
Qui Out 30 19:01:50 -03 2008


Senhores,

Tenho um BD Firebird (1.5) rodando em um cliente. O BD possui uma tabela de
negociações e uma tabela de reajustes, com a estrutura a seguir:

NEGOCIOS
ID (PK)
DataNegocio Date
Empresa
Quantidade
Valor Minimo
Valor Medio
ValorMaximo

REAJUSTE
ID
Data
Empresa
TipoReajuste
Data do Reajuste
Valor do Reajuste.

O problema é o seguinte: o sistema é dividido em dois módulos. O modulo
cliente lê os dados do BD eo modulo Admin calcula os valores e os insere no
BD. Quando acontece um reajuste, o admin lança o reajuste na tabela
correspondente e sai recalculando os valores da tabela de negócio. Com isso
o cliente pode ver sempre os valores corretos, conforme os reajustes forem
sendo lançados.

Exemplo prático: sai um reajuste que divide os valores de uma empresa por
dois. Ele é lançado na tabela de reajuste e o Admin sai dividindo todos os
valores por dois e a tabela de negocio fica reajustada. Como podem ver, os
reajustes são cumulativos.

Agora preciso fazer o processo inverso, ou seja, descalcular o reajuste. O
processo de "descalculo" é o seguinte: pego a data do reajuste e aplico a
operação inversa nos valores de negócio cuja data seja igual ou menor a data
do reajuste e vou fazendo isso progressivamente, da ultima data até a
primeira data, para todos os reajustes e negócios. O usuário pode escolher
"descalcular" somente um determinado tipo de reajuste ou vários ao mesmo
tempo.

A pergunta de um milhão de dólares: COMO FAZER ISSO SEM QUE O SOFTWARE FIQUE
LENTO? Via aplicação? Via BD? Parte do processo em cada um?  Só pra terem
uma idéia, uma empresa pode possuir mais de 100 reajustes (raro), mas possui
negócios diários desde 1999.

Atenciosamente,

Alex



Mais detalhes sobre a lista de discussão lista