Identificador de Regra

EST-210CONAG01

Módulo: EST - Estoques.

Finalidade: consistir o movimento de estoque que está sendo gerado e permitir alterar o valor de quatro campos: CODLOT, DATMOV, DATDIG e HORDIG. Pode ser utilizado por clientes que possuem Produção e precisam alterar a data do movimento de estoque para que ela fique igual à data de início da operação da OP.

Também vale para os casos em que a filial do depósito movimentado fica em uma localidade com fuso horário diferente da localidade da filial que está gerando o documento que faz a movimentação de estoque, dessa forma não permitindo utilizar as configurações da base de dados definidas no Senior Config Center, sendo necessário redefinir a data e/ou hora de digitação do movimento (DATDIG/HORDIG).

Todos os campos da tabela E210MVP estão disponíveis, mas apenas os campos E210MVP.CODLOT, E210MVP.DATMOV, E210MVP.DATDIG e E210MVP.HORDIG podem ser alterados via regra e retornados ao sistema.

Características: a variável VSTelaOrigem receberá o nome da tela que estiver chamando a geração de movimento de estoques. Ela estará disponível apenas para movimentos gerados via tela. Para movimentos gerados por processos externos (ação SID, web service etc.), a variável receberá o valor fixo EST.

É possível atualizar os campos de usuário da tabela de movimentos de estoque apenas quando o movimento for gerado pela tela F210MVP (tela gerada). Nas telas geradas, a edição de um registro é feita diretamente na tabela. Dessa forma, o registro pode ser editado via regra. Quando o movimento é gerado por outras telas/processos, o acesso aos registros é feito de modo que não é permitida a edição de campos diretamente na regra.

Tela: Movimentos de Estoque

Transação: não se aplica.

Regra:

Definir cursor cur_087;
Definir Cursor BuscaUltimaSeq;

@SQL@
Definir Numero VNumOrp;
Definir Alfa VCodOri;

Definir Alfa VNumeroLote;
Definir Numero VUltSeq;
Definir Alfa VSeq;
Definir Alfa VCodLot;

@converte mascara@
Definir Alfa strCODEMP;
Definir Alfa strSEQMOV;
Definir Alfa strDATMOV;
Definir Alfa STRQtdMov;

Se ((E210MVP.CodTns = "90270") e (E210MVP.FILDEP = 1) e (E210MVP.FILDEP = 99))
Inicio
E210Mvp.Datdig = E210MVP.Datmov;
E210Mvp.Hordig = 360; @ valor para hordig deve ser sempre em minutos@

Fim;

Se (E210Mvp.OriOrp <> " ")
Inicio
Se ((E210MVP.CodTns = "90201") ou (E210MVP.CodTns = "90227") ou (E210MVP.CodTns = "90218"))
Inicio
Se ((E210Mvp.OriOrp <> "PIN") e (E210MVP.QtdMov <> 0))
Inicio
ConverteMascara(3,E210MVP.DatMov,StrDatMov,"DD/MM/YYYY");
ConverteMascara(1,E210MVP.CodEmp,StrCodEmp,"ZZZ9");
ConverteMascara(1,E210MVP.SeqMov,StrSeqMov,"ZZZZZ9");
ConverteMascara(1,E210MVP.QtdMov,StrQtdMov,"ZZZZZZZ9");

vCodOri = E210MVP.OriOrp;
vNumOrp = E210MVP.NumDoc;

/****** Busca Última Sequência da OP / Lote (Na tabela E900COP) *****/
BuscaUltimaSeq.SQL "Select USU_UltSeq,USU_CodLot,dtrini from E900COP Where CodOri =:VCodOri and NumOrp =:VNumOrp";
BuscaUltimaSeq.AbrirCursor();
Se (BuscaUltimaSeq.Achou)
Inicio
VCodLot = BuscaUltimaSeq.USU_CodLot;
VUltSeq = BuscaUltimaSeq.USU_UltSeq;
VUltSeq = VUltSeq + 1;
ConverteMascara (1,VUltSeq,VSeq,"999");
VNumeroLote = VCodLot + "-" + VSeq;
LimpaEspacos(VNumeroLote);
ExecSQL "UPDATE E900COP SET USU_UltSeq =:VUltSeq Where CodOri =:VCodOri and NumOrp =:VNumOrp";

@@@ RETORNA AO SISTEMA OS VALORES @@@
E210Mvp.DatMov = BuscaUltimaSeq.dtrini;
E210Mvp.CodLot = VNumeroLote;

wcodusu=CodUsu;
cur_087.SQL "Select CodInf from E087inf Where CodInf =:wcodusu";
cur_087.AbrirCursor();
Se (cur_087.Achou)
ExecSql "UPDATE E087INF SET FaxInf =:VNumeroLote,CidInf =:STRQtdMov,NomCto =:VCodOri,CxaPst =:VNumOrp where CodInf =:wcodusu";
senao
Execsql "INSERT INTO E087inf (FaxInf,CidInf,NomCto,CxaPst,CodInf,tipinf,sitreg) values (:VNumeroLote,:STRQtdMov,:VCodOri,:VNumOrp,:wcodusu,'B','I')";
cur_087.FecharCursor();
Fim;
Senao
Inicio
Mensagem(Erro,"Origem/OP não encontrada Leia Novamente");
Cancel(1);
Fim;
BuscaUltimaSeq.FecharCursor();
Fim;
Fim;
Fim;

Variáveis disponibilizadas:

Nome Tipo Observações Retorna Valor
VSEstado ALFA Estado em que o registro do movimento de estoque se encontra no momento de gravação (INSERINDO OU ALTERANDO). N
VSInteracao ALFA Indica o tipo de interação com o usuário na execução da rotina de movimentos de estoque. Assume os valores "AUTOMATICO" (sem interação) ou "INTERATIVO" (com interação). N
VSModificado ALFA Indica se o movimento foi efetivamente modificado antes de ser passado à regra. N
VSTelaOrigem ALFA Representa uma tela em específico ou o processo do sistema responsável pela execução da rotina de movimento de estoque. N
VSBloIte NÚMERO Retorna indicando ao sistema se o processo de gravação do movimento deve ou não continuar. O valor padrão da mesma é 0 (zero). Se um valor diferente de zero for retornado, o sistema irá cancelar o processo de gravação. S
E210MVP.CODLOT ALFA Código do lote S
E210MVP.DATMOV DATA Data do movimento S
E210MVP.DATDIG DATA Data da digitação S
E210MVP.HORDIG NÚMERO Hora da digitação S

Atenção

Caso o parâmetro global LisVarReg esteja habilitado, a variável ListaVariaveis estará disponível em todos os identificadores de regras do sistema. O conteúdo desta variável lista os campos disponibilizados no identificador de regras em questão.

Não é aconselhada a ativação desse parâmetro global para o uso cotidiano. Esse recurso de listagem dos campos de identificadores auxilia a construção de regras e o Suporte para, por exemplo, depuração ou quando não houver acesso à documentação dos identificadores de regras.

Este artigo ajudou você?