Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Punto  de entrada MVC

Descripción

MODELPOS

Punto de entrada ejecutado en la validación total del modelo.

Parámetros recibidos:

Nombre

Tipo

Descripción

PARAMIXB[1]OObjeto del formulario o del modelo, conforme el caso
PARAMIXB[2]CID del local de ejecución del punto de entrada.
PARAMIXB[3]CID del formulario.
Respuesta:

Nombre

Tipo

Descripción

lRetL.T. indica que no hay errores.
Bloco de código
languagejava
firstline1
titleEjemplo:
linenumberstrue
collapsetrue
#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.
            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
        EndIf
    EndIf

Return xRet




FORMPRE

Punto de entrada ejecutado antes de la alteración de cualquier campo de formulario.

Parámetros recibidos:

Formulario.

Nombre

Tipo

Descripción

PARAMIXB[1]OObjeto del formulario o del modelo, conforme el caso
PARAMIXB[2]CID del local de ejecución del punto de entrada.
PARAMIXB[3]CID del formulario.
PARAMIXB[4]C Acción de formulario.
PARAMIXB[5]CID del Campo.
PARAMIXB[5]CDato asignado al campo

Grid.

Nombre

Tipo

Descripción

PARAMIXB[1]OObjeto del formulario o del modelo, conforme el caso
PARAMIXB[2]CID del local de ejecución del punto de entrada.
PARAMIXB[3]CID del formulario.
PARAMIXB[4]NNúmero de línea de FWFORMGRID
PARAMIXB[5]C Acción del FWFORMGRID.
PARAMIXB[6]CID del Campo.
Respuesta:

Nombre

Tipo

Descripción

lRetL

"CANSETVALUE" - Indica si el campo puede ser editado.

"SETVALUE" -  Indica si el valor no puede ser atribuido.

Bloco de código
languagejava
firstline1
titleEjemplo:
linenumberstrue
collapsetrue
#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 == 'FORMPRE' //Ejecutado antes de la alteración de cualquier campo de formulario.
            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
        EndIf
    EndIf

Return xRet

FORMPOS

Punto de entrada ejecutado en la validación total del formulario.

Parámetros recibidos:

Nombre

Tipo

Descripción

PARAMIXB[1]OObjeto del formulario o del modelo, conforme el caso
PARAMIXB[2]CID del local de ejecución del punto de entrada.
PARAMIXB[3]CID del formulario.
Respuesta:

Nombre

Tipo

Descripción

lRetL

En caso de que el formulario esté correcto retornar .T., si existen errores retornar .F.

Bloco de código
languagejava
firstline1
titleEjemplo:
linenumberstrue
collapsetrue
#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 == 'FORMPOS' //Validación total del formulario.
            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  
        EndIf
    EndIf

Return xRet 



FORMLINEPRE

Punto de entrada ejecutado antes de la alteración de cualquier campo de formulario.

Parámetros recibidos:

Nombre

Tipo

Descripción

PARAMIXB[1]OObjeto del formulario o del modelo, conforme el caso
PARAMIXB[2]CID del local de ejecución del punto de entrada.
PARAMIXB[3]CID del formulario.
PARAMIXB[4]NNúmero de línea de FWFORMGRID
PARAMIXB[5]C Acción del FWFORMGRID.
PARAMIXB[6]CID del Campo.
Respuesta:

Nombre

Tipo

Descripción

lRetL

Indica si permite alterar la línea .T., en caso contrario .F.

Bloco de código
languagejava
firstline1
titleEjemplo:
linenumberstrue
collapsetrue
#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 == 'FORMLINEPRE' //Ejecutado antes de la alteración de una línea de formulário FWFORMGRID (Grid)
            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
        EndIf
    EndIf

Return xRet 




FORMLINEPOS

Punto de entrada ejecutado al finalizar la edición de una línea.

Parámetros recibidos:

Nombre

Tipo

Descripción

PARAMIXB[1]OObjeto del formulario o del modelo, conforme el caso
PARAMIXB[2]CID del local de ejecución del punto de entrada.
PARAMIXB[3]CID del Model.
PARAMIXB[4]NNúmero de línea.
Respuesta:

Nombre

Tipo

Descripción

lRetLSi el valor retornado es .T. si la línea no tiene errores, en caso de existir un error retornar .F.
Bloco de código
languagejava
firstline1
titleEjemplo
linenumberstrue
collapsetrue
#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 == 'FORMLINEPOS' //Ejecutado al finalizar la edición de una línea de formulário FWFORMGRID (Grid). (Validación de línea)
            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 

MODELCOMMITTTS

Punto de entrada ejecutado posterior al grabado/borrado dentro de la transacción.

Parámetros recibidos:

Nombre

Tipo

Descripción

PARAMIXB[1]OObjeto del formulario o del modelo, conforme el caso
PARAMIXB[2]CID del local de ejecución del punto de entrada.
PARAMIXB[3]CID del formulario.
Respuesta:

No espera retorno.

Bloco de código
languagejava
firstline1
titleEjemplo

...

linenumberstrue
collapsetrue
#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 == "MODELCOMMITTTS"
   

...

    

...

 

...

 

...

 

...

 

...

 

...

 

...

/*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*/
            

...

If oObj:GetOperation() == 

...

3 //Inclusión
             

...

   

...

MsgAlert("Documento " + oObj:GetModel("SF1_MASTER"):GetValue("F1_

...

DOC")

...

 + " guardado." )
            

...

ElseIf oObj:GetOperation() =

...

= 5 //Borrado
                

...

MsgAlert(

...

"Documento " + oObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " borrado." )
            EndIf

...


        EndIf
	EndIf

Return xRet 


MODELCOMMITNTTS

Punto de entrada ejecutado posterior al grabado/borrado después de la transacción.

Parámetros recibidos:

Nombre

Tipo

Descripción

PARAMIXB[1]OObjeto del formulario o del modelo, conforme el caso
PARAMIXB[2]CID del local de ejecución del punto de entrada.
PARAMIXB[3]CID del formulario.
Respuesta:

No espera retorno.

Bloco de código
languagejava
firstline1
titleEjemplo
linenumberstrue
collapsetrue
#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 == "MODELCOMMITNTTS"
             /*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*/
            If oObj:GetOperation() == 3 //Inclusión
                MsgAlert("Transacción de la inclusión del documento " + oObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " finalizada." )
            ElseIf oObj:GetOperation() == 5 //Borrado
                MsgAlert("Transacción del borrado del documento " + oObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " finalizada." )
            EndIf
        EndIf      
	EndIf

Return xRet 


Bloco de código
languagejava
firstline1
titleEjemplo completo:
linenumberstrue
collapsetrue
#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"
     For nX := 1 To oObj:GetModel("SD1_DETAIL"):Length()
                  If Empty(oObj:GetModel("SD1_DETAIL"):GetValue("D1_CONTATES", nX))
                        xRet := .F.
                        Help( ,, "HELP",, "ElInforme campoprimero D1_CONTA debe ser informado.un TES", 1, 0)
                    EndIf
            Next    EndIf
            EndIf
        ElseIf cIdPonto == 'FORMPREFORMPOS' //EjecutadoValidación antestotal de la alteración de cualquier campo de del formulario.
            //Formulario*aParam
            /*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       3 ID de formulário
			4     C        AcciónID de formulario
			5formulário*/
      C      xRet  Id del campo
			6:= .T.
        C    If cIdModel == "SF1_MASTER"
  Dato asignado al campo*/
            //GridIf Empty(oObj:GetValue("F1_TPVENT"))
            /*aParam
			1     O   xRet := .F.
    Objeto   del formulário o de modelo, conforme sea el caso
			2     CHelp( ,, "HELP",, "El campo F1_TPVENT debe ser ID local de ejecución del punto de entrada
			3informado.", 1, 0)
          C      EndIf
  ID de formulário
			4     N   ElseIf cIdModel == "SD1_DETAIL"
  Número de línea de FWFORMGRID
			5     C     For nX := Acción1 de FWFORMGRID
			6To oObj:Length()
     C        Id del campo*/
     If Empty(oObj:GetValue("D1_CONTA", nX))
     If cIdModel == "SF1_MASTER"
                cActionxRet := aParam[4].F.
                cIdCpo  := aParam[5]
     Help( ,, "HELP",, "El campo D1_CONTA debe elseIf cIdModel == "SD1_DETAIL"ser informado.", 1, 0)
                cAction := aParam[5]
  EndIf
              cIdCpo  := aParam[6]Next
            EndIf 
        ElseIf cIdPonto == 'FORMLINEPRE' //Ejecutado antes de la Ifalteración cActionde == "CANSETVALUE" 
   una línea de formulário FWFORMGRID (Grid)
            /*aParam
 If cIdCpo == "F1_LOJA"
        1     O       xRet := !Empty(oObj:GetValue("F1_FORNECE"))
        Objeto del formulário o de modelo, conforme sea el caso
        EndIf
    2     C   ElseIf cAction == "SETVALUE" 
 ID local de ejecución del punto de   entrada
      If cIdCpo == "D1_CF"
   3     C        ID de formulário
  If Empty(oObj:GetValue("D1_TES"))
         4     N        Número de xRetlínea := .F.
de FWFORMGRID
            5     C        Help( ,, "HELP",, "Informe primero un TES", 1, 0)
Acción de FWFORMGRID
            6     C        Id del EndIfcampo*/
            If cIdModel ==  EndIf
"SD1_DETAIL"
                cAction  EndIf
:= aParam[5]
          ElseIf cIdPonto == 'FORMPOS' //Validación total delnLinha formulario.
    := oObj:GetLine()
       /*aParam
			1     O    If cAction ==  Objeto del formulário o de modelo, conforme sea el caso
			2"DELETE" .and. nLinha == 1
           C        ID localxRet de ejecución del punto de entrada
			3:= .F. //Retorno de la validación.
     C        ID de formulário*/
     Help( ,, "HELP",, "No puede ser eliminada xRetesta := .T.
   linea.", 1, 0)
         If cIdModel == "SF1_MASTER"
    EndIf
            If Empty(oObj:GetValue("F1_TPVENT"))
EndIf
        ElseIf cIdPonto == 'FORMLINEPOS' //Ejecutado al finalizar la edición de una línea de xRetformulário :=FWFORMGRID (Grid).F.
 (Validación de línea)
                 Help( ,, "HELP",, "El campo F1_TPVENT debe ser informado.", 1, 0)
 /*aParam
            1     O        Objeto del EndIf
formulário o de modelo, conforme sea el caso
     ElseIf cIdModel == "SD1_DETAIL"
    2     C       For nXID :=local 1de To oObj:Length()
   ejecución del punto de entrada
            3     If Empty(oObj:GetValue("D1_CONTA", nX))
C        ID de formulário
            4    xRet := .F.
N        Número de línea de FWFORMGRID*/
            If Help( ,,cIdModel == "HELP",, "El campo D1_CONTA debe ser informado.", 1, 0)
SD1_DETAIL"
                nLinha     := oObj:GetLine()
      EndIf
          If Empty(oObj:GetValue("D1_CC", nLinha))
    Next
            EndIf  
  Help( ,, "HELP",, "El campo D1_CC ElseIfdebe cIdPonto == 'FORMLINEPRE' //Ejecutado antes de la alteración de una línea de formulário FWFORMGRID (Grid)
ser informado.", 1, 0)
                    xRet := .F. /*aParam
			1     O/Retorno de la validación.
          Objeto del formulário o de modelo, conformeEndIf
 sea el caso
			2     C    EndIf
    ID local de ejecución delElseIf puntocIdPonto de entrada
			3== "MODELCOMMITTTS"
       C      /*aParam
  ID de formulário
			4     N   1     NúmeroO de línea de FWFORMGRID
			5    Objeto Cdel formulário o de modelo, conforme sea el Accióncaso
 de FWFORMGRID
			6     C     2   Id del campo*/
C        ID local de ejecución Ifdel cIdModelpunto == "SD1_DETAIL"de entrada
            3    cAction := aParam[5]
C        ID de formulário*/
       nLinha     :=If oObj:GetLineGetOperation()
 == 3 //Inclusión
             If cAction == MsgAlert("DELETEDocumento " .and. nLinha == 1
    + oObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " guardado." )
            ElseIf    xRet := .F. //Retorno de la validación.oObj:GetOperation() == 5 //Borrado
                MsgAlert("Documento " +  Help( ,, "HELP",, "No puede ser eliminada esta linea.", 1, 0)
                EndIfoObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " borrado." )
            EndIf
        ElseIf cIdPonto == 'FORMLINEPOS' //Ejecutado al finalizar la edición de una línea de formulário FWFORMGRID (Grid). (Validación de línea)"MODELCOMMITNTTS"
             /*aParam
            /*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 conforme sea el caso
     N       2 Número de línea de FWFORMGRID*/
C        ID local de ejecución Ifdel cIdModelpunto == "SD1_DETAIL"de entrada
            3     nLinhaC     := oObj:GetLine()
  ID de formulário*/
            If Empty(oObj:GetValue("D1_CC", nLinha))GetOperation() == 3 //Inclusión
                MsgAlert("Transacción de la inclusión del Help( ,, "HELP",, "El campo D1_CC debe ser informado.", 1, 0documento " + oObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " finalizada." )
            ElseIf oObj:GetOperation() == 5 //Borrado
     xRet := .F. //Retorno de la validación.
     MsgAlert("Transacción del borrado del documento " + oObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " finalizada." EndIf)
            EndIf
        EndIf
    EndIf
 
Return xRet

  
Aviso
titleIMPORTANTE

La función de usuario debe llamarse "LOCXIN", pero es importante que el nombre del fuente no sea "LOCXIN".

Para más información verificar el siguiente link: Punto de entrada padrón MVC

...