Filtrar um browse através de atalho via AdvPL | Ti Responde 0086

No vídeo de hoje, vamos demonstrar em como aplicar um filtro em um browse de cadastro padrão através de uma tecla de atalho.

A dúvida de hoje, nos perguntaram, se seria possível filtrar um browse de cadastro, utilizando uma tecla de atalho.

Pensando nisso, montamos esse exemplo, onde demonstramos em como criar um atalho na tela de pedido de compras e depois aplicar um filtro ao acionar esse atalho.

Segue abaixo o vídeo exemplificando:

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function MT120BRW
Ponto de entrada para adicionar outras opções no menu do Pedido de Compras
@type  Function
@author Atilio
@since 26/01/2024
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6085467
/*/

User Function MT120BRW()
    Local aArea := FWGetArea()

    //Adiciona atalho para filtrar o browse
    SetKey(VK_F7, {|| u_zVid0086()})

    FWRestArea(aArea)
Return

/*/{Protheus.doc} zVid0086
Função para abrir uma tela de filtro para escolher o fornecedor
@type user function
@author Atilio
@since 26/01/2024
/*/

User Function zVid0086()
    Local lOk     := .F.
    Local cQry    := ""
    Local cFiltro := "1 == 1" 
    Local oBrowse

    //Somente se não tiver dentro da tela de pedido
    If ! FWIsInCallStack("A120Pedido")

        //Monta a busca de fornecedores que não estão bloqueados
        cQry += " SELECT " + CRLF
        cQry += "     A2_COD, " + CRLF
        cQry += "     A2_NOME, " + CRLF
        cQry += "     A2_NREDUZ, " + CRLF
        cQry += "     A2_CGC " + CRLF
        cQry += " FROM " + CRLF
        cQry += "     " + RetSQLName("SA2") + " SA2 " + CRLF
        cQry += " WHERE " + CRLF
        cQry += "     A2_FILIAL = '" + FWxFilial("SA2") + "' " + CRLF
        cQry += "     AND A2_MSBLQL != '1' " + CRLF
        cQry += "     AND SA2.D_E_L_E_T_ = ' ' " + CRLF

        //Chama a tela, pesquisando fornecedores
        lOk := u_zConsSQL(cQry, "A2_COD", "", "A2_COD")

        //Se a tela foi confirmada
        If lOk
            //Se tem fornecedor escolhido, filtra o browse
            If ! Empty(__cRetorno)
                cFiltro := " C7_FORNECE == '" + __cRetorno + "' "
            EndIf
        EndIf

    EndIf

    //Atualizando a grid do browse
    oBrowse := GetObjBrow()
    oBrowse:CleanFilter()
    oBrowse:SetFilterDefault(cFiltro)
    oBrowse:Refresh()
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Helder Alves disse:

    Boa tarde Daniel,

    Parabéns pelo trabalho ao longo desses anos. Uma sugestão para o blog, se não estiver escrito nada sobre ainda. É possível abir a tabela de orçamento serviços, AB3, já filtrada para exibir somente os orçamentos do usuário/vendedor logado no sistema, sem perder a possíbilidade de criar filtros personalizados para o browser/Usuário? Porque ao usar o ponto de entrada AT400FIL perde-se o filtro padrão Protheus.

Deixe uma resposta

Terminal de Informação