{ ------------------------------------------------------------------------------- PROGRAMA : CTPRRP013 OBJETIVO : Consumo de Materiales PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Octubre 01, 1992 ------------------------------------------------------------------------------- } GLOBALS "ctprgb000.4gl" FUNCTION ctprrp013() DEFINE salir CHAR(1) DEFINE select_ac,select_ant,select_p CHAR(1000) DEFINE p_mes,idx_ac,ano,idx_a,idx_c SMALLINT DEFINE ano_act,c_ano CHAR(4) DEFINE fecha_2 CHAR(8) DEFINE fech_in,fech_fi DATE DEFINE fecha_ini_per CHAR(8) DEFINE acumulado_a RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, consumo LIKE intb00006.cantidad_2 END RECORD DEFINE acumulado_ac RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, consumo LIKE intb00006.cantidad_2 END RECORD DEFINE costos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, costo LIKE intb00013.costo_st END RECORD DEFINE acumulado RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, descrip_mov LIKE intb00005.descrip_mov, consumo DECIMAL(10,2), costo LIKE intb00013.costo_st END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ctfmrp013 FROM "ctfmrp013" DISPLAY FORM ctfmrp013 CALL pantalla() DISPLAY "ctprrp013" AT 4,3 DISPLAY "Consumo de Materiales" AT 6,29 LET tipo_papel = 2 CALL msgrp000(tipo_papel) INPUT BY NAME ano_act,p_mes AFTER FIELD p_mes IF p_mes IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes END IF SELECT fecha_inicial,fecha_corte INTO fech_in,fech_fi FROM prdtable WHERE mes = p_mes and ano = ano_act AFTER FIELD ano_act IF ano_act IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano_act END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT criterio ON c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec FROM cod_n,cod_grupo,cod_tipo,cod_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET select_ac = "SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,SUM(c.cantidad_2) ", "FROM intb00006 c ", "WHERE ", criterio clipped," and c.fecha between ? and ? and ", " c.status_t is NULL AND c.cod_mov = 36 ", " GROUP BY 1,2,3,4 ORDER BY 1,2,3,4" DISPLAY "<< Estoy Buscando Acumulado Del Periodo Dado >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_ant FROM select_ac DECLARE actual SCROLL CURSOR FOR busca_ant OPEN actual USING fech_in,fech_fi DISPLAY " " AT 19,14 LET select_p = "SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,MAX(c.costo_st) ", "FROM intb00013 c ", "WHERE c.status_t is NULL AND c.ano = ? AND c.mes_fin[1,2] = '12' AND ", criterio CLIPPED," GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 " DISPLAY "<< Estoy Buscando Los Costos de Los Materiales >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_p FROM select_p DECLARE periodo SCROLL CURSOR FOR busca_p OPEN periodo using ano_act DISPLAY " " AT 19,14 LET SELEC = "SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.descrip_esp,c.unidad_med ", "FROM intb00001 c, intb00002 b ", "WHERE c.cod_n = b.cod_n AND c.cod_grupo = b.cod_grupo AND ", " c.cod_tipo = b.cod_tipo AND c.cod_sec = b.cod_sec AND ", " c.status_t is null AND ",criterio CLIPPED," ORDER BY 1,2,3,4" DISPLAY "<< Estoy Buscando Materiales >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca FROM selec DECLARE accion SCROLL CURSOR FOR busca OPEN accion DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT opera TO PIPE "lp -dcentral" #START REPORT opera TO "rpct13" LET idx_c = 1 LET idx_a = 1 LET idx_ac = 1 WHILE status != notfound FETCH actual INTO acumulado_ac.* 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 DISPLAY acumulado_ac.cod_n using "&" at 20,1 DISPLAY acumulado_ac.cod_grupo using "&" at 20,3 DISPLAY acumulado_ac.cod_tipo using "&&" at 20,5 DISPLAY acumulado_ac.cod_sec using "&&&" at 20,8 LET acumulado.consumo = acumulado_ac.consumo # Buscando Los Costos de Los Materiales LET salir = "N" WHILE salir != "S" FETCH ABSOLUTE idx_a periodo INTO costos.* IF status = notfound THEN LET idx_a = 1 LET salir = "S" EXIT WHILE END IF DISPLAY "Estoy en busqueda de costos " AT 22,15 LET idx_a = idx_a + 1 IF costos.cod_n = acumulado_ac.cod_n and costos.cod_grupo = acumulado_ac.cod_grupo and costos.cod_tipo = acumulado_ac.cod_tipo and costos.cod_Sec = acumulado_ac.cod_Sec THEN DISPLAY acumulado_ac.cod_n using "&" at 21,1 DISPLAY acumulado_ac.cod_grupo using "&" at 21,3 DISPLAY acumulado_ac.cod_tipo using "&&" at 21,5 DISPLAY acumulado_ac.cod_sec using "&&&" at 21,8 LET salir = "S" LET acumulado.costo = costos.costo ELSE LET acumulado.costo = 0 END IF IF salir = "S" THEN LET idx_a = 1 EXIT WHILE END IF END WHILE # Busqueda del Material Con su descripcion y unidad de medida LET salir = "N" WHILE salir != "S" FETCH ABSOLUTE idx_c accion INTO acumulado.* IF status = notfound THEN LET idx_c = 1 LET salir = "S" EXIT WHILE END IF DISPLAY "Estoy en busqueda de descripcion" AT 22,15 LET idx_c = idx_c + 1 IF acumulado_ac.cod_n = acumulado.cod_n and acumulado_ac.cod_grupo = acumulado.cod_grupo and acumulado_ac.cod_tipo = acumulado.cod_tipo and acumulado_ac.cod_Sec = acumulado.cod_Sec THEN # acumulado_ac.cod_mov = acumulado.cod_mov THEN DISPLAY acumulado_ac.cod_n using "&" at 22,1 DISPLAY acumulado_ac.cod_grupo using "&" at 22,3 DISPLAY acumulado_ac.cod_tipo using "&&" at 22,5 DISPLAY acumulado_ac.cod_sec using "&&&" at 22,8 LET salir = "S" END IF IF salir = "S" THEN LET idx_c = 1 EXIT WHILE END IF END WHILE OUTPUT TO REPORT opera(acumulado.*,fech_in,fech_fi) END WHILE FINISH REPORT opera CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT opera(x,fecha_in,fecha_fi) DEFINE x RECORD cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, descrip_mov LIKE intb00005.descrip_mov, consumo DECIMAL(10,2), costo LIKE intb00013.costo_st END RECORD DEFINE fecha_in,fecha_fi DATE DEFINE c_ano1 char(4) DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3) DEFINE normal CHAR(3) DEFINE hora CHAR(5) DEFINE total_p,total_m DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 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 comp_on = ASCII 31 LET comp_off = ASCII 029 LET doce = ASCII 030 LET normal = ASCII 029 LET hora = time LET l = (100 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT doce PRINT COLUMN 1, "ctprrp013", COLUMN l, p_compania.nombre CLIPPED, COLUMN 93, "Pag. ", COLUMN 98, pageno using "###" LET l = (100 - LENGTH("Sistema de Inventario de Costos"))/2 PRINT COLUMN l, "Sistema de Inventario de Costos", COLUMN 93, today using "dd/mm/yy" LET l = (100 - LENGTH("Consumo Materia Prima"))/2 PRINT COLUMN l, "Consumo Materia Prima", COLUMN 96, hora SKIP 1 LINES PRINT COLUMN 2, "Desde ",fecha_in using "dd/mm/yy", COLUMN 21, "Hasta ", fecha_fi using "dd/mm/yy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 66, "Costo" PRINT COLUMN 4, "Movimiento", COLUMN 51, "Cantidad", COLUMN 66, "Standard", COLUMN 86, "Total" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" ON EVERY ROW IF x.consumo IS NOT NULL THEN IF total_m IS NULL THEN LET total_m = 0 END IF LET total_p = x.costo * x.consumo LET total_m = total_m + total_p 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 14, x.descrip_esp, COLUMN 35, x.unidad_med, COLUMN 40, x.consumo USING "##,###,###.##", COLUMN 57, x.costo USING "#,###,###.####", COLUMN 79, total_p USING "##,###,###.##" END IF ON LAST ROW PRINT COLUMN 79, "-------------" PRINT COLUMN 63, "Total ---->", COLUMN 79, total_m USING "##,###,###.##" END REPORT