{ ------------------------------------------------------------------------------- PROGRAMA : CTPRRP019 OBJETIVO : REPORTE DE MOVIMIENTOS Materia Prima PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Junio, 6, 1994. ------------------------------------------------------------------------------- } GLOBALS "ctprgb000.4gl" FUNCTION ctprrp019() 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, cantidad_2 LIKE iptb00006.cantidad_2, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, balance_in DECIMAL(12,2), codigo CHAR(7) 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 ctfmrp019 FROM "ctfmrp019" DISPLAY FORM ctfmrp019 CALL pantalla() DISPLAY "ctprrp019" AT 4,3 DISPLAY "Movimientos Productos Terminados" AT 6,27 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 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 LET select_balan = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,sum(a.cantidad_2) ", "FROM intb00006 a ", "WHERE a.status_t is null AND a.fecha < ? AND ", criterio clipped," GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 " 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 DISPLAY " " AT 19,14 let selec = "SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, ", "sum(a.cantidad_2),", "a.cod_mov,c.descrip_mov,b.descrip_esp,b.unidad_med ", "FROM intb00006 a,intb00005 c,intb00001 b ", "WHERE 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 a.status_t is null AND ", " a.fecha between ? AND ? AND ",criterio clipped, "GROUP BY 1,2,3,4,6,7,8,9 ORDER BY 1,2,3,4" DISPLAY "<< Estoy Buscando los Movimientos >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) 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 reporte4 TO PIPE "lp -dcentral" #"C:\\archivo" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) 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 LET transacc.codigo = transacc.cod_n using "&", transacc.cod_grupo using "&", transacc.cod_tipo using "&&", transacc.cod_sec using "&&&" OUTPUT TO REPORT reporte4(transacc.*) END WHILE FINISH REPORT reporte4 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte4(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, cantidad_2 LIKE iptb00006.cantidad_2, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, balance_in DECIMAL(12,2), codigo CHAR(7) END RECORD, cantidad DECIMAL(12,2) DEFINE t_valor,valor,costo DECIMAL(12,4) DEFINE nombre CHAR(8), und CHAR(3) , doble_on CHAR(3), doble_off CHAR(3), negrillas_on CHAR(6), negrillas_off CHAR(6), comprimido_on CHAR(2), 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.codigo,x.cod_mov FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 LET comprimido_on = ASCII 31 LET comprimido_off = ASCII 029 LET doce = ASCII 030 LET hora = time LET l = (126 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT comprimido_on PRINT COLUMN 1, "ctprrp019", COLUMN l, p_compania.nombre CLIPPED, COLUMN 121, "Pag. ", COLUMN 128, pageno using "<&&" LET l = (126 - LENGTH("Sistema de Costos"))/2 PRINT COLUMN 1, COLUMN l, "Sistema de Costos", COLUMN 123, today using "dd/mm/yy" LET l = (126 - LENGTH("Movimientos Materia Prima"))/2 PRINT COLUMN l, "Movimientos Materia Prima", COLUMN 126, hora SKIP 2 LINES PRINT COLUMN 1, "Desde ",datos_cons.fech_in using "dd/mm/yy", COLUMN 18, "Hasta ",datos_cons.fech_fi using "dd/mm/yy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "------------------------------------------" PRINT COLUMN 116, "Costo", COLUMN 139, "Costo" PRINT COLUMN 1, "Mat. Prima", COLUMN 21, "Descripcion", COLUMN 58, "Entradas", COLUMN 76, "Salidas", COLUMN 103, "Balance", COLUMN 116, "Standard", COLUMN 139, "Total" 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" BEFORE GROUP OF x.codigo LET t_valor = 0 LET valor = 0 SELECT a.costo_st INTO costo FROM intb00013 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.mes_fin = 12 and a.ano = year(datos_cons.fech_fi) 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 21, x.descrip_esp, COLUMN 51, x.unidad_med; ON EVERY ROW IF primera = "S" THEN SKIP 1 LINE IF x.balance_in is null THEN LET x.balance_in = 0 END IF PRINT COLUMN 85, "Inicial ---> ", x.balance_in using "---,---,---.##", COLUMN 114, costo using "##,###.####", COLUMN 128, x.balance_in*costo using "--,---,---.####" LET canti = x.balance_in LET primera = "N" SKIP 1 LINE 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 IF entrada IS NOT NULL AND entrada > 0 THEN LET valor = entrada * costo ELSE LET valor = salida * costo END IF LET t_valor = t_valor + valor PRINT COLUMN 1, COLUMN 17, "(",x.cod_mov using "&&",")",x.descrip_mov, COLUMN 58, entrada USING "---,---,---.##", COLUMN 74, salida USING "---,---,---.##", COLUMN 99, canti using "--,---,---.##", COLUMN 114, costo using "##,###.####", COLUMN 128, valor using "--,---,---.####" AFTER GROUP OF x.codigo PRINT COLUMN 128, " " PRINT COLUMN 85, "Final ---> ", canti using "---,---,---.##", COLUMN 114, costo using "##,###.####", COLUMN 127, canti * costo using "---,---,---.----" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "------------------------------------------" ON LAST ROW PRINT comprimido_off END REPORT