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'
UserFunctionLOCXIN()
LocalaParam := PARAMIXB
LocalxRet := .T.
LocaloObj := ''
LocalcIdPonto := ''
LocalcIdModel := ''
LocalcAction := ''
LocalnLinha := 0
LocalnX := 0
...
LocalcIdCpo := 0
IfaParam <> NIL
oObj := aParam[1]
cIdPonto := aParam[2]
cIdModel := aParam[3]
IfcIdPonto == '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.
IfEmpty(oObj:GetModel("SF1_MASTER"):GetValue("F1_
...
TPVENT"))
xRet := .F.
Help( ,,"HELP",,"El campo F1_TPVENT debe ser informado.",1,0)
EndIf
FornX := 1TooObj:GetModel("SD1_DETAIL"):Length()
IfEmpty(oObj:GetModel("SD1_DETAIL"):GetValue("D1_
...
CONTA"
...
,nX))
xRet := .F.
Help( ,,"HELP",,"El campo D1_CONTA debe ser informado.",1,0)
EndIf
Next
ElseIfcIdPonto == '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*/
IfcIdModel == "SF1_MASTER"
cAction := aParam[4]
cIdCpo := aParam[5]
elseIfcIdModel == "SD1_DETAIL"
cAction := aParam[5]
cIdCpo := aParam[6]
EndIf
IfcAction == "CANSETVALUE"
IfcIdCpo == "F1_LOJA"
xRet := !Empty(oObj:GetValue("F1_FORNECE"))
EndIf
ElseIfcAction == "SETVALUE"
IfcIdCpo == "D1_CF"
IfEmpty(oObj:GetValue("D1_TES"))
xRet := .F.
Help( ,,"HELP",,"Informe primero un TES",1,0)
EndIf
EndIf
EndIf
ElseIfcIdPonto == '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.
IfcIdModel == "SF1_MASTER"
IfEmpty(oObj:GetValue("F1_TPVENT"))
xRet := .F.
Help( ,,"HELP",,"El campo F1_TPVENT debe ser informado.",1,0)
EndIf
ElseIfcIdModel == "SD1_DETAIL"
FornX := 1TooObj:Length()
IfEmpty(oObj:GetValue("D1_CONTA",nX))
xRet := .F.
Help( ,,"HELP",,"El campo D1_CONTA debe ser informado.",1,0)
EndIf
Next
EndIf
ElseIfcIdPonto == '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*/
IfcIdModel == "SD1_DETAIL"
cAction := aParam[5]
nLinha := oObj:GetLine()
IfcAction == "DELETE".and.nLinha == 1
xRet := .F.//Retorno de la validación.
Help( ,,"HELP",,"No puede ser eliminada esta linea.",1,0)
EndIf
EndIf
ElseIfcIdPonto == '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*/
IfcIdModel == "SD1_DETAIL"
nLinha := oObj:GetLine()
IfEmpty(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
ReturnxRet
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 |
...