{ ------------------------------------------------------------------------------- PROGRAMA : COPRCS006 OBJETIVO : Consulta Requisicion Por Fecha PROGRAMADOR : Ing. Juan Fco. Soto. FECHA REALIZACION : Octubre 6, 1992 FECHA MODIFICACION : Noviembre 24, 1992 (Betania Guerrero) MODIFICADO POR : Ing. Juan Soto DESCRIPCION : Poner Mensaje de no existe y limpiar campos. FECHA : Marzo 12, 1993. ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" FUNCTION coprcs006() DEFINE seleccion CHAR(1000) DEFINE total_g_e CHAR(15) DEFINE p,sale,pendiente CHAR (1) DEFINE h,i SMALLINT DEFINE requisiciones RECORD cantidad DECIMAL(10,2), precio DECIMAL(11,3), num_req2 INTEGER, monto DECIMAL(12,3) END RECORD DEFINE busca_req RECORD codigo4 SMALLINT, num_req INTEGER, fecha DATE, nom_dpto CHAR(30), base LIKE intb00002.base, monto DECIMAL(12,3) END RECORD DEFINE desp_req ARRAY[500] OF RECORD num_req1 INTEGER, fecha1 DATE, codigo1 SMALLINT, nom_dpto CHAR(30), monto1 CHAR(15) END RECORD DEFINE encontrado INTEGER DEFINE total_d,total_g DECIMAL(14,3) DEFINE primera CHAR(1) #WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 LET formulario = formulario CLIPPED,"cofmcs006" OPEN FORM cofmcs006 FROM formulario DISPLAY FORM cofmcs006 CALL PANTALLA() DISPLAY " Consulta de Registros" AT 2,3 DISPLAY " Cancela Operacion" AT 2,50 DISPLAY "coprcs006" AT 4,3 DISPLAY "Requisicion Por Rango de Fecha" AT 6,25 LABEL volver: LET sale = null CONSTRUCT criterio ON a.num_req,a.departamento FROM num_req,departamento INPUT BY NAME pendiente,rango.* ATTRIBUTE (YELLOW) BEFORE FIELD fech_in SELECT MIN(fech_req) INTO rango.fech_in FROM cotb00006 WHERE status_t is null DISPLAY BY NAME rango.fech_in ATTRIBUTE (BOLD) BEFORE FIELD fech_fi LET rango.fech_fi = today DISPLAY BY NAME rango.fech_fi ATTRIBUTE (BOLD) AFTER FIELD pendiente IF pendiente IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD pendiente 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 IF sale = "S" THEN GOTO volver END IF ## Se seleccionan los campos que el usuario debe ver en la pantalla IF pendiente = "T" THEN LET selec = "SELECT a.departamento,a.num_req,a.fech_req,b.nom_dpto,d.base, ", " sum(c.cantidad * c.precio) ", "FROM cotb00006 a,adtb00001 b,cotb00008 c,OUTER intb00002 d ", "WHERE a.num_req = c.num_req AND c.cod_n = d.cod_n AND ", " c.cod_grupo = d.cod_grupo AND c.cod_tipo = d.cod_tipo AND ", " c.cod_sec = d.cod_sec AND a.departamento = b.departamento AND ", " a.fech_req between ? AND ? AND a.status_t is NULL AND ", " (c.procesada = ? OR c.procesada = 'S') and ",criterio clipped, " GROUP BY 1,2,3,4,5 ORDER BY 1,2,3 " ELSE LET p = "N" LET selec = "SELECT a.departamento,a.num_req,a.fech_req,b.nom_dpto,d.base, ", " sum(c.cantidad * c.precio) ", "FROM cotb00006 a,adtb00001 b,cotb00008 c,OUTER intb00002 d ", "WHERE a.num_req = c.num_req AND c.cod_n = d.cod_n AND ", " c.cod_grupo = d.cod_grupo AND c.cod_tipo = d.cod_tipo AND ", " c.cod_sec = d.cod_sec AND a.departamento = b.departamento AND ", " a.fech_req between ? AND ? AND a.status_t is NULL AND ", " c.procesada = ? and ",criterio clipped, " GROUP BY 1,2,3,4,5 ORDER BY 1,2,3 " END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF DISPLAY "Buscando Informacion ... Espere Por Favor" AT 21,1 ATTRIBUTE (YELLOW) PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion using rango.fech_in,rango.fech_fi,p LET i = 1 LET sale = null LET idx = 1 LET primera = "S" LET total_g = 0 LET total_d = 0 FOR h = 1 to 6 LET desp_req[h].codigo1 = NULL LET desp_req[h].num_req1 = NULL LET desp_req[h].fecha1 = NULL LET desp_req[h].nom_dpto = NULL LET desp_req[h].monto1 = NULL END FOR WHILE STATUS != NOTFOUND FETCH accion INTO busca_req.* IF busca_req.base is not null THEN IF busca_req.base != 0 THEN LET busca_req.monto = busca_req.monto / busca_req.base END IF END IF IF STATUS = NOTFOUND AND sale IS NULL THEN LET desp_req[idx].num_req1 = NULL LET desp_req[idx].fecha1 = NULL LET desp_req[idx].codigo1 = NULL LET idx = idx + 1 LET desp_req[idx].codigo1 = NULL LET desp_req[idx].num_req1 = NULL LET desp_req[idx].fecha1 = NULL LET desp_req[idx].nom_dpto = "Total Departamento ==> " LET desp_req[idx].monto1 = total_d using "###,###,###.##" LET total_g = total_g + total_d LET sale = "S" END IF IF primera = "S" THEN LET desp_req[idx].codigo1 = busca_req.codigo4 LET primera = "N" END IF IF desp_req[idx].codigo1 = busca_req.codigo4 THEN LET desp_req[idx].num_req1 = busca_req.num_req LET desp_req[idx].fecha1 = busca_req.fecha using "dd/mm/yy" LET desp_req[idx].codigo1 = busca_req.codigo4 LET desp_req[idx].nom_dpto = busca_req.nom_dpto LET desp_req[idx].monto1 = busca_req.monto using "###,###,###.###" LET total_d = total_d + desp_req[idx].monto1 END IF IF desp_req[idx].codigo1 != busca_req.codigo4 THEN LET desp_req[idx].num_req1 = NULL LET desp_req[idx].fecha1 = NULL LET desp_req[idx].codigo1 = NULL LET idx = idx + 1 LET desp_req[idx].num_req1 = NULL LET desp_req[idx].fecha1 = NULL LET desp_req[idx].codigo1 = NULL LET desp_req[idx].nom_dpto = "Total Departamento ==> " LET desp_req[idx].monto1 = total_d using "###,###,###.##" LET total_g = total_g + total_d LET total_d = 0 LET primera = "S" LET idx = idx + 1 LET desp_req[idx].num_req1 = NULL LET desp_req[idx].fecha1 = NULL LET desp_req[idx].codigo1 = NULL LET idx = idx + 1 LET desp_req[idx].num_req1 = busca_req.num_req LET desp_req[idx].fecha1 = busca_req.fecha using "dd/mm/yy" LET desp_req[idx].codigo1 = busca_req.codigo4 LET desp_req[idx].nom_dpto = busca_req.nom_dpto LET desp_req[idx].monto1 = busca_req.monto using "###,###,###.###" LET total_d = total_d + desp_req[idx].monto1 END IF LET idx = idx + 1 IF sale = "S" THEN EXIT WHILE END IF LET desp_req[idx].codigo1 = busca_req.codigo4 END WHILE LET total_g_e = total_g using "###,###,###.##" DISPLAY " " AT 21,1 DISPLAY BY NAME total_g_e CALL set_count (idx-1) DISPLAY ARRAY desp_req TO requi.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN ELSE CLEAR FORM GOTO volver END IF END FUNCTION