Histórico da Página
Impressão de 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: |
| ||||||||||||||||||||
Issues Relacionadas | 12.1.17 | ||||||||||||||||||||
País(es): | Todos | ||||||||||||||||||||
Banco(s) de Dados: | Todos | ||||||||||||||||||||
Sistema(s) Operacional(is): | Todos |
Ponto de Entrada
Descrição: | Ponto de Entrada que permite inserir opções no relatórios de O.S. 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)de O.S | . Mod. | 2 (MNTA435)Árvore Lógica (MNTA902) | |||||||||||||||||||||||||||||||||
Programa Fonte: | MNTUTIL_OS.PRW MNTA295.prx MNTA990.prx | |||||||||||||||||||||||||||||||||||||
Função: | MNTIMPOS() | |||||||||||||||||||||||||||||||||||||
Parâmetros: |
|
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#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, lRot990) fCustomize() 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, Caracter, 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 MNTA990 e MNTA265 ) 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) //----------------------------------------------------------------------------------------------------------------- LocalIf cOrdem := PARAMIXB[2] Local aMatOs := IIF( lRot990 .Or. lRot265, PARAMIXB[6], {} ) // Array que possui as O.S.'s selecionadas pelo usuário. If lRot265 //Tratativa realizada para chamada através da rotina MNTA265 cDePlano := PARAMIXB[4]!Empty( cDePlano ) .And. !Empty( cAtePlano ) cMensagem += "De Plano: " + cDePlano + CRLF cMensagem += "Até Plano: " + cAtePlano + CRLF EndIf If Len( aMarcadas ) == 0 cAtePlanoIf := PARAMIXB[5] Empty( cPlano ) .And. Empty( cOrdem ) // Executa função de impressão selecionada cCabec If nOpRe :== 1"ATENÇÃO" cMensagem fOpcUser2( aMatOs ) // Opção Usuário+= "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 |