A funcionalidade de atualização de estoque tardia serve para empresas que possuem muita concorrência de dados da tabela de Saldos de Produtos (SB2), ela permite que o saldo do produto seja atualizado posteriormente à emissão das notas fiscais.
Exemplo:
Existe um produto "000001", este produto é utilizado nos processos de "Venda" e de "Compra", então posso ter um usuário realizando um Pedido de Vendas (MATA410), outro usuário realizando um "Pedido de Compras" (MATA121), outro realizando um "Documento de Saída" (MATA460A) e ainda outro realizando um "Documento de Entrada" (MATA103). Todos eles estão usando o produto "000001" ao mesmo tempo, para que o sistema permita essa ação, ele irá criar uma "fila", então um usuário só poderá gravar seu processo, quando for "a sua vez dele" de usar o registro".
Parâmetro MV_NFS_JOB
Se o parâmetro MV_NFS_JOB estiver habilitado (.T.), um JOB é executado para a atualização do estoque após a geração dos documentos.
Nestes casos, o documento de saída, é gerado sem atualização de estoque e os campos "Bloq.Estoque" (C9_BLEST) e "Bloq.Credito" (C9_BLCRED) são gravados com conteúdo ZZ.
O Job "FATXJOB" tem a função de regravar os campos "Bloq.Estoque" (C9_BLEST) e "Bloq.Credito" (C9_BLCRED) com conteúdo "10" e chamar a função de atualização de estoque.
Aviso |
---|
|
Enquanto o "FATXJOB" não atualizar o saldo de estoque do produto, ou seja, enquanto os campos "Bloq.Estoque" (C9_BLEST) e "Bloq.Credito" (C9_BLCRED) estiverem com o conteúdo "ZZ", não será possível a exclusão do documento de saída. |
Sendo assim, se o parâmetro "MV_NFS_JOB" estiver habilitado (.T.), oJob"FATXJOB" também deve estar. Caso o "FATXJOB" não esteja configurado, o parâmetro "MV_NFS_JOB" deve ser desabilitado (.F.)
Há duas maneiras indepedentes (uma não depende da outra) de executar a atualização de estoque quando acionada a atualização tardia do estoque:
Deck of Cards |
---|
startHidden | false |
---|
effectDuration | 0.5 |
---|
id | Liberação Tardia |
---|
effectType | horizontal |
---|
loopCards | true |
---|
|
Card |
---|
default | true |
---|
id | Custo Médio |
---|
label | 1. Via Job |
---|
| Nesta opção é necessário configurar o Job no AppServer.ini do ambiente. 1. Exemplo de Job: Bloco de código |
---|
[ONSTART]
Jobs=FTJOBNFSB2_9901
[FTJOBNFSB2_9901]
main=FtJobNfsB2
environment=<NOME DO AMBIENTE>
nParms=2
Parm1=<CÓDIGO DA EMPRESA>
Parm2=<CÓDIGO DA FILIAL> |
2. Crie um arquivo com o nome "FATXJOB.CFG" e salve-o na pasta do AppServer (Pasta de Instalação do Protheus), iremos indicar o horário de execução do Job, ou seja, de quanto em quanto tempo o sistema irá atualizar o Saldo dos Produtos na tabela SB2. No exemplo abaixo, o JOB irá rodar das 18:00:00 às 22:30:00, a cada 5 minutos: Bloco de código |
---|
[FTJOBNFSB2_9901]
START_TIME="18:00:00"
FINISH_TIME="22:30:00"
INTERVAL=5 |
|
Card |
---|
default | true |
---|
id | 06072020265 |
---|
label | 2. Via Schedule |
---|
| É possível realizar a execução do Job via Schedule, configurando sua recorrência de execução. O acesso do cadastro de Schedules fica no Configurador (SIGACFG), segundo o menu: "Ambiente" > "Schedule" > "Schedule" Como pré-requisito, é necessário possuir o Cadastro de Agente. Após isso, realize os seguintes passos: Conforme as execuções do Schedule forem ocorrendo, os saldos de produtos serão atualizados na tabela SB2 |
|
Aviso |
---|
|
O nome do JOB deverá ser sempre "FTJOBNFSB2_XXYY", onde "XX" é o código da empresa e "YY" é o código da filial. Caso o arquivo "FATXJOB.CFG" não seja criado, a rotina utilizará o intervalo padrão: das 00:00:01 às 23:59:59, com intervalo de execução de 5 minutos. |