{ ------------------------------------------------------------------ PROGRAMA : INPRRP015 OBJETIVO : Conteo Fisico Inverntario Perpetuo. PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Mayo 07,1993. ------------------------------------------------------------------ } GLOBALS "inprgb000.4gl" DEFINE datos_sem RECORD semana_ini DATE, semana_fin DATE END RECORD DEFINE prt_conteo RECORD cod_n like intb00014.cod_n, cod_grupo like intb00014.cod_grupo, cod_tipo like intb00014.cod_tipo, cod_sec like intb00014.cod_sec, descri_esp like intb00001.descrip_esp, categoria like intb00014.categoria, mes_ch like intb00014.mes_ch END RECORD, i,d,e,c,cant2,cant3,cant1 integer MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL inprrp015() END MAIN FUNCTION inprrp015() #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8 CLEAR SCREEN OPEN FORM infmrp015 FROM "infmrp015" CALL pantalla() DISPLAY "inprrp015" AT 4,3 ATTRIBUTE(yellow) DISPLAY "Conteo Fisico Inventario Perpetuo" AT 6,23 DISPLAY FORM infmrp015 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 intb00014 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 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_mp TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "Reporte Generandose ... Por Favor Espere" AT 19,14 ATTRIBUTE(REVERSE) FOREACH conteo INTO prt_conteo.* display prt_conteo.* at 12,2 sleep 3 OUTPUT to REPORT conteo_mp(prt_conteo.*,datos_sem.*) END FOREACH FINISH REPORT conteo_mp RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT conteo_mp(x,x_semana_ini,x_semana_fin) DEFINE x RECORD cod_n like intb00014.cod_n, cod_grupo like intb00014.cod_grupo, cod_tipo like intb00014.cod_tipo, cod_sec like intb00014.cod_sec, descri_esp like intb00001.descrip_esp, categoria like intb00014.categoria, mes_ch like intb00014.mes_ch END RECORD, fecha,fecha1 date, i,c,dia,cant1,cant2,cant3 integer DEFINE x_semana_ini,x_semana_fin date DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(3) 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 031 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET hora = time LET fecha = x_semana_ini LET fecha1= x_semana_fin LET hora = time LET dia = day(x_semana_fin) LET lj = (78 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, "inprrp015", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 71, "Pag. ",pageno USING "###" PRINT COLUMN 24, "Conteo Fisico Inventario Perpetuo", COLUMN 71, today USING "dd/mm/yyyy" PRINT COLUMN 25, "Semana del ",fecha USING "dd/mm/yyyy", " al ",fecha1 USING "dd/mm/yyyy", COLUMN 74, hora SKIP 1 LINE PRINT COLUMN 1, "__________________________________________________", "____________________________" PRINT COLUMN 73, "Conteo" PRINT COLUMN 2, "Materiales", COLUMN 15, "Descripcion", COLUMN 73, "Fisico" PRINT COLUMN 1, "__________________________________________________", "____________________________" PRINT COLUMN 1, negrillas_off SKIP 1 LINE BEFORE GROUP OF x.categoria LET imprime = "S" IF x.categoria = "A" THEN SELECT count(*) INTO cant FROM intb00014 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 intb00014 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 intb00014 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 categoria (", 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