Histórico da Página
Los puntos de entrada utrilizados 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 de MVC es posible realizar validaciones de datos en los documentos de entrada, como se ejemplifican la información a continuación.
Punto de entrada MVC | Descripción | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MODELPOS | Punto de entrada ejecutado en la validación total del modelo.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FORMPRE | Punto de entrada ejecutado antes de la alteración de cualquier campo de formulario.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FORMPOS | Punto de entrada ejecutado en la validación total del formulario.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FORMLINEPRE | Punto de entrada ejecutado antes de la alteración de cualquier campo de formulario.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FORMLINEPOS | Punto de entrada ejecutado al finalizar la edición de una línea.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MODELCOMMITTTS | Punto de entrada ejecutado posterior al grabado/borrado dentro de la transacción.
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
| ||||||||||||||||||||||||||||||
MODELCOMMITNTTS | Punto de entrada ejecutado posterior al grabado/borrado después de la transacción.
|
...
|
...
|
...
|
...
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
...
|
| Bloco de código | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#INCLUDE 'protheus.ch' #INCLUDE 'FWMVCDEF.CH' User Function LOCXIN() Local aParam := PARAMIXB Local xRet 4 N Número de línea de FWFORMGRID 5 C Acción de FWFORMGRID 6 := .T. Local oObj C := '' Local cIdPonto Id del campo*/ := '' Local cIdModel := '' Local cAction := If cIdModel == "SF1_MASTER" '' Local nLinha := 0 Local nX := 0 Local cIdCpo cAction := aParam[4]0 If aParam <> NIL cIdCpo := aParam[5] oObj elseIf cIdModel == "SD1_DETAIL" := aParam[1] cIdPonto cAction := aParam[52] cIdModel cIdCpo := aParam[63] EndIf If cIdPonto == 'MODELPOS' //Validación total del Ifmodelo. cAction == "CANSETVALUE" /*aParam If cIdCpo == "F1_LOJA" 1 O Objeto del formulário o de modelo, conforme xRetsea := !Empty(oObj:GetValue("F1_FORNECE"))el caso 2 EndIf C ID local de ElseIfejecución cActiondel == "SETVALUE" punto de entrada 3 If cIdCpoC == "D1_CF" ID de formulário*/ IfxRet Empty(oObj:GetValue("D1_TES")) := .T. If Empty(oObj:GetModel("SF1_MASTER"):GetValue("F1_TPVENT")) xRet := .F. Help( ,, "HELP",, "Informe primero un TESEl campo F1_TPVENT debe ser informado.", 1, 0) EndIf For nX := EndIf 1 To oObj:GetModel("SD1_DETAIL"):Length() EndIf ElseIf cIdPonto == 'FORMPOS' //Validación total del formulario. If Empty(oObj:GetModel("SD1_DETAIL"):GetValue("D1_CONTA", nX)) /*aParam 1 xRet := .F. O Objeto del formulário o de modelo, conforme sea el caso 2 Help( ,, C ID local de ejecución del punto de entrada 3"HELP",, "El campo D1_CONTA debe ser informado.", 1, 0) C EndIf ID de formulário*/ Next xRet := .T. IfElseIf cIdModelcIdPonto == "SF1_MASTER" 'FORMPRE' //Ejecutado antes de la alteración de cualquier campo de formulario. If Empty(oObj:GetValue("F1_TPVENT")) //Formulario /*aParam xRet := .F. 1 O Objeto Help(del ,, "HELP",, "El campo F1_TPVENT debe ser informado.", 1, 0) formulário o de modelo, conforme sea el caso 2 C EndIf ID local de ejecución del punto de entrada ElseIf cIdModel == "SD1_DETAIL" 3 C For nX := 1ID To oObj:Length()de formulário 4 C If Empty(oObj:GetValue("D1_CONTA", nX)) Acción de formulario 5 C xRet := .F. Id del campo 6 C Help( ,, "HELP",, "El campo D1_CONTA debe ser informado.", 1, 0)Dato asignado al campo*/ //Grid EndIf /*aParam Next 1 O EndIf Objeto del formulário o de modelo, conforme sea el ElseIfcaso cIdPonto == 'FORMLINEPRE' //Ejecutado antes de la alteración de una línea de2 formulário FWFORMGRID (Grid) C ID /*aParam 1 Olocal de ejecución del punto de entrada Objeto del formulário o de3 modelo, conforme sea el caso 2 C C ID de formulário ID local de ejecución del punto de entrada 3 4 C N ID de formulário 4 N Número de línea de FWFORMGRID Número de línea de FWFORMGRID 5 C Acción de FWFORMGRID 6 C Id del campo*/ If cIdModel == "SD1SF1_DETAILMASTER" cAction := aParam[54] nLinhacIdCpo := oObj:GetLine()aParam[5] If cActionelseIf cIdModel == "DELETE" .and. nLinha == 1SD1_DETAIL" xRetcAction := .F. //Retorno de la validación. aParam[5] cIdCpo := aParam[6] Help( ,, "HELP",, "No puede ser eliminada esta linea.", 1, 0) EndIf If cAction == EndIf "CANSETVALUE" If cIdCpo == "F1_LOJA" xRet := !Empty(oObj:GetValue("F1_FORNECE")) EndIf ElseIf cIdPontocAction == '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 |
Puntos de entrada descontinuados.
Los puntos de entrada citados a continuación no tienen funcionalidad dentro de las rutinas COMA221, COMA222, COMA223, COMA224.
...
"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*/
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
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 | ||
|---|---|---|
| ||
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 entrada | Descripción | Punto de entrada sugerido |
|---|---|---|
| LOCXPE4| MT100GRV | Punto de entrada pre grabación de la nota. | FORMPOS |
| LOCXPE5 | Punto de entrada post grabación del libro fiscal. | MODELCOMMITTTS o MODELCOMMITNTTS |
| LOCXPE6 | A103VLR | Punto de entrada para alterar valor total de la nota para base de calculo de los títulos. | No habilitado. |
| LOCXPE7 | GQREENTR | Punto de entrada para integración con Celerina. | No habilitado. |
| LOCXPE8 | M466SF1 | Punto de entrada post grabación de encabezado. | MODELCOMMITTTS |
| LOCXPE9 | Punto de entrada post grabaciones de campos del encabezado. | MODELCOMMITTTS |
| LOCXPE11 | A466CRTO | Punto de entrada post grabaciones finalizada la transacción. | MODELCOMMITNTTS |
| LOCXPE13 | Punto de entrada para alterar cantidad de la segunda unidad de medida. | MODELCOMMITTTS |
| LOCXPE14 | M466SD1 | Punto de entrada post actualizaciones de cada ítem. | FORMLINEPOS |
| LOCXPE15 | Punto de entrada para ejecutar rdmakes para tratamiento especifico. | MODELCOMMITTTS |
| LOCXPE16 | MT100TOK | Punto de entrada para incluir validaciones en el tudook. | FORMPOS |
| LOCXPE17 | MT100LOK | Punto de entrada para agregar validaciones de línea. | FORMLINEPOS |
| LOCXPE19 | A100F4CP | Punto 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 | M460NUM | Punto de entrada para numeración de NF. | MODELPOS |
| LOCXPE30 | Punto 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 |
| LOCXPE37 | Punto de entrada post grabación de SE1/SE2. | MODELCOMMITTTS |
| LOCXPE38 | Punto de entrada post grabación de SE1/SE2. | MODELCOMMITTTS |
| LOCXPE45 | M101SER | Punto de entrada para alterar serie de NF. | No habilitado. |
| LOCXPE62 | Punto de entrada para fecha de emisión. | FORMLINEPOS |
| LOCXPE68 | Punto de entrada para manipular los valores de costo de entrada en las monedas. | MODELCOMMITTTS |
| LOCXPE72 | Punto de entrada para incluir campos de usuario al encabezado del documento. | Si se quiere agregar campos al encabezado usar: Para informar un campo: MODELPOS |
| LOCXPE74 | Punto 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 browse | Uso 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 MT466E | No 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):
"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.
Propiedades.
| Propiedad | Tipo | Descripción |
|---|---|---|
| MVC_VIEW_IDFIELD | C | Nombre de campo |
| MVC_VIEW_ORDEM | C | Orden |
| MVC_VIEW_TITULO | C | Título del campo |
| MVC_VIEW_DESCR | C | Descripción del campo |
| MVC_VIEW_HELP | A | Array del help |
| MVC_VIEW_PICT | C | Picture |
| MVC_VIEW_PVAR | B | Bloque de Picture Var |
| MVC_VIEW_LOOKUP | C | Consulta F3 |
| MVC_VIEW_CANCHANGE | L | Indica si el campo es editable |
| MVC_VIEW_FOLDER_NUMBER | C | Carpeta de campo |
| MVC_VIEW_GROUP_NUMBER | C | Agruapamiento de campo |
| MVC_VIEW_COMBOBOX | A | Lista de valores permitidos en el campo (Combo) |
| MVC_VIEW_MAXTAMCMB | N | Tamaño máximo de la opción mayor de campo |
| MVC_VIEW_INIBROW | C | Inicializador de browse |
| MVC_VIEW_VIRTUAL | L | Indica si el campo es virtual |
| MVC_VIEW_PICTVAR | C | Picture variable |
| MVC_VIEW_INSERTLINE | L | Indica si debe haber un salto de línea después del campo |
| MVC_VIEW_WIDTH | N | Ancho de campo en el grid |
| MVC_VIEW_MODAL | L | Indica si el campo debe ser mostrado en formularios modal |
| Bloco de código | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#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. |
...
