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.