Árvore de páginas

Versões comparadas

Chave

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

...

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
titleIMPORTANTE

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

...