1244 lines
41 KiB
Plaintext
1244 lines
41 KiB
Plaintext
{
|
|
--------------------------------------------------------------------------
|
|
PROGRAMA : VEPRMT303
|
|
OBJETIVO : Este programa guarda los porcientos de los productos en
|
|
cada provincia.
|
|
REALIZADO POR : Ing. Juan Fco. Soto.
|
|
FECHA : Febrero 10, 1993.
|
|
--------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"veprgb000.4gl"
|
|
|
|
FUNCTION veprmt303()
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 22
|
|
|
|
CALL pantalla()
|
|
OPEN FORM vefmmt303 FROM "vefmmt303"
|
|
DISPLAY FORM vefmmt303
|
|
DISPLAY "Presupuesto Por Provincia" AT 6,27
|
|
DISPLAY "veprmt303 " AT 4,2 ATTRIBUTE (BOLD)
|
|
|
|
MENU "OPCION"
|
|
COMMAND "Adicionar"
|
|
"<Esc> Adiciona Registro <Delete> Cancela Operacion"
|
|
CALL veadd1()
|
|
COMMAND "Consultar-modificar"
|
|
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
|
|
CALL vemod1()
|
|
COMMAND "Salir"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION veadd1()
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
LABEL vuelve:
|
|
LET ano1 = year(today)
|
|
|
|
INPUT BY NAME ano1 WITHOUT DEFAULTS
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
SELECT UNIQUE ano FROM vetb00021 WHERE @ano = ano1
|
|
IF status < 0 THEN
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
ELSE
|
|
|
|
IF status != notfound THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
GOTO vuelve
|
|
END IF
|
|
END IF
|
|
|
|
FOR idx = 1 to 7
|
|
LET porc_prov[idx].ventas = null
|
|
LET porc_prov[idx].zona = null
|
|
LET porc_prov[idx].provincia = null
|
|
LET porc_prov[idx].descrip = null
|
|
LET porc_prov[idx].cod_n = null
|
|
LET porc_prov[idx].cod_grupo = null
|
|
LET porc_prov[idx].cod_tipo = null
|
|
LET porc_prov[idx].cod_sec = null
|
|
LET porc_prov[idx].porciento = null
|
|
LET porc_prov[idx].mes = null
|
|
LET porc_prov[idx].desc_mes = null
|
|
|
|
DISPLAY porc_prov[idx].ventas to scr_zona[idx].ventas
|
|
DISPLAY porc_prov[idx].zona to scr_zona[idx].zona
|
|
DISPLAY porc_prov[idx].provincia to scr_zona[idx].provincia
|
|
DISPLAY porc_prov[idx].descrip to scr_zona[idx].descrip
|
|
DISPLAY porc_prov[idx].cod_n to scr_zona[idx].cod_n
|
|
DISPLAY porc_prov[idx].cod_grupo to scr_zona[idx].cod_grupo
|
|
DISPLAY porc_prov[idx].cod_tipo to scr_zona[idx].cod_tipo
|
|
DISPLAY porc_prov[idx].cod_sec to scr_zona[idx].cod_sec
|
|
DISPLAY porc_prov[idx].porciento to scr_zona[idx].porciento
|
|
DISPLAY porc_prov[idx].mes to scr_zona[idx].mes
|
|
DISPLAY porc_prov[idx].desc_mes to scr_zona[idx].desc_mes
|
|
END FOR
|
|
|
|
INPUT ARRAY porc_prov FROM scr_zona.*
|
|
|
|
ON KEY (CONTROL-W)
|
|
LET curr2 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CASE
|
|
WHEN INFIELD (provincia)
|
|
|
|
LET transportista.cod_zona = porc_prov[curr2].zona
|
|
CALL consulta_provincias()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD provincia
|
|
END IF
|
|
LET porc_prov[curr2].provincia = zonap.cod_provincia
|
|
LET descrip4 = descrip1
|
|
LET descrip1 = null
|
|
DISPLAY porc_prov[curr2].provincia to scr_zona[scr_l].provincia
|
|
DISPLAY BY NAME descrip4
|
|
NEXT FIELD cod_n
|
|
|
|
WHEN INFIELD (zona)
|
|
IF porc_prov[curr2].ventas is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
IF porc_prov[curr2].ventas != "1" and porc_prov[curr2].ventas != "2" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
IF porc_prov[curr2].ventas = "1" THEN
|
|
CALL busca_zona1()
|
|
ELSE
|
|
CALL busca_pais()
|
|
LET descrip4 = null
|
|
DISPLAY BY NAME descrip4
|
|
LET fact_gral.zona = "0",fact_gral.zona clipped
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD zona
|
|
END IF
|
|
IF existe = "N" THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
LET existe = null
|
|
NEXT FIELD zona
|
|
ELSE
|
|
LET porc_prov[curr2].zona = fact_gral.zona
|
|
LET descrip6 = descrip1
|
|
END IF
|
|
|
|
DISPLAY porc_prov[curr2].zona TO scr_zona[scr_l].zona
|
|
DISPLAY BY NAME descrip6 ATTRIBUTE (BOLD)
|
|
NEXT FIELD cod_n
|
|
|
|
WHEN INFIELD (cod_n)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].cod_n = pterminado.cod_n
|
|
LET porc_prov[curr2].cod_grupo = pterminado.cod_grupo
|
|
LET porc_prov[curr2].cod_tipo = pterminado.cod_tipo
|
|
LET porc_prov[curr2].cod_sec = pterminado.cod_sec
|
|
LET porc_prov[curr2].descrip = descrip1
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
NEXT FIELD mes
|
|
|
|
WHEN INFIELD (cod_grupo)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].cod_n = pterminado.cod_n
|
|
LET porc_prov[curr2].cod_grupo = pterminado.cod_grupo
|
|
LET porc_prov[curr2].cod_tipo = pterminado.cod_tipo
|
|
LET porc_prov[curr2].cod_sec = pterminado.cod_sec
|
|
LET porc_prov[curr2].descrip = descrip1
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
NEXT FIELD mes
|
|
|
|
WHEN INFIELD (cod_tipo)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].cod_n = pterminado.cod_n
|
|
LET porc_prov[curr2].cod_grupo = pterminado.cod_grupo
|
|
LET porc_prov[curr2].cod_tipo = pterminado.cod_tipo
|
|
LET porc_prov[curr2].cod_sec = pterminado.cod_sec
|
|
LET porc_prov[curr2].descrip = descrip1
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
NEXT FIELD mes
|
|
|
|
WHEN INFIELD (cod_sec)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].cod_n = pterminado.cod_n
|
|
LET porc_prov[curr2].cod_grupo = pterminado.cod_grupo
|
|
LET porc_prov[curr2].cod_tipo = pterminado.cod_tipo
|
|
LET porc_prov[curr2].cod_sec = pterminado.cod_sec
|
|
LET porc_prov[curr2].descrip = descrip1
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
NEXT FIELD mes
|
|
END CASE
|
|
|
|
AFTER FIELD ventas
|
|
|
|
LET curr2 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
IF porc_prov[curr2].ventas IS NOT NULL THEN
|
|
|
|
IF porc_prov[curr2].ventas = "1" THEN
|
|
LET descrip1 = "L O C A L "
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(BOLD)
|
|
ELSE
|
|
LET descrip1 = "E X P O R T A C I O N"
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(BOLD)
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD zona
|
|
IF porc_prov[curr2].zona is not null THEN
|
|
IF porc_prov[curr2].ventas is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
IF porc_prov[curr2].ventas != "1" and porc_prov[curr2].ventas != "2" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
LET verdad = "N"
|
|
CALL repetir()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET longitud = LENGTH(porc_prov[curr2].zona)
|
|
IF longitud < 3 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
IF porc_prov[curr2].ventas = "1" THEN
|
|
LET tipo1 = porc_prov[curr2].zona
|
|
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD zona
|
|
END IF
|
|
SELECT UNIQUE descrip INTO descrip6 FROM vetb00008
|
|
WHERE cod_zona = tipo1
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip6 ATTRIBUTE (BOLD)
|
|
ELSE
|
|
LET descrip4 = null
|
|
DISPLAY BY NAME descrip4
|
|
LET tipo2 = porc_prov[curr2].zona[2,3]
|
|
SELECT UNIQUE nom_pais INTO descrip6 FROM cotb00018
|
|
WHERE cod_pais = tipo2
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip6 ATTRIBUTE (BOLD)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
IF porc_prov[curr2].zona is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
IF porc_prov[curr2].ventas is not null and
|
|
porc_prov[curr2].zona is not null THEN
|
|
IF porc_prov[curr2].ventas = "2" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
AFTER FIELD provincia
|
|
IF porc_prov[curr2].ventas is not null and
|
|
porc_prov[curr2].zona is not null THEN
|
|
IF porc_prov[curr2].provincia is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD provincia
|
|
END IF
|
|
|
|
SELECT c.nombre_provincia INTO descrip4 FROM vetb00009 a,vetb00020 c
|
|
WHERE a.cod_zona = porc_prov[curr2].zona and
|
|
a.cod_provincia = porc_prov[curr2].provincia and
|
|
c.cod_provincia = a.cod_provincia and
|
|
c.status_t is null
|
|
|
|
IF status >= 0 THEN
|
|
IF status = notfound THEN
|
|
LET numero_msg = 95
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD provincia
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME descrip4 ATTRIBUTE (BOLD)
|
|
ELSE
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
AFTER FIELD cod_sec
|
|
IF porc_prov[curr2].cod_n is not null and
|
|
porc_prov[curr2].cod_grupo is not null and
|
|
porc_prov[curr2].cod_tipo is not null and
|
|
porc_prov[curr2].cod_sec is not null THEN
|
|
|
|
SELECT descrip_esp INTO descrip6 FROM iptb00002
|
|
WHERE cod_n = porc_prov[curr2].cod_n and
|
|
cod_grupo = porc_prov[curr2].cod_grupo and
|
|
cod_tipo = porc_prov[curr2].cod_tipo and
|
|
cod_sec = porc_prov[curr2].cod_sec and
|
|
status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].descrip = descrip6
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
ATTRIBUTE(BOLD)
|
|
ELSE
|
|
LET porc_prov[curr2].ventas = null
|
|
LET porc_prov[curr2].zona = null
|
|
LET porc_prov[curr2].provincia = null
|
|
LET porc_prov[curr2].descrip = null
|
|
LET porc_prov[curr2].cod_n = null
|
|
LET porc_prov[curr2].cod_grupo = null
|
|
LET porc_prov[curr2].cod_tipo = null
|
|
LET porc_prov[curr2].cod_sec = null
|
|
|
|
DISPLAY porc_prov[curr2].ventas to scr_zona[scr_l].ventas
|
|
DISPLAY porc_prov[curr2].zona to scr_zona[scr_l].zona
|
|
DISPLAY porc_prov[curr2].provincia to scr_zona[scr_l].provincia
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
|
|
AFTER FIELD porciento
|
|
IF porc_prov[curr2].cod_n is not null and
|
|
porc_prov[curr2].cod_grupo is not null and
|
|
porc_prov[curr2].cod_tipo is not null and
|
|
porc_prov[curr2].cod_sec is not null THEN
|
|
|
|
IF porc_prov[curr2].porciento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD porciento
|
|
END IF
|
|
|
|
# No permite que se digite un porcentaje mayor que el 100 % para cada codigo
|
|
|
|
LET p_cantidad = 0
|
|
FOR idx = 1 TO arr_count()
|
|
IF porc_prov[idx].cod_n is not null and
|
|
porc_prov[idx].cod_grupo is not null and
|
|
porc_prov[idx].cod_tipo is not null and
|
|
porc_prov[idx].cod_sec is not null THEN
|
|
|
|
IF porc_prov[idx].cod_n = porc_prov[curr2].cod_n and
|
|
porc_prov[idx].cod_grupo = porc_prov[curr2].cod_grupo and
|
|
porc_prov[idx].cod_tipo = porc_prov[curr2].cod_tipo and
|
|
porc_prov[idx].cod_sec = porc_prov[curr2].cod_sec and
|
|
porc_prov[idx].ventas = porc_prov[curr2].ventas and
|
|
porc_prov[idx].zona = porc_prov[curr2].zona and
|
|
porc_prov[idx].mes = porc_prov[curr2].mes THEN
|
|
|
|
LET p_cantidad = p_cantidad + porc_prov[idx].porciento
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF p_cantidad > 100 THEN
|
|
LET numero_msg = 89
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD porciento
|
|
END IF
|
|
END IF
|
|
|
|
|
|
AFTER FIELD mes
|
|
IF porc_prov[curr2].mes is not null THEN
|
|
|
|
IF porc_prov[curr2].mes > 12 THEN
|
|
LET numero_msg = 75
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
IF porc_prov[curr2].mes < 1 THEN
|
|
LET numero_msg = 75
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
SELECT a.descrip INTO porc_prov[curr2].desc_mes FROM mestable a
|
|
WHERE a.mes = porc_prov[curr2].mes
|
|
|
|
DISPLAY porc_prov[curr2].desc_mes to scr_zona[scr_l].desc_mes
|
|
|
|
LET verdad = "N"
|
|
CALL repite2()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD ventas
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
IF porc_prov[curr2].cod_n is null or
|
|
porc_prov[curr2].cod_grupo is null or
|
|
porc_prov[curr2].cod_tipo is null or
|
|
porc_prov[curr2].cod_sec is null or
|
|
porc_prov[curr2].ventas is null or
|
|
porc_prov[curr2].mes is null THEN
|
|
|
|
LET porc_prov[curr2].cod_n = null
|
|
LET porc_prov[curr2].cod_grupo = null
|
|
LET porc_prov[curr2].cod_tipo = null
|
|
LET porc_prov[curr2].cod_sec = null
|
|
LET porc_prov[curr2].ventas = null
|
|
LET porc_prov[curr2].mes = null
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].ventas to scr_zona[scr_l].ventas
|
|
DISPLAY porc_prov[curr2].mes to scr_zona[scr_l].mes
|
|
END IF
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
FOR idx = 1 to arr_count()
|
|
IF porc_prov[idx].cod_n is not null and
|
|
porc_prov[idx].cod_grupo is not null and
|
|
porc_prov[idx].cod_tipo is not null and
|
|
porc_prov[idx].cod_sec is not null AND
|
|
porc_prov[idx].ventas is not null AND
|
|
porc_prov[idx].mes is not null THEN
|
|
INSERT INTO vetb00021 values
|
|
(ano1,porc_prov[idx].ventas,porc_prov[idx].zona,porc_prov[idx].provincia,
|
|
porc_prov[idx].cod_n, porc_prov[idx].cod_grupo,
|
|
porc_prov[idx].cod_tipo,porc_prov[idx].cod_sec,porc_prov[idx].porciento,
|
|
porc_prov[idx].mes,null,user,current,null,null)
|
|
END IF
|
|
END FOR
|
|
|
|
IF status > 0 THEN
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
ELSE
|
|
CALL integridad()
|
|
END IF
|
|
|
|
FOR idx = 1 to 7
|
|
LET porc_prov[idx].ventas = null
|
|
LET porc_prov[idx].zona = null
|
|
LET porc_prov[idx].provincia = null
|
|
LET porc_prov[idx].descrip = null
|
|
LET porc_prov[idx].cod_n = null
|
|
LET porc_prov[idx].cod_grupo = null
|
|
LET porc_prov[idx].cod_tipo = null
|
|
LET porc_prov[idx].cod_sec = null
|
|
LET porc_prov[idx].porciento = null
|
|
LET porc_prov[idx].mes = null
|
|
LET porc_prov[idx].desc_mes = null
|
|
|
|
DISPLAY porc_prov[idx].ventas to scr_zona[idx].ventas
|
|
DISPLAY porc_prov[idx].zona to scr_zona[idx].zona
|
|
DISPLAY porc_prov[idx].provincia to scr_zona[idx].provincia
|
|
DISPLAY porc_prov[idx].descrip to scr_zona[idx].descrip
|
|
DISPLAY porc_prov[idx].cod_n to scr_zona[idx].cod_n
|
|
DISPLAY porc_prov[idx].cod_grupo to scr_zona[idx].cod_grupo
|
|
DISPLAY porc_prov[idx].cod_tipo to scr_zona[idx].cod_tipo
|
|
DISPLAY porc_prov[idx].cod_sec to scr_zona[idx].cod_sec
|
|
DISPLAY porc_prov[idx].porciento to scr_zona[idx].porciento
|
|
DISPLAY porc_prov[idx].mes to scr_zona[idx].mes
|
|
DISPLAY porc_prov[idx].desc_mes to scr_zona[idx].desc_mes
|
|
END FOR
|
|
CLEAR FORM
|
|
GOTO vuelve
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION vemod1()
|
|
|
|
DEFINE usuarios RECORD
|
|
us_crea CHAR(9),
|
|
fech_crea LIKE vetb00021.fech_crea
|
|
END RECORD
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
CONSTRUCT criterio ON ano FROM ano1
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec = "SELECT unique ano FROM vetb00021 ",
|
|
"WHERE ",criterio clipped," and status_t is null ",
|
|
"ORDER BY 1 "
|
|
|
|
PREPARE busca_porc FROM selec
|
|
DECLARE porc SCROLL CURSOR FOR busca_porc
|
|
OPEN porc
|
|
|
|
FETCH FIRST porc INTO ano1
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
DISPLAY BY NAME ano1
|
|
|
|
MENU "OPCION"
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT porc INTO ano1
|
|
IF status = notfound THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
DISPLAY BY NAME ano1
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS porc INTO ano1
|
|
IF status = notfound THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
DISPLAY BY NAME ano1
|
|
|
|
COMMAND "Primero"
|
|
"Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST porc INTO ano1
|
|
IF status = notfound THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
DISPLAY BY NAME ano1
|
|
|
|
COMMAND "Ultimo"
|
|
"Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST porc INTO ano1
|
|
IF status = notfound THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
DISPLAY BY NAME ano1
|
|
COMMAND "Escoger"
|
|
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
|
|
|
|
FOR idx = 1 to 7
|
|
LET porc_prov[idx].ventas = null
|
|
LET porc_prov[idx].zona = null
|
|
LET porc_prov[idx].provincia = null
|
|
LET porc_prov[idx].descrip = null
|
|
LET porc_prov[idx].cod_n = null
|
|
LET porc_prov[idx].cod_grupo = null
|
|
LET porc_prov[idx].cod_tipo = null
|
|
LET porc_prov[idx].cod_sec = null
|
|
LET porc_prov[idx].porciento = null
|
|
LET porc_prov[idx].mes = null
|
|
LET porc_prov[idx].desc_mes = null
|
|
|
|
DISPLAY porc_prov[idx].ventas to scr_zona[idx].ventas
|
|
DISPLAY porc_prov[idx].zona to scr_zona[idx].zona
|
|
DISPLAY porc_prov[idx].provincia to scr_zona[idx].provincia
|
|
DISPLAY porc_prov[idx].descrip to scr_zona[idx].descrip
|
|
DISPLAY porc_prov[idx].cod_n to scr_zona[idx].cod_n
|
|
DISPLAY porc_prov[idx].cod_grupo to scr_zona[idx].cod_grupo
|
|
DISPLAY porc_prov[idx].cod_tipo to scr_zona[idx].cod_tipo
|
|
DISPLAY porc_prov[idx].cod_sec to scr_zona[idx].cod_sec
|
|
DISPLAY porc_prov[idx].porciento to scr_zona[idx].porciento
|
|
DISPLAY porc_prov[idx].mes to scr_zona[idx].mes
|
|
DISPLAY porc_prov[idx].desc_mes to scr_zona[idx].desc_mes
|
|
END FOR
|
|
|
|
DECLARE buscate CURSOR FOR
|
|
SELECT x.ventas,x.zona,x.provincia,x.cod_n,x.cod_grupo,x.cod_tipo,
|
|
x.cod_sec,a.descrip_esp,x.mes,c.descrip,x.porciento
|
|
FROM vetb00021 x,iptb00002 a, mestable c
|
|
WHERE x.ano = ano1 and x.cod_n = a.cod_n and x.cod_grupo = a.cod_grupo and
|
|
x.cod_tipo = a.cod_tipo and x.cod_sec = a.cod_sec and
|
|
x.mes = c.mes AND a.status_t is null
|
|
|
|
LET idx = 1
|
|
|
|
FOREACH buscate INTO porc_prov[idx].*
|
|
|
|
LET idx = idx + 1
|
|
|
|
END FOREACH
|
|
|
|
CALL set_count(idx - 1)
|
|
INPUT ARRAY porc_prov WITHOUT DEFAULTS FROM scr_zona.*
|
|
|
|
ON KEY (CONTROL-W)
|
|
LET curr2 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CASE
|
|
WHEN INFIELD (provincia)
|
|
|
|
LET transportista.cod_zona = porc_prov[curr2].zona
|
|
CALL consulta_provincias()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD provincia
|
|
END IF
|
|
LET porc_prov[curr2].provincia = zonap.cod_provincia
|
|
LET descrip4 = descrip1
|
|
LET descrip1 = null
|
|
DISPLAY porc_prov[curr2].provincia to scr_zona[scr_l].provincia
|
|
DISPLAY BY NAME descrip4
|
|
NEXT FIELD cod_n
|
|
|
|
WHEN INFIELD (zona)
|
|
IF porc_prov[curr2].ventas is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
IF porc_prov[curr2].ventas != "1" and porc_prov[curr2].ventas != "2" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
IF porc_prov[curr2].ventas = "1" THEN
|
|
CALL busca_zona1()
|
|
ELSE
|
|
CALL busca_pais()
|
|
LET descrip4 = null
|
|
DISPLAY BY NAME descrip4
|
|
LET fact_gral.zona = "0",fact_gral.zona clipped
|
|
END IF
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD zona
|
|
END IF
|
|
IF existe = "N" THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
LET existe = null
|
|
NEXT FIELD zona
|
|
ELSE
|
|
LET porc_prov[curr2].zona = fact_gral.zona
|
|
LET descrip6 = descrip1
|
|
END IF
|
|
|
|
DISPLAY porc_prov[curr2].zona TO scr_zona[scr_l].zona
|
|
DISPLAY BY NAME descrip6 ATTRIBUTE (BOLD)
|
|
WHEN INFIELD (cod_n)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].cod_n = pterminado.cod_n
|
|
LET porc_prov[curr2].cod_grupo = pterminado.cod_grupo
|
|
LET porc_prov[curr2].cod_tipo = pterminado.cod_tipo
|
|
LET porc_prov[curr2].cod_sec = pterminado.cod_sec
|
|
LET porc_zona[curr2].descrip = descrip1
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
NEXT FIELD mes
|
|
WHEN INFIELD (cod_grupo)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].cod_n = pterminado.cod_n
|
|
LET porc_prov[curr2].cod_grupo = pterminado.cod_grupo
|
|
LET porc_prov[curr2].cod_tipo = pterminado.cod_tipo
|
|
LET porc_prov[curr2].cod_sec = pterminado.cod_sec
|
|
LET porc_zona[curr2].descrip = descrip1
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
NEXT FIELD mes
|
|
WHEN INFIELD (cod_tipo)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].cod_n = pterminado.cod_n
|
|
LET porc_prov[curr2].cod_grupo = pterminado.cod_grupo
|
|
LET porc_prov[curr2].cod_tipo = pterminado.cod_tipo
|
|
LET porc_prov[curr2].cod_sec = pterminado.cod_sec
|
|
LET porc_zona[curr2].descrip = descrip1
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
NEXT FIELD mes
|
|
WHEN INFIELD (cod_sec)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET porc_prov[curr2].cod_n = pterminado.cod_n
|
|
LET porc_prov[curr2].cod_grupo = pterminado.cod_grupo
|
|
LET porc_prov[curr2].cod_tipo = pterminado.cod_tipo
|
|
LET porc_prov[curr2].cod_sec = pterminado.cod_sec
|
|
LET porc_zona[curr2].descrip = descrip1
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
|
|
NEXT FIELD mes
|
|
END CASE
|
|
|
|
AFTER FIELD ventas
|
|
|
|
LET curr2 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
IF porc_prov[curr2].ventas IS NOT NULL THEN
|
|
IF porc_prov[curr2].ventas = "1" THEN
|
|
LET descrip1 = "L O C A L "
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(BOLD)
|
|
ELSE
|
|
LET descrip1 = "E X P O R T A C I O N"
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(BOLD)
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD zona
|
|
IF porc_prov[curr2].zona is not null THEN
|
|
IF porc_prov[curr2].ventas is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
IF porc_prov[curr2].ventas != "1" and porc_prov[curr2].ventas != "2" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
LET verdad = "N"
|
|
CALL repetir()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET longitud = LENGTH(porc_prov[curr2].zona)
|
|
IF longitud < 3 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
IF porc_prov[curr2].ventas = "1" THEN
|
|
LET tipo1 = porc_prov[curr2].zona
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD zona
|
|
END IF
|
|
SELECT UNIQUE descrip INTO descrip6 FROM vetb00008
|
|
WHERE cod_zona = tipo1
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip6 ATTRIBUTE (BOLD)
|
|
ELSE
|
|
LET descrip4 = null
|
|
DISPLAY BY NAME descrip4
|
|
LET tipo2 = porc_prov[curr2].zona[2,3]
|
|
SELECT UNIQUE nom_pais INTO descrip6 FROM cotb00018
|
|
WHERE cod_pais = tipo2
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip6 ATTRIBUTE (BOLD)
|
|
END IF
|
|
END IF
|
|
|
|
IF porc_prov[curr2].zona is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
IF porc_prov[curr2].ventas is not null and
|
|
porc_prov[curr2].zona is not null THEN
|
|
IF porc_prov[curr2].ventas = "2" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
AFTER FIELD provincia
|
|
IF porc_prov[curr2].ventas is not null and
|
|
porc_prov[curr2].zona is not null THEN
|
|
IF porc_prov[curr2].provincia is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD provincia
|
|
END IF
|
|
|
|
SELECT c.nombre_provincia INTO descrip4 FROM vetb00009 a,vetb00020 c
|
|
WHERE a.cod_zona = porc_prov[curr2].zona and
|
|
c.cod_provincia = a.cod_provincia and
|
|
c.cod_provincia = porc_prov[curr2].provincia and
|
|
c.status_t is null
|
|
|
|
IF status >= 0 THEN
|
|
IF status = notfound THEN
|
|
LET numero_msg = 95
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD provincia
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME descrip4
|
|
ELSE
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
|
|
AFTER FIELD cod_sec
|
|
IF porc_prov[curr2].cod_n is not null and
|
|
porc_prov[curr2].cod_grupo is not null and
|
|
porc_prov[curr2].cod_tipo is not null and
|
|
porc_prov[curr2].cod_sec is not null THEN
|
|
|
|
SELECT descrip_esp INTO descrip6 FROM iptb00002
|
|
WHERE cod_n = porc_prov[curr2].cod_n and
|
|
cod_grupo = porc_prov[curr2].cod_grupo and
|
|
cod_tipo = porc_prov[curr2].cod_tipo and
|
|
cod_sec = porc_prov[curr2].cod_sec and
|
|
status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET porc_prov[curr2].descrip = descrip6
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
ATTRIBUTE(BOLD)
|
|
ELSE
|
|
LET porc_prov[curr2].ventas = null
|
|
LET porc_prov[curr2].zona = null
|
|
LET porc_prov[curr2].provincia = null
|
|
LET porc_prov[curr2].descrip = null
|
|
LET porc_prov[curr2].cod_n = null
|
|
LET porc_prov[curr2].cod_grupo = null
|
|
LET porc_prov[curr2].cod_tipo = null
|
|
LET porc_prov[curr2].cod_sec = null
|
|
|
|
DISPLAY porc_prov[curr2].ventas to scr_zona[scr_l].ventas
|
|
DISPLAY porc_prov[curr2].zona to scr_zona[scr_l].zona
|
|
DISPLAY porc_prov[curr2].provincia to scr_zona[scr_l].provincia
|
|
DISPLAY porc_prov[curr2].descrip to scr_zona[scr_l].descrip
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
AFTER FIELD porciento
|
|
IF porc_prov[curr2].cod_n is not null and
|
|
porc_prov[curr2].cod_grupo is not null and
|
|
porc_prov[curr2].cod_tipo is not null and
|
|
porc_prov[curr2].cod_sec is not null THEN
|
|
|
|
IF porc_prov[curr2].porciento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD porciento
|
|
END IF
|
|
|
|
# No permite que se digite un porcentaje mayor que el 100 % para cada codigo
|
|
|
|
LET p_cantidad = 0
|
|
FOR idx = 1 TO arr_count()
|
|
IF porc_prov[idx].cod_n is not null and
|
|
porc_prov[idx].cod_grupo is not null and
|
|
porc_prov[idx].cod_tipo is not null and
|
|
porc_prov[idx].cod_sec is not null THEN
|
|
|
|
IF porc_prov[idx].cod_n = porc_prov[curr2].cod_n and
|
|
porc_prov[idx].cod_grupo = porc_prov[curr2].cod_grupo and
|
|
porc_prov[idx].cod_tipo = porc_prov[curr2].cod_tipo and
|
|
porc_prov[idx].cod_sec = porc_prov[curr2].cod_sec and
|
|
porc_prov[idx].ventas = porc_prov[curr2].ventas and
|
|
porc_prov[idx].zona = porc_prov[curr2].zona and
|
|
porc_prov[idx].mes = porc_prov[curr2].mes THEN
|
|
|
|
LET p_cantidad = p_cantidad + porc_prov[idx].porciento
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF p_cantidad > 100 THEN
|
|
LET numero_msg = 89
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD porciento
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD mes
|
|
IF porc_prov[curr2].mes is not null THEN
|
|
IF porc_prov[curr2].mes > 12 THEN
|
|
LET numero_msg = 75
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
IF porc_prov[curr2].mes < 1 THEN
|
|
LET numero_msg = 75
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
SELECT a.descrip INTO porc_prov[curr2].desc_mes FROM mestable a
|
|
WHERE a.mes = porc_prov[curr2].mes
|
|
|
|
DISPLAY porc_prov[curr2].desc_mes to scr_zona[scr_l].desc_mes
|
|
|
|
DISPLAY porc_prov[curr2].desc_mes to scr_zona[scr_l].desc_mes
|
|
LET verdad = "N"
|
|
CALL repite2()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD ventas
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
IF porc_prov[curr2].cod_n is null or
|
|
porc_prov[curr2].cod_grupo is null or
|
|
porc_prov[curr2].cod_tipo is null or
|
|
porc_prov[curr2].cod_sec is null or
|
|
porc_prov[curr2].ventas is null or
|
|
porc_prov[curr2].mes is null THEN
|
|
|
|
LET porc_prov[curr2].cod_n = null
|
|
LET porc_prov[curr2].cod_grupo = null
|
|
LET porc_prov[curr2].cod_tipo = null
|
|
LET porc_prov[curr2].cod_sec = null
|
|
LET porc_prov[curr2].ventas = null
|
|
LET porc_prov[curr2].mes = null
|
|
|
|
DISPLAY porc_prov[curr2].cod_n to scr_zona[scr_l].cod_n
|
|
DISPLAY porc_prov[curr2].cod_grupo to scr_zona[scr_l].cod_grupo
|
|
DISPLAY porc_prov[curr2].cod_tipo to scr_zona[scr_l].cod_tipo
|
|
DISPLAY porc_prov[curr2].cod_sec to scr_zona[scr_l].cod_sec
|
|
DISPLAY porc_prov[curr2].ventas to scr_zona[scr_l].ventas
|
|
DISPLAY porc_prov[curr2].mes to scr_zona[scr_l].mes
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
DELETE FROM vetb00021 WHERE ano = ano1
|
|
|
|
FOR idx = 1 to arr_count()
|
|
IF porc_prov[idx].cod_n is not null and
|
|
porc_prov[idx].cod_grupo is not null and
|
|
porc_prov[idx].cod_tipo is not null and
|
|
porc_prov[idx].cod_sec is not null AND
|
|
porc_prov[idx].ventas is not null AND
|
|
porc_prov[idx].mes is not null THEN
|
|
|
|
INSERT INTO vetb00021
|
|
VALUES (ano1,porc_prov[idx].ventas,porc_prov[idx].zona,
|
|
porc_prov[idx].provincia,porc_prov[idx].cod_n,
|
|
porc_prov[idx].cod_grupo,porc_prov[idx].cod_tipo,
|
|
porc_prov[idx].cod_sec,porc_prov[idx].porciento,
|
|
porc_prov[idx].mes,null,user,current,user,current)
|
|
END IF
|
|
END FOR
|
|
|
|
IF status > 0 THEN
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
ELSE
|
|
CALL integridad()
|
|
END IF
|
|
|
|
FOR idx = 1 to 7
|
|
LET porc_prov[idx].ventas = null
|
|
LET porc_prov[idx].zona = null
|
|
LET porc_prov[idx].provincia = null
|
|
LET porc_prov[idx].descrip = null
|
|
LET porc_prov[idx].cod_n = null
|
|
LET porc_prov[idx].cod_grupo = null
|
|
LET porc_prov[idx].cod_tipo = null
|
|
LET porc_prov[idx].cod_sec = null
|
|
LET porc_prov[idx].porciento = null
|
|
LET porc_prov[idx].mes = null
|
|
LET porc_prov[idx].desc_mes = null
|
|
|
|
DISPLAY porc_prov[idx].ventas to scr_zona[idx].ventas
|
|
DISPLAY porc_prov[idx].zona to scr_zona[idx].zona
|
|
DISPLAY porc_prov[idx].provincia to scr_zona[idx].provincia
|
|
DISPLAY porc_prov[idx].descrip to scr_zona[idx].descrip
|
|
DISPLAY porc_prov[idx].cod_n to scr_zona[idx].cod_n
|
|
DISPLAY porc_prov[idx].cod_grupo to scr_zona[idx].cod_grupo
|
|
DISPLAY porc_prov[idx].cod_tipo to scr_zona[idx].cod_tipo
|
|
DISPLAY porc_prov[idx].cod_sec to scr_zona[idx].cod_sec
|
|
DISPLAY porc_prov[idx].porciento to scr_zona[idx].porciento
|
|
DISPLAY porc_prov[idx].mes to scr_zona[idx].mes
|
|
DISPLAY porc_prov[idx].desc_mes to scr_zona[idx].desc_mes
|
|
END FOR
|
|
|
|
COMMAND KEY ("L") "eLiminar"
|
|
DELETE FROM vetb00021
|
|
WHERE ano = ano1
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
FOR idx = 1 to 7
|
|
LET porc_prov[idx].ventas = null
|
|
LET porc_prov[idx].zona = null
|
|
LET porc_prov[idx].provincia = null
|
|
LET porc_prov[idx].descrip = null
|
|
LET porc_prov[idx].cod_n = null
|
|
LET porc_prov[idx].cod_grupo = null
|
|
LET porc_prov[idx].cod_tipo = null
|
|
LET porc_prov[idx].cod_sec = null
|
|
LET porc_prov[idx].porciento = null
|
|
LET porc_prov[idx].mes = null
|
|
LET porc_prov[idx].desc_mes = null
|
|
|
|
DISPLAY porc_prov[idx].ventas to scr_zona[idx].ventas
|
|
DISPLAY porc_prov[idx].zona to scr_zona[idx].zona
|
|
DISPLAY porc_prov[idx].provincia to scr_zona[idx].provincia
|
|
DISPLAY porc_prov[idx].descrip to scr_zona[idx].descrip
|
|
DISPLAY porc_prov[idx].cod_n to scr_zona[idx].cod_n
|
|
DISPLAY porc_prov[idx].cod_grupo to scr_zona[idx].cod_grupo
|
|
DISPLAY porc_prov[idx].cod_tipo to scr_zona[idx].cod_tipo
|
|
DISPLAY porc_prov[idx].cod_sec to scr_zona[idx].cod_sec
|
|
DISPLAY porc_prov[idx].porciento to scr_zona[idx].porciento
|
|
DISPLAY porc_prov[idx].mes to scr_zona[idx].mes
|
|
DISPLAY porc_prov[idx].desc_mes to scr_zona[idx].desc_mes
|
|
END FOR
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION repite2()
|
|
|
|
DEFINE ant_art RECORD
|
|
ventas CHAR(1),
|
|
zona CHAR(3),
|
|
provincia SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
mes SMALLINT
|
|
END RECORD
|
|
|
|
LET ant_art.ventas = porc_prov[curr2].ventas
|
|
LET ant_art.zona = porc_prov[curr2].zona
|
|
LET ant_art.provincia = porc_prov[curr2].provincia
|
|
LET ant_art.cod_n = porc_prov[curr2].cod_n
|
|
LET ant_art.cod_grupo = porc_prov[curr2].cod_grupo
|
|
LET ant_art.cod_tipo = porc_prov[curr2].cod_tipo
|
|
LET ant_art.cod_sec = porc_prov[curr2].cod_sec
|
|
LET ant_art.mes = porc_prov[curr2].mes
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != curr2 THEN
|
|
IF porc_prov[idx].cod_n IS NOT NULL AND
|
|
porc_prov[idx].cod_grupo IS NOT NULL AND
|
|
porc_prov[idx].cod_tipo IS NOT NULL AND
|
|
porc_prov[idx].cod_sec IS NOT NULL THEN
|
|
|
|
IF porc_prov[idx].cod_n = ant_art.cod_n AND
|
|
porc_prov[idx].cod_grupo = ant_art.cod_grupo AND
|
|
porc_prov[idx].cod_tipo = ant_art.cod_tipo AND
|
|
porc_prov[idx].cod_sec = ant_art.cod_sec AND
|
|
porc_prov[idx].ventas = ant_art.ventas AND
|
|
porc_prov[idx].zona = ant_art.zona AND
|
|
porc_prov[idx].provincia = ant_art.provincia AND
|
|
porc_prov[idx].mes = ant_art.mes THEN
|
|
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET verdad = "S"
|
|
ELSE
|
|
IF verdad != "S" THEN
|
|
LET verdad = "N"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|