{ ------------------------------------------------------------------------------- PROGRAMA : INPRRP003 OBJETIVO : REPORTE DE MOVIMIENTOS PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Agosto 20, 1992 ------------------------------------------------------------------------------- } GLOBALS "inprgb000.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 inprrp003() END MAIN FUNCTION inprrp003() DEFINE idx_b SMALLINT DEFINE salir CHAR(1) DEFINE transacc RECORD cod_n LIKE intb00004.cod_n, cod_grupo LIKE intb00004.cod_grupo, cod_tipo LIKE intb00004.cod_tipo, cod_sec LIKE intb00004.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, num_doc LIKE intb00006.num_doc, fecha CHAR(10), cantidad_2 LIKE intb00006.cantidad_2, cod_mov LIKE intb00006.cod_mov, descrip_mov LIKE intb00005.descrip_mov, bodega SMALLINT, conduce VARCHAR(25), balance_in DECIMAL(12,2) END RECORD DEFINE codigo_ant RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, bodega SMALLINT END RECORD DEFINE balances RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, bodega SMALLINT, balance LIKE intb00006.cantidad_2 END RECORD DEFINE select_balan CHAR(1000) #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM infmrp003 FROM "infmrp003" DISPLAY FORM infmrp003 CALL pantalla() DISPLAY "inprrp003" AT 4,3 DISPLAY " Movimientos de Almacen " AT 6,28 LET tipo_papel = 1 CALL msgrp000(tipo_papel) IF int_flag != 0 THEN let numero_msg = 2 CALL msg(numero_msg) SLEEP 1 LET int_flag = 0 RETURN END IF INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) CLEAR SCREEN RETURN END IF CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cod_mov,a.bodega FROM cod_n,cod_grupo,cod_tipo,cod_sec,cod_mov,bodega LET select_balan = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.bodega,sum(a.cantidad_2) ", "FROM intb00006 a ", "WHERE ",criterio clipped, " and a.status_t is null AND CONVERT(char(10),a.fecha,101) <= ? ", " GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.bodega ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec " DISPLAY "<< Estoy Buscando Balances Iniciales >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) DISPLAY " " AT 19,14 LET selec = "SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec,b.descrip_esp, ", " b.unidad_med,a.num_doc,CONVERT(CHAR(10),a.fecha,101),a.cantidad_2,a.cod_mov, ", " c.descrip_mov,a.bodega,a.conduce_no ", "FROM intb00006 a, intb00001 b, intb00005 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 c.cod_mov = a.cod_mov AND ", " b.status_t is NULL AND a.status_t is null and a.fecha BETWEEN ? AND ? and ", " a.cod_mov != 99 ORDER BY 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_2,a.cod_mov, ", " c.descrip_mov " LET opt1 = fgl_winquestion("Atencion","Desea Reporte Grafico?", "no","yes|no","question",0) IF OPT1 = "yes" THEN CALL selectOutput() RETURNING r_output CALL configureOutput(r_output) RETURNING HANDLER START REPORT reporte3 TO XML HANDLER HANDLER ELSE 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 reporte3 TO archivo END IF DISPLAY "<< Estoy Buscando los Movimientos >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) DISPLAY " " AT 19,14 IF bandera = 1 THEN LET bandera = 0 RETURN END IF IF int_flag != 0 THEN let numero_msg = 2 CALL msg(numero_msg) SLEEP 1 LET int_flag = 0 RETURN END IF DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) LET idx_b = 1 PREPARE busca_balan FROM select_balan DECLARE material_balan SCROLL CURSOR FOR busca_balan OPEN material_balan USING datos_cons.fech_in PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion USING datos_cons.fech_in,datos_cons.fech_fi WHILE STATUS != NOTFOUND FETCH accion INTO transacc.* IF codigo_ant.cod_n != transacc.cod_n OR codigo_ant.cod_grupo != transacc.cod_grupo OR codigo_ant.cod_tipo != transacc.cod_tipo OR codigo_ant.cod_Sec != transacc.cod_sec OR codigo_anT.bodega != transacc.bodega THEN LET cambio = "S" END IF IF status = notfound THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT WHILE END IF IF cambio = "S" THEN LET salir = "N" WHILE salir != "S" FETCH ABSOLUTE idx_b material_balan INTO balances.* IF status = notfound THEN LET idx_b = 1 LET salir = "S" EXIT WHILE END IF LET idx_b = idx_b + 1 LET transacc.balance_in = 0 IF balances.cod_n = transacc.cod_n AND balances.cod_grupo = transacc.cod_grupo AND balances.cod_tipo = transacc.cod_tipo AND balances.cod_sec = transacc.cod_sec AND balances.bodega = transacc.bodega THEN LET codigo_ant.cod_n = transacc.cod_n LET codigo_ant.cod_grupo = transacc.cod_grupo LET codigo_ant.cod_tipo = transacc.cod_tipo LET codigo_ant.cod_Sec = transacc.cod_sec LET codigo_ant.bodega = transacc.bodega LET transacc.balance_in = balances.balance LET salir = "S" LET cambio = "N" END IF IF salir = "S" THEN LET idx_b = 1 LET salir = "S" EXIT WHILE END IF END WHILE END IF OUTPUT TO REPORT reporte3(transacc.*) END WHILE FINISH REPORT reporte3 IF opt1 <> "yes" THEN RUN imprime END IF END FUNCTION REPORT reporte3(x) DEFINE x RECORD cod_n LIKE intb00004.cod_n, cod_grupo LIKE intb00004.cod_grupo, cod_tipo LIKE intb00004.cod_tipo, cod_sec LIKE intb00004.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, num_doc LIKE intb00006.num_doc, fecha CHAR(10), cantidad_2 LIKE intb00006.cantidad_2, cod_mov LIKE intb00006.cod_mov, descrip_mov LIKE intb00005.descrip_mov, bodega SMALLINT, conduce VARCHAR(25), balance_in DECIMAL(12,2) END RECORD, xancho1,xlargo1,xespesor1,xancho2,xlargo2,xespesor2,xmedida1,xmedida2, total_medida1,total_medida2 DEC(12,4), xcodigo_bloque CHAR(12), titulo_bodega VARCHAR(100) DEFINE nombre CHAR(8), und CHAR(3) , doble_on CHAR(2), doble_off CHAR(2), negrillas_on CHAR(2), negrillas_off CHAR(2), comprimido_on CHAR(3), comprimido_off,doce CHAR(3), primera, busca,imprime CHAR(1), hora CHAR(5), balan_ini,canti,balance_rp DECIMAL(12,2), entrada,salida DECIMAL(12,2) OUTPUT LEFT 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 comprimido_on = ASCII 15 LET comprimido_off = ASCII 18 LET doce = ASCII 27, ASCII 77 } LET hora = time LET lj = (116 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1,comprimido_on PRINT COLUMN 1, "inprrp003", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 109, "Pag. ",pageno using "###" PRINT COLUMN 35, " Sistema de Inventario de Materia Prima", COLUMN 109, today using "dd/mm/yyyyyyyy" PRINT COLUMN 35, " Movimientos de Almacen", COLUMN 112, hora SKIP 2 LINES PRINT COLUMN 1, "Desde ",datos_cons.fech_in using "dd/mm/yyyy", " Hasta ",datos_cons.fech_fi using "dd/mm/yyYY" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "----------------" PRINT COLUMN 1, "Documento", COLUMN 14, "Fecha", COLUMN 24, "Movimiento", COLUMN 70, "Entradas", COLUMN 90, "Salidas", COLUMN 110, "Balance" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "----------------" BEFORE GROUP OF x.cod_grupo LET primera = "S" BEFORE GROUP OF x.cod_tipo LET primera = "S" BEFORE GROUP OF x.cod_sec LET primera = "S" ON EVERY ROW IF primera = "S" THEN SKIP 1 LINE IF x.balance_in is null THEN LET x.balance_in = 0 END IF LET titulo_bodega = null SELECT a.descripcion INTO titulo_bodega FROM intb00009 a WHERE a.cod_bodega = x.bodega PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", " ",x.descrip_esp," ", x.unidad_med SKIP 1 LINE LET canti = x.balance_in LET primera = "N" PRINT COLUMN 24, "Inicial ---> ", COLUMN 104, x.balance_in using "--,---,---.##" END IF LET canti = canti + x.cantidad_2 IF x.cantidad_2 > 0 THEN LET salida = null LET entrada = x.cantidad_2 ELSE LET salida = x.cantidad_2 LET entrada = null END IF PRINT COLUMN 1, x.num_doc USING "&&&&&&"," - ",x.conduce CLIPPED," ", COLUMN 14, x.fecha , COLUMN 24, "(",x.cod_mov using "&&",")",x.descrip_mov, COLUMN 64, entrada USING "---,---,---.##", COLUMN 84, salida USING "---,---,---.##", COLUMN 104, canti using "--,---,---.##", 2 SPACE, titulo_bodega CLIPPED # SI EL PRODUCTO TIENE DESGLOSE SELECT DISTINCT a.cod_n FROM intb00018 a WHERE a.bodega = x.bodega AND a.cod_mov = x.cod_mov AND a.documento = x.num_doc AND a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND a.cod_tipo = x.cod_tipo AND a.cod_Sec = x.cod_sec AND a.status_t IS null IF STATUS <> NOTFOUND THEN PRINT COLUMN 2, "=========","========================================" PRINT COLUMN 2, " CODIGO "," MEDIDAS RECIBIDAS " PRINT COLUMN 2, "=========","========================================" PRINT COLUMN 2, " ANCHO LARGO ESPES ",x.unidad_med DECLARE busca_medida CURSOR FOR SELECT a.codigo_bloque,a.ancho1,a.largo1,a.espesor1,a.medida1 INTO xcodigo_bloque,xancho1,xlargo1,xespesor1,xmedida1 FROM intb00018 a WHERE a.cod_n = x.cod_n and a.cod_grupo = x.cod_grupo and a.cod_tipo = x.cod_tipo and a.cod_Sec = x.cod_Sec and a.bodega = x.bodega AND a.documento = x.num_doc AND a.cod_mov = x.cod_mov AND a.status_T IS NULL LET total_medida1 =0 LET total_medida2 =0 FOREACH busca_medida PRINT COLUMN 2,xcodigo_bloque," ",xancho1 USING "###.####", 2 spaces, xlargo1 USING "###.####", 2 spaces, xespesor1 USING "###.####", 2 spaces, xmedida1 USING "--,--#.####", 3 spaces, xancho2 USING "###.####",2 spaces, xlargo2 USING "###.####", 2 spaces, xespesor2 USING "###.####", 2 spaces, xmedida2 USING "--,--#.####" LET total_medida1 = xmedida1 + total_medida1 # LET total_medida2 = xmedida2 + total_medida2 END FOREACH PRINT COLUMN 45,"==========" PRINT COLUMN 45, total_medida1 USING "--,--#.####" SKIP 1 LINE ELSE LET STATUS = 0 END IF ON LAST ROW PRINT COLUMN 1, comprimido_off END REPORT