Á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

de 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:

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

/ Oificina/// Oificina/// Oificina/// Oificina/// Oificina/// Oificina/// Oificina//ObrigatórioNão selecionadas no Browse(Utilizado e 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.

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

> Programação de O.S.

Eventos:

Alteração de O.S. (MNTA265)
Retorno O.S. (MNTA400)
Ordem de Serviço Corretiva (MNTA420)
Retorno de O.S. Mod. 2 (MNTA435)
Árvore Lógica (MNTA902)
Controle de Portaria (MNTA985)
Programação O.S. (MNTA990)

Programa Fonte:

MNTUTIL_OS.PRW

MNTA295.prx

MNTA990.prx

Função:

MNTIMPOS()

Parâmetros:
NomeTipoDescrição
PARAMIXB[1]CarácterPlano O.S.
PARAMIXB[2]CarácterOrdem de Serviço
Não
PARAMIXB[3]DataData Inicial Prevista
Não
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.

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 aOptions  := {'Relatório 1 ', 'Relatório 2'}
    Local nOptlOk      := 0.F.
    Local oPnlPai   := Nil
    Local oDlgImp   := Nil
    Local lRot265   := cPrograma == 'MNTA265'
    Local lRot990   := cPrograma == 'MNTA990'

oGroup1

    Private nOpRe   := 1

    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, 'OpcoesOpções', oPnlPai,,,.T.)

    If lRot265
        aOptions := { 'Opcao de Impressao 1' }
    Else
        aOptions := { 'Opcao de Impressao 1', 'Opcao de Impressao 2' }
    EndIf

    TRadMenu():New( 015, 035, aOptions, {|u| IIf( PCount() == 0, nOpRe, nOpRe := u )}, oPnlPai,,,,,,,, 60, 10,,,, .T.)
 
    Activate MsDialog oDlgImp On Init EnchoiceBar( oDlgImp, {|| nOptlOk := 1.T., oDlgImp:End() }, {|| oDlgImp:End() }) Centered
 
    If nOpt != 0
lOk
        fValRot(lRot265, nOpRe, lRot990fCustomize()

    Endif
 
Return

//-------------------------------------------------------------------
/*/{Protheus.doc} fOpcUserfCustomize
FunçãoImprime 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. Posicionadaconforme seleção

/*/
//-------------------------------------------------------------------
Static Function fOpcUser(cOrdem, nRecOs)
fCustomize()

    Local aParams   := PARAMIXB
    Local cPlano    := "" 
    Local cOrdem    := "" 
    Local dDtPrev   := "" 
    Local cDePlano  := ""
    Local cAtePlano := ""
    Local aMarcadas := ""
    Local cCabec    := "Ordens Marcadas"
    Local cMensagem := IIF( nOpRe == 1, "Relatório 1:", "Relatório 2:" ) + CRLF
    Local nIndex    := 0

    // Define as variáveis conforme parâmetros
    MsgInfo('OS : ' + cOrdem + ' | Recno : ' + cValToChar(nRecOs) , 'ATENCAO')

Return

//If Len( aParams ) > 0
        cPlano    := aParams[1] // Plano
        cOrdem    := aParams[2] // Ordem de Serviço
        dDtPrev   := aParams[3] // Data Prevista
        
        If Len( aparams ) > 3
            cDePlano  := aparams[4] // De Plano ( utilizado apenas no MNTA265 )
            cAtePlano := aparams[5] // Até Plano ( utilizado apenas no MNTA265 )
            aMarcadas := aparams[6] // Ordens de serviço marcadas ( utilizado apenas no MNTA265 e MNTA990)
        EndIf
    EndIf

    If nOpRe == 1
        //----------------------------------------------------------------------------
/*/{Protheus.doc} fOpcUser2
Função Generica para apresentar O.S. selecionadas nas rotinas
MNTA265 e MNTA990

@author  Eduardo Mussi
@since   26/06/2018
@version P12
@param   aMatOs, Array, Contém informações da O.S.
/*/
//---
        // Para customizações, acione uma função específica para impressão de relatório
        //-------------------------------------------------------------------------------
Static  Function fOpcUser2(aMatOs)

    Local cOrdenscMensagem := ''
    Local nX
"Relatório 1:" + CRLF
    ForElse nX := 1 To Len(aMatOs)
        // Verifica se a O.S. já foi adicionada, caso não, adiciona a O.S. e o Plano na string cOrdens.-------------------------------------------------------------------------------
        // Para customizações, acione uma função específica para impressão de relatório
        If !( aMatOs[ nX, 2 ] $ cOrdens )//-------------------------------------------------------------------------------
            cOrdens += 'Ordem : ' + aMatOs[nX, 2] + ' | - Plano : ' + aMatOs[nX, 1]cMensagem := "Relatório 2:" + CRLF
        EndIf
    Next nX

    If !Empty(cOrdens)
        MsgInfo(cOrdens, 'ATENCAO')
    EndIf

Return

//
    //-----------------------------------------------------------------------------------------------------------------
    //----------------------------------------------------------------------------------------------------------------
/*/{Protheus.doc} fValRot
Valida chamada de Rotina

@author  Eduardo Mussi
@since   26/06/2018
@version P12
@param   lRot265, Lógico,   Valida se chamada é feita pela Rotina MNTA265
@param   nOpRe,   Numérico, Opção escolhida pelo usuário
@param   lRot990, Lógico,   Valida se chamada é feita pela Rotina MNTA990
/*/
//-
    // Os trechos definidos abaixo são utilizados apenas para exemplo de impressão dos parâmetros passados pelo PE
    //-----------------------------------------------------------------------------------------------------------------
    //-----------------------------------------------------------------------------------------------------------------

Static Function fValRot(lRot265, nOpRe, lRot990)

    Local cOrdem := PARAMIXB[2] If !Empty( cDePlano ) .And. !Empty( cAtePlano )
    Local aMatOs := IIF( lRot990 .Or. lRot265, PARAMIXB[6], {} ) // Arquivo temporário que possui as O.S.

cMensagem += "De Plano: " + cDePlano + CRLF 
       If lRot265
cMensagem += "Até Plano: " + cAtePlano + //TratativaCRLF realizada
 para chamada através da rotina MNTA265 EndIf

    If Len( aMarcadas ) cDePlano  :== PARAMIXB[4]0
        cAtePlanoIf := PARAMIXB[5]
     Empty( cPlano ) .And. Empty( cOrdem )
   // Executa função de impressão selecionada
    cCabec    If nOpRe :== 1"ATENÇÃO"
            fOpcUser2( aMatOs ) // Opção UsuáriocMensagem += "Não há ordens para impressão!"
        EndIfElse
    Else
        nRecOs := STJ->( Recno()If !Empty( dDtPrev )

        // Executa função de impressão selecionada
   cMensagem += "Data Prevista: " If nOpRe == 1 .And. !Empty( aMatOs )
+ DtoC( dDtPrev ) + CRLF
            EndIf
   fOpcUser2( aMatOs ) // Opção Usuário
    cCabec    ElseIf:= nOpRe"Ordem ==de 1Serviço"
            fOpcUser( cOrdem, nRecOs ) // Opção UsuárioaMarcadas := {{ cPlano, cOrdem }}
        ElseIf nOpRe == 2EndIf
    EndIf

    For nIndex := 1 //To ChamadaLen( deaMarcadas relatório)
 especifico
       cMensagem += 'Ordem : ' U_RelEspe( cOrdem+ aMarcadas[nIndex, nRecOs2] )+ //' Opção| Usuário
- Plano : ' + aMarcadas[nIndex, 1] + EndIfCRLF

    EndIf

Return

User Function RelEspe( cNumOrd, nRecnOs )

Next nIndex
 
    MsgInfo('Ordem ' + cNumOrd + ' Recno ' + cValToChar( nRecnOs )cMensagem, cCabec )

Return