segunda-feira, setembro 11, 2006

Definindo um bom controle de estoques

A definição do controle de estoques, deve levar em consideração parâmetros de abrangência e de funcionalidade, e como já escrevi em posts anteriores sobre parâmetros de abrangência, estarei discorrendo agora sobre um parâmetro de funcionalidade que eu particularmente, considero o mais importante em um controle de estoques eficiente, que é a "capacidade de recuperação de informações históricas".
As principais informações históricas que a maioria dos sistemas não consegue recuperar, ou se consegue, consegue de forma ineficiente, são o saldo do produto e o custo médio, por se tratarem de informações que são sobrepostas a cada entrada (o saldo e custo médio) ou a cada saída (o saldo).
Destrinchando o problema, podemos partir de dois pontos básicos, que facilitam a boa definição do controle de estoques, que são:
Gravação dos dados de estoques de períodos pré definidos, no arquivo de estoques.
Possibilidade de reprocessamento a partir de arquivos de movimentação (vendas, compras, devolução de clientes, devolução a fornecedores, ajustes de estoque).
Mas se podemos reprocessar a partir dos arquivos de movimentação, teóricamente, qualquer sistema que tenha esses arquivos de movimentação pode obter o estoque ou custo médio em períodos anteriores. Realmente pode, mas não de forma rápida e simples, pois essa obtenção se daria a partir de reprocessamento do início pro fim, ou do fim pro início, e dependendo do tamanho dos arquivos, seria um processo extramamente demorado e complexo, uma vez que até a ordem dos arquivos a reprocessar interessa no caso de reprocessamento de custo médio.
Mas então, qual seria a solução mágica pra esse reprocessamento ? Não se trata de solução mágica, 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 informações que levasse o leitor a pensar, sem dar receita de bolo, mas nesse caso não encontrei a forma ideal pra isso, portanto, vou passar de forma mastigada mesmo.
Primeiramente, vamos à estrutura do arquivos de estoques:
* Chave primária
Código da empresa (Em se tratando de sistema multi-empresa)
Código do produto
Depósito (Caso o sistema contemple múltiplos depósitos)
Lote (Caso o sistema contemple controle por lotes de mercadoria)

* Demais campos da tabela
ANOREF (Ano de referência do registro de estoque)
SALDANT (Saldo do exercício anterior)
CPMES01 (Compras do mês 01)
VNMES01 (Vendas do mês 01)
DCMES01 (Devoluções de clientes do mês 01)
DFMES01 (Devoluções a fornecedores mês 01)
ABMES01 (Alimentação de balanço/ajustes mês 01)
SLMES01 (Saldo final do mês 01)
CMED01 (Custo médio mês 01)
...
...
...

CPMES12 (Compras do mês 12)
VNMES12 (Vendas do mês 12 )
DCMES12 (Devoluções de clientes do mês 12)
DFMES12 (Devoluções a fornecedores mês 12)
ABMES12 (Alimentação de balanço mês 12)
SLMES12 (Saldo final do mês 12)
CMED12 (Custo médio mês 12)
* Não citarei os demais campos do arquivo de estoques, pois o foco é o saldo e o custo médio

Os lançamentos no estoque, provenientes da movimentação ou da alimentação de balanço, deverão procurar no arquivo, e caso não encontre, abrir um registro com o código do produto, o código da empresa, o código do depósito e o ano do lançamento, deve-se também buscar se existe um registro anterior daquele produto, para pegar o saldo anterior que será alimentado no novo registro que foi criado.
Caso seja feito um lançamento, ou a exclusão de um, com exercício inferior a lançamentos pré-existentes, deve-se reprocessar os saldos anteriores dos registros subseqüentes de acordo com a característica daquele lançamento, Inclusive recalculando os campos de custo médio de cada mês.
A alimentação do estoque, proveniente de movimentação ou de alimentação do balanço, deverá alimentar o respectivo campo de movimentação ou alimentação de balanço, do mês de referência da data do lançamento, bem como o saldo final do mês, com a seguinte regra:
(+) Saldo anterior (soma do SALDANT mais os saldos dos meses anteriores)
(+) Compras do mês
(+) Devoluções de clientes do mês
(+) Alimentação de balanço do mês
( -) Vendas do mês
( -) Devoluções a fornecedores do mês
A consulta do saldo atual, pode ser feita através de uma função que retorna esse saldo, para que a mesma seja utilizada em qualquer parte do sistema, que se dará pela soma do saldo anterior, mais os saldos do mês 01 ao mês 12.
Os saldos dos meses 01 ao 12, se referem apenas à movimentação daquele mês, e não ao saldo acumulado, para que quando da necessidade de reprocessamento por causa de lançamentos em exercícios anteriores, seja necessário apenas alterar os campos de saldo anterior e custos médios subseqüentes, e caso o lançamento seja em data anterior, mas no mesmo exercício, não haja necessidade de nenhum reprocessamento de estoque, sendo necessário reprocessar apenas os custos médios dos meses subseqüentes.
Esta rotina parece um pouco complexa, mas se bem entendida, e utilizada, facilita sobremaneira o controle de estoques, e possibilita total rastreabilidade dos estoques a partir das movimentações.
As possibilidades de utilização, ficam a cargo de cada projetista de software, mas garanto que existem tanto possibilidades operacionais, quanto gerenciais.

12 comentários:

Anônimo disse...

Venho aqui ler toda vez que vc atualiza, então vai lá:
PARABÉNS cara, muito boa sua iniciativa, poucas pessas repartem o conhecimento.

[ ]s
Giba

Wesley disse...

Obrigado pelo comentário Giba. Meu objetivo é contribuir, mesmo que de forma simples, pela melhoria na qualidade dos sistemas desenvolvidos. Se eu puder ajudar pelo menos uma pessoa com essa iniciativa, já terei realizado esse objetivo.

Abraços.

Wesley

Anônimo disse...

Wesley, parabéns, seus conhecimentos são bastante profundos. Sendo assim, deixe-me aproveitar um pouco...rss, sou formado em Adm, também fiz Propaganda & MKT, depois, Gestão em Agronegócios e agora terminando Gestão Ambiental, porém, meu trabalho é com produtores rurais, agora está pintando uma oportunidade, consultoria em algumas micro empresas recém nascidas, serão 10 horas/mês durante 6 meses, pretendo começar com um diagnóstico empresarial, e aplicar ações de MKT, DREs, Custos, Análise e otimização de Lay Out de produção, enfim, e fechar com enquadramento ambiental (destino de resíduos, uso racional da água, etc), vc teria algum modelo, uma sequência de ferramentas administrativas, que eu pudesse aplicar?
Obrigado.
Luiz Velho.
luizvelhos@yahoo.com.br

Wesley disse...

Luiz, obrigado pelo elogio e por ter visitado o meu blog.
Pelo que você citou, você estará atuando nessas empresas em partes distintas (apesar de interligadas) do funcionamento das mesmas. Não conheço nenhuma ferramenta administrativa, que trabalhe de forma interligada pra esse seu serviço, no entanto, eu recomendaria pesquisar na internet, sobre planejamento de marketing, planejamento de custos, gestão de produção e gestão ambiental, e aplicar realmente um planejamento empresarial em cada uma destas etapas do trabalho, onde os pontos principais são:
Objetivo do planejamento;
Colaboradores envolvidos;
Agenda de execução, onde deve-se definir:
Ação a ser realizada e data para a mesma;
Possíveis restrições ao sucesso da execução;
Reação planejada no caso da restrição;
Agregado à agenda de execução, deve haver o cronograma finaceiro.
Não sei se essa minha resposta te ajuda, talvez se você puder detalhar um pouco mais esse trabalho, e as características das empresas, minha ajuda possa ser mais relevante.
Tenho bastante experiência com planejamento empresarial, inclusive tenho em fase de conclusão um software para esse fim, portanto, estou à disposição, caso possa ajudar em mais alguma coisa.

Atenciosamente.

Wesley.

Anônimo disse...

Olá Wesley, tudo blz? Sou desenvolvedor e atualmente moro em Goiânia/GO. Suas dicas sobre controle de estoque só me fizeram a acreditar que ainda existem bons programadores ( que pensam no cliente ). Procuro pensar da mesma forma que vc, mas ainda há muitos clientes que se contentam com um cadastro com 5 ou 6 campos, oferecidos por alguns mercenários que cobram pouco e não têm nenhum qualidade. Prefiro perder o cliente do que fazer um sistema que não dê condições de criar relatórios gerenciais. Abraços. E ai? Qual vai ser o próximo tema? Que tal cotação de preços, hein!?

Unknown disse...

boa noite por acaso tentando achar algo sobre reprocessamento de saldos em estoque esbarrei no seu blog e foi muito legal, ler sobre o q vc postou e gostaria de pedir sua ajuda poderia me definir o q é reprocessar saldo em estoque, qual sua destinação como é feito no front end ou no bd é feito usando o q trigger, sp, função do delphi poderia me passar um exemplo estou muito interessado nisso desde ja agradeço meu e-mil é rnribeiro@gmail.com ou reijanionunes@hotmail.com ficaria grato se pudesse me ajudar pois é muito dificil encontrar algo do tipo na net

Anônimo disse...

Ola Reijanio...
O que eu chamo de reprocessamento de estoques, é a possibilidade de se obter novamente o estoque de um produto, a partir dos arquivos de movimentação (vendas, compras, devoluções de clientes, devoluções a fornecedores e ajustes de estoque).
A necessidade de reprocessamento pode se dar por vários motivos, por exemplo, a perda do arquivo de estoques, ou a necessidade de se reprocessar o custo médio de um produto por lançamentos errados em período anterior, ou até mesmo por exbição incorreta do estoque do produto, em função de bug da aplicação.
A possibilidade de reprocessamento, de certa forma blinda a aplicação contra erros no controle de estoques.
Nos nossos sistemas, não fazemos através de trigger ou sp, mas sim através de rotinas escritas diretamente no aplicativo, ou seja, as regras de negócios estão sempre no aplicativo, e não no banco.
Se tiver mais alguma dúvida, estou à disposição.

Wesley.

Anônimo disse...

Olá. Tudo bem ?
Possuo um sistema ERP e faço algo semelhante, porém dia-a-dia.
Armazeno o saldo diário pois uso em clientes com muita movimentação.
assim minha tabela de saldos inclui, EMPRESA, ALMOXARIFADO, PRODUTO, DATA, SALDO.
Qdo pedem a movimentacao de um produto em determinado periodo, digamos, 10/10/2008 a 15/10/2008, recupero o saldo de DATA=09/10/2008 e a partir dai exibo toda a entrada e saida mostrando pontualmente o saldo resultante de cada lancamento de e/s. Fica ótimo. Faço exatamente o mesmo para custo médio. Todo o histórico é armazenado.
Detalhe. Nao basta armazenar. No caso de se alterar um movimento do passado, exemplo 05/10/2008, todos os saldos devem ser recalculados para se atualizar as tabelas.
O mesmo ocorre se excluir algum registro do passado.
Abraço.
Wander.

Wesley disse...

Wander, eu evito essa abordagem de saldo diário, pela quantidade de registros do arquivo de saldos, imagine um cadastro de produtos com 5000 ítens ativos, com 365 registros por ano, por empresa e por almoxarifado pra cada um desses produtos...

Wesley

alecarlos disse...

Caros, estou com um problema e gostaria de saber se alguém pode me ajudar, estou alterando meu sistema de ERP para atender produtos fracionados, mas um mesmo produto pode ser vendo em CX ou UN, então imagine se na compra de um produto "X" com a quantidade de 1 cx, ficando o saldo 1, cada caixa tem 10 unidades.
No hora da venda o usuário escolhe vender 3 unidades, o saldo nesse cenário fica quabrado ficando saldo de 0,7.
Alguém tem uma idéia melhor para controlar esses saldos?

Anônimo disse...

Valeu Wesley pela iniciativa!
Não sei se você já comentou sobre grade de produtos no controle de estoques. É um assunto meio polemico para a implementação.
Gostaria de saber a sua opinião.

Grato.
Sérgio

Wesley disse...

Olá Sérgio, boa sugestão.
Estarei postando sobre grades de produtos em breve, grande abraço.

Wesley