{ ------------------------------------------------------------------------------- PROGRAMA : INPRRP007 OBJETIVO : REPORTE DE MOVIMIENTOS POR TIPO DE DOCUMENTOS PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Junio 03, 1993 ------------------------------------------------------------------------------- } GLOBALS "irprgb000.4gl" DEFINE p_printer SMALLINT 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 irprrp007() END MAIN FUNCTION irprrp007() ##### Definicion de la variables a imprimir DEFINE transacc RECORD cod_n LIKE irtb00002.cod_n, cod_grupo LIKE irtb00002.cod_grupo, cod_tipo LIKE irtb00002.cod_tipo, cod_sec LIKE irtb00002.cod_sec, num_doc LIKE irtb00006.num_doc, fecha LIKE irtb00006.fecha, cantidad_1 LIKE irtb00006.cantidad_1, cantidad_2 LIKE irtb00006.cantidad_2, maquina LIKE irtb00006.maquina, cod_mov LIKE irtb00006.cod_mov, conduce_no LIKE irtb00006.conduce_no, fact_no LIKE irtb00006.fact_no, orden_compra LIKE irtb00006.orden_compra, cod_sp LIKE irtb00006.cod_sp, cod_sp_sec LIKE irtb00006.cod_sp_sec, depto_de LIKE irtb00006.sec_de, depto_a LIKE irtb00006.sec_a, descrip_mov CHAR(30), descrip_esp CHAR(30), unidad_med CHAR(4), status_t CHAR(1) END RECORD #WHENEVER ERROR CONTINUE OPTIONS PROMPT LINE 13, FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM irfmrp007 FROM "irfmrp007" DISPLAY FORM irfmrp007 DISPLAY "irprrp007" AT 4,3 DISPLAY "Validacion de Documentos" AT 6,28 LET tipo_papel = 1 CALL msgrp000(tipo_papel) DISPLAY " " at 19,14 ####### Creando criterio de busqueda CONSTRUCT criterio ON a.fecha,a.cod_mov,a.num_doc FROM fecha,cod_mov,num_doc ##### Creando la facilidad para cancelar opreacion mediante DELETE IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT reporte8 TO archivo ##### Selecionando la informacion requerida para la salida de ##### informacion LET selec = "SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec,a.num_doc, ", " a.fecha,a.cantidad_1,a.cantidad_2,a.maquina,a.cod_mov, ", " a.conduce_no, a.fact_no,a.orden_compra,a.cod_sp,a.cod_sp_sec, ", " a.sec_de,a.sec_a,b.descrip_mov,c.descrip_esp,c.unidad_med, ", " a.status_t ", "FROM irtb00006 a,irtb00005 b,irtb00002 c ", "WHERE a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ", " a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND ", " a.cod_mov = b.cod_mov AND ",criterio clipped," ORDER BY 10,5,1,3,4,2" DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 17,14 ATTRIBUTE (REVERSE,BOLD) LET selec1 = "SELECT COUNT(*) ", "FROM irtb00006 a,irtb00005 b,irtb00002 c ", "WHERE a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ", " a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND ", " a.cod_mov = b.cod_mov AND ",criterio clipped PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion PREPARE comando FROM selec1 DECLARE busca1 CURSOR FOR comando OPEN busca1 FETCH busca1 INTO regi LET p_param = "S" WHILE STATUS != NOTFOUND FETCH accion INTO transacc.* 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 CALL termometro(regi,p_param) LET p_param = "N" OUTPUT TO REPORT reporte8(transacc.*) END WHILE FINISH REPORT reporte8 RUN IMPRIME END FUNCTION ###### Proceso de generacion del reporte. REPORT reporte8(x) DEFINE x RECORD cod_n LIKE irtb00002.cod_n, cod_grupo LIKE irtb00002.cod_grupo, cod_tipo LIKE irtb00002.cod_tipo, cod_sec LIKE irtb00002.cod_sec, num_doc LIKE irtb00006.num_doc, fecha LIKE irtb00006.fecha, cantidad_1 LIKE irtb00006.cantidad_1, cantidad_2 LIKE irtb00006.cantidad_2, maquina LIKE irtb00006.maquina, cod_mov LIKE irtb00006.cod_mov, conduce_no LIKE irtb00006.conduce_no, fact_no LIKE irtb00006.fact_no, orden_compra LIKE irtb00006.orden_compra, cod_sp LIKE irtb00006.cod_sp, cod_sp_sec LIKE irtb00006.cod_sp_sec, depto_de LIKE irtb00006.sec_de, depto_a LIKE irtb00006.sec_a, descrip_mov CHAR(30), descrip_esp CHAR(30), unidad_med CHAR(4), status_t CHAR(1) END RECORD DEFINE nombre_suplidor CHAR(30) DEFINE p RECORD descrip_esp LIKE irtb00002.descrip_esp, unidad_med LIKE irtb00002.unidad_med, descrip_mov LIKE irtb00005.descrip_mov END RECORD DEFINE nombre CHAR(8), und CHAR(3) , doble_on CHAR(3), doble_off CHAR(3), normal CHAR(3), negrillas_on CHAR(3), negrillas_off CHAR(3), comprimido_on CHAR(3), comprimido_off CHAR(3), primera CHAR(1), hora CHAR(5), status1 CHAR(18), dia,mes smallint, nom_dia,nom_mes CHAR(10) OUTPUT LEFT MARGIN 0 ###### Formateando la salida de la informacion 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 normal = ASCII 27, ASCII 80 LET comprimido_on = ASCII 15 LET comprimido_off = ASCII 18 LET hora = time LET dia = WEEKDAY(x.fecha) LET dia = dia + 1 LET mes = MONTH(x.fecha) LET primera = "S" CALL busca_mes() LET nom_mes = nombre_mes[mes] CALL busca_dia() LET nom_dia = nombre_dia[dia] PRINT COLUMN 3, normal,comprimido_off,negrillas_on PRINT COLUMN 1, "irprrp007", COLUMN 17, " M A R M O T E C H S. A.", COLUMN 72, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Inventario de Repuestos", COLUMN 69, today using "dd/mm/yyyy" PRINT COLUMN 17, " Documentos ", COLUMN 75, hora PRINT COLUMN 18, "FECHA: ", nom_dia clipped,", ", day(x.fecha) using "&&"," de ",nom_mes clipped," del ", year(x.fecha) USING "&&&&" PRINT COLUMN 1, negrillas_off,comprimido_on SKIP 1 LINES BEFORE GROUP OF x.cod_mov SKIP 1 LINE PRINT COLUMN 1, negrillas_on,x.descrip_mov,negrillas_off 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", COLUMN 95, "Depto. de", COLUMN 112, "Depto. a " BEFORE GROUP OF x.num_doc LET status1 = NULL IF x.status_t IS NOT NULL AND x.status_t != " " THEN LET status1 = "** ANULADO **" END IF IF x.cod_sp is null THEN LET nombre_suplidor = null ELSE ##### Selecionando el nombre del suplidor del articulo SELECT a.nom_sp INTO nombre_suplidor FROM cotb00001 a WHERE a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_sec END IF PRINT COLUMN 1, comprimido_off,negrillas_on,status1, negrillas_off,comprimido_on 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, COLUMN 98, x.depto_de using "&&&&", COLUMN 115, x.depto_a using "&&&&" SKIP 1 LINE PRINT COLUMN 59, "C a n t i d a d" PRINT COLUMN 54, "Ordenada/", COLUMN 70, "Entregada/" PRINT COLUMN 1 , "Codigo", COLUMN 15, "Descripcion", COLUMN 45, "Unidad", COLUMN 54, "Devuelta", COLUMN 70, "Recibida", COLUMN 88, "Maquina" SKIP 1 LINE ON EVERY ROW ##### Selecionando la descripcion del articulo 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, x.descrip_esp, COLUMN 45, x.unidad_med, COLUMN 50, x.cantidad_1 USING "##,###,###.##", COLUMN 65, x.cantidad_2 USING "##,###,###.##", COLUMN 90, x.maquina using "&&&" ON LAST ROW PRINT COLUMN 3, ASCII 27,ASCII 80 END REPORT ##### Igualandon los dias de la semana a la descripcion del mismo 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 ####### Igualando el numero del mes a la descripcion del mismo 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