Histórico da Página
Ponto de Entrada para customização da impressão de ordens de serviço.
Características do Requisito
Linha de Produto: | Microsiga Protheus | ||||||||||||||||||||||
Segmento: | Manufatura | ||||||||||||||||||||||
Módulo: | SIGAMNT - Manutenção de Ativos e Gestão de Frotas - SIGAMNT | ||||||||||||||||||||||
Rotina: |
| de O.S.Rotina(s) envolvida(s)
| |||||||||||||||||||||
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 partirpara 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)> Programação de O.S | . Mod. | 2 (MNTA435)Árvore Lógica (MNTA902) | ||||||||||||||||||||||||||||||||||||||
Programa Fonte: | MNTUTIL_OS.PRW MNTA295.prx MNTA990.prx | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Função: | MNTIMPOS() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Parâmetros: |
| Obrigatório |
| Não |
| Não
| Não |
| Não
| Não |
| selecionadas no Browse
| Utilizado
| e
| Carácter
| Carácter
| Não
|
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, 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, Caracter, Numero da O.S. Posicionada
@param nRecOs, Numérico, Recno da O.S. Posicionadaconforme seleção
/*/
//-------------------------------------------------------------------
Static Function fOpcUser(cOrdem, nRecOs)
MsgInfo('OS : ' + cOrdem + ' | Recno : ' + cValToChar(nRecOs) , 'ATENCAO')
Return
//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
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 +cMensagem := 'Ordem : ' + aMatOs[nX, 2] + ' | - Plano : ' + aMatOs[nX, 1] + "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"
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: " + IfDtoC( nOpRedDtPrev ==) 1 .And. !Empty( aMatOs )
+ 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
Next EndIf
Return
User Function RelEspe( cNumOrd, nRecnOs )
nIndex
MsgInfo('Ordem ' + cNumOrd + ' Recno ' + cValToChar( nRecnOs )cMensagem, cCabec )
Return |