{ ------------------------------------------------------------------------------- PROGRAMA : ipprrp046 OBJETIVO : Relacion de Documentos PROGRAMADOR : Lic. Oscar Castillo FECHA REALIZACION : Junio 5, del 2000 ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT TO "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL ipprrp046() END MAIN FUNCTION ipprrp046() DEFINE ventas CHAR(1) DEFINE salir CHAR(1) DEFINE select_ac,select_ant,select_p CHAR(1000) DEFINE idx_ac,ano,idx_a,idx_c SMALLINT DEFINE c_ano CHAR(4), p_ano SMALLINT DEFINE relacion RECORD fecha DATE, cod_mov LIKE intb00005.cod_mov, num_doc INTEGER, status_reg CHAR(1), codigo CHAR(20), nombre_transp CHAR(60), cedula CHAR(11), descrip_bodega CHAR(30), cliente CHAR(60), direccion CHAR(100), orden INT, descrip CHAR(30) END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmrp046 FROM "ipfmrp046" DISPLAY FORM ipfmrp046 # CALL pantalla() DISPLAY "ipprrp046" AT 4,3 ATTRIBUTE(RED) DISPLAY " Relacion de Documentos" AT 6,22 ATTRIBUTE(BLACK) INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi BEFORE INPUT LET datos_cons.fech_fi = TODAY USING "dd/mm/yyyy" DISPLAY BY NAME datos_cons.fech_fi 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 END INPUT CONSTRUCT criterio ON c.cod_mov,c.cod_transp,c.sec_transp FROM cod_mov,cod_transp,sec_transp IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET select_ac = "SELECT DISTINCT c.fecha,c.cod_mov,c.num_doc, ", " c.status_t,CAST(c.cod_transp AS CHAR(4))+'-'+CAST(c.sec_transp AS VARCHAR(10)),", "a.nombre,CAST(a.cedula AS CHAR(7))+CAST(a.serie AS CHAR(3)), ", " b.descripcion,d.nombre,e.direccion,c.num_oc ", "FROM iptb00006 c LEFT OUTER JOIN prtb00012 e on c.num_oc = e.num_oc ", " LEFT OUTER JOIN vetb00004 d ON c.cod_sp = d.tipo_cliente AND c.cod_sp_sec = d.sec_cliente,", " vetb00015 a,intb00009 b ", "WHERE c.fecha between ? and ? and c.cod_transp = a.cod_transp AND c.sec_transp = a.sec_transp AND ", " c.cod_mov != 99 AND c.bodega = b.cod_bodega AND c.status_t IS NULL AND ",criterio CLIPPED, "ORDER BY c.fecha,c.cod_mov,c.num_Doc " DISPLAY "<< Estoy Buscando Documentos... Espere Por favor >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_ant FROM select_ac DECLARE actual SCROLL CURSOR FOR busca_ant OPEN actual USING datos_cons.fech_in,datos_cons.fech_fi DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING handler START REPORT relacion TO XML HANDLER handler LET idx_c = 1 LET idx_a = 1 LET idx_ac = 1 WHILE status != notfound FETCH actual INTO relacion.* 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 SELECT a.descrip_mov INTO relacion.descrip FROM iptb00005 a WHERE a.cod_mov = relacion.cod_mov IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF OUTPUT TO REPORT relacion(relacion.*) END WHILE FINISH REPORT relacion CLEAR SCREEN END FUNCTION REPORT relacion(x) DEFINE x RECORD fecha DATE, cod_mov LIKE intb00005.cod_mov, num_doc INTEGER, status_reg CHAR(1), codigo CHAR(20), nombre_transp CHAR(60), cedula CHAR(11), descrip_bodega CHAR(30), cliente CHAR(60), direccion CHAR(100), orden INT, descrip CHAR(30) END RECORD DEFINE nom_status CHAR(10) DEFINE primera CHAR(1) DEFINE c_ano1 char(4) DEFINE hora CHAR(5) DEFINE total_p,total_m DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 0 PAGE LENGTH 100 ORDER BY x.codigo,x.cod_mov,x.num_doc FORMAT PAGE HEADER LET hora = time SELECT a.* INTO p_companias.* FROM companias a WHERE a.cod_comp = 1 LET lj = (100 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, "ipprrp046", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 94, "Pag. ",pageno using "###" PRINT COLUMN 28, " Sistema de Inventario de Productos Terminados", COLUMN 94, today using "dd/mm/yyyy" PRINT COLUMN 28, " Relacion de Documentos", COLUMN 97, hora SKIP 1 LINES PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yyyy", COLUMN 21, "Hasta ", datos_cons.fech_fi using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-" PRINT COLUMN 1, "Fecha", COLUMN 20, "Documento", COLUMN 30, "Orden", COLUMN 45, "Cliente / Proveedor", COLUMN 69, "Almacen " PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-" INITIALIZE nom_status TO NULL BEFORE GROUP OF x.codigo PRINT "TRANSPORTISTA: ",x.codigo," ",x.nombre_transp," ",x.cedula SKIP 1 LINE BEFORE GROUP OF x.cod_mov PRINT "MOVIMIENTO: ",x.cod_mov USING "<<<<"," ",x.descrip SKIP 1 LINE ON EVERY ROW IF x.status_reg IS NULL THEN LET nom_status = "ACTIVO" END IF IF x.status_reg = "E" THEN LET nom_status = "ANULADO" END IF PRINT COLUMN 1, x.fecha USING "dd/mm/yyyy", COLUMN 20, x.num_doc USING "&&&&&&&&", COLUMN 30, x.orden USING "&&&&&&&&", COLUMN 45, x.cliente, COLUMN 40, x.descrip_bodega PRINT COLUMN 45, x.direccion PRINT "-----------------------------------------------------------", "-----------------------------------------------------------" ON LAST ROW END REPORT