Usina BRGuía AdvPL
Ingresar
← Todos los temas
PUNTO DE ENTRADAPublicado

MT120OK

MT120OK() --> lRetorno

Ejecuta validaciones específicas de usuario en los ítems del pedido de compra antes de continuar el proceso.

Puntos de entradaComprasPedido de compraMATA120MATA121GetDadosValidación
01 · DESCRIPCIÓN GENERAL

Descripción general

MT120OK es un punto de entrada de la rutina de Pedido de Compras / Autorización de Entrega. Se ejecuta al final de A120TudOk(), después de confirmar los ítems de GetDados y antes del pie de la dialog del pedido de compra. Su retorno controla la continuidad del proceso: .T. permite continuar y .F. interrumpe la validación.

02 · SINTAXIS

Sintaxis

MT120OK() --> lRetorno

Retorno

lRetorno, lógico. Retorna .T. para permitir que los ítems validados continúen el proceso. Retorna .F. para interrumpirlo cuando una validación específica del usuario no sea atendida.

03 · EJEMPLO PRÁCTICO

Validación de producto, cantidad y precio

#Include "TOTVS.ch"

User Function MT120OK()
    Local nPosProd := AScan(aHeader, {|x| AllTrim(x[2]) == "C7_PRODUTO"})
    Local nPosCant := AScan(aHeader, {|x| AllTrim(x[2]) == "C7_QUANT"})
    Local nPosPrec := AScan(aHeader, {|x| AllTrim(x[2]) == "C7_PRECO"})
    Local lValido  := .T.
    Local nLinea   := 0

    For nLinea := 1 To Len(aCols)
        If !aCols[nLinea][Len(aCols[nLinea])] .And. !Empty(aCols[nLinea][nPosProd])
            If Empty(aCols[nLinea][nPosCant]) .Or. Empty(aCols[nLinea][nPosPrec])
                MsgAlert("Informe cantidad y precio para el producto " + aCols[nLinea][nPosProd], "Validación del pedido")
                lValido := .F.
                Exit
            EndIf
        EndIf
    Next nLinea

Return lValido
Resultado esperado

El ejemplo localiza los campos en aHeader, recorre las líneas de aCols e impide continuar cuando un producto informado no tiene cantidad o precio.

04 · EJEMPLO PRÁCTICO

Estructura mínima

#Include "TOTVS.ch"

User Function MT120OK()
    Local lRetorno := .T.

    // Ejecuta aquí las validaciones adicionales de los ítems del pedido.
    // Retorna .F. para interrumpir el proceso.

Return lRetorno
Resultado esperado

Estructura mínima para crear una validación adicional controlada por el retorno lógico del punto de entrada.

BUENAS PRÁCTICAS
  • Usa AScan() sobre aHeader para localizar las posiciones de los campos que serán validados.
  • Inicializa el retorno como .T. y cámbialo a .F. solamente cuando una regla falle.
  • Usa Exit para interrumpir el loop tan pronto como se encuentre la primera inconsistencia relevante.
  • Muestra un mensaje claro cuando la validación impida la continuidad.
  • Prueba pedidos con una línea, múltiples líneas, líneas vacías y líneas marcadas para eliminación.
ERRORES COMUNES
  • No supongas que las posiciones de C7_PRODUTO, C7_QUANT y C7_PRECO sean fijas; localiza los campos en aHeader antes de acceder a aCols.
  • Atención a la última posición de la línea de aCols, usada con frecuencia para indicar línea marcada/eliminada en el browse.
  • Evita retornar .F. sin orientar al usuario sobre el motivo de la interrupción.
  • No ejecutes procesos lentos en esta validación sin evaluar el impacto en la confirmación del pedido.
  • Evita includes heredados en nuevos códigos cuando no sean necesarios; mantén solamente las dependencias exigidas por el fuente.

Contenido relacionado

REFERENCIAS
  1. TOTVS. MT120OK - Validaciones Específicas de Usuario. TDN. Creado por Raphaela Marcela Ferreira, última modificación por Philipe dos Santos Pompeu el 7 jul. 2023. Acceso el 28 ago. 2026.
  2. COSTA, Adilio. Punto de Entrada MT120OK - Validaciones Específicas de Usuario. ProtheusAdvpl, 22 oct. 2025. Acceso el 28 ago. 2026.
  3. Puntos de Entrada — AP 7 7.10. Base histórica utilizada por la Guía AdvPL para referencia cruzada de rutinas de pedido de compra.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR
0 comentario(s) aprobado(s)

Comentarios

Todavía no hay comentarios aprobados.

Inicia sesión con Google o Microsoft para comentar.

Desarrollado con Usina Docs · Alpha