Valdécio

Autor Valdécio
Data de criação Aug 12, 2021
Última edição Modificado há 3 anos

Tópico

Estoque de Recebimento

Sistemas/Modulo

Hermes/Zeus

Tipo de Documento

Pop (X), Manual (), Manutenção ()

Versão do Módulo

1.90.10

Classificação

Erro (), Procedimento(X)

Atualização

12/08/2021

Autor:

Valdécio

Descrição

Como é feito o processamento do estoque de recebimento dentro das funcionalidades do sistema.

Descrição do senário

Sabemos que dentro do cadastro de produto na guia de estoque ou em qualquer CFG de estoque que tenha a quantidade de estoque, também existe a quantidade a receber, tal quantidade se refere a um documento de entrada que já foi gerado no sistema mas fisicamente o estoque ainda não foi disponibilizado, como é o caso por exemplo de uma transferência de estoque, onde o estoque já saiu da origem mas não chegou no destino e desta forma no estoque de destino irá aparecer a quantidade que esta para chegar mas que ainda não chegou, o mesmo ocorre em uma nota fiscal de compra onde o documento de nota fiscal chega antes da mercadoria física é lançada no sistema gerando um estoque a receber, pois bem, para os 2 casos na interface do sistema existe o botão recebimento que quando é acionado o sistema indica o recebimento desta mercadoria onde a quantidade a receber e baixada e o estoque é aumentado.

O objetivo deste artigo é mostrar como o sistema controla esta entrada e saída no campo de estoque a receber da tabela de estoqueproduto.

Funcionalidades

Assim como a quantidade o campo de estoque a receber passou a ter uma tabela para gerenciar toda a entrada e saída de quantidade deste item, esta tabela trata-se da tabela de historicorecebimentoproduto, dentro desta tabela existem basicamente o código do produto, código do estoque, quantidade a receber e quantidade recebia e através de uma triggers (gatilho) configurado no banco de dados cada vez que é inserido ou apagado registro nesta tabela o sistema soma no campo quantidade a receber e subtrai a quantidade recebida da tabela de historicorecebimentoproduto, ou seja, o sistema apenas grava registro nesta tabela e o banco de dados faz o cálculo da quantidade a receber, desta forma vale lembrar que se as triggers do sistema não estiverem devidamente configurada este cálculo não vai funcionar, porem é possível apurar com tranquilidade a quantidade a receber de um produto apenas fazendo uma consulta nesta tabela para um produto e estoque somando e subtraindo os valores respectivos.


Porem mesmo com a funcionalidade descrita acima pode ocorrer de um produto ser desregulado e para isso foi criada uma ferramenta no sistema que tem como finalidade a execução o recalculo de todas as informações referente a recebimento de maneira a justar todos os dados.

Para acionar este recurso deve-se acessar o item de configurações gerais, utilitários, estoque na opção de Recalcular Estoque a Receber

É possível também executar um comando no banco de dados para verificar se existe diferença entre o calculo da tabela de historicorecebimentoproduto em relação ao saldo de estoque da tabela de estoque produto e para isso pode ser utilizado script abaixo

drop table if exists checagemrecebimento;

create table checagemrecebimento

(

codigoproduto integer(11),

CodigoEstoque integer(11),

Quantidade double(13,5),

key (CodigoProduto),

Key (CodigoEstoque)

);

insert into checagemrecebimento

select codigoproduto,

codigoestoque,

sum(QuantidadeAReceber-QuantidadeRecebida) as total

from historicorecebimentoproduto

GROUP BY codigoproduto,

codigoestoque;

drop table if exists direncaestoquerecebimento;

create table direncaestoquerecebimento (

CodigoProduto integer(11),

CodigoEstoque integer(11),

QuantidadeAReceber double(13,5),

Quantidadecalculada double(13,5),

key (CodigoProduto),

Key (CodigoEstoque)

);

insert into direncaestoquerecebimento

select

checagemrecebimento.codigoproduto,

checagemrecebimento.codigoestoque,

estoqueproduto.QuantidadeAReceber,

checagemrecebimento.quantidade

from estoqueproduto

inner join checagemrecebimento on (checagemrecebimento.codigoproduto = estoqueproduto.codigoproduto and checagemrecebimento.codigoestoque = estoqueproduto.codigoestoque);

select * from direncaestoquerecebimento where (QuantidadeAReceber <> Quantidadecalculada);

drop table if exists checagemrecebimento;

drop table if exists direncaestoquerecebimento;

Também é possível dentro do sistema visualizar o relatório de histórico a receber no item de relatório, estoque, histórico de recebimento de produto