Los puntos de entrada utrilizados en las rutinas de documentos fiscales (MATA101N, MATA102N, MATA466N) no se encuentran disponibles dentro de las nuevas rutinas de documentos fiscales, sin embargo por medio de los puntos de entrada padrón de MVC es posible realizar validaciones de datos en los documentos de entrada, como se ejemplifican la información a continuación.
Punto de entrada MVC | Descripción | |||||||||||||||||||||||||||||||||||||||||||||||||||||
MODELPOS | Punto de entrada ejecutado en la validación total del modelo.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
FORMPRE | Punto de entrada ejecutado antes de la alteración de cualquier campo de formulario.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
FORMPOS | Punto de entrada ejecutado en la validación total del formulario.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
FORMLINEPRE | Punto de entrada ejecutado antes de la alteración de cualquier campo de formulario.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
FORMLINEPOS | Punto de entrada ejecutado al finalizar la edición de una línea.
|
#INCLUDE 'protheus.ch' #INCLUDE 'FWMVCDEF.CH' User Function LOCXIN() Local aParam := PARAMIXB Local xRet := .T. Local oObj := '' Local cIdPonto := '' Local cIdModel := '' Local cAction := '' Local nLinha := 0 Local nX := 0 Local cIdCpo := 0 If aParam <> NIL oObj := aParam[1] cIdPonto := aParam[2] cIdModel := aParam[3] If cIdPonto == 'MODELPOS' //Validación total del modelo. /*aParam 1 O Objeto del formulário o de modelo, conforme sea el caso 2 C ID local de ejecución del punto de entrada 3 C ID de formulário*/ xRet := .T. If Empty(oObj:GetModel("SF1_MASTER"):GetValue("F1_TPVENT")) xRet := .F. Help( ,, "HELP",, "El campo F1_TPVENT debe ser informado.", 1, 0) EndIf For nX := 1 To oObj:GetModel("SD1_DETAIL"):Length() If Empty(oObj:GetModel("SD1_DETAIL"):GetValue("D1_CONTA", nX)) xRet := .F. Help( ,, "HELP",, "El campo D1_CONTA debe ser informado.", 1, 0) EndIf Next ElseIf cIdPonto == 'FORMPRE' //Ejecutado antes de la alteración de cualquier campo de formulario. //Formulario /*aParam 1 O Objeto del formulário o de modelo, conforme sea el caso 2 C ID local de ejecución del punto de entrada 3 C ID de formulário 4 C Acción de formulario 5 C Id del campo 6 C Dato asignado al campo*/ //Grid /*aParam 1 O Objeto del formulário o de modelo, conforme sea el caso 2 C ID local de ejecución del punto de entrada 3 C ID de formulário 4 N Número de línea de FWFORMGRID 5 C Acción de FWFORMGRID 6 C Id del campo*/ If cIdModel == "SF1_MASTER" cAction := aParam[4] cIdCpo := aParam[5] elseIf cIdModel == "SD1_DETAIL" cAction := aParam[5] cIdCpo := aParam[6] EndIf If cAction == "CANSETVALUE" If cIdCpo == "F1_LOJA" xRet := !Empty(oObj:GetValue("F1_FORNECE")) EndIf ElseIf cAction == "SETVALUE" If cIdCpo == "D1_CF" If Empty(oObj:GetValue("D1_TES")) xRet := .F. Help( ,, "HELP",, "Informe primero un TES", 1, 0) EndIf EndIf EndIf ElseIf cIdPonto == 'FORMPOS' //Validación total del formulario. /*aParam 1 O Objeto del formulário o de modelo, conforme sea el caso 2 C ID local de ejecución del punto de entrada 3 C ID de formulário*/ xRet := .T. If cIdModel == "SF1_MASTER" If Empty(oObj:GetValue("F1_TPVENT")) xRet := .F. Help( ,, "HELP",, "El campo F1_TPVENT debe ser informado.", 1, 0) EndIf ElseIf cIdModel == "SD1_DETAIL" For nX := 1 To oObj:Length() If Empty(oObj:GetValue("D1_CONTA", nX)) xRet := .F. Help( ,, "HELP",, "El campo D1_CONTA debe ser informado.", 1, 0) EndIf Next EndIf ElseIf cIdPonto == 'FORMLINEPRE' //Ejecutado antes de la alteración de una línea de formulário FWFORMGRID (Grid) /*aParam 1 O Objeto del formulário o de modelo, conforme sea el caso 2 C ID local de ejecución del punto de entrada 3 C ID de formulário 4 N Número de línea de FWFORMGRID 5 C Acción de FWFORMGRID 6 C Id del campo*/ If cIdModel == "SD1_DETAIL" cAction := aParam[5] nLinha := oObj:GetLine() If cAction == "DELETE" .and. nLinha == 1 xRet := .F. //Retorno de la validación. Help( ,, "HELP",, "No puede ser eliminada esta linea.", 1, 0) EndIf EndIf ElseIf cIdPonto == 'FORMLINEPOS' //Ejecutado al finalizar la edición de una línea de formulário FWFORMGRID (Grid). (Validación de línea) /*aParam 1 O Objeto del formulário o de modelo, conforme sea el caso 2 C ID local de ejecución del punto de entrada 3 C ID de formulário 4 N Número de línea de FWFORMGRID*/ If cIdModel == "SD1_DETAIL" nLinha := oObj:GetLine() If Empty(oObj:GetValue("D1_CC", nLinha)) Help( ,, "HELP",, "El campo D1_CC debe ser informado.", 1, 0) xRet := .F. //Retorno de la validación. EndIf EndIf EndIf EndIf Return xRet |
La función de usuario debe llamarse "LOCXIN", sin embargo es importante que el nombre del fuente no sea "LOCXIN". Para más información verificar: Punto de entrada padrón MVC |