MT120OK
MT120OK() --> lRetornoEjecuta validaciones específicas de usuario en los ítems del pedido de compra antes de continuar el proceso.
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.
Sintaxis
MT120OK() --> lRetornoRetorno
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.
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 lValidoEl ejemplo localiza los campos en aHeader, recorre las líneas de aCols e impide continuar cuando un producto informado no tiene cantidad o precio.
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 lRetornoEstructura mínima para crear una validación adicional controlada por el retorno lógico del punto de entrada.
- 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.
- 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.

Comentarios
Todavía no hay comentarios aprobados.
Inicia sesión con Google o Microsoft para comentar.