No artigo de hoje, vou demonstrar duas formas de criar campo com Picture Variável no Protheus.
Algumas vezes, precisamos criar um campo, onde a máscara dele, vai depender da informação de outro campo, como o exemplo mais famoso no cadastro de clientes e fornecedores, onde se o cliente for pessoa física, o campo CGC usará a máscara do CPF, senão usará do CNPJ.
Mas como podemos fazer isso em nossas customizações?
- Vamos criar um campo no cadastro de Produtos, com o nome B1_X_TESTE, ele vai ser real
- Na primeira aba, na Picture Variável, iremos colocar uma função nossa, chamada u_zTstPict()
- Nessa nossa função, iremos validar o Tipo colocado, se ele for PA, será uma máscara com 6 caracteres, se for PI com 4 caracteres, se for MP com 8 caracteres, senão será uma máscara default
- Agora ao preencher o campo B1_TIPO, ele automaticamente vai alterar a máscara do nosso campo B1_X_TESTE, abaixo um print de cada exemplo possível conforme função acima
Abaixo o código fonte desenvolvido para o exemplo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zTstPict Teste de Picture de Campo @type Function @author Atilio @since 27/07/2022 /*/ User Function zTstPict() Local aArea := FWGetArea() Local cMascara := "" Local cTipo := FWFldGet("B1_TIPO") //Se for Produto Acabado If cTipo == "PA" cMascara := "@R 999999" //Se for Produto Intermediário ElseIf cTipo == "PI" cMascara := "@R 9999" //Se for Matéria Prima ElseIf cTipo == "MP" cMascara := "@R 99999999" //Senão Else cMascara := "@R 9999999999" EndIf cMascara += "%C" FWRestArea(aArea) Return cMascara
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Muito bom dia!
Primeiramente obrigado pelos posts são muito legais.
Duvida: Porque você concatena com “%C” ?
Bom dia Lucas, tudo joia?
Obrigado pelo feedback.
É uma tratativa interna da aplicação para o funcionamento correto, similar a usar % nas expressões de filtro do Embedded Query (BeginSQL / EndSQL).
Em um exemplo da TOTVS, eles também usam o %C, segue o link: https://centraldeatendimento.totvs.com/hc/pt-br/articles/360036874754-Cross-Segmento-TOTVS-Backoffice-Linha-Protheus-ADVPL-Mascara-customizada
Abraços.