pro fim, ou do fim pro inicio, e dependendo do tamanho dos arquivos, seria um processo extramamente demorado e complexo, uma vez que ate a ordem dos arquivos a reprocessar interessa no caso de reprocessamento de custo medio. Mas entao, qual seria a solucao magica pra esse reprocessamento ? Nao se trata de solucao magica, mas sim o uso de recursos semelhante ao controle de saldo em sistemas de contabilidade, que facilitam esse controle mais eficaz. Pensei em uma forma de expor as informacoes que levasse o leitor a pensar, sem dar receita de bolo, mas nesse caso nao encontrei a forma ideal pra isso, portanto, vou passar de forma mastigada mesmo.Primeiramente, vamos a estrutura do arquivos de estoques: * Chave primariaCodigo da empresa (Em se tratando de sistema multi-empresa)Codigo do produtoDeposito (Caso o sistema contemple multiplos depositos)Lote (Caso o sistema contemple controle por lotes de mercadoria) * Demais campos da tabelaANOREF (Ano de referencia do registro de estoque)SALDANT (Saldo do exercicio anterior)CPMES01 (Compras do mes 01)VNMES01 (Vendas do mes 01)DCMES01 (Devolucoes de clientes do mes 01)DFMES01 (Devolucoes a fornecedores mes 01)ABMES01 (Alimentacao de balanco/ajustes mes 01)SLMES01 (Saldo final do mes 01)CMED01 (Custo medio mes 01).........CPMES12 (Compras do mes 12)VNMES12 (Vendas do mes 12 )DCMES12 (Devolucoes de clientes do mes 12)DFMES12 (Devolucoes a fornecedores mes 12)ABMES12 (Alimentacao de balanco mes 12)SLMES12 (Saldo final do mes 12)CMED12 (Custo medio mes 12)* Nao citarei os demais campos do arquivo de estoques, pois o foco e o saldo e o custo medioOs lancamentos no estoque, provenientes da movimentacao ou da alimentacao de balanco, deverao procurar no arquivo, e caso nao encontre, abrir um registro com o codigo do produto, o codigo da empresa, o codigo do deposito e o ano do lancamento, deve-se tambem buscar se existe um registro anterior daquele produto, para pegar o saldo anterior que sera alimentado no novo registro que foi criado.Caso seja feito um lancamento, ou a exclusao de um, com exercicio inferior a lancamentos pre-existentes, deve-se reprocessar os saldos anteriores dos registros subsequentes de acordo com a caracteristica daquele lancamento, Inclusive recalculando os campos de custo medio de cada mes.A alimentacao do estoque, proveniente de movimentacao ou de alimentacao do balanco, devera alimentar o respectivo campo de movimentacao ou alimentacao de balanco, do mes de referencia da data do lancamento, bem como o saldo final do mes, com a seguinte regra:(+) Saldo anterior (soma do SALDANT mais os saldos dos meses anteriores)(+) Compras do mes(+) Devolucoes de clientes do mes(+) Alimentacao de balanco do mes( -) Vendas do mes( -) Devolucoes a fornecedores do mesA consulta do saldo atual, pode ser feita atraves de uma funcao que retorna esse saldo, para que a mesma seja utilizada em qualquer parte do sistema, que se dara pela soma do saldo anterior, mais os saldos do mes 01 ao mes 12.Os saldos dos meses 01 ao 12, se referem apenas a movimentacao daquele mes, e nao ao saldo acumulado, para que quando da necessidade de reprocessamento por causa de lancamentos em exercicios anteriores, seja necessario apenas alterar os campos de saldo anterior