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.
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.
Bom dia Helder, tudo joia?
Opa, obrigado pelo carinho e feedback, é muita bondade sua.
Então, fizemos um exemplo, é um pouco antigo (o fonte é de 2015), mas pode ser que esteja funcionando, talvez tenha que adaptar uma coisa ou outra.
Nesse fonte, como que funciona, ele pega o usuário logado, e busca a SA3 vinculada. Feito isso, é adicionado um filtro nas tabelas do sistema.
Segue o link com o fonte de exemplo: https://terminaldeinformacao.com/2022/05/18/como-filtrar-cadastros-antes-do-usuario-abrir-a-tela/
Tenha uma ótima e abençoada terça feira.
Um grande abraço.