Árvore de páginas

Ponto de entrada para customização adicional no Retorno Mod. 2

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Manufatura

Módulo:

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

Rotina:

RotinaNome Técnico
MNTA435Retorno Mod2

Chamados Relacionados

DNG-3844                                                           

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:

Ponto de entrada acionado na validação do Retorno Modelo 2 (MNTA435) que permite validação adicional antes da gravação dos insumos.

Localização:

SIGAMNT: Atualizações/Controle de Oficina/Retorno de OS/Retorno Mod. 2 (MNTA435)

Eventos:

Retorno Mod. 2 (MNTA435)

Programa Fonte:

MNTA435.PRW

Funções

MNTA435N()

Parâmetros:

Nome

Tipo

Descrição

Obrigatório
ParamIXB[1]Caracter

Id que indica o local da chamada do ponto de entrada

Sim


A partir da 2ª posição os parâmetros podem ser diferentes de acordo com o ID, como citado na tabela abaixo:

NomeTipo
DescriçãoObrigatório
ParamIXB[2]

Array



Posição

1CaracterNúmero da O.S.
2CaracterPlano
3ArrayInsumos previstos já salvos
4ArrayInsumos realizados já salvos
5ArrayTodos os insumos realizados e modificados
Sim
Retorno:
Nome
TipoDescriçãoObrigatório
.T. / .F.LógicoDefine se poderá prosseguir após as validaçõesSim

 


Exemplo de ponto de entrada MNTA435
#include 'protheus.ch'

//-------------------------------------------------------------------
/*/{Protheus.doc} U_MNTA435
Exemplo da utilização do ponto de entrada MNTA435, ID "VALID_CONFIRM" 
Neste exemplo o objetivo é não permitir incluir um insumo de MDO com 
data menor que a data atual

@obs
@author  NG Informática
@since   12/02/2019
@return lógico, se obteve sucesso nas validações
@obs neste exemplo é utilizado o retorno lógico utilizado para o ID "VALID_CONFIRM" 
/*/
//-------------------------------------------------------------------
User Function MNTA435N()
    
    Local aArea     := GetArea()
    Local cId       := PARAMIXB[1] //Indica o momento da chamada do PE
    Local aDadosOS  := {}
    Local aInsumos  := {} //Array de insumos realizados
    Local nOrdem
    Local nInsumo
	Local nPosTipReg := aScan(aHoBrw2,{|x| Trim(Upper(x[2])) == "TL_TIPOREG"})
	Local nPosDtInic := aScan(aHoBrw2,{|x| Trim(Upper(x[2])) == "TL_DTINICI"})
    
	If cId == "VALID_CONFIRM"
		//Array com os dados das ordens de serviço
		aDadosOS := ParamIXB[2] 
	
        //Percorre o array de ordens
        For nOrdem := 1 To Len( aDadosOS )
            
            //Verifica se há insumos realizados
            If ValType( aDadosOS[ nOrdem, 5 ] ) == "A" 
                aInsumos := aClone( aDadosOS[ nOrdem, 5 ] )
            
                //Percorre o array de insumos realizados
                For nInsumo := 1 to Len( aInsumos )
                   
                    If !aTail( aInsumos[ nInsumo ] ); //Verifica se não está deletado
                        .And. aInsumos[ nInsumo, nPosTipReg ] == "M"; //Verifica se é insumo do tipo MDO
                        .And. aInsumos[ nInsumo, nPosDtInic ] < dDatabase // Verifica se a data é menor que a data atual
                        
						//Apresenta para o usuário o número da OS que há uma inconsistência
                        MsgAlert( "Ordem " + aDadosOS[ nOrdem, 1 ] +  ": a data dos insumos tipo mão de obra não pode ser menor que a data atual.")
                        
                        //Quando há problema, deve retornar falso
                        RestArea( aArea )
                        Return .F.            
                    EndIf
                    
                Next nInsumo

            EndIf
        Next nOrdem
        
        //Quando não houver problema retorna sucesso na validação
        RestArea( aArea )
        Return .T.
    EndIf
 
Return