Histórico da Página
...
Ejemplo de uso de punto de entrada padrón MVC para documentos fiscales de entrada.
#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
4 C Acción de formulario
5 C Id del campo
6 Dato asignado al campo*/
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
Aviso | ||
---|---|---|
| ||
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 |
...
Import HTML Content
Visão Geral
Conteúdo das Ferramentas