{ ------------------------------------------------------------------ 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