No vídeo de hoje, vamos demonstrar em como fazer duas validações distintas no mesmo ponto de entrada.
A dúvida de hoje, nos perguntaram, como seria possível em um único ponto de entrada, ter mais de uma validação diferente.
Pensando nisso, montamos esse exemplo, onde demonstramos em como separar as validações em funções estáticas para estruturar o código.
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function MT410TOK Ponto de Entrada na validação ao clicar no botão Confirmar @type Function @author Atilio @since 11/03/2023 @see https://tdn.totvs.com/pages/releaseview.action?pageId=6784353 /*/ User Function MT410TOK() Local aArea := FWGetArea() Local lContinua := .T. //Validação 1 - Pedido sem vendedor lContinua := fValidVend() //Se deu tudo certo na validação anterior, passa para a próxima If lContinua //Validação 2 - Pedido sem transportadora lContinua := fValidTranp() EndIf FWRestArea(aArea) Return lContinua //Validação 1 - Pedido sem vendedor Static Function fValidVend() Local aArea := FWGetArea() Local lValid1 := .T. Local cVendedor := "" Local cTipoPed := "" //Pega o campo de vendedor e de tipo de pedido cVendedor := M->C5_VEND1 cTipoPed := M->C5_TIPO //Se for um pedido normal (tipo N) e o não tiver vendedor preenchido If cTipoPed == "N" .And. Empty(cVendedor) ExibeHelp("Help_MT410TOK_A", "Para pedido do tipo Normal (N), é obrigatório preencher o campo de código do vendedor!", "Preencha a informação no campo C5_VEND1") lValid1 := .F. EndIf FWRestArea(aArea) Return lValid1 //Validação 2 - Pedido sem transportadora Static Function fValidTranp() Local aArea := FWGetArea() Local lValid2 := .T. Local cTranspor := "" Local cTipoFret := "" //Pega o campo de vendedor e de tipo de pedido cTranspor := M->C5_TRANSP cTipoFret := M->C5_TPFRETE //Se o tipo de frete for CIF (pago pela empresa) e o não tiver transportadora preenchida If cTipoFret == "C" .And. Empty(cTranspor) ExibeHelp("Help_MT410TOK_B", "Para tipo de frete CIF, é obrigatório preencher o campo de código da transportadora!", "Preencha a informação no campo C5_TRANSP") lValid2 := .F. EndIf FWRestArea(aArea) Return lValid2
Bom pessoal, por hoje é só.
Abraços e até a próxima.