Página 1 de 1

Controle de estoque, (qual a melhor forma de baixar)?

Enviado: 19 Nov 2004 12:15
por Paulao
Pessoal como fazer um sistema de controle de estoque que baixe o estoque de forma correta.
Penso em duas formas de se fazer:

1 - As entradas são dasdas em um arquivo onde tem os produtos e a partir dai são baixados os itens que forem saindo. e incluidos os quem forem entrando. Penso que assim é meio errado de se fazer, pois se ouver devoluções, erro de preenchimento dos pedidos, ou alterãçoes nas quantidades de algum item do pedido pode dar zebra.


2 - Existe um arquivo para os produtos, outro para as saidas, e outro para as entradas de produtos . Penso que este método é mais viável, mas existe o problema de quando temos muitos itens de produtos cadastrados, isto pode demorar o prcessamento do estoque.


Por favor me digam como voces fazem para eu poder fazer com que meu sistema não tenha mais problema de diferença de estoque.



Grande abraço pra vcs.

Enviado: 19 Nov 2004 13:28
por Zima
Olá,

Bem, até hoje utilizo um unico arquivo (estoque), com os dados do produto, inclusive o campo quantidade.

Aproveitando o tópico, no meu caso venho encontrando problemas na hora de baixar (dar um REPLACE) na quantidade, quando por exemplo uma NF é emitida. No caso, o programa roda em REDE (windows), e aparentemente as vezes a baixa é efetuada, as vezes não.

Como garantir que foi efetuado o REPLACE no banco de dados ? Usar COMITT ou DBCOMITT() ?? Alguém tem exemplos com códigos ?

Sds a todos,
Zima

Estoque

Enviado: 21 Nov 2004 00:33
por Pedro Junior
Olá pessoal,

Tenho um sistema de estoque que roda em usinas de alcool e açucar há um bom tempo. Faço da seguinte maneira :
Tenho um cadastro de materiais onde nele tenho o codigo, descrição, unidade de medida,estoque mínimo,estoque máximo, ponto de reposição, preço médio, ultimo preço de compra, ultimo fornecedor e data que forneceu o material, grupo de material, centro de custo, classe de fornecimento entre outros.
Tenho também uma tabela de notas fiscais e outra com os seus itens
A mesma coisa acontece com a tanela de requisições, tenho a tabela de requisições e tenho também a tabela com os itens da requisição.
Tenho tabela de devolução de materiais que segue o mesmo estilo das tabelas de requisições.
Ainda tenho tabelas de devolução de materiais tendo também outra tabela onde informo quais os itens de uma determinada nota está sendo devolvido ao fornecedor.

Todas os lançamentos de entrada e saída de materiais vão para um arquivo de movimento onde nele posso fazer qualquer tipo de consulta.
Desde extrato de materiais(kardex) até movimentação de custo e consumo por centro de custo , grupo, etc.

Este sistema está integrado com outros sistemas, compras , contabilidade, livro fiscal, financeiro, etc.


Acho que vc pode seguir a mesma linha de raciocínio e qualquer dúvida pode perguntar.

Enviado: 23 Nov 2004 14:49
por Zima
Boa Tarde,

Ainda permaneço aguardando algum comentário/sugestão dos colegas com relação a atualizações no banco de dados ... Tenho um sistema rodando em rede e, aparentemente as vezes ele simplesmente não atualiza, por exemplo, a QUANTIDADE de determinado produto (baixa após ter sido emitida alguma NF).

Penso em fazer alguma rotina para testar essa baixa, com base na quantidade inicial de determinado produto. (Ex. tinha 10, vendi 5, tenho que ficar com 5 no campo quantidade).

Como os amigos do fórum fazem essa verificação ?

Sds,
Zima

Enviado: 23 Nov 2004 18:12
por marcos.gurupi
Acontecia semelhando comigo, era feito uma venda no balcao q gerava:
1-Pedido de venda
2-Itens do pedido de venda
3-Baixa no estoque
4-Lancamento no contas a receber (quando a venda eh a prazo)

E as vezes ele n gerava contas a receber isso estava criando um clima ruim com meu cliente pq o sistema n estava confiável, eu pequei o micro (servidor) e o hub e fiquei um final de semana com ele, criei um programa q executava vários lancamentos pela rede fazendo o mesmo processo de uma venda normal, ocorreu q em 30% das vendas ele n gravava no contas a receber ou mesmo n dava baixa no estoque, fiz isso sem usar a rede e continuo dando problema, entaum chequei a conclusão d q era o hd do servidor, ele adquiriu um hd novo e pronto nunca mais tive problema. Eh claro q cada caso eh um caso mas fica o gancho!.

Marcos Roberto

Enviado: 23 Nov 2004 18:20
por marcos.gurupi
Paulao, sobre o seu dilema eh complicado dizer o q eh melhor nesses casos, mas utilizo da seguinte maneira:

Existe o bd produto que armazena informações do produto inclusive estoque, ent_dad que eh responsavel pelas informações da nf de entrada, ent_item tem informações sobre entrada de item de estoque, para saida tem dois arquivos, pedidos saum as informações da venda e p_itens q saum os itens vendidos. Para dar baixa eh feito da sequinte maneira

Quando eh finalizado o pedido:

Código: Selecionar todos

      DO WHILE .T.
      // LANCA INFORMAÇÕES DA VENDA NO ARQ.PEDIDO
     SELECT (ARQ.TMP DA VENDA)
     GO TOP
     DO WHILE !EOF()
           SELECT (ITENS DO PEDIDO)
           // LANCA OS ITENS DO PEDIDO
           SELECT (ARQ.PRODUTO)
           // EH DADO BAIXA NO ESTOQUE DOS PRODUTOS DO ITEM
           SELECT(ARQTMP DA VENDA)
           SKIP
      ENDDO
DEPOIS EH LOGICO EH GERADO CONTAS A RECEBER OU LANCAMENTOS NO CAIXA CONFORME O TIPO DA VENDA Q FOI REALIZADA.

N sei se fui util, mas qualquer duvida estou a disposição.

Marcos Roberto.

Enviado: 24 Nov 2004 08:21
por Zima
Bom dia,

Bem, vou postar aqui a rotina e função que utilizo para dar baixa no estoque. O sistema roda em Rede windows. Como disse, as vezes o REPLACE não é efetivado, dando origem a erros na quantidade física dos produtos em estoque.

Vocês utilizam algo semelhante ?

Sds,
Zima

Código: Selecionar todos

SELECT Estoque
SET ORDER TO 2
SEEK vcode
IF Reglock(10)
    REPLACE quantidade WITH quantidade - quan[f]
    DBCOMMIT()
    UNLOCK
ELSE
    TONE(1100,1)
    Opc:=Alerta("Estoque não atualizado ! ",{"$OK"})
ENDIF



***********************
FUNCTION Reglock
***************************************************************************
* Objetivo..: Tenta travar o registro atual.
* Parametros: 1. Numerico - tempo de espera em segundos (0 = sempre)
***************************************************************************
PARAMETERS tempo
PRIVATE sempre
IF RLOCK()
   RETURN (.T.)           && bloqueado
ENDIF
SET COLOR TO W+*
*DO Aviso WITH 24,"Aguarde... Tentando Acesso ao Arquivo"
SET COLOR TO
sempre = (tempo = 0)
DO WHILE (sempre .OR. tempo > 0) .AND. INKEY()<>27
   IF RLOCK()
      @ 24,00 CLEAR
      RETURN (.T.)        && bloqueado
   ENDIF
   INKEY(.5)              && espera 1/2 segundo
   tempo = tempo - .5
ENDDO
@ 24,00 CLEAR
RETURN (.F.)              && nao bloqueado

Enviado: 26 Nov 2004 14:17
por Zima
Amigos,

Nenhum sugestão sobre o exemplo acima ??

Sds,
Zima