ipprmt020: avisa (sin bloquear) cuando un item se repite en el detalle al guardar
Nueva funcion itemRepetido(): misma area, clase, grupo, tipo y medida entre las lineas con cantidad. Si hay repetido pregunta si desea continuar; NO vuelve a la edicion (CONTINUE DIALOG), YES guarda como antes. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,8 @@ DEFINE Toemail,
|
||||
emailadd,
|
||||
retorne
|
||||
STRING
|
||||
DEFINE descRepetido, respuesta STRING
|
||||
|
||||
DEFINE
|
||||
d_tipos,
|
||||
mensaje,
|
||||
@@ -492,6 +494,22 @@ FUNCTION entradas()
|
||||
DISPLAY arr_iptb58[idx].cantidad TO sdetalle[scr_l].cantidad
|
||||
END IF
|
||||
ON ACTION guardar ATTRIBUTE(TEXT = opcion, IMAGE = "save")
|
||||
# Aviso (no bloqueo) si un item se repite en el detalle
|
||||
LET descRepetido = itemRepetido()
|
||||
IF descRepetido IS NOT NULL THEN
|
||||
LET respuesta =
|
||||
fgl_winquestion(
|
||||
"Item repetido",
|
||||
"El item " || descRepetido CLIPPED
|
||||
|| " esta repetido en el detalle. Desea continuar?",
|
||||
"NO",
|
||||
"YES|NO",
|
||||
"QUESTION",
|
||||
0)
|
||||
IF respuesta != "YES" THEN
|
||||
CONTINUE DIALOG
|
||||
END IF
|
||||
END IF
|
||||
IF p_iptb57.bodega IS NOT NULL THEN
|
||||
LET nombreBodega =
|
||||
ui.ComboBox.forName('formonly.bodega')
|
||||
@@ -751,6 +769,34 @@ FUNCTION entradas()
|
||||
|
||||
END DIALOG
|
||||
END FUNCTION
|
||||
# Devuelve la descripcion del primer item repetido (misma area, clase, grupo,
|
||||
# tipo y medida) entre las lineas con cantidad; NULL si no hay repetidos.
|
||||
FUNCTION itemRepetido()
|
||||
DEFINE i, j INT
|
||||
DEFINE texto STRING
|
||||
|
||||
FOR i = 1 TO arr_iptb58.getLength()
|
||||
IF arr_iptb58[i].cantidad IS NOT NULL THEN
|
||||
FOR j = i + 1 TO arr_iptb58.getLength()
|
||||
IF arr_iptb58[j].cantidad IS NOT NULL
|
||||
AND arr_iptb58[j].area = arr_iptb58[i].area
|
||||
AND arr_iptb58[j].cod_n = arr_iptb58[i].cod_n
|
||||
AND arr_iptb58[j].cod_grupo = arr_iptb58[i].cod_grupo
|
||||
AND arr_iptb58[j].cod_tipo = arr_iptb58[i].cod_tipo
|
||||
AND arr_iptb58[j].cod_sec = arr_iptb58[i].cod_sec THEN
|
||||
LET texto = arr_iptb58[i].cod_n USING "&&&&", "-",
|
||||
arr_iptb58[i].cod_grupo USING "&&&&", "-",
|
||||
arr_iptb58[i].cod_tipo USING "&&&&", "-",
|
||||
arr_iptb58[i].cod_sec USING "&&&&&&",
|
||||
" ", arr_iptb58[i].descripcion CLIPPED
|
||||
RETURN texto
|
||||
END IF
|
||||
END FOR
|
||||
END IF
|
||||
END FOR
|
||||
RETURN NULL
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION anular()
|
||||
DEFINE respuesta STRING
|
||||
|
||||
|
||||
Reference in New Issue
Block a user