Árvore de páginas

DESVIO DO PROCESSO NA GERAÇÃO DAS ORDENS DE SERVIÇO NO PLANO DE MANUTENÇÃO

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Manufatura

Módulo:

SIGAMNT - Manutenção de Ativos e Gestão de Frotas

Rotina:

Rotina

Nome Técnico

MNTA330

Plano de Manutenção

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:

Ponto de Entrada que possibilita alterar regra do plano de manutenção.

Localização:

SIGAMNT: Atualizações/Plano de Manutenção/Plano

Programa Fonte:

MNTA330.PRX

Função:

MNTA330G()

Variáveis:
NomeTipoEscopoPode alterarDescrição
PARAMIXB[1] 
CaracterLocalNão

Indica o tipo de controle da manutenção:

C - Contador

T - Tempo

A - Tempo/Contador

F - Contador Fixo

S - Segundo Contador

PARAMIXB[2] 
NuméricoLocalNão

Quando controlado por contador:

1 - Primeiro contador

2 - Segundo contador

_CONPROX 
NuméricoPrivateSimContador da próxima manutenção
_DTPROX 
DataPrivateSimData da próxima manutenção

Retorno:

Nome

Tipo

Descrição

Obrigatório

lRet

Lógico

Indica se gera ordem de serviço.

Sim

 

Importante

O ponto de entrada é chamado após estar posicionado na tabela STF, sendo assim é possível acessar suas informações.

Ao utilizar este ponto de entrada, todos os tipos de manutenções deverão ser tratadas neste ponto de entrada.

Exemplo
#Include 'Protheus.ch'
/*
Neste exemplo de ponto de entrada está sendo tratado apenas as manutenções do tipo "C" - Contador.
Por se tratar de um exemplo não está sendo considerado outros tipos de acompanhamento.
É de responsabilidade do usuário adequá-lo para sua necessidade.
Caso seja utilizado em um ambiente com outros tipos de acompanhamento, sem o tratamento necessário, nenhuma manutenção será gerada para tais.
*/
User Function MNTA330G()
    Local _TIPO    := PARAMIXB[1] // retorna o tipo de controle da manutenção
    Local _CUMDOIS := PARAMIXB[2] //retorna se tipo do contador
    Local lRet     := .F.
    Local nINTEI   := 0
    Local nRESTO   := 0
    Local nPOSPO   := 0
    Local cVALOR
    Local nINCDAT  := 0


    If _TIPO == "C" .And. _CUMDOIS == 1  //Verifica se a manutenção é controlada por contador e primeiro contador
        
        If _CONPROX == 0
            _CONPROX := STF->TF_CONMANU + STF->TF_INENMAN
            _DTPROX  := ((_CONPROX - M->T9_CONTACU) / M->T9_VARDIA)
        Else
            _CONPROX := _CONPROX+STF->TF_INENMAN
            _DTPROX  := (_CONPROX - M->T9_CONTACU) / M->T9_VARDIA
        EndIf

        nINTEI := Int(_DTPROX)
        nRESTO := If(nINTEI < 0,_DTPROX*-1,_DTPROX) - If(nINTEI < 0,nINTEI*-1,nINTEI)

        If nRESTO > 0
            cVALOR := Alltrim(Str(nRESTO))
            nPOSPO := At('.',cVALOR)
        EndIf

        nRESTO := If (nPOSPO > 0,Val(Substr(cVALOR,nPOSPO+1,1)),0)

        If nRESTO > 5
            nINCDAT := If(nINTEI <= 0,nINTEI-1,nINTEI+1)
        Else
            nINCDAT := nINTEI
        EndIf

        _DTPROX := M->T9_DTULTAC + nINCDAT

        If _DTPROX <= M->TF_DTULTMA
            _DTPROX :=  M->TF_DTULTMA + 1
        EndIf

        lRet := !(_DTPROX > M->TI_DATAFIM)
    EndIf
Return lRet