Árvore de páginas

Versões comparadas

Chave

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

Por 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 de MVC es posible realizar validaciones de datos en los documentos de entrada, como se ejemplifican la información a continuación.

...

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

Return xRet

Aviso
titleIMPORTANTE

La función  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.

Punto de entradaDescripción
LOCXPE4| MT100GRV  Punto de entrada pre grabación de la nota.
LOCXPE5Punto de entrada post  grabación del libro fiscal.
LOCXPE6 | A103VLRPunto de entrada para alterar valor total de la nota para base de calculo de los titulos.
LOCXPE7 | GQREENTRPunto de entrada para integración con Celerina.
LOCXPE8 | M466SF1Punto de entrada post grabación de enecabezado.
LOCXPE9Punto de entrada post grabaciones de campos del encabezado.
LOCXPE11 | A466CRTOPunto de entrada post grabaciones finalizada la transacción.
LOCXPE13Punto de entrada para alterar cantidad de la segunda unidad de medida.
LOCXPE14 | M466SD1Punto de entrada post actualizaciones de cada item.
LOCXPE15Punto de entrada para ejecutar rdmakes para tratamiento especifico.
LOCXPE16 | MT100TOKPunto de entrada para incluir validaciones en el tudook.
LOCXPE17 | MT100LOKPunto de entrada para agregar validaciones de linea.
LOCXPE19 | A100F4CPPunto de entrada para notas de entrada que no sea devoluciones para agregar teclas.
LOCXPE24 | M460NUMPunto de entrada para numeración de NF.
LOCXPE30Punto de entrada para colocar campos obligatorios.
LOCXPE37Punto de entrada post grabación de SE1/SE2.
LOCXPE38Punto de entrada post grabación de SE1/SE2.
LOCXPE45 | M101SERPunto de entrada para alterar serie de NF.
LOCXPE62Punto de entrada para fecha de emisión.
LOCXPE68Punto de entrada para manipular los valores de costo de entrada en las monedas. 
LOCXPE72Punto de entrada para incluir campos de usuario al encabezado del documento.
LOCXPE74Punto de entrada para permitir alterar la provincia de entrega.

A103CND2

Punto de entrada para alterar condición de pago.

LXHORANFIS

Punto de entrada para ajustar valor del campo F1_HORA.

LOCXDREM

Punto de entrada para descripción del Remito.

M100L001

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

MAGENTE

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