Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
ustomização

Customização do conteúdo dos campos apresentados na finalização da O.S.

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

MNTA400

Retorno O.S.

MNTA435Retorno O.S. Mod. 2

Chamados Relacionados

MNG-2862                                                       

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:

Ponto de entrada para preencher automaticamente os campos na finalização de O.S.

Localização:

SIGAMNT: Atualizações/Controle de Oficina/Retorno O.S./Retorno

SIGAMNT: Atualizações/Controle de Oficina/Retorno O.S./Retorno Mod. 2

Eventos:

Finalização de O.S. Retorno (NG400FIM)

Finalização de O.S. Retorno Mod. 2 (fFina435)

Programa Fonte:

MNTA400.PRX

MNTA435.PRX

Função:

NG400FIM()

fFina435()

 

 

Bloco de código
language

Exemplo:

 
cpp
themeEclipse
titleExemplo
#include "Protheus.ch"
 

 #include "rwmake.ch"

User Function MNT40012()
    

    //Indica se o ponto de entrada é chamado pela finalização de O.S. do
MNTA435    Local lRetMod2
 MNTA435
    Local lRetMod2 := IsInCallStack("Mnt435Fin")
    

    //Variavel de contador do laço de
repetição
    Local nX := 1
    
 repetição
    Local nX
    Local nMdo := 1 
    //+---------------------------------------------------------------------------------+
    

    //| Variavel de retorno (array), deve receber o conteudo a
|    
 |
    //| ser usado como relação dos campos no modelo:
|    
 |
    //| {"TJ_DTPRINI","SToD('"+DToS(dDtIni)+"')"}
|    
 |
    //| Sendo:
|    
 |
    //| primeira posição o nome do campo que receberá o conteúdo
|    
 |
    //| segunda posição o conteúdo que o campo receberá (o conteúdo deve ser executavel
|    
 |
    //+---------------------------------------------------------------------------------+
    Local aArray    

    Local aArray    := {}
    

    //Variaveis com o conteudo a ser passado para a variavel de
retorno    Local dDtIni    :=
 retorno
    Local dDtIni    := StoD(Space(TamSx3("TJ_DTPRINI")[1]
    Local cHrIni    :=
))
    Local cHrIni    := Space(TamSx3("TJ_HOPRINI")[1]
    Local dDtFim    :=
)
    Local dDtFim    := StoD(Space(TamSx3("TJ_DTPRFIM")[1]
    Local cHrFim    :=
))
    Local cHrFim    := Space(TamSx3("TJ_HOPRFIM")[1]
    
)
    //Variaveis utilizadas para verificação do acols, quando PE chamado pelo
MNTA435
    Local aHeader
    Local aCols
    Local nTpReg
    Local nDtIni
    Local nHrIni
    Local nDtFim
    Local nHrFim
    If lRetMod2
        aHeader := ParamIxb[1]
        aCols   := ParamIxb[2]
        If Len(aHeader) > 0 .And. Len(aCols) > 0 //Verifica se o array de insumos possui conteúdo
            //Pega a posição correspondente dos campos
            nTpReg :=
 MNTA435
    Local aHeader
    Local aCols
    Local nTpReg
    Local nDtIni
    Local nHrIni
    Local nDtFim
    Local nHrFim
    If lRetMod2
        aHeader := ParamIxb[1]
        aCols   := ParamIxb[2]
        If Len(aHeader) > 0 .And. Len(aCols) > 0 //Verifica se o array de insumos possui conteúdo
            //Pega a posição correspondente dos campos
            nTpReg := aScan(aHeader,{|x| Trim(Upper(x[2])) == "TL_TIPOREG"})
            nDtIni

            nDtIni := aScan(aHeader,{|x| Trim(Upper(x[2])) == "TL_DTINICI"})
            nHrIni

            nHrIni := aScan(aHeader,{|x| Trim(Upper(x[2])) == "TL_HOINICI"})
            nDtFim

            nDtFim := aScan(aHeader,{|x| Trim(Upper(x[2])) == "TL_DTFIM"})
            nHrFim

            nHrFim := aScan(aHeader,{|x| Trim(Upper(x[2])) == "TL_HOFIM"})
            

            //Efetua a lógica para o valor a ser passado para os
campos
            For nX := 1 To Len(aCols)
                If
 campos
            For nX := 1 To Len(aCols)
                If aCols[nX][nTpReg] == "M"
                    If nX == 1
                        dDtIni :=
 .And. !aCols[nX][Len(aCols[nX])]
                    If nMdo == 1
                        dDtIni := aCols[nX][nDtIni]
                        cHrIni :=

                        cHrIni := aCols[nX][nHrIni]
                        dDtFim :=

                        dDtFim := aCols[nX][nDtFim]
                        cHrFim :=

                        cHrFim := aCols[nX][nHrFim]
                    Else
                        If

                    Else
                        If DtoS(aCols[nX][nDtIni]) + aCols[nX][nHrIni] < DtoS(dDtIni)+cHrIni
                            dDtIni :=

                            dDtIni := aCols[nX][nDtIni]
                            cHrIni :=

                            cHrIni := aCols[nX][nHrIni]
                        EndIf
                        If

                        EndIf
                        If DtoS(aCols[nX][nDtFim]) + aCols[nX][nHrFim] > DtoS(dDtFim)+cHrFim
                            dDtFim :=

                            dDtFim := aCols[nX][nDtFim]
                            cHrFim :=

                            cHrFim := aCols[nX][nHrFim]
                        EndIf
                    EndIf
                EndIf
            Next nX
        EndIf
    Else
        //Caso não seja chamado pelo MNTA435, indica que o PE foi chamado pelo MNTA400
        //Então realiza a busca na tabela de insumos ao invés do array.
        dbSelectArea("STL")
        dbSetOrder(4)

                        EndIf
                    EndIf
                    nMdo++
                EndIf
            Next nX
        EndIf
    Else
        //Caso não seja chamado pelo MNTA435, indica que o PE foi chamado pelo MNTA400
        //Então realiza a busca na tabela de insumos ao invés do array.
        dbSelectArea("STL")
        dbSetOrder(4) //TL_FILIAL+TL_ORDEM+TL_PLANO+TL_TIPOREG+TL_CODIGO
        

        dbSeek(xFilial("STL") + STJ->TJ_ORDEM + STJ->TJ_PLANO + "M"
)        While
 )
        While !Eof() .And. STL->TL_ORDEM == STJ->TJ_ORDEM .And.;
                STL

                STL->TL_PLANO == STJ->TJ_PLANO .And. STL->TL_TIPOREG == "M"
            If

            If STL->TL_SEQRELA <> "0"
                If nX == 1
                    dDtIni := STL->TL_DTINICI
                    cHrIni := STL->TL_HOINICI
                    dDtFim := STL->TL_DTFIM
                    cHrFim := STL->TL_HOFIM
                Else
                    If

                If nMdo == 1
                    dDtIni := STL->TL_DTINICI
                    cHrIni := STL->TL_HOINICI
                    dDtFim := STL->TL_DTFIM
                    cHrFim := STL->TL_HOFIM
                Else
                    If DtoS(STL->TL_DTINICI) + STL->TL_HOINICI < DtoS(dDtIni)+cHrIni
                        dDtIni :=

                        dDtIni := STL->TL_DTINICI
                        cHrIni :=

                        cHrIni := STL->TL_HOINICI
                    EndIf
                    If

                    EndIf
                    If DtoS(STL->TL_DTFIM) + STL->TL_HOFIM > DtoS(dDtFim)+cHrFim
                        dDtFim :=

                        dDtFim := STL->TL_DTFIM
                        cHrFim :=

                        cHrFim := STL->TL_HOFIM
                    EndIf
                EndIf
                nX++
            EndIf
            dbSkip()
        EndDo
    EndIf
    //Preenche o array de retorno com os campos e o conteúdo que receberá.
    aAdd(aArray,

                    EndIf
                EndIf
                nMdo++
            EndIf
            dbSkip()
        EndDo
    EndIf
    //Preenche o array de retorno com os campos e o conteúdo que receberá.
    aAdd(aArray, {"TJ_DTPRINI", "SToD('"+DToS(dDtIni)+"')"})
    

    aAdd(aArray, {"TJ_HOPRINI", "'"+cHrIni+"'"})
    

    aAdd(aArray, {"TJ_DTPRFIM", "SToD('"+DToS(dDtFim)+"')"})
    

    aAdd(aArray, {"TJ_HOPRFIM", "'"+cHrFim+"'"})

Return aArray