{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP007 OBJETIVO : REPORTE DE MOVIMIENTOS POR DOCUMENTOS PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Septiembre 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" DEFINE transacc1 RECORD cod_n LIKE iptb00006.cod_n, cod_grupo LIKE iptb00006.cod_grupo, cod_tipo LIKE iptb00006.cod_tipo, cod_sec LIKE iptb00006.cod_sec, descrip_esp LIKE iptb00002.descrip_esp, unidad_med LIKE iptb00002.unidad_med, num_doc LIKE iptb00006.num_doc, fecha LIKE iptb00006.fecha, cantidad_1 LIKE iptb00006.cantidad_1, cantidad_2 LIKE iptb00006.cantidad_2, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, conduce_no LIKE iptb00006.conduce_no, fact_no LIKE iptb00006.fact_no, orden_compra LIKE iptb00006.orden_compra, cod_sp LIKE iptb00006.cod_sp, cod_sp_sec LIKE iptb00006.cod_sp_sec, estado CHAR(1), us_anula CHAR(9), fecha_a LIKE iptb00006.fech_crea, descrip_ing LIKE iptb00002.descrip_ing END RECORD DEFINE nombre_suplidor CHAR(30) MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL ipprrp007() END MAIN FUNCTION ipprrp007() CLEAR SCREEN LET int_flag = FALSE # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 9 OPEN FORM ipfmrp007 FROM "ipfmrp007" DISPLAY FORM ipfmrp007 # CALL pantalla() DISPLAY "ipprrp007" AT 4,3 DISPLAY " Documentos " AT 6,36 LET tipo_papel = 1 # CALL msgrp000(tipo_papel) CONSTRUCT criterio ON a.fecha,a.cod_mov,a.num_doc FROM fecha,cod_mov,num_doc IF int_flag THEN let numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF let selec = "SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, ", " b.descrip_esp,b.unidad_med,a.num_doc,a.fecha, ", " a.cantidad_1,a.cantidad_2,a.cod_mov,c.descrip_mov, ", " a.conduce_no,a.fact_no,a.orden_compra,a.cod_sp, ", " a.cod_sp_sec,a.status_t,a.us_mod,a.fech_mod, ", " b.descrip_ing ", "FROM iptb00006 a, iptb00002 b, iptb00005 c ", "WHERE ",criterio clipped," AND a.cod_n = b.cod_n AND " , " a.cod_grupo=b.cod_grupo AND a.cod_tipo=b.cod_tipo AND " , " a.cod_sec = b.cod_sec AND a.cod_mov = c.cod_mov ", "ORDER BY 11,7" DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE(REVERSE,BOLD) PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT reporte8 TO "C:\\archivo" WHILE STATUS != NOTFOUND FETCH accion INTO transacc1.* IF STATUS = NOTFOUND THEN EXIT WHILE ELSE SELECT nom_sp INTO nombre_suplidor FROM cotb00001 WHERE cod_sp = transacc1.cod_sp and cod_sp_sec = transacc1.cod_sp_sec IF status = notfound THEN LET status = 0 END IF OUTPUT TO REPORT reporte8(transacc1.*,nombre_suplidor) END IF END WHILE FINISH REPORT reporte8 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte8(x,nombre_suplidor) DEFINE x RECORD cod_n LIKE iptb00006.cod_n, cod_grupo LIKE iptb00006.cod_grupo, cod_tipo LIKE iptb00006.cod_tipo, cod_sec LIKE iptb00006.cod_sec, descrip_esp LIKE iptb00002.descrip_esp, unidad_med LIKE iptb00002.unidad_med, num_doc LIKE iptb00006.num_doc, fecha LIKE iptb00006.fecha, cantidad_1 LIKE iptb00006.cantidad_1, cantidad_2 LIKE iptb00006.cantidad_2, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, conduce_no LIKE iptb00006.conduce_no, fact_no LIKE iptb00006.fact_no, orden_compra LIKE iptb00006.orden_compra, cod_sp LIKE iptb00006.cod_sp, cod_sp_sec LIKE iptb00006.cod_sp_sec, estado CHAR(1), us_anula CHAR(9), fecha_a LIKE iptb00006.fech_crea, descrip_ing LIKE iptb00002.descrip_ing END RECORD DEFINE nombre_suplidor CHAR(30) DEFINE nombre CHAR(8), und CHAR(3) , doble_on CHAR(2), doble_off CHAR(2), negrillas_on CHAR(4), doce, negrillas_off CHAR(4), comprimido_on CHAR(2), comprimido_off CHAR(2), primera CHAR(1), hora CHAR(5), l,dia,mes smallint, nom_dia,nom_mes CHAR(10) OUTPUT LEFT MARGIN 0 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 doce = ASCII 27, ASCII 77 LET comprimido_on = ASCII 15 LET comprimido_off = ASCII 18 LET hora = time LET dia = WEEKDAY(x.fecha) LET mes = MONTH(x.fecha) LET dia = dia +1 LET primera = "S" CALL busca_mes() LET nom_mes = nombre_mes[mes] CALL busca_dia() LET nom_dia = nombre_dia[dia] LET l = (100 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 3, doce,negrillas_on PRINT COLUMN 1, "ipprrp007", COLUMN l, p_companias.nombre CLIPPED, COLUMN 93, "Pag. ",pageno using "###" PRINT COLUMN 33, "Sistema de Inventario de Productos", COLUMN 93, today using "dd/mm/yyyy" PRINT COLUMN 33, " Documentos", COLUMN 95, hora SKIP 1 LINE PRINT COLUMN 3, nom_dia clipped," ",day(x.fecha) using "&&", " ",nom_mes clipped," ",year(x.fecha) PRINT negrillas_off BEFORE GROUP OF x.cod_mov IF x.cod_mov != 99 THEN PRINT COLUMN 1, negrillas_on, "Movimiento: ",x.cod_mov USING "&&"," ",x.descrip_mov PRINT COLUMN 20, "Orden", COLUMN 52, "Codigo" PRINT COLUMN 1, "Documento", COLUMN 11 , "Fecha", COLUMN 20 , "Compras", COLUMN 28 , "Conduce", COLUMN 40 , "Factura", COLUMN 52 , "Suplidor", COLUMN 62 , "Nombre Suplidor" PRINT COLUMN 1 , negrillas_off END IF BEFORE GROUP OF X.num_doc IF x.estado = "E" THEN PRINT negrillas_on,"ESTE DOCUMENTO FUE ANULADO ",x.fecha_a PRINT "USUARIO: ",x.us_anula,negrillas_off END IF IF x.cod_mov != 99 THEN IF x.cod_sp is null THEN LET nombre_suplidor = null END IF SKIP 1 LINE PRINT COLUMN 1, x.num_doc using "&&&&&&", COLUMN 11 , x.fecha using "dd/mm/yyyy", COLUMN 20 , x.orden_compra using "<<<<", COLUMN 28 , x.conduce_no, COLUMN 40 , x.fact_no, COLUMN 52 , x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&", COLUMN 62 , nombre_suplidor PRINT COLUMN 1, negrillas_on PRINT COLUMN 59, "C a n t i d a d" PRINT COLUMN 72, "Ordenada/", COLUMN 88, "Entregada/" PRINT COLUMN 1 , "Codigo", COLUMN 15, "Descripcion", COLUMN 45, "Unidad", COLUMN 72, "Devuelta", COLUMN 88, "Recibida" PRINT COLUMN 1, negrillas_off END IF ON EVERY ROW IF x.cod_mov != 99 THEN LET nombre_m = NULL LET descripcion = x.descrip_esp CLIPPED PRINT COLUMN 1, x.cod_n USING "&","-", COLUMN 3, x.cod_grupo USING "&","-", COLUMN 5, x.cod_tipo USING "&&","-", COLUMN 8, x.cod_sec USING "&&&", COLUMN 15, descripcion[1,45], COLUMN 62, x.unidad_med, COLUMN 68, x.cantidad_1 USING "##,###,###.###", COLUMN 83, x.cantidad_2 USING "##,###,###.###" END IF AFTER GROUP OF x.num_doc PRINT COLUMN 1, "-------------------------------------------", "----------------------------------------------" SKIP 1 LINE ON LAST ROW PRINT COLUMN 3, comprimido_off END REPORT FUNCTION busca_dia() LET nombre_dia[1] = "Domingo" LET nombre_dia[2] = "Lunes" LET nombre_dia[3] = "Martes" LET nombre_dia[4] = "Miercoles" LET nombre_dia[5] = "Jueves" LET nombre_dia[6] = "Viernes" LET nombre_dia[7] = "Sabado" RUN "type C:\\archivo > %USPRINT%" END FUNCTION FUNCTION busca_mes() LET nombre_mes[1] = "Enero" LET nombre_mes[2] = "Febrero" LET nombre_mes[3] = "Marzo" LET nombre_mes[4] = "Abril" LET nombre_mes[5] = "Mayo" LET nombre_mes[6] = "Junio" LET nombre_mes[7] = "Julio" LET nombre_mes[8] = "Agosto" LET nombre_mes[9] = "Septiembre" LET nombre_mes[10] = "Octubre" LET nombre_mes[11] = "Noviembre" LET nombre_mes[12] = "Diciembre" RUN "type C:\\archivo > %USPRINT%" END FUNCTION