No vídeo de hoje, vamos demonstrar em como alterar uma legenda em uma tela padrão, modificando o ícone exibido.
A dúvida de hoje, nos perguntaram, se seria possível em uma tela, buscar uma legenda, por exemplo, bolinha verde, e alterar para outro ícone qualquer.
Pensando nisso, montamos esse exemplo, onde vamos demonstrar em como manipular o array de legenda, no caso usando o ponto de entrada FINALEG e na rotina Contas a Pagar.
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} FINALEG
Ponto de Entrada na manipulação de legendas do financeiro
@type user function
@author Atilio
@since 30/01/2024
@see https://tdn.totvs.com/display/public/PROT/FINALEG+-+Manipula+legendas+financeiro
/*/
User Function FINALEG()
Local aArea := FWGetArea()
Local cTabela := ParamIXB[2]
Local aRegras := ParamIXB[3]
Local aLegendas := ParamIXB[4]
Local cProcura := "BR_BRANCO"
Local cSubstit := "BPMSTSK2A"
Local nPosicao := 0
//Se for o Contas a Pagar
If cTabela == "SE2"
//Se tiver regras
If Len(aRegras) > 0
//Procura pela cor Branca
nPosicao := aScan(aRegras, {|x| Alltrim(x[2]) == cProcura})
//Se encontrou, substitui o ícone
If nPosicao > 0
aRegras[nPosicao][2] := cSubstit
EndIf
EndIf
//Se tiver legendas
If Len(aLegendas) > 0
//Procura pela cor Branca
nPosicao := aScan(aLegendas, {|x| Alltrim(x[1]) == cProcura})
//Se encontrou, substitui o ícone
If nPosicao > 0
aLegendas[nPosicao][1] := cSubstit
EndIf
//Aciona a tela para visualizar as legendas
BrwLegenda(cCadastro, "Legenda", aLegendas)
EndIf
//Senão, se for Contas a Receber
Else
//Aciona a tela para visualizar as legendas
BrwLegenda(cCadastro, "Legenda", aLegendas)
EndIf
FWRestArea(aArea)
Return aRegras
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Olá Dan, tudo jóia ?
Eu consigo criar uma nova legenda com o PE F040URET fazendo validação com SE5 ? Eu preciso sinalizar com uma nova legenda na tela do contas a receber, os títulos que foram feito por baixa para perda (E5_MOTBX == “BXP”). Tentei fazer um dbSeek com os dados da SE1 para buscar na SE5, mas não deu certo e também não sei se é a melhor forma de fazer isso.
Bom dia Maurilio, tudo joia graças a Deus e você?
Então, as legendas o ideal é ser na mesma tabela que é apresentada no browse, por questões de performance e tudo mais.
O que eu recomendaria então para o seu cenário, seria:
1. Cria um campo novo na SE1, do contexto real, chamado por exemplo, E1_X_MOTBX
2. Use o ponto de entrada SACI008 que é após a baixa do título a Receber – https://tdn.totvs.com/pages/releaseview.action?pageId=6071312
3. Dentro dele, dê um RecLock na SE1 posicionada, e grave o campo E1_X_MOTBX com o E5_MOTBX
4. Nisso, volte para o ponto de entrada que você estava usando para adicionar a legenda, e ai você consegue usar o E1_X_MOTBX para fazer os testes
Tenha uma ótima e abençoada quarta feira.
Um forte abraço.