333 lines
12 KiB
Plaintext
333 lines
12 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : COPRRP007
|
|
OBJETIVO : Cronologico de Requisiciones
|
|
PROGRAMADOR : Ing. Betania Guerrero Perez
|
|
FECHA REALIZACION : Octubre 26, 1992
|
|
FECHA MODIFICACION : Octubre 29, 1992
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "coprgb000.4gl"
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
|
|
CALL coprrp007()
|
|
|
|
END MAIN
|
|
FUNCTION coprrp007()
|
|
|
|
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
|
|
## EL REPORTE
|
|
DEFINE requisito RECORD
|
|
fech_req LIKE cotb00006.fech_req,
|
|
nom_dpto LIKE adtb00001.nom_dpto,
|
|
num_req LIKE cotb00006.num_req,
|
|
num_oc LIKE cotb00014.num_oc,
|
|
fech_oc LIKE cotb00014.fech_oc,
|
|
cod_n LIKE intb00001.cod_n,
|
|
cod_grupo LIKE intb00001.cod_grupo,
|
|
cod_tipo LIKE intb00001.cod_tipo,
|
|
cod_sec LIKE intb00001.cod_sec,
|
|
cantidad LIKE cotb00008.cantidad,
|
|
procesada LIKE cotb00008.procesada,
|
|
tipo_inv VARCHAR(30),
|
|
uso VARCHAR(100),
|
|
descrip_esp VARCHAR(100),
|
|
unidad_med LIKE intb00001.unidad_med
|
|
|
|
END RECORD
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM cofmrp007 FROM "cofmrp007"
|
|
DISPLAY FORM cofmrp007
|
|
# CALL pantalla()
|
|
DISPLAY "coprrp007" AT 4,3 ATTRIBUTE(YELLOW)
|
|
DISPLAY "Cronologico de Requisiciones" AT 6,26
|
|
|
|
|
|
## AQUI SE INDICA EL CRITERIO DE BUSQUEDA PARA EL REPORTE
|
|
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi,clasifica
|
|
|
|
AFTER FIELD fech_in
|
|
IF datos_cons.fech_in IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_in
|
|
END IF
|
|
|
|
AFTER FIELD fech_fi
|
|
IF datos_cons.fech_fi IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_fi
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
IF clasifica IS NULL THEN
|
|
NEXT FIELD clasifica
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
CONSTRUCT criterio ON a.departamento FROM departamento
|
|
BEFORE CONSTRUCT
|
|
CALL busca_departamento()
|
|
AFTER CONSTRUCT
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
IF INT_FLAG THEN
|
|
RETURN
|
|
END IF
|
|
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
|
|
IF CLASIFICA = "T" THEN
|
|
LET SELEC =
|
|
"SELECT UNIQUE a.fech_req,e.nom_dpto,a.num_req,h.num_oc,g.fech_oc, ",
|
|
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.procesada,c.tipo_inv,a.uso ",
|
|
"FROM cotb00006 a ,cotb00008 c LEFT OUTER JOIN cotb00015 h ON c.num_req = h.num_req AND h.status_t IS NULL ",
|
|
" AND c.cod_n = h.cod_n and c.cod_grupo = h.cod_grupo and c.cod_tipo = h.cod_tipo and c.cod_Sec = h.cod_sec ",
|
|
" LEFT OUTER JOIN cotb00014 g ON h.num_oc = g.num_oc,adtb00001 e ",
|
|
"WHERE a.departamento = e.departamento AND a.num_req = c.num_req AND ",
|
|
" a.fech_req between ? and ? and a.status_t is null and ", criterio CLIPPED," ",
|
|
"ORDER BY e.nom_dpto,a.num_req"
|
|
END IF
|
|
|
|
IF CLASIFICA = "P" THEN
|
|
LET SELEC =
|
|
"SELECT DISTINCT a.fech_req,e.nom_dpto,a.num_req,' ',' ', ",
|
|
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.procesada,c.tipo_inv,a.uso ",
|
|
"FROM cotb00006 a ,cotb00008 c ,adtb00001 e ",
|
|
"WHERE a.departamento = e.departamento AND a.num_req = c.num_req AND ",
|
|
" a.estado in( 'ABIERTA','EN PROCESO') AND ",
|
|
" a.fech_req between ? and ? and a.status_t is null AND ", criterio CLIPPED," ",
|
|
"ORDER BY e.nom_dpto,a.num_req"
|
|
|
|
END IF
|
|
|
|
IF CLASIFICA = "C" THEN
|
|
LET SELEC =
|
|
"SELECT distinct a.fech_req,e.nom_dpto,a.num_req,h.num_oc,h.fech_oc, ",
|
|
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.procesada,c.tipo_inv,a.uso ",
|
|
"FROM cotb00006 a ,cotb00008 c ,adtb00001 e,cotb00014 h,cotb00015 p ",
|
|
"WHERE a.departamento = e.departamento AND a.num_req = c.num_req AND ",
|
|
" a.estado = 'CERRADA' AND a.num_req = p.num_req and h.num_oc = p.num_oc AND",
|
|
" a.fech_req between ? and ? and a.status_t is null AND ",criterio CLIPPED," ",
|
|
"ORDER BY e.nom_dpto,a.num_req"
|
|
|
|
END IF
|
|
|
|
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
|
|
ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
## SE PREPARA LA INFORMACION
|
|
PREPARE busca FROM selec
|
|
|
|
|
|
## SE DECLARA EL CURSOR PARA LA SALIDA DEL REPORTE
|
|
DECLARE accion CURSOR FOR busca
|
|
OPEN accion USING datos_cons.fech_in,datos_cons.fech_fi
|
|
|
|
DISPLAY " " AT 19,14
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE SALIDA
|
|
## AL REPORTE
|
|
LET idx = 1
|
|
WHILE status != notfound
|
|
FETCH accion INTO requisito.*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
IF idx = 1 THEN
|
|
|
|
CALL seleccionarsalida() RETURNING salida
|
|
CALL configureoutput(salida) RETURNING HANDLER
|
|
START REPORT organiza TO XML HANDLER handler
|
|
|
|
END IF
|
|
OUTPUT TO REPORT organiza(requisito.*)
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
IF idx > 1 THEN
|
|
FINISH REPORT organiza
|
|
END IF
|
|
IF idx = 1 THEN
|
|
CALL fgl_winmessage("ERROR","NO EXISTEN INFORMACIONES CON ESAS CONDICIONES","INFO")
|
|
END IF
|
|
END FUNCTION
|
|
|
|
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
|
|
## EL REPORTE
|
|
REPORT organiza(x)
|
|
DEFINE x RECORD
|
|
fech_req LIKE cotb00006.fech_req,
|
|
nom_dpto CHAR(30),
|
|
num_req LIKE cotb00006.num_req,
|
|
num_oc LIKE cotb00014.num_oc,
|
|
fech_oc LIKE cotb00014.fech_oc,
|
|
cod_n LIKE intb00001.cod_n,
|
|
cod_grupo LIKE intb00001.cod_grupo,
|
|
cod_tipo LIKE intb00001.cod_tipo,
|
|
cod_sec LIKE intb00001.cod_sec,
|
|
cantidad LIKE cotb00008.cantidad,
|
|
procesada LIKE cotb00008.procesada,
|
|
tipo_inv VARCHAR(30),
|
|
uso VARCHAR(100),
|
|
descrip_esp VARCHAR(100),
|
|
unidad_med LIKE intb00001.unidad_med
|
|
END RECORD
|
|
|
|
## DEFINICION DE LAS VARIABLES DE IMPRESION
|
|
DEFINE b_oc,b_fecha,imp,bandera,bandera1 CHAR(1)
|
|
DEFINE l,total_requisiciones SMALLINT
|
|
DEFINE varia CHAR(12)
|
|
DEFINE doble_on CHAR(2)
|
|
DEFINE doble_off CHAR(2)
|
|
DEFINE negrillas_on CHAR(2)
|
|
DEFINE negrillas_off CHAR(2)
|
|
DEFINE comp_on CHAR(2)
|
|
DEFINE comp_off CHAR(2)
|
|
# DEFINE doce CHAR(2)
|
|
DEFINE normal CHAR(2)
|
|
DEFINE hora CHAR(5)
|
|
|
|
OUTPUT
|
|
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 0
|
|
PAGE LENGTH 100
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
{ LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80}
|
|
LET bandera1 = "N"
|
|
LET imp = "T"
|
|
LET hora = time
|
|
IF clasifica = "P" THEN
|
|
LET varia = "*Pendientes*"
|
|
END IF
|
|
IF clasifica = "C" THEN
|
|
LET varia = "*Cerradas*"
|
|
END IF
|
|
IF clasifica = "T" THEN
|
|
LET varia = "*Todas*"
|
|
END IF
|
|
IF total_requisiciones IS NULL THEN
|
|
LET total_requisiciones=0
|
|
END IF
|
|
LET l = (143 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
## AQUI SE IMPRIME EL ENCABEZADO
|
|
PRINT COLUMN 1,normal, comp_on, negrillas_on
|
|
PRINT COLUMN 2, "coprrp007",
|
|
COLUMN l, p_companias.nombre CLIPPED,
|
|
COLUMN 134, "Pag. ",pageno using "<<<"
|
|
PRINT COLUMN 61, "Sistema de Compras",
|
|
COLUMN 134, today using "dd/mm/yy"
|
|
PRINT COLUMN 61, "Cronologico de Requisiciones",
|
|
COLUMN 137, hora
|
|
LET l = (143 - LENGTH(varia))/2
|
|
PRINT COLUMN L, varia
|
|
|
|
SKIP 1 LINES
|
|
PRINT COLUMN 1, comp_on
|
|
PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yy",
|
|
COLUMN 20, "Hasta ", datos_cons.fech_fi using "dd/mm/yy"
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------------------------------"
|
|
|
|
PRINT COLUMN 2, "Fecha",
|
|
COLUMN 12, "Departamento",
|
|
COLUMN 38, "Numero de",
|
|
COLUMN 51, "Orden de",
|
|
COLUMN 63, "Fecha"
|
|
|
|
PRINT COLUMN 2, "Solicitud",
|
|
COLUMN 12, "Requiriente",
|
|
COLUMN 38, "Requisicion",
|
|
COLUMN 51, "Compra",
|
|
COLUMN 63, "Orden"
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------------------------------"
|
|
|
|
## AQUI SE IMPRIME EL DETALLE
|
|
SKIP 1 LINE
|
|
BEFORE GROUP OF x.nom_dpto
|
|
|
|
PRINT COLUMN 1, negrillas_on,
|
|
COLUMN 2, x.fech_req USING "dd/mm/yyyy",
|
|
COLUMN 14, x.nom_dpto
|
|
BEFORE GROUP OF x.num_req
|
|
PRINT COLUMN 2,x.fech_req USING "dd/mm/yyyy",
|
|
COLUMN 48, x.num_req USING "<<<<<<",
|
|
2 SPACES, x.num_oc USING "<<<<<<<<",
|
|
2 SPACES, x.fech_oc USING "dd/mm/yyyy",
|
|
2 SPACES, x.uso WORDWRAP RIGHT MARGIN 100
|
|
PRINT COLUMN 48,"-------------------------------------------------------",
|
|
"----------------------------------------"
|
|
PRINT COLUMN 48, "Bien/Servicio",
|
|
50 SPACES, "Und",
|
|
2 SPACES, "Cantidad",
|
|
2 SPACES, ' Procesada'
|
|
PRINT COLUMN 48,"-------------------------------------------------------",
|
|
"----------------------------------------"
|
|
|
|
ON EVERY ROW
|
|
|
|
|
|
CALL producto(x.tipo_inv,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec) RETURNING x.descrip_esp,x.unidad_med
|
|
|
|
PRINT COLUMN 48, x.cod_n USING "&&&&","-",
|
|
x.cod_grupo USING "&&&&","-",
|
|
x.cod_tipo USING "&&&&&","-",
|
|
x.cod_sec USING "&&&&&&"," ",
|
|
COLUMN 72, x.descrip_esp WORDWRAP RIGHT MARGIN 95,
|
|
COLUMN 98, x.num_oc USING "<<<<<<<<",
|
|
COLUMN 111, x.unidad_med,
|
|
COLUMN 112, x.cantidad USING "##,###,###.##",
|
|
COLUMN 130, x.procesada
|
|
AFTER GROUP OF x.num_req
|
|
PRINT COLUMN 48,"-------------------------------------------------------",
|
|
"----------------------------------------"
|
|
|
|
LET total_requisiciones = total_requisiciones + 1
|
|
|
|
|
|
ON LAST ROW
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Total Registros===> ",total_requisiciones USING "&&&&"
|
|
END REPORT
|