247 lines
7.6 KiB
Plaintext
247 lines
7.6 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
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 "<Esc> Consulta de Registros" AT 2,3
|
|
DISPLAY "<Delete> 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
|
|
|