Files
MBS/PROYECTO/ccdir/ccprmt031.4gl
T

469 lines
16 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : CCPRMT010
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Comisiones Por Cobros
PROGRAMADOR : JUAN F. SOTO
FECHA REALIZACION : AGOSTO 6, 1998.
FECHA ADECUACION GENERO : SEPTIEMBRE 27, 2018
------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
DEFINE comisiones10 RECORD LIKE cctb00008.*,
nombre2,apellido2 VARCHAR(100)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
CALL ccprmt031()
END MAIN
FUNCTION ccprmt031()
OPTIONS
FORM LINE 9,
ERROR LINE 23,
MESSAGE LINE 24,
COMMENT LINE 21
OPEN FORM ccfmmt031 FROM "ccfmmt031"
DISPLAY FORM ccfmmt031
MENU
ON ACTION Adicionar
LET INT_FLAG = FALSE
CLEAR FORM
LET INT_FLAG = FALSE
CALL ccpcad010()
ON ACTION Consultar
CALL ccpcmf010()
ON ACTION Salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION ccpcad010()
DEFINE fech_ant CHAR(8)
MESSAGE ""
## Captura los datos que va a contener el registro
INPUT BY NAME comisiones10.*
ON ACTION busca_datos
IF INFIELD(sec_vend) THEN
CALL busca_empleado1() RETURNING comisiones10.sec_vend,
descrip1,nombre2,descrip2,apellido2
LET descrip6 = descrip1 clipped," ",descrip2 CLIPPED
DISPLAY descrip6 TO descrip6
DISPLAY BY NAME comisiones10.sec_vend
END IF
IF INFIELD(cod_n) THEN
CALL busca_prod(2) RETURNING comisiones10.cod_n,comisiones10.cod_grupo,comisiones10.cod_tipo,
comisiones10.cod_sec,descrip1
DISPLAY descrip1 TO descrip_esp
DISPLAY BY NAME comisiones10.cod_n,comisiones10.cod_grupo,comisiones10.cod_tipo,
comisiones10.cod_sec
END IF
{AFTER FIELD sec_vend
IF comisiones.sec_vend = 1 THEN
LET descrip6 = "LOCAL"
ELSE
LET descrip6 = "EXPORTACION"
END IF
DISPLAY BY NAME descrip6
}
AFTER FIELD sec_vend
IF comisiones10.sec_vend = 0 or
comisiones10.sec_vend is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_vend
ELSE
SELECT i.nom1_emp, i.apell1_emp INTO descrip1, descrip2
FROM adtb00003 i
WHERE i.num_emp = comisiones10.sec_vend AND i.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 68
CALL msg(numero_msg)
NEXT FIELD sec_vend
END IF
LET descrip6 = descrip1 clipped," ",descrip2 clipped
DISPLAY descrip6 TO descrip6
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
END IF
## Verifica que el codigo no exista en el catalogo de comisiones. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD cod_sec
SELECT i.descrip_esp INTO descrip1
FROM iptb00002 i
WHERE i.cod_n = comisiones10.cod_n AND
i.cod_grupo = comisiones10.cod_grupo AND
i.cod_tipo = comisiones10.cod_tipo AND
i.cod_sec = comisiones10.cod_sec and
i.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 26
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
DISPLAY descrip1 TO descrip_esp
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
SELECT UNIQUE * INTO comisiones10.* FROM cctb00008
WHERE
sec_vend = comisiones10.sec_vend AND
cod_n = comisiones10.cod_n AND
cod_grupo = comisiones10.cod_grupo AND
cod_tipo = comisiones10.cod_tipo AND
cod_sec = comisiones10.cod_sec
IF status >= 0 THEN
IF status != NOTFOUND THEN
IF comisiones10.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD sec_vend
END IF
DISPLAY BY NAME
comisiones10.us_crea,
comisiones10.fech_crea,
comisiones10.us_mod,
comisiones10.fech_mod
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD sec_vend
ELSE
INITIALIZE
comisiones10.us_crea,
comisiones10.fech_crea,
comisiones10.us_mod,
comisiones10.fech_mod TO NULL
DISPLAY BY NAME
comisiones10.us_crea,
comisiones10.fech_crea,
comisiones10.us_mod,
comisiones10.fech_mod
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
INSERT INTO cctb00008 VALUES (comisiones10.*)
UPDATE cctb00008 set us_crea = usuarios,
fech_crea = getdate()
WHERE cod_n = comisiones10.cod_n AND
cod_grupo = comisiones10.cod_grupo AND
cod_tipo = comisiones10.cod_tipo AND
cod_sec = comisiones10.cod_sec AND
sec_vend = comisiones10.sec_vend
LET numero_msg = 1
CALL msg(numero_msg)
END FUNCTION
FUNCTION ccpcmf010()
## Aqui se prepara para la captura del criterio de seleccion
MESSAGE ""
CLEAR FORM
CONSTRUCT BY NAME criterio ON cctb00008.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE * FROM cctb00008 ",
" WHERE status_t is null AND ",criterio clipped,
" ORDER BY 1,2,3,4,5,6"
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO comisiones10.*
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
DISPLAY BY NAME comisiones10.*
LET comisiones.sec_vend = comisiones10.sec_vend
CALL busca_vendedor()
LET comisiones.cod_n = comisiones10.cod_n
LET comisiones.cod_grupo = comisiones10.cod_grupo
LET comisiones.cod_tipo = comisiones10.cod_tipo
LET comisiones.cod_sec = comisiones10.cod_sec
CALL busca_nombre_articulo1()
MENU "OPCIONES "
ON ACTION siguiente ATTRIBUTE(TEXT="Siguiente",IMAGE="nav_next")
FETCH NEXT datos INTO comisiones10.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME comisiones10.*
LET comisiones.sec_vend = comisiones10.sec_vend
CALL busca_vendedor()
LET comisiones.cod_n = comisiones10.cod_n
LET comisiones.cod_grupo = comisiones10.cod_grupo
LET comisiones.cod_tipo = comisiones10.cod_tipo
LET comisiones.cod_sec = comisiones10.cod_sec
CALL busca_nombre_articulo1()
ON ACTION Anterior ATTRIBUTE(TEXT="Anterior",IMAGE="nav_prev")
FETCH PREVIOUS datos INTO comisiones10.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME comisiones10.*
LET comisiones.sec_vend = comisiones10.sec_vend
CALL busca_vendedor()
LET comisiones.cod_n = comisiones10.cod_n
LET comisiones.cod_grupo = comisiones10.cod_grupo
LET comisiones.cod_tipo = comisiones10.cod_tipo
LET comisiones.cod_sec = comisiones10.cod_sec
CALL busca_nombre_articulo1()
ON ACTION primero ATTRIBUTE(TEXT="Primero",IMAGE='nav_up')
FETCH FIRST datos INTO comisiones10.*
DISPLAY BY NAME comisiones10.*
LET comisiones.sec_vend = comisiones10.sec_vend
CALL busca_vendedor()
LET comisiones.cod_n = comisiones10.cod_n
LET comisiones.cod_grupo = comisiones10.cod_grupo
LET comisiones.cod_tipo = comisiones10.cod_tipo
LET comisiones.cod_sec = comisiones10.cod_sec
CALL busca_nombre_articulo1()
LET numero_msg = 5
CALL msg(numero_msg)
ON ACTION ultimo ATTRIBUTE(TEXT="Ultimo",IMAGE='nav_down')
FETCH LAST datos INTO comisiones10.*
DISPLAY BY NAME comisiones10.*
LET comisiones.sec_vend = comisiones10.sec_vend
CALL busca_vendedor()
LET comisiones.cod_n = comisiones10.cod_n
LET comisiones.cod_grupo = comisiones10.cod_grupo
LET comisiones.cod_tipo = comisiones10.cod_tipo
LET comisiones.cod_sec = comisiones10.cod_sec
CALL busca_nombre_articulo1()
LET numero_msg = 4
CALL msg(numero_msg)
ON ACTION escoger ATTRIBUTE(TEXT="Escoger",IMAGE='window_execute')
INPUT BY NAME comisiones10.porc_ventas,comisiones10.porc_cobros
WITHOUT DEFAULTS
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE cctb00008 SET porc_ventas = comisiones10.porc_ventas,
porc_cobros = comisiones10.porc_cobros,
us_mod = usuarios,
fech_mod = getdate()
WHERE
sec_vend = comisiones10.sec_vend AND
cod_n = comisiones10.cod_n AND
cod_grupo = comisiones10.cod_grupo AND
cod_tipo = comisiones10.cod_tipo AND
cod_sec = comisiones10.cod_sec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
ON ACTION borrar ATTRIBUTE(TEXT="ELiminar",IMAGE='delete')
UPDATE cctb00008 SET status_t = "E",
us_mod = usuarios,
fech_mod = getdate()
WHERE
sec_vend = comisiones10.sec_vend AND
cod_n = comisiones10.cod_n AND
cod_grupo = comisiones10.cod_grupo AND
cod_tipo = comisiones10.cod_tipo AND
cod_sec = comisiones10.cod_sec
LET numero_msg = 39
CALL msg(numero_msg)
ON ACTION salir ATTRIBUTE(TEXT= "Retornar",IMAGE='quit')
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_vendedor()
# Esta funcion busca el nombre del vendedor y lo despliega en pantalla
# Esta funcion es valida solamente para la consulta-modificacion.
LET descrip6 = NULL
LET descrip2 = NULL
{ IF comisiones.sec_vend = 1 THEN
LET descrip6 = "LOCAL"
ELSE
LET descrip6 = "EXPORTACION"
END IF
DISPLAY BY NAME descrip6
}
SELECT i.nom1_emp, i.apell1_emp, i.status_t
INTO descrip1, descrip2, status_reg
FROM adtb00003 i
WHERE i.num_emp = comisiones.sec_vend and i.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET descrip6 = NULL
LET descrip2 = NULL
LET numero_msg = 68
CALL msg(numero_msg)
ELSE
IF status_reg = "E" THEN
LET descrip6 = NULL
LET descrip2 = NULL
LET numero_msg = 67
CALL msg(numero_msg)
END IF
END IF
LET descrip6 = descrip1 clipped," ",descrip2 clipped
DISPLAY descrip6 TO descrip6
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
DISPLAY BY NAME descrip6
END FUNCTION
FUNCTION busca_nombre_articulo1()
# Esta funcion busca el nombre del articulo y lo despliega en pantalla
# Esta funcion es valida solamente para la consulta-modificacion.
SELECT i.descrip_esp, i.status_t INTO descrip1, status_reg
FROM iptb00002 i
WHERE i.cod_n = comisiones.cod_n AND
i.cod_grupo = comisiones.cod_grupo AND
i.cod_tipo = comisiones.cod_tipo AND
i.cod_sec = comisiones.cod_sec
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 26
CALL msg(numero_msg)
ELSE
IF status_reg = "E" THEN
LET numero_msg = 44
CALL msg(numero_msg)
END IF
END IF
DISPLAY descrip1 TO descrip_esp
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
END FUNCTION
FUNCTION integridad()
IF sqlca.sqlcode < 0 THEN
LET numero_msg = sqlca.sqlcode
CALL msg(numero_msg)
DISPLAY numero_msg AT 23,70
LET bandera = 1
LET status = 0
SLEEP 2
RETURN
END IF
RETURN
END FUNCTION