{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP003 OBJETIVO : REPORTE DE MOVIMIENTOS Producto Terminados PROGRAMADOR : Juan Fco. Soto FECHA REALIZACION : Febrero 1993 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } 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 ipprrp003() END MAIN FUNCTION ipprrp003() DEFINE idx_b SMALLINT DEFINE salir CHAR(1) DEFINE transacc RECORD cod_n LIKE iptb00004.cod_n, cod_grupo LIKE iptb00004.cod_grupo, cod_tipo LIKE iptb00004.cod_tipo, cod_sec LIKE iptb00004.cod_sec, num_doc LIKE iptb00006.num_doc, fecha LIKE iptb00006.fecha, cantidad_2 LIKE iptb00006.cantidad_2, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, balance_in DECIMAL(12,5), descrip_esp LIKE iptb00002.descrip_esp, unidad_med LIKE iptb00002.unidad_med END RECORD DEFINE codigo_ant RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT END RECORD DEFINE balances RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, balance LIKE iptb00006.cantidad_2 END RECORD DEFINE select_balan CHAR(1000) #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmrp003 FROM "ipfmrp003" DISPLAY FORM ipfmrp003 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 FROM cod_n,cod_grupo,cod_tipo,cod_sec IF int_flag THEN let numero_msg = 2 CALL msg(numero_msg) SLEEP 1 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 LET opt1 = fgl_winquestion("Atencion","Desea Reporte por Pantalla?", "no","yes|no","question",0) IF opt1 = "yes" THEN START REPORT reporte3 TO screen ELSE START REPORT reporte3 TO archivo END IF LET select_balan = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,sum(a.cantidad_2) ", "FROM iptb00006 a ", "WHERE ",criterio clipped, " and a.status_t is null AND a.fecha < ? ", "GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec 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) PREPARE busca_balan FROM select_balan DECLARE material_balan SCROLL CURSOR FOR busca_balan OPEN material_balan USING datos_cons.fech_in let selec = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.num_doc, ", " a.fecha,a.cantidad_2,a.cod_mov,c.descrip_mov ", "FROM iptb00006 a,iptb00005 c ", "WHERE ", criterio clipped," and c.cod_mov = a.cod_mov AND ", " a.status_t is null and a.fecha between ? and ? ", " ORDER BY a.fecha,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec" PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion USING datos_cons.fech_in,datos_cons.fech_fi 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 START REPORT reporte3 TO archivo LET idx_b = 1 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 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 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 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 CLEAR SCREEN IF opt1 <> "yes" then LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?", "yes","yes|no","question",0) LET opt = UPSHIFT(opt) IF opt = "YES" THEN RUN imprime END IF END IF END FUNCTION REPORT reporte3(x) DEFINE x RECORD cod_n LIKE iptb00004.cod_n, cod_grupo LIKE iptb00004.cod_grupo, cod_tipo LIKE iptb00004.cod_tipo, cod_sec LIKE iptb00004.cod_sec, num_doc LIKE iptb00006.num_doc, fecha LIKE iptb00006.fecha, cantidad_2 LIKE iptb00006.cantidad_2, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, balance_in DECIMAL(12,5), descrip_esp LIKE iptb00002.descrip_esp, unidad_med LIKE iptb00002.unidad_med END RECORD, cantidad DECIMAL(12,2) DEFINE nombre CHAR(8), l INTEGER, 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 #ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.fecha 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 27, ASCII 15 LET comprimido_off = ASCII 18 LET doce = ASCII 030 LET hora = time LET l = (122 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comprimido_on PRINT COLUMN 1, "ipprrp003", COLUMN l, p_companias.nombre CLIPPED, COLUMN 115, "Pag. ",pageno using "###" PRINT COLUMN 39, " Sistema de Inventario de Producto Terminado", COLUMN 115, today using "dd/mm/yyyy" PRINT COLUMN 39, " Movimientos de Almacen", COLUMN 118, hora SKIP 2 LINES PRINT COLUMN 1, "Desde ",datos_cons.fech_in using "dd/mm/yyyy", COLUMN 18, "Hasta ",datos_cons.fech_fi using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------------------" PRINT COLUMN 1, "Docto.", COLUMN 12, "Fecha", COLUMN 24, "Movimiento", COLUMN 75, "Entradas", COLUMN 95, "Salidas", COLUMN 115, "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 SELECT a.descrip_esp,a.descrip_ing,a.unidad_med INTO x.descrip_esp,descrip1,x.unidad_med FROM iptb00002 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 SKIP 1 LINE IF x.balance_in is null THEN LET x.balance_in = 0 END IF LET descripcion = x.descrip_esp CLIPPED PRINT COLUMN 1, "Producto Terminado: ",x.cod_n USING "&","-", x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-", x.cod_sec USING "&&&"," ", descripcion CLIPPED," ",x.unidad_med SKIP 1 LINE PRINT COLUMN 12, datos_cons.fech_in USING "dd/mm/yyyy", COLUMN 24, "Balance Inicial ", COLUMN 109, x.balance_in using "---,---,---.###" LET canti = x.balance_in LET primera = "N" 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 "&&&&&&", COLUMN 12, x.fecha USING "dd/mm/yyyy", COLUMN 24, "(",x.cod_mov using "&&",")",x.descrip_mov CLIPPED, COLUMN 70, entrada USING "---,---,---.###", COLUMN 90, salida USING "---,---,---.###", COLUMN 109, canti using "---,---,---.###" ON LAST ROW PRINT comprimido_off END REPORT