Á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 Los puntos de entrada utilizados 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 MVC para documentos fiscales de entradade MVC es posible realizar validaciones de datos en los documentos de entrada, como se ejemplifican a continuación.


Punto  de entrada MVC

Descripción

FORMPRE

MODELPOS

Punto de entrada ejecutado

antes de la alteración de cualquier campo de formulario

en la validación total del modelo.

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.

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
Bloco de código
languagejava
firstline1
titleEjemplo:
linenumberstrue
collapsetrue
#INCLUDE 'protheus.ch' #INCLUDE 'FWMVCDEF.CH' User Function LOCXIN() Local aParam := PARAMIXB Local xRet
     := 
.T.
0
Local 
oObj
nX         := 
''
0
Local cIdCpo  
cIdPonto
   := 
''
0


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
MODELPOS' //
Ejecutado
Validación 
antes
total 
de
del 
la
modelo.
 
alteración
 
de
 
cualquier
 
campo
 
de
 
formulario.
      xRet := .T. 

  
//Formulario
          If 
/*aParam 1
Empty(oObj:GetModel("SF1_MASTER"):GetValue("F1_TPVENT"))
       
O
        
Objeto
 
del
xRet 
formulário o de modelo, conforme sea el caso 2
:= .F.
           
C
     Help( ,, 
ID local de ejecución del punto de entrada 3
"HELP",, "El campo F1_TPVENT debe ser informado.", 1, 0)
      
C
      EndIf

  
ID
 
de
 
formulario 4
     
C
   For nX := 1 
Acción de formulario 5
To oObj:GetModel("SD1_DETAIL"):Length()
     
C
        
Id
 
del
 
campo 6
 If Empty(oObj:GetModel("SD1_DETAIL"):GetValue("D1_CONTA", nX))
  
C
        
Dato
 
asignado
 
al
 
campo*/
       xRet := .F.
   
//Grid
            
/*aParam 1
     
O
Help( ,, "HELP",, "El campo D1_CONTA debe ser 
Objeto del formulário o de modelo, conforme sea el caso 2
informado.", 1, 0)
    
C
        
ID
 
local
 
de
 
ejecución del punto de entrada 3
 EndIf
     
C
       
ID de formulário 4
Next
     
N
   EndIf
    
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"
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]CAcció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]CAcció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    
If
 
Empty(oObj:GetValue("D1_TES"))
:= 0


    If aParam <> NIL
            
      
xRet
 
:= .F.
 oObj       := aParam[1]
        cIdPonto   := aParam[2]
    
Help(
 
,,
 
"HELP",,
 
"Informe
 
primero
cIdModel 
un
 
TES", 1, 0)
 := aParam[3]
        
        If cIdPonto == 'FORMPRE' //Ejecutado antes de 
EndIf
la alteración de cualquier campo de formulario.
            If cIdModel == "SF1_MASTER"
                
EndIf
cAction := aParam[4]
            
EndIf
    cIdCpo  := aParam[5]
        
EndIf
    elseIf cIdModel 
EndIf Return xRet ÂncoraFORMLINEPOSFORMLINEPOS

FORMLINEPOS

Punto de entrada para VALIDAR los datos de retenciones en la rutina de cobros diversos.

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.
Respuesta:

Nombre

Tipo

Descripción

lRetLSi el valor retornado es .T. el campo es permitido , de lo contrario retornar un .F. 
HELP()ORetornar un mensaje de error para mostrar por que no es permitido el campo.
Bloco de código
languagejava
firstline1
titleEjemplo
linenumberstrue
collapsetrue
#include "Protheus.ch"
#include "FWMVCDEF.CH"

User Function FINA887()
	Local aParam    := PARAMIXB
	Local oModel    := aParam[1]
	Local oModelSEL   := oModel:GetModel("SEL_DETAIL") //Datos correspondientes a los registros de la tabla SEL
	Local cIdPonto  := ""
	Local cIdModel  := ""
	Local lRet      := .T.

	If aParam <> NIL
		oModel      := aParam[1]
		cIdPonto    := aParam[2]
		cIdModel    := aParam[3]

		If cIdPonto == 'FORMLINEPOS'
			CONOUT('FORMLINEPOS')
			IF ALLTRIM(oModelSEL:GetValue("SEL_DETAIL","EL_TIPODOC")) == 'RB'
				Help(,,'Help',,'No se permite una retencion RB',1,0)
				lRet := .F.
			ENDIF
		EndIf
	EndIf
Return lRet

== "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

ÂncoraF998BRFLTF998BRFLT

MODELCOMMITNTTS

Punto de entrada para MÓDIFICAR los datos de retenciones en la rutina de cobros diversos

.

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
formulario.
Respuesta:
N/A

Nombre

code

Tipo

language

Descripción

javalinenumbers
lRet
firstline1titleEjemplo
L

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

Bloco de código
languagejava
firstline1
titleEjemplo:
linenumbers
true
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
FORMPOS' //Validación total del 
modelo
formulario.
            
/*aParam 1
xRet := .T.
     
O
       
Objeto del formulário o de modelo, conforme sea el caso 2
If cIdModel == "SF1_MASTER"
              
C
  If Empty(oObj:GetValue("F1_TPVENT"))
     
ID
 
local
 
de
 
ejecución
 
del
 
punto
 
de
 
entrada 3 C
      
ID
 
de
 
formulário*/
xRet := .
T
F.

            
If
 
Empty(oObj:GetModel("SF1_MASTER"):GetValue("F1_TPVENT")) xRet :=
 
.F.
      
Help( ,, "HELP",, "El campo F1_TPVENT debe ser informado.", 1, 0)
                EndIf
            
For
ElseIf 
nX
cIdModel == "SD1_DETAIL"
                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
    EndIf
        
Next
        Next
    
        
ElseIf
EndIf 
cIdPonto == 'FORMPRE' //Ejecutado antes de la alteración de cualquier campo de formulario.
 
        EndIf
    EndIf

Return 
//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
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]CAcció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       
Dato asignado al campo*/
:= .T.
Local oObj       := ''
Local cIdPonto   
//Grid
:= ''
Local cIdModel   := ''
Local cAction    := 
/*aParam 1
''
Local nLinha     
O
:= 0
Local nX        
Objeto
 
del formulário o de modelo, conforme sea el caso 2
:= 0
Local cIdCpo     := 0


    If 
C
aParam <> NIL
      
ID
 
local
 
de
 
ejecución
 
del
 
punto
 
de entrada 3

      
C
  oObj      
ID
 
de formulário 4
:= aParam[1]
        cIdPonto   
N
:= aParam[2]
        
Número
cIdModel 
de
 
línea
 
de FWFORMGRID 5
:= aParam[3]
       
C
  
      
Acción
 
de FWFORMGRID 6 C Id del campo*/
 If cIdPonto == 'FORMLINEPRE' //Ejecutado antes de la alteración de una línea de formulário FWFORMGRID (Grid)
            If cIdModel == "
SF1
SD1_
MASTER
DETAIL"
                cAction := aParam[
4
5]
                
cIdCpo
nLinha     := 
aParam[5]
oObj:GetLine()
            
elseIf cIdModel
    If cAction == "
SD1_DETAIL"
DELETE" .and. nLinha == 1
                   
cAction
 xRet := 
aParam[5]
.F. //Retorno de la validación.
                
cIdCpo
  
:=
 
aParam[6]
 Help( ,, "HELP",, "No puede ser eliminada esta linea.", 1, 
EndIf
0)
            
If
 
cAction
 
==
 
"CANSETVALUE"
 EndIf
            
If cIdCpo == "F1_LOJA"
EndIf
        
xRet := !Empty(oObj:GetValue("F1_FORNECE"))
EndIf
    
EndIf
ElseIf cAction == "SETVALUE" If cIdCpo == "D1_CF" If Empty(oObj:GetValue("D1_TES")) xRet := .F.

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    
Help(
  
,, "HELP",, "Informe primero un TES", 1, 0)
 := ''
Local cIdPonto   := ''
Local cIdModel   := ''
Local cAction    := ''
Local nLinha     := 0
Local nX 
EndIf
        := 0
Local cIdCpo     := 
EndIf
0


    If aParam <> NIL
     
EndIf
       
 
ElseIf
 
cIdPonto
 
==
 
'FORMPOS'
 
//Validación
 
total
 
del
 
formulario.
oObj       := aParam[1]
    
/*aParam 1
    cIdPonto 
O
  := aParam[2]
     
Objeto
 
del
 
formulário
 
o
cIdModel 
de
 
modelo,
 
conforme sea el caso 2
:= aParam[3]
       
C
 
       
ID
 
local
 
de
If 
ejecución
cIdPonto 
del punto de entrada 3 C ID de formulário 4
== 'FORMLINEPOS' //Ejecutado al finalizar la edición de una línea de formulário FWFORMGRID (Grid). (Validación de línea)
     
C
       If 
Acción
cIdModel 
de formulario 5
== "SD1_DETAIL"
      
C
        
Id
 
del campo 6
 nLinha   
Dato
 
asignado
 
al campo*/
:= oObj:GetLine()
            
xRet
 
:=
 
.T.
  
If cIdModel == "SF1_MASTER" If
If Empty(oObj:GetValue("
F1
D1_
TPVENT
CC", nLinha))
                   
xRet
 
:= .F.
Help( ,, "HELP",, "El campo 
F1
D1_
TPVENT
CC debe ser informado.", 1, 0)
                
EndIf
    xRet := .F. //Retorno de la validación.
   
ElseIf
 
cIdModel
 
==
 
"SD1_DETAIL"
          
For nX := 1 To oObj:Length()
EndIf
            EndIf
        
If Empty(oObj:GetValue("D1_CONTA", nX))
EndIf
    
xRet := .F.
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   
Help(
 
,,
 
"HELP",,
 
"El
 
campo D1_CONTA debe ser informado.", 1, 0)
:= ''
Local cIdPonto   := ''
Local cIdModel   := ''
Local cAction    := ''
Local nLinha     := 0
Local nX 
EndIf
        := 0
Local cIdCpo     := 
Next
0


    If aParam <> NIL
     
EndIf
  
     
   
ElseIf
 
cIdPonto
 
==
 
'FORMLINEPRE'
 
//Ejecutado antes de la alteración de una línea de formulário FWFORMGRID (Grid)
 oObj       := aParam[1]
        cIdPonto   := 
/*
aParam
1
[2]
     
O
   cIdModel   := aParam[3] 
Objeto
  
del
  
formulário
  
o
  
de
  
modelo,
  
conforme
  
sea
  
el
  
caso

		
2
If cIdPonto == "MODELCOMMITTTS"
  
C
        
ID
 
local
 
de
 
ejecución
/*aParam
 
del
 
punto
 
de
 
entrada 3
     
C
   1     
ID
O 
de
 
formulário 4
     
N
 Objeto del formulário o de modelo, conforme 
Número
sea 
de
el 
línea
caso
 
de
 
FWFORMGRID 5
     
C
     2   
Acción
 
de FWFORMGRID 6
 C     
C
   ID local de ejecución del 
Id
punto 
del
de 
campo*/
entrada
            
If
3   
cIdModel
 
== "SD1_DETAIL"
 C        ID de formulário*/
      
cAction
 
:=
 
aParam[5]
    If oObj:GetOperation() == 3 //Inclusión
        
nLinha
     
:= oObj:GetLine()
   MsgAlert("Documento " + oObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " guardado." )
            
If cAction
ElseIf oObj:GetOperation() == 
"DELETE" .and. nLinha == 1
5 //Borrado
                MsgAlert("Documento " + 
xRet := .F. //Retorno de la validación.
oObj:GetModel("SF1_MASTER"):GetValue("F1_DOC") + " borrado." )
            
Help( ,, "HELP",, "No puede ser eliminada esta linea.", 1, 0)
EndIf
        
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
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       
Número de línea de FWFORMGRID*/
:= ''
Local cIdPonto   := ''
Local cIdModel   := ''
Local cAction    := ''
Local 
If
nLinha 
cIdModel
 
==
 
"SD1_DETAIL"
  := 0
Local nX         := 0
Local cIdCpo 
nLinha
    
:= 
oObj:GetLine()
0


    If aParam <> NIL
           
If Empty(oObj:GetValue("D1_CC", nLinha))
 
        oObj       := aParam[1]
     
Help(
 
,,
 
"HELP",, "El campo D1_CC debe ser informado.", 1, 0)
 cIdPonto   := aParam[2]
        cIdModel   := aParam[3]                   
		If 
xRet
cIdPonto 
:
== 
.F. //Retorno de la validación.
"MODELCOMMITNTTS"
             /*aParam
       
EndIf
     1     O  
EndIf
      Objeto del 
EndIf
formulário o de 
EndIf Return xRet  

Ejemplo completo:

...

languagejava
firstline1
titleEjemplo:
linenumberstrue
collapsetrue

...

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 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 := ''
Local cIdPonto   := ''
Local cIdModel   := ''
Local cAction    := ''
Local nLinha ID de formulário*/
  := 0
Local nX        xRet := .T. 0
Local cIdCpo     := 0
 
 
    If Empty(oObj:GetModel("SF1_MASTER"):GetValue("F1_TPVENT"))aParam <> NIL
             
   xRet := .F.
   oObj       := aParam[1]
     Help( ,, "HELP",, "El campo F1_TPVENT debe ser informado.", 1, 0)
         cIdPonto   := aParam[2]
        cIdModel   := aParam[3]
     EndIf

    
        ForIf nXcIdPonto :== 1 To oObj:GetModel("SD1_DETAIL"):Length()'MODELPOS' //Validación total del modelo.
            /*aParam
    If Empty(oObj:GetModel("SD1_DETAIL"):GetValue("D1_CONTA", nX))
        1     O        Objeto del formulário o de modelo, conforme sea el xRetcaso
 := .F.
          2     C     Help( ,, "HELP",, "El campo D1_CONTA debe ser informado.", 1, 0) ID local de ejecución del punto de entrada
            3     EndIf
C        ID de formulário*/
  Next
          xRet := .T.
        ElseIf cIdPonto == 'FORMPRE' //Ejecutado antes de la alteración de cualquier campo de formulario.
 If Empty(oObj:GetModel("SF1_MASTER"):GetValue("F1_TPVENT"))
                xRet := .F.
    //Formulario
            /*aParam
			1     O        Objeto del formulário o de modelo, conforme sea el caso
			2     CHelp( ,, "HELP",, "El campo F1_TPVENT debe ser informado.", 1, 0)
            EndIf
 
            ID local de ejecución del punto de entrada
			3For nX := 1 To oObj:GetModel("SD1_DETAIL"):Length()
        C        ID de formulário
			4 If Empty(oObj:GetModel("SD1_DETAIL"):GetValue("D1_CONTA", nX))
    C        Acción de formulario
			5     C xRet := .F.
     Id del campo
			6     C        DatoHelp( asignado al campo*/
     ,, "HELP",, "El campo D1_CONTA debe ser informado.", 1, 0)
       //Grid
         EndIf
   /*aParam
			1     O    Next
    Objeto del formulário o de modelo, conforme sea el caso
			2     C   ElseIf cIdPonto == 'FORMPRE' //Ejecutado antes de IDla localalteración de ejecucióncualquier delcampo punto de entrada
			3formulario.
       C     //Formulario
   ID de formulário
			4          /*aParam
   N        Número de1 línea de FWFORMGRID
			5  O   C     Objeto del formulário Accióno de FWFORMGRID
			6modelo, conforme sea el caso
       C     2   Id del campo*/
C        ID local de ejecución Ifdel cIdModelpunto == "SF1_MASTER"de entrada
            3    cAction := aParam[4]
C        ID de formulário
       cIdCpo  := aParam[5]
  4     C     elseIf cIdModel == "SD1_DETAIL"  Acción de formulario
            5    cAction := aParam[5]
C        Id del campo
       cIdCpo    := aParam[6]
     C       EndIf
 Dato asignado al campo*/
        If cAction == "CANSETVALUE" //Grid
            /*aParam
    If cIdCpo == "F1_LOJA"
     1     O        Objeto del xRetformulário := !Empty(oObj:GetValue("F1_FORNECE"))
     o de modelo, conforme sea el caso
           EndIf
 2     C      ElseIf cAction == "SETVALUE" 
     ID local de ejecución del punto de entrada
           If cIdCpo3 == "D1_CF"
   C        ID de formulário
       If Empty(oObj:GetValue("D1_TES"))
    4     N        Número de línea de FWFORMGRID
   xRet := .F.
       5     C        Acción de  FWFORMGRID
 Help( ,, "HELP",, "Informe primero un TES", 1, 0)
   6     C        Id del campo*/
   EndIf
         If cIdModel == "SF1_MASTER"
      EndIf
          cAction  EndIf:= aParam[4]
        ElseIf cIdPonto == 'FORMPOS' //Validación total del formulario.
 cIdCpo  := aParam[5]
        /*aParam
			1    elseIf OcIdModel == "SD1_DETAIL"
      Objeto del formulário o de modelo, conforme sea el caso
			2 cAction := aParam[5]
  C        ID local de ejecución del punto de entrada
			3cIdCpo  := aParam[6]
      C      EndIf
  ID de formulário
			4     C   If cAction == "CANSETVALUE"
  Acción de formulario
			5     C       If IdcIdCpo del campo
			6			== "F1_LOJA"
     Dato asignado al campo*/
            xRet := .T.!Empty(oObj:GetValue("F1_FORNECE"))
            If  cIdModel == "SF1_MASTER" EndIf
            ElseIf cAction == "SETVALUE"
                If cIdCpo == "D1_CF"
                    If Empty(oObj:GetValue("F1D1_TPVENTTES"))
                        xRet := .F.
                        Help( ,, "HELP",, "ElInforme campoprimero F1_TPVENT debe ser informado.un TES", 1, 0)
                    EndIf
             ElseIf cIdModel == "SD1_DETAIL" EndIf
            EndIf
    For nX := 1 To oObj:Length()
     ElseIf cIdPonto == 'FORMPOS' //Validación total del formulario.
            /*aParam
      If Empty(oObj:GetValue("D1_CONTA", nX))
    1     O        Objeto del formulário o de modelo, conforme xRetsea := .F.el caso
            2     C       Help( ,, "HELP",, "El campo D1_CONTA debe ser informado.", 1, 0)
ID local de ejecución del punto de entrada
            3     C     EndIf
   ID de formulário*/
           Next
 xRet := .T.
         EndIf  
 If cIdModel == "SF1_MASTER"
    ElseIf cIdPonto == 'FORMLINEPRE' //Ejecutado antes de la alteración de una línea de formulário FWFORMGRID (GridIf Empty(oObj:GetValue("F1_TPVENT"))
            /*aParam
			1     O   xRet := .F.
   Objeto del formulário o de modelo, conforme sea el caso
			2     C   Help( ,, "HELP",, "El campo IDF1_TPVENT localdebe de ejecución del punto de entrada
			3ser informado.", 1, 0)
       C        ID de formulárioEndIf
			4     N       ElseIf NúmerocIdModel de línea de FWFORMGRID
			5== "SD1_DETAIL"
     C        Acción de FWFORMGRID
			6  For nX := C1 To oObj:Length()
      Id del campo*/
            If cIdModel == "SD1_DETAIL"Empty(oObj:GetValue("D1_CONTA", nX))
                cAction := aParam[5]
      xRet := .F.
        nLinha     := oObj:GetLine()
          Help( ,, "HELP",, "El campo D1_CONTA Ifdebe cAction == "DELETE" .and. nLinha == 1
ser informado.", 1, 0)
                    EndIf
  xRet := .F. //Retorno de la validación.
        Next
            Help( ,, "HELP",, "No puede ser eliminada esta linea.", 1, 0)EndIf 
        ElseIf cIdPonto == 'FORMLINEPRE' //Ejecutado antes de la alteración de una línea de formulário FWFORMGRID (Grid)
            /*aParam
            1    EndIf
 O        Objeto del  EndIf
   formulário o de modelo, conforme sea el caso
     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     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
        ElseIf 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
        ElseIf 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  
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


Puntos de entrada creados.

Puntos de entrada para agregar opciones al menú:

PE COMA221MNU Agregar opciones al menú en COMA221

PE COMA222MNU Agregar opciones al menú en COMA222

PE COMA223MNU Agregar opciones al menú en COMA223

PE COMA224MNU Agregar opciones al menú en COMA224


Punto de entrada para usar un campo de usario para la descripción del producto.

PE LXINPROD Campo de descripción de producto LOCXIN


Puntos de entrada descontinuados.

Los puntos de entrada citados a continuación, no tienen funcionalidad dentro de las rutinas COMA221, COMA222, COMA223 y COMA224.


Punto de entradaDescripciónPunto de entrada sugerido
LOCXPE4| MT100GRV  Punto de entrada pre grabación de la nota.FORMPOS
LOCXPE5Punto de entrada post grabación del libro fiscal.MODELCOMMITTTS o MODELCOMMITNTTS
LOCXPE6 | A103VLRPunto de entrada para alterar valor total de la nota para base de calculo de los títulos.No habilitado.
LOCXPE7 | GQREENTRPunto de entrada para integración con Celerina.No habilitado.
LOCXPE8 | M466SF1Punto de entrada post grabación de encabezado.MODELCOMMITTTS
LOCXPE9Punto de entrada post grabaciones de campos del encabezado.MODELCOMMITTTS
LOCXPE11 | A466CRTOPunto de entrada post grabaciones finalizada la transacción.MODELCOMMITNTTS
LOCXPE13Punto de entrada para alterar cantidad de la segunda unidad de medida.MODELCOMMITTTS
LOCXPE14 | M466SD1Punto de entrada post actualizaciones de cada ítem.FORMLINEPOS
LOCXPE15Punto de entrada para ejecutar rdmakes para tratamiento especifico.MODELCOMMITTTS
LOCXPE16 | MT100TOKPunto de entrada para incluir validaciones en el tudook.FORMPOS
LOCXPE17 | MT100LOKPunto de entrada para agregar validaciones de línea.FORMLINEPOS
LOCXPE19 | A100F4CPPunto de entrada para notas de entrada que no sea devoluciones para agregar teclas.LOCX60VIEW.PRW
LOCX62VIEW.PRW
LOCX10VIEW.PRW
LOCX13VIEW.PRW
LOCX14VIEW.PRW
LOCX20VIEW.PRW
LOCX10AUTV.PRW
LOCX10SOPV.PRW
LOCX08VIEW.PRW
LOCX23VIEW.PRW
LOCX09VIEW.PRW
LOCXPE24 | M460NUMPunto de entrada para numeración de NF.MODELPOS
LOCXPE30Punto de entrada para colocar campos obligatorios.LOCX60VIEW.PRW
LOCX62VIEW.PRW
LOCX10VIEW.PRW
LOCX13VIEW.PRW
LOCX14VIEW.PRW
LOCX20VIEW.PRW
LOCX10AUTV.PRW
LOCX10SOPV.PRW
LOCX08VIEW.PRW
LOCX23VIEW.PRW
LOCX09VIEW.PRW
LOCXPE37Punto de entrada post grabación de SE1/SE2.MODELCOMMITTTS
LOCXPE38Punto de entrada post grabación de SE1/SE2.MODELCOMMITTTS
LOCXPE45 | M101SERPunto de entrada para alterar serie de NF.No habilitado.
LOCXPE62Punto de entrada para fecha de emisión.FORMLINEPOS
LOCXPE68Punto de entrada para manipular los valores de costo de entrada en las monedas. MODELCOMMITTTS
LOCXPE72Punto de entrada para incluir campos de usuario al encabezado del documento.

Si se quiere agregar campos al encabezado usar:
LOCX60VIEW.PRW
LOCX62VIEW.PRW
LOCX10VIEW.PRW
LOCX13VIEW.PRW
LOCX14VIEW.PRW
LOCX20VIEW.PRW
LOCX10AUTV.PRW
LOCX10SOPV.PRW
LOCX08VIEW.PRW
LOCX23VIEW.PRW
LOCX09VIEW.PRW

Para informar un campo:

MODELPOS

LOCXPE74Punto de entrada para permitir alterar la provincia de entrega.No habilitado.

A103CND2

Punto de entrada para alterar condición de pago.FORMLINEPOS

LXHORANFIS

Punto de entrada para ajustar valor del campo F1_HORA.MODELCOMMITTTS

LOCXDREM

Punto de entrada para descripción del Remito.LOCX60VIEW.PRW
LOCX62VIEW.PRW
LOCX10VIEW.PRW
LOCX13VIEW.PRW
LOCX14VIEW.PRW
LOCX20VIEW.PRW
LOCX10AUTV.PRW
LOCX10SOPV.PRW
LOCX08VIEW.PRW
LOCX23VIEW.PRW
LOCX09VIEW.PRW

M100L001

Punto de entrada para actualizar la tasa en las tablas fiscales.No habilitado.

MAGENTE

Punto de entrada para verificar si  es agente de percepción de IVA.No habilitado.

MT462MNU

Punto de entrada para agregar opciones al menú.No habilitado.

LOCXPE61

Punto de entrada para agregar campos al browseUso de visiones Gráficos e Visões do Browse

LOCXPE54

Punto de entrada para modificar información al cargar una factura.No habilitado.

LOCXPE66

Punto de entrada para validar parámetros informados en grupo de preguntas MT466ENo habilitado.

LOCXPE47

Punto de entrada para no actualizar la numeración de la nota en SX5.No habilitado.

LOCXPE10

Punto de entrada posterior a actualizaciones de SB2.MODELCOMMITTTS o  MODELCOMMITNTTS

LOCXPE34

Punto de entrada usado en la selección de facturas.No habilitado.

LOCXPE28

Punto de entrada posterior al borrado de ítems.MODELCOMMITTTS

LOCXPE29

Punto de entrada posterior al borrado del documento.MODELCOMMITTTS

LOCXPE49

Punto de entrada usado en la selección de remitos.No habilitado.

LOCXPE46

Punto de entrada usado en la selección de remitos.No habilitado.


El sistema da aviso en caso de tener alguno de estos Puntos de Entrada compilados (este mensaje solo aplica para la rutina donde se detone):

Image Added

"Para usuarios administradores no será permitido ocultar el mensaje".


Informações

Los puntos de entrada que inician como "LOCXPE" (Ejemplo: LOCXPE16, LOCXPE16 ), utilizados en las rutinas de Factura de entrada, Remito de Entrada, Nota de Débito Proveedor y Nota de Crédito Interna no serán ejecutados dentro de estas rutinas de documentos fiscales de entrada.


Personalización de pantalla.

Es posible realizar la personalización de algunas propiedades de las pantallas de los documentos fiscales.


DocumentoPunto de entradaDocumentación
Remito de entradaLOCX60VIEW.PRW

PE LOCX60VIEW Realizar modificaciones a la view LOCX60

Remito de entrada de beneficiamientoLOCX62VIEW.PRWPE LOCX62VIEW Realizar modificaciones a la view LOCX62

Factura de entrada

LOCX10VIEW.PRWPE LOCX10VIEW Realizar modificaciones a la view LOCX10
Gastos de importaciónLOCX13VIEW.PRWPE LOCX13VIEW Realizar modificaciones a la view LOCX13
Conoc. transp./Conoc. fleteLOCX14VIEW.PRWPE LOCX14VIEW Realizar modificaciones a la view LOCX14
Factura anticipoLOCX20VIEW.PRWPE LOCX20VIEW Realizar modificaciones a la view LOCX20 MEX
AutofacturaLOCX10AUTV.PRWPE LOCX10AUTV Realizar modificaciones a la view LOCX10AUT PAR
Factura documento soporteLOCX10SOPV.PRWPE LOCX10SOPV Realizar modificaciones a la view LOCX10SOP COL
Nota de débito proveedorLOCX08VIEW.PRWPE LOCX08VIEW Realizar modificaciones a la view LOCX08
Nota de débito - Nota ajusteLOCX23VIEW.PRWPE LOCX23VIEW Realizar modificaciones a la view LOCX23 COL
Nota de crédito internaLOCX09VIEW.PRWPE LOCX09VIEW Realizar modificaciones a la view LOCX09


Propiedades.

PropiedadTipoDescripción
MVC_VIEW_IDFIELDCNombre de campo
MVC_VIEW_ORDEMCOrden
MVC_VIEW_TITULO CTítulo del campo
MVC_VIEW_DESCR CDescripción del campo
MVC_VIEW_HELP AArray del help
MVC_VIEW_PICT CPicture
MVC_VIEW_PVARBBloque de Picture Var
MVC_VIEW_LOOKUP CConsulta F3
MVC_VIEW_CANCHANGE LIndica si el campo es editable
MVC_VIEW_FOLDER_NUMBER CCarpeta de campo
MVC_VIEW_GROUP_NUMBER CAgruapamiento de campo
MVC_VIEW_COMBOBOX ALista de valores permitidos en el campo (Combo)
MVC_VIEW_MAXTAMCMBNTamaño máximo de la opción mayor de campo
MVC_VIEW_INIBROW CInicializador de browse
MVC_VIEW_VIRTUAL LIndica si el campo es virtual
MVC_VIEW_PICTVAR CPicture variable
MVC_VIEW_INSERTLINE LIndica si debe haber un salto de línea después del campo
MVC_VIEW_WIDTH NAncho de campo en el grid
MVC_VIEW_MODAL LIndica si el campo debe ser mostrado en formularios modal

 

Bloco de código
languagejava
firstline1
titleEjemplo:
linenumberstrue
collapsetrue
#INCLUDE 'protheus.ch'
#INCLUDE 'parmtype.ch'
#INCLUDE 'FWMVCDEF.CH'

User function LOCX10VIEW()
Local oView := PARAMIXB[1] //Viewdef

    
	//Remover un campo de usuario de la pantalla.
    If oView:GetViewStruct("SF1_MASTER"):HasField("F1_NUMERO") //Verificación de la existencia del campo.
        oView:GetViewStruct("SF1_MASTER"):RemoveField( "F1_NUMERO" )
    EndIf

    //Bloqueo de campo para edición. Encabezado.
    If oView:GetViewStruct("SF1_MASTER"):HasField("F1_STRING") //Verificación de la existencia del campo.
        oView:GetViewStruct("SF1_MASTER"):SetProperty("F1_STRING", MVC_VIEW_CANCHANGE, .F.)
    EndIf

	//Agregar un campo de sistema.
     oView:GetViewStruct("SF1_MASTER"):AddField("F1_HORA"  ,"99",AllTrim(FwX3Titulo("F1_HORA"))    ,AllTrim(FwX3Titulo("F1_HORA"))     ,{""},"GET","@!",NIL,"",.T.,NIL,NIL,{},NIL,NIL,.F.)

 	//Bloqueo de campo para edición. Grid.
    oView:GetViewStruct("SD1_DETAIL"):SetProperty("D1_CF", MVC_VIEW_CANCHANGE, .F.)

Return



Aviso

Es recomendable no realizar modificaciones sobre los campos estándar de los documentos para no generar errores.

Los campos de usuario son agregados de manera automática a las rutinas de documentos fiscales, en caso de requerir retirar algún campo se puede marcar como no usado, o removerlo por medio de los presentes puntos de entrada.

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