P200VALID - Validação da estrutura ao confirmar
Linha de Produto: | Protheus | ||||||||||||||||||
Segmento: | Manufatura | ||||||||||||||||||
Módulo: | SIGAPCP - Planejamento e Controle da Produção | ||||||||||||||||||
Parâmetro(s): |
| ||||||||||||||||||
Idiomas: | Todos | ||||||||||||||||||
País(es): | Todos | ||||||||||||||||||
Banco(s) de Dados: | Todos | ||||||||||||||||||
Sistema(s) Operacional(is): | Todos |
Ponto de Entrada
Descrição: | O ponto de entrada P200VALID é executado após as validações padrões do programa de estrutura (PCPA200). |
Localização: | Function ModelPosVld - Função de validação do modelo de dados do PCPA200 |
Eventos: | Ao confirmar uma Inclusão, Alteração ou Exclusão de alguma estrutura usando o modelo do PCPA200. |
Programa Fonte: | PCPA200EVDEF.PRW |
Sintaxe: | P200VALID( [ oModel ], [ oDados] ) --> lRet |
Retorno: | lRet - Indica se a operação pode ser confirmada ou não. Retorno obrigatório do tipo Lógico. |
Observações: | Este ponto de entrada é chamado na validação do modelo do PCPA200. Sendo assim, qualquer rotina que manipule uma estrutura utilizando o modelo do PCPA200 executará esse ponto de entrada, mesmo que a rotina não possua interface gráfica. Portando, componentes gráficos devem ser evitados ou, pelo menos, tratados dentro desse ponto de entrada. |
#Include "Totvs.ch" User Function P200VALID() Local oModel := ParamixB[1] //Modelo Principal (Mestre) Local oDados := ParamixB[2] //Objeto Json com todas as alterações realizadas na estrutura Local lRet := .T. /* oDados -> Json com as alterações oDados["oLinDel"] -> Json com as linhas que foram alteradas (indicando se foi excluída) oDados["oLinDel"][<Pai+Comp+Trt>] -> Se estiver como .T., indica que o componente foi removido durante a execução oDados["oLines" ] -> Json com as linhas que foram alteradas (com os novos valores que serão gravados) oDados["oLines" ][<Pai+Comp+Trt>] -> Array com os valores que serão salvos em cada campo do campo do cadastro (as posições devem ser resgatadas através do oDados["oFields"]) oDados["oLines" ][<Pai+Comp+Trt>][<Field>] -> Novo valor para o campo (se não foi alterado, retornará o valor atual) oDados["oFields"] -> Json com os campos do cadastro para buscar seus respectivos índices do array contido em oDados["oLines"] oDados["oFields"][<Field>] -> Índice do campo (Field) no array das alterações (oDados["oLines"]) */ //Valida o modelo principal (SG1_MASTER) If !VldMaster(oModel) lRet := .F. EndIf //Valida os componentes que tiveram alteração If lRet .And. !VldAlters(oDados) lRet := .F. EndIf Return lRet //----------------------------------------// // Valida o modelo principal (SG1_MASTER) // //----------------------------------------// Static Function VldMaster(oModel) Local lRet := .T. //Verifica se o campo "Quantidade Base" está diferente de 1 If oModel:GetModel("SG1_MASTER"):GetValue("NQTBASE") <> 1 Help( , , 'PE P200VALID', , "Quantidade Base incorreta.", 1, 0, , , , , , {"Informe a Quantidade Base como 1."}) lRet := .F. EndIf Return lRet //---------------------------------------------// // Valida os componentes que tiveram alteração // //---------------------------------------------// Static Function VldAlters(oDados) Local aLines := {} Local lRet := .T. Local nIndex := 0 Local oLinDel := oDados["oLinDel"] //Identifica os componentes que foram excluídos Local oLines := oDados["oLines"] //Identifica os componentes que foram alterados Local oFields := oDados["oFields"] //Campos da grid de componentes //Busca todos os componentes que podem ter sido alterados aLines := oLines:GetNames() //Percorre cada componente For nIndex := 1 To Len(aLines) //Verifica se o componente realmente foi alterado If !Empty(oLines[aLines[nIndex]]) //Verifica se o componente foi removido If oLinDel[aLines[nIndex]] Help( , , 'PE P200VALID', , "Não é permitido excluir componentes.", 1, 0, , , , , , {"Desfaça a exclusão do componente."}) lRet := .F. Exit EndIf //Verifica se o campo "Sequência" (TRT) do componente foi preenchido If Empty(oLines[aLines[nIndex]][oFields["G1_TRT"]]) Help( , , 'PE P200VALID', , "Sequência (TRT) não informada.", 1, 0, , , , , , {"Informe uma Sequência (TRT) para o componente."}) lRet := .F. Exit EndIf EndIf Next nIndex Return lRet