Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Impressão de O.S.

Ponto de Entrada para customização da impressão de ordens de serviço. 

Características do Requisito

O.S.Rotina(s) envolvida(s).12.117Todos

Linha de Produto:

Microsiga Protheus

Segmento:

Manufatura

Módulo:

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

Rotina:

Rotina

Nome Técnico

MNTR676

Relatório de

Ordem de Serviço

Rotinas envolvidas

Nome Técnico

MNTA265

Alteração de O.S.

MNTA400Retorno O.S.
MNTA420Ordem de Serviço Corretiva
MNTA435Retorno de O.S. Mod. 2
MNTA902Árvore Lógica
MNTA985Controle de Portaria
MNTA990Programação O.S

Issues Relacionadas

.

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Ponto de Entrada

/ Oificina/// Oificina/// Oificina/// Oificina/// Oificina/// Oificina/// Oificina//Programação de O.S.Alteração de O.S. (MNTA265)
Retorno O.S. (MNTA400)
Ordem de Serviço Corretiva (MNTA420)
Retorno . Mod 2 (MNTA435)Árvore Lógica (MNTA902)
Controle de Portaria (MNTA985)
Programação O.S. (MNTA990)NãoNão Informações da CarácterCarácterNão

Descrição:

Ponto de Entrada

que permite inserir opções no relatórios de O.S. a partir

para customização da impressão de ordens de serviço a partir das rotinas supracitadas

acima

.

Localização:

SIGAMNT: Atualizações

> Controle de

Oficina > Manutenção

> Alteração de O.S.

SIGAMNT: Atualizações

> Controle de

Oficina > Retorno de O.S.

> Retorno

SIGAMNT: Atualizações

> Controle de

Oficina > Ordem de Serviço

> Corretiva

SIGAMNT: Atualizações

> Controle de

Oficina > Retorno de O.S.

> Retorno Mod.2

SIGAMNT: Atualizações

> Controle de

Oficina > Árvore

Árvore

SIGAMNT: Atualizações

> Controle de

Oficina > Controle de Portaria

> Portaria

SIGAMNT: Atualizações

> Controle de

Oficina > Plano de Manutenção

Eventos:

> Programação de O.S

.

Programa Fonte:

MNTUTIL_OS.PRW

MNTA295.prx

MNTA990.prx

Função:

MNTIMPOS()

Parâmetros:
NomeTipoDescrição
Obrigatório
PARAMIXB[1]CarácterPlano O.S.
Não
PARAMIXB[2]CarácterOrdem de Serviço
PARAMIXB[3]DataData Inicial Prevista
PARAMIXB[4]CarácterDe Plano
Não
(utilizado somente pela rotina de Alteração de O.S.)
PARAMIXB[5]CarácterAté Plano
Não
(utilizado somente pela rotina de Alteração de O.S.)
PARAMIXB[6]Array

Contém as

O.S.'s marcadas ( utilizado somente pelas rotinas de Alteração de O.S. e Programação de O.S. )

NomeTipoDescrição
Array[1,1]
CaracterPlano O.S.
Array[1,2]
CaracterOrdem de Serviço
ParamIXB[7]Caracter

Alias utilizado para acessar os registros temporários.

Informações
titleObservação

Este parâmetro tem utilidade apenas ao acionar o relatório pela rotina Programação de O.S. - MNTA990.

 

Exemplo:

Bloco de código
languagevbsql
themetitleEclipseExemplo MNTIMPOS
#Include 'Protheus.ch'

//-------------------------------------------------------------------
/*/{Protheus.doc} MNTIMPOS
Apresenta Opções Impressão

@author  Eduardo Mussi
@since   26/06/2018
@version P11/P12
/*/
//-------------------------------------------------------------------
User Function MNTIMPOS()

    Local aMatOs aOptions   := Nil
{'Relatório 1 ',  Local aOptions  := {'Relatório 2'}
    Local cOrdemlOk    := PARAMIXB[2]
    Local lHabPar   := .F. //Habilita Botão de Parâmetros
    Local nOpt      := 0oPnlPai
    Local nOpImp    := 0oDlgImp
    Local nRecOs    := 0
    Local oPnlPai   := NiloGroup1

    LocalPrivate oSay1nOpRe     := Nil
    Local oDlgImp   := Nil1

    Define MsDialog oDlgImp From 00,00 To 270,600 Title "'Modelo de ImpressaoImpressão da Ordem"' Pixel
 
    oPnlPai := TPanel():New(00,00,,oDlgImp,,,,,,320,200,.F.,.F.)
    oPnlPai:Align := CONTROL_ALIGN_ALLCLIENT
 
    oGroup1  := TGroup():New( 005, 030, 095, 130, "'Opções"', oPnlPai,,,.T.)
    aOptions := {"Básica", "Simplificada", "Padrão Normal","Padrão Gráfica", "Completa Normal", "Completa Gráfica", "OS Interna", "Opção Usuário"}

    TRadMenu():New( 015, 035, aOptions, {|u| IIf( PCount() == 0, nOpImpnOpRe, nOpImpnOpRe := u )}, oPnlPai,,,,,,,, 60, 10,,,, .T.)
 
    Activate MsDialog oDlgImp On Init EnchoiceBar( oDlgImp, {|| nOptlOk := 1.T., IIF(nOpImp != 0, oDlgImp:End(), MsgInfo("Escolha uma Opção!", "INVALIDO")) }, {|| oDlgImp:End() }) Centered
 
    If nOptlOk
 != 0

      fCustomize()
  If cPrograma == "MNTA265"
            aMatOs  := PARAMIXB[6]Endif
 
Return

//-------------------------------------------------------------------
/*/{Protheus.doc} fCustomize
Imprime conforme seleção

/*/
//-------------------------------------------------------------------
Static Function fCustomize()

    Local aParams   := PARAMIXB
    Local cPlano   Else
 := "" 
    Local  cOrdem   nRecOs  :=  STJ->( Recno() )
   "" 
    Local dDtPrev   := "" EndIf

    Local cDePlano   Do Case:= ""
    Local cAtePlano := ""
    Local CaseaMarcadas nOpImp =:= 1""
    Local cCabec    :=       MNTBA676(lHabPar, nRecOs, aMATOS, aMATSX1)"Ordens Marcadas"
    Local cMensagem :=      Case nOpImpIIF( nOpRe == 2
1,                MNTSI676(lHabPar, nRecOs, aMATOS, aMATSX1)
  "Relatório 1:", "Relatório 2:" ) + CRLF
    Local nIndex     Case nOpImp =:= 30

    // Define as variáveis conforme parâmetros
    If   MNTR675(lHabPar,,, aMATOS, 1, aMATSX1, nRecOs)Len( aParams ) > 0
        cPlano    Case nOpImp == 4:= aParams[1] // Plano
        cOrdem    := aParams[2] //  MNTR675(lHabPar,,, aMATOS, 2, aMATSX1, nRecOs)Ordem de Serviço
        dDtPrev    Case nOpImp == 5
:= aParams[3] // Data Prevista
        
        If MNTR675Len(lHabPar,,, aMATOS, 3, aMATSX1, nRecOs) aparams ) > 3
            CasecDePlano nOpImp :== 6
                MNTR675(lHabPar,,, aMATOS, 4, aMATSX1, nRecOs aparams[4] // De Plano ( utilizado apenas no MNTA265 )
            CasecAtePlano nOpImp :== 7 .And. cPrograma != "MNTA265"
     aparams[5] // Até Plano ( utilizado apenas no MNTA265 )
           MNTR422(cOrdem)
 aMarcadas := aparams[6] // Ordens de serviço marcadas ( utilizado apenas Caseno nOpImpMNTA265 ==e 8MNTA990)
        EndIf
    EndIf

    If cProgramanOpRe !== "MNTA265"1
        //-------------------------------------------------------------------------------
        // Para   fOpcUser(cOrdemcustomizações, nRecOs)
acione uma função específica para impressão de relatório
         Else//-------------------------------------------------------------------------------
        cMensagem := "Relatório 1:"         fOpcUser2(aMatOs)+ CRLF
    Else            EndIf
        EndCase
    Endif

Return

//--------------------------------------------------------------------------
/*/{Protheus.doc} fOpcUser2
Função Generica para apresentar O.S. Posicionada nas demais chamadas
do ponto de entrada

@author  Eduardo Mussi
@since   26/06/2018
@version P12
@param   cOrdem, Caractér, Numero da O.S. Posicionada
@param   nRecOs, Numérico, Recno da O.S. Posicionada
/*/
//-----
        // Para customizações, acione uma função específica para impressão de relatório
        //-------------------------------------------------------------------------------
Static   Function fOpcUser(cOrdem, nRecOs)

   cMensagem MsgInfo("OS : := "Relatório 2:" + cOrdemCRLF
 + " | Recno : " + cValToChar(nRecOs) ,"ATENÇÃO")

Return

// EndIf

    //-----------------------------------------------------------------------------------------------------------------
    /*/{Protheus.doc} fOpcUser2
Função Generica para apresentar O.S. selecionadas na rotina MNTA265

@author  Eduardo Mussi
@since   26/06/2018
@version P12
@param   aMatOs, Array, Contém informações da O.S.
/*/
///-----------------------------------------------------------------------------------------------------------------
    // Os trechos definidos abaixo são utilizados apenas para exemplo de impressão dos parâmetros passados pelo PE
    //-----------------------------------------------------------------------------------------------------------------
    //-----------------------------------------------------------------------------------------------------------------
Static Function fOpcUser2(aMatOs)

    Local cOrdens := ""
    Local nX

    If !Empty( cDePlano ) .And. !Empty( cAtePlano )
        cMensagem += "De Plano: " + cDePlano + CRLF 
        cMensagem += "Até Plano: " + cAtePlano + CRLF 
    EndIf

    If Len( aMarcadas ) == 0
        If Empty( cPlano ) .And. Empty( cOrdem )
            cCabec    := "ATENÇÃO"
            cMensagem += "Não há ordens para impressão!"
        Else
            If !Empty( dDtPrev )
                cMensagem += "Data Prevista: " + DtoC( dDtPrev ) + CRLF
            EndIf
            cCabec    := "Ordem de Serviço"
            aMarcadas := {{ cPlano, cOrdem }}
        EndIf
    EndIf

    For nXnIndex := 1 To Len(aMatOs aMarcadas )
        cOrdenscMensagem += "'Ordem : "' + aMatOsaMarcadas[nXnIndex, 12] + "' | - Plano : "' + aMatOsaMarcadas[nXnIndex, 21] + CRLF
    Next nXnIndex

    If !Empty(cOrdens)
        MsgInfo(cOrdens cMensagem, cCabec "ATENÇÃO")
    EndIf

Return