{ ------------------------------------------------------------------ PROGRAMA : IRPRRP020 OBJETIVO : Conteo Fisico Inverntario Perpetuo. PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Mayo 07,1993. ------------------------------------------------------------------ } globals "irprgb000.4gl" DEFINE datos_sem RECORD semana_ini DATE, semana_fin DATE END RECORD DEFINE prt_conteo RECORD cod_n LIKE irtb00016.cod_n, cod_grupo LIKE irtb00016.cod_grupo, cod_tipo LIKE irtb00016.cod_tipo, cod_sec LIKE irtb00016.cod_sec, descri_esp LIKE intb00001.descrip_esp, categoria LIKE irtb00016.categoria, mes_ch LIKE irtb00016.mes_ch END RECORD, i,d,e,c,cant2,cant3,cant1 INTEGER MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL irprrp020() END MAIN FUNCTION irprrp020() #whenever error continue options form LINE 8 CLEAR SCREEN OPEN FORM irfmrp020 FROM "irfmrp020" DISPLAY FORM irfmrp020 CALL pantalla() DISPLAY "irprrp020" at 4,3 attribute(blue) DISPLAY "Conteo Perpetuo" at 6,31 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME datos_sem.* AFTER FIELD semana_ini IF datos_sem.semana_ini is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD semana_ini END IF AFTER FIELD semana_fin IF datos_sem.semana_fin is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD semana_fin END IF IF datos_sem.semana_fin < datos_sem.semana_ini THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD semana_fin END IF END INPUT DECLARE conteo CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,m.descrip_esp, a.categoria,a.mes_ch FROM irtb00016 a,intb00001 m WHERE a.cod_n = m.cod_n AND a.cod_grupo = m.cod_grupo AND a.cod_tipo = m.cod_tipo AND a.cod_sec = m.cod_sec AND a.mes_ch <= datos_sem.semana_ini AND a.status_t is null AND a.categoria IS NOT NULL AND a.categoria != " " ORDER BY 1,2,3,4 DISPLAY "Buscando Informacion ... Espere por favor" at 19,14 ATTRIBUTE(REVERSE,BOLD) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET d=1 LET e=1 START REPORT conteo_rp TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "Reporte Generandose ... Por Favor Espere" AT 19,14 ATTRIBUTE(REVERSE) FOREACH conteo INTO prt_conteo.* OUTPUT TO REPORT conteo_rp(prt_conteo.*,datos_sem.*) END FOREACH FINISH REPORT conteo_rp RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT conteo_rp(x,x_semana_ini,x_semana_fin) DEFINE x RECORD cod_n LIKE irtb00016.cod_n, cod_grupo LIKE irtb00016.cod_grupo, cod_tipo LIKE irtb00016.cod_tipo, cod_sec LIKE irtb00016.cod_sec, descri_esp LIKE intb00001.descrip_esp, categoria LIKE irtb00016.categoria, mes_ch LIKE irtb00016.mes_ch END RECORD, i,c,dia,cant1,cant2,cant3 INTEGER DEFINE x_semana_ini,x_semana_fin,fecha,fecha1 DATE, doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE hora CHAR(5) DEFINE l SMALLINT DEFINE varia CHAR(10) DEFINE imprime CHAR(1) order by x.categoria,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec 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 comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET hora = time PRINT COLUMN 2,"irprrp020", COLUMN 19, " M A R M O T E C H S. A.", COLUMN 71,"Pag. ",pageno USING "###" PRINT COLUMN 24, " Conteo Fisico Perpetuo", COLUMN 71,today USING "dd/mm/yyyy" LET fecha = x_semana_ini LET fecha1= x_semana_fin LET hora = time LET dia = day(x_semana_fin) PRINT COLUMN 25,"Semana del ",fecha USING "dd/mm/yyyy", " al ",fecha1 USING "dd/mm/yyyy", COLUMN 74,hora SKIP 1 LINE PRINT COLUMN 2,negrillas_on,"____________________________________________________________________________" PRINT COLUMN 59,"Conteo" PRINT COLUMN 2,"Materiales", COLUMN 15,"Descripcion", Column 59,"Fisico" PRINT COLUMN 2,negrillas_on,"____________________________________________________________________________",negrillas_off SKIP 1 LINE BEFORE GROUP OF x.categoria LET imprime = "S" IF x.categoria = "A" THEN SELECT COUNT(*) INTO cant FROM irtb00016 WHERE MONTH(mes_ch) <= MONTH(x_semana_fin) AND categoria = "A" LET cant1 = cant/4 IF cant1 < 1 THEN LET cant1 = 1 END IF IF dia > 7 and dia <= 14 THEN LET cant1 = cant1 * 2 END IF IF dia > 14 THEN LET cant1 = cant1 * 3 END IF IF dia > 21 THEN LET cant1 = cant END IF END IF IF x.categoria = "B" THEN SELECT COUNT(*) INTO cant FROM irtb00016 WHERE MONTH(mes_ch) <= MONTH(x_semana_fin) AND categoria = "B" LET cant2 = cant / 4 IF cant2 < 1 THEN LET cant2 = 1 END IF IF dia > 7 and dia <= 14 THEN LET cant2 = cant2 * 2 END IF IF dia > 14 THEN LET cant2 = cant2 * 3 END IF IF dia > 21 THEN LET cant2 = cant END IF END IF IF x.categoria = "C" THEN SELECT COUNT(*) INTO cant FROM irtb00016 WHERE MONTH(mes_ch) <= MONTH(x_semana_fin) AND categoria = "C" LET cant3 = cant / 4 IF cant3 < 1 THEN LET cant3 = 1 END IF IF dia > 7 and dia <= 14 THEN LET cant3 = cant3 * 2 END IF IF dia > 14 THEN LET cant3 = cant3 * 3 END IF IF dia > 21 THEN LET cant3 = cant END IF END IF LET i = 0 PRINT COLUMN 2,negrillas_on,"Categoria...",x.categoria,negrillas_off SKIP 1 LINE ON EVERY ROW IF imprime = "S" THEN LET i = i + 1 PRINT COLUMN 2,x.cod_n USING "&","-",x.cod_grupo USING "&","-",x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", COLUMN 15,x.descri_esp clipped, COLUMN 58,"____________" IF c is null THEN LET c = 0 END IF LET c = c + 1 END IF IF i >= cant1 and x.categoria = "A" THEN LET imprime = "N" END IF IF i >= cant2 and x.categoria = "B" THEN LET imprime = "N" END IF IF i >= cant3 and x.categoria = "C" THEN LET imprime = "N" END IF AFTER GROUP of x.categoria SKIP 1 LINE PRINT COLUMN 2,negrillas_on,"Total registro en categria (", x.categoria clipped,") ",i,negrillas_off SKIP 1 LINE ON LAST ROW SKIP 1 LINE PRINT COLUMN 2,negrillas_on,"Total registro en general ", c,negrillas_off LET c = 0 END REPORT