Árvore de páginas

Monta tela de consulta padrão (F3)

Atençã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 inserir campos na tela inclusão de SS, quando aberto pelo portal SS

MNTI5SXB

Monta tela consulta padrão (F3).

MNTPORSS

Possibilita validar campos inseridos pelo usuário, montar consulta padrão e manipular o cabeçalho da tela de consulta padrão.
MNTSAVSSSalva informações dos campos inseridos 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.

 

Atenção!

  • A extensão do fonte abaixo deverá ser ".AHU", por se tratar de um fonte de usuário para Web.
Exemplo
<%
//-------------------------------------------------------------------
/*/{Protheus.doc} MNTI5SXB
/*/
//-------------------------------------------------------------------
 
    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:= ''
        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%>
<%
//------------------------------------ 
// Inicio da estilização da pagina.
//------------------------------------
%>
<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;
	}
<% 
//------------------------------------ 
// Fim da estilização da pagina.
//------------------------------------
%>
</STYLE>
<script language="Javascript">
 
<%
//------------------------------------ 
// Seleciona registro e popula campo.
//------------------------------------
%>
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;
}
<%
//------------------------------------ 
// Pesquisa valor informados no campo
// de pesquisa.
//------------------------------------
%>
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 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)
				
				// Faz a busca dos registros que serão apresentados em tela
                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>