Files
MBS/PROYECTO/codir/coprrp007.4gl
T

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