Árvore de páginas

Versões comparadas

Chave

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

Monta tela de consulta padrão (F3)

Informações
titleAtenção!
  • Este ponto de entrada está disponível a partir da versão 12.1.17 - Set/2018.
  • Este ponto de entrada é dependente dos demais pontos de entrada citados em "Pontos de Entrada Envolvidos".

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

MNTI0052

Portal SS - Tela de inclusão de SS

Ponto(s) de Entrada Envolvido(s)

Descrição

MNTCAMUSPermite incluir campos na tela inclusão de SS, quando aberto pelo portal SS

MNTI5SXB

Monta consulta padrão (F3).

MNTPORSS

Manipulação dos campos inclusos pelo usuário na tela de inclusão de SS, quando aberto pelo portal de SS
MNTPORSAVSalva informações dos campos adicionados em tela pelo usuário.

Issues Relacionadas

DNG-357

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:

Possibilita ao usuário montar a tela de consulta padrão.

Localização:

Portal de SS.

Eventos:

Inclusão de SS(MNTI0052)

Programa Fonte:

MNTI5SXB.ahu

Observações:
  • O exemplo abaixo mostra como criar uma tela de consulta padrão para que seja possível utiliza-la no Portal de SS.

 

Informações
titleAtenção!
  • A extensão do fonte abaixo deverá ser ".AHU", por se tratar de um fonte de usuário para Web.
Bloco de código
languagesql
titleExemplo
<%
#DEFINE _nQUSCODIGO_ 01
#DEFINE _nQUSNOME_ 02
#DEFINE _nQUSNOMECOMP_ 04

//-------------------------------------------------------------------
/*/{Protheus.doc} MNTI5SXB
Tela Generica de Consulta Padrao

@author  Eduardo Mussi
@since   20/08/2018
@version P12
/*/
//-------------------------------------------------------------------

	Local cLINHACOLOR, lLINHACOLOR, nPos, nTamCol, lCbox, cPicture, nIndice
	Local aPages, nRecno, nNxtRc, i, j
	Local cHeader    := B_CHeader("Portal Inclus&atilde;o de SS - Consulta")
	Local id_pesq    := Trim(HttpSession->cSeek)
	Local cConPad    := HttpSession->cSearch
	Local cAlias     := HttpSession->cAliasSXB
	Local nInd       := HttpSession->nIndSXB
	Local aCamposSXB := {}
	Local nTamBrw    := 5
	Local cRetorno   := ''
	Local cNomeCon   := ''
	Local cContem    := ''
	Local cDescCmp   := ''
	Local nTamCpo	 := ''

	cNomeCon := AllTrim( Posicione( 'SXB', 1, Padr( cConPad, 6 )+"101", 'XB_DESCRI' ) )

	dbSelectArea("SXB")
	dbSetOrder(1)
	// Nome da consulta padrão + Tipo + Sequencia
	dbSeek(Padr(cConPad,6)+"401")
	While !EoF() .And. SXB->(XB_ALIAS+XB_TIPO+XB_SEQ) == Padr(cConPad,6) + "401"

		nTamCol := 15
		lCbox   := .F.
		cPicture:= ''
		cTipo   := ''
		cContem := AllTrim(SXB->XB_CONTEM)
		If At(">",cContem) > 0 .and. Len(cContem) <= 154
			cContem := Substr(cContem, (At(">",cContem)+1))
		Endif

		cDescCmp:= AllTrim(SXB->XB_DESCRI)
		
		// Pega informações na SX3.		
		lCbox   := ( !Empty( Posicione( 'SX3', 2, cContem, 'X3_CBOX' ) ) )
		nTamCpo := Posicione( 'SX3', 2, cContem, 'X3_TAMANHO' )
		nTamCol := IIf( nTamCpo < 15, 15, ( nTamCpo + 20 ) )
		cPicture:= AllTrim( Posicione( 'SX3', 2, cContem, 'X3_PICTURE' ) )
		cDescCmp:= RetTitle( cContem )
	    
	    nTamCol := nTamCol*5
	    nTamBrw += nTamCol
		aAdd(aCamposSXB, {cDescCmp, AllTrim(SXB->XB_CONTEM), nTamCol, lCbox, cPicture})
		dbSelectArea("SXB")
		dbSkip()
	EndDo

	dbSelectArea("SXB")
	dbSetOrder(1)
	// Nome da consulta padrão + Tipo + Sequencia
	dbSeek(Padr(cConPad,6)+"501",.T.)
	While SXB->XB_ALIAS == Padr(cConPad,6) .And. SXB->XB_TIPO == "5"
		cRetorno += AllTrim(SXB->XB_CONTEM)+";"
		SXB->(dbSkip())
	EndDo
	cRetorno := SubStr(cRetorno,1,Len(cRetorno)-1)

	//Verifica tamanho do Browse
	If nTamBrw < 560
		If Len(aCamposSXB) > 0
			aCamposSXB[Len(aCamposSXB)][3] += (560 - nTamBrw)
		Endif
		nTamBrw := 560
	Endif
%>

<%=cHeader%>

<style type="text/css">

body {
	margin: 5px;
}

a{
	text-decoration: none;
	color: #253453;
	font-weight: bold;
}

a:link, a:visited{
	color: #253453;
	font-weight: bold;
}

a:hover{
	background-color:#8ca0c7;
	color: #FFFFFF;
	font-weight: bold;
}
a:active{
	color: #253453;
	font-weight: bold;
}

a.pagina{
	text-decoration: none;
	color: #FFFFFF;
	font-weight: none;
}

a.pagina:link, a.pagina:visited{
	color: #FFFFFF;
	font-weight: none;
}

a.pagina:hover{
	color: #FFFFFF;
	font-weight: bold;
}
a.pagina:active{
	color: #FFFFFF;
	font-weight: bold;
}

.divrolagem {
/* define barra de rolagem automatica quando o
conteudo ultrapassar o limite em x ou y */
        overflow: auto;
/* define o limite maximo da autura do div */
        height: 300px;
/* define o limite maximo da largura do div */
        width: 580px;

        padding-top: 5pt;
}
/*Mantem cabecalho do browse estatico*/
.rowHeader
{
	position:relative;
	top: expression(offsetParent.scrollTop);
	height:18px;
	z-index: 20;
	background-color: #263957;
}

</STYLE>
<script language="Javascript">

function fcSeleciona(cCodRet, cCamposAtu)
{
	var aRet = cCodRet.split(';')
	var aCampos = cCamposAtu.split(';');
	for(i=0; i<aCampos.length;i++){
		window.opener.document.getElementById(aCampos[i]).value = aRet[i];
		window.opener.document.getElementById(aCampos[i]).focus();
	}

	close();
	return;
}

function fcPesquisar()
{
	document.forms[0].cPESQUISA.value = document.forms[0].f_nome.value;
	document.forms[0].action = 'B_fSXBPAD.APW';
	document.forms[0].submit();
}

function cancelar()
{
	dc.focus();
	close();
}

function getStrInPos(cSTR,nAll,nPos,cDiv){
	<%/*Funcao recebe string de campos e retorna um campo determinado*/%>
	<%/*cSTR:string de campos:"CAMPO1#CAMPO2#CAMPO3#...#" / nAll:qnt.total / nPos:campo.retorno*/%>
	aArray = new Array (nAll-1);
	cTXT = cSTR;
	nI = 0;
  	for (c=0;c<nAll;c++){
  		aArray[c] = "";
  	}
  	for (c=0;c<nAll;c++){
		nP = cTXT.indexOf(cDiv);
		aArray[c] = cTXT.substring(nI,nP);
		cTXT = cTXT.substring((nP+1),cTXT.length);
	}
	cReturn = aArray[(nPos-1)];
	return cReturn;
}

</script>

<form name='MNTI5SXB' method='post' action=''>
<opener.location.reload()>
<body onLoad="document.MNTI5SXB.f_nome.focus()">

<INPUT TYPE="HIDDEN" NAME="cPESQUISA" VALUE="">
<INPUT TYPE="HIDDEN" NAME="cNumRec" value='<%=HttpSession->cNumRec%>'>
<INPUT TYPE="HIDDEN" NAME="cCurPag" value='<%=HttpSession->cCurPag%>'>

<div id="divCabec" style="width: 580px;">
	<div id="bordaCabec" style="width: 580px;">
		<b class="bordaEsqAzul1"></b><b class="bordaEsqAzul2"></b><b class="bordaEsqAzul3"></b><b class="bordaEsqAzul4"></b>
		<div id="tituloCabec" class="divtitulo" style="width: 100%; height:15px;">
			<span style="padding: 0pt 0pt 0pt 10pt">Preencha o campo abaixo e clique em Pesquisar.</span>
		</div>
		<b class="bordaDirAzul4"></b><b class="bordaDirAzul3"></b><b class="bordaDirAzul2"></b><b class="bordaDirAzul1"></b>
	</div>
</div>

<div id="divIndices" style="width: 580px; background-color: #FFFFFF; padding-bottom: 10pt">

	<table>
		<tr width="100%">
			<td colspan="2"><span class="txtTitulo" style="padding: 0pt 0pt 0pt 10pt;">Consulta <%=cNomeCon%></span></td>
		</tr>
		<tr>
			<td width="290px" align="left" style='padding: 0pt 0pt 0pt 10pt'>
				<input name="f_nome"  type="text"  id="f_nome" size="50" onChange='fcPesquisar();' style="width:270px;">
			</td>
			<td>
				<input type="button" name="Submit" value="Pesquisar" onclick="fcPesquisar();" onmouseover="this.style.cursor='pointer'"/>
			</td>
		</tr>
		<tr width="100%">
			<td colspan="2" width="290px" align="left" style='padding: 0pt 0pt 0pt 10pt'>
				<select size="1" name="indices" style="width:275px;">
				<%//Monta ComboBox com Indices da Pesquisa
				If cConPad == "QUS"
						For i:=1 to Len(aCamposSXB)
							nIndice := aCamposSXB[i][6]
							If nIndice == nInd%>
								<option selected value="<%=nIndice%>"><%=aCamposSXB[i][1]%></option>
							<%Else%>
								<option value="<%=nIndice%>"><%=aCamposSXB[i][1]%></option>
							<%Endif
						Next i
					Else
						dbSelectArea("SIX")
						dbSetOrder(1)
						dbSeek(cAlias)
						While !Eof() .and. SIX->INDICE == cAlias
							If Val(SIX->ORDEM) > 0
								nIndice := Val(SIX->ORDEM)
							Else
								nIndice++
							Endif
							If nIndice == nInd%>
								<option selected value="<%=nIndice%>"><%=SixDescricao()%></option>
							<%Else%>
								<option value="<%=nIndice%>"><%=SixDescricao()%></option>
				<%			Endif
							dbSelectArea("SIX")
							dbSkip()
						EndDo
					Endif
				%>
				</select>
			</td>
		</tr>
		</tr>
	</table>
</div>
<%
	aPages := StrTokArr(HttpSession->cNumRec,';')
	nRecno := IIf(Val(HttpSession->cCurPag) <= Len(aPages), Val(aPages[Val(HttpSession->cCurPag)]  ), 0 )
	nNxtRc := IIf(Val(HttpSession->cCurPag) < Len(aPages) , Val(aPages[Val(HttpSession->cCurPag)+1]), 0 )
%>

<div id="bordaPags" style="width: 580px;">
	<b class="bordaEsqAzul1"></b><b class="bordaEsqAzul2"></b><b class="bordaEsqAzul3"></b><b class="bordaEsqAzul4"></b>
	<div id="divPags" class="divtitulo" style="width: 100%; height: 40px;">
		<div id="txtPags" class="divtitulo" style="width: 100%; height:20px;">
		    <span style="padding: 5pt 0pt 0pt 10pt">Para selecionar um Registro, clique sobre um dos campos da linha.</span>
		</div>
	</div>
	<b class="bordaDirAzul4"></b><b class="bordaDirAzul3"></b><b class="bordaDirAzul2"></b><b class="bordaDirAzul1"></b>
</div>

<div class="divrolagem">
	<table width="<%=nTamBrw%>" id="browse">
	    <thead>
			<tr align="left" valign="middle" class="rowHeader">
				<%For i:=1 To Len(aCamposSXB)%>
					<th width="<%=aCamposSXB[i][3]%>">
						<span class="headerField"><%=aCamposSXB[i][1]%></span>
					</th>
				<%Next i%>
			</tr>
		</thead>
		<tBody>
			<%lLINHACOLOR := .T.

				dbSelectArea(cAlias)
				dbSetOrder(nInd)
				dbSeek(id_pesq)
				dbGoTo(nRecno)

				While (cAlias)->(!Eof()) .And. nNxtRc != &(cAlias+"->(RecNo())") .and. Substr(&(cAlias+"->("+IndexKey()+")"),1,Len(id_pesq)) == id_pesq

					%>

					<tr class="linhaBrowse">
						<%
						If lLINHACOLOR
							cLINHACOLOR := "WHITE"
							lLINHACOLOR := .F.
						Else
							cLINHACOLOR = "#dae3f2"
							lLINHACOLOR := .T.
						EndIf
						For i:=1 To Len(aCamposSXB)
							If aCamposSXB[i][4]
								cColuna := Substr(NGRETSX3BOX(aCamposSXB[i][2],&(aCamposSXB[i][2])),1,aCamposSXB[i][3])
							Else
								cColuna := &(aCamposSXB[i][2])
							Endif

							If !Empty(aCamposSXB[i][5])
								cColuna := Transform(cColuna,aCamposSXB[i][5])
							Endif
							%>
							<td width="<%=aCamposSXB[i][3]%>" height="12" bgcolor="<%=cLINHACOLOR%>" style="text-align:left">
								<span class="celula">
									<%
										aRet := StrTokArr(cRetorno,';')
										cRet := ""
										For j := 1 To Len(aRet)
											cRet += &(aRet[j])+";"
										Next j
										cRet := SubStr(cRet,1,Len(cRet)-1)
									%>
									<a href="javascript:fcSeleciona('<%=(cRet)%>', '<%=HttpSession->cField%>')">
									<%=cColuna%></a>
								</span>
							</td>
						<%Next i%>
					</tr>
				  <%dbSelectArea(cAlias)
					dbSkip()
				EndDo%>
		</tBody>
	</table>
</div>

<div id="bordaPags" style="width: 580px;">
	<b class="bordaEsqAzul1"></b><b class="bordaEsqAzul2"></b><b class="bordaEsqAzul3"></b><b class="bordaEsqAzul4"></b>
		<div id="divPags" class="divtitulo" style="height:15px;">
			<table width="100%" border="0" cellspacing="0" cellpadding="0">
			</table>
		</div>
	<b class="bordaDirAzul4"></b><b class="bordaDirAzul3"></b><b class="bordaDirAzul2"></b><b class="bordaDirAzul1"></b>
</div>
</form>
</body>
</html>