GLOBALS "inprgb000.4gl" DEFINE nombre,apellido CHAR(30), xinserta CHAR(1), kprograma varchar(20), xdescrip_mov VARCHAR(50), xcod_mov_tmp LIKE intb00005.cod_mov FUNCTION reimprime(xprograma) DEFINE xprograma CHAR(20), insertamedida CHAR(1) IF xprograma = 'inprmt046' THEN CONSTRUCT criterio ON a.cod_mov,a.num_doc,a.fecha,a.depto_a,a.bodega FROM cod_mov,num_doc,fecha,departamento,bodega BEFORE CONSTRUCT CALL cincodmov() CALL busca_departamento() CALL bodegas('1') AFTER CONSTRUCT IF INT_FLAG THEN LET INT_FLAG = FALSE CALL msg(2) EXIT PROGRAM END IF END CONSTRUCT LET selec = "SELECT distinct b.cod_mov,b.descrip_mov,a.num_doc,", " CONVERT(CHAR(10),a.fecha,103),a.depto_a,a.num_emp,a.bodega FROM intb00006 a,intb00005 b ", " WHERE ",criterio CLIPPED," AND ", " a.cod_mov = b.cod_mov AND a.status_t IS NULL " LET xinserta = insertamedida ELSE CONSTRUCT criterio ON a.num_doc,a.fecha,a.depto_a FROM num_doc,fecha,depto_a LET selec = "SELECT distinct b.cod_mov,b.descrip_mov,a.num_doc,", " CONVERT(CHAR(10),a.fecha,103),a.depto_a,a.num_emp,a.bodega FROM intb00006 a,intb00005 b ", " WHERE ",criterio CLIPPED," AND a.cod_mov =36 and ", " a.cod_mov = b.cod_mov AND a.status_t IS NULL " LET xinserta = 'N' END IF LET kprograma = xprograma PREPARE breimprime FROM selec DECLARE bdocumento SCROLL CURSOR FOR breimprime OPEN bdocumento IF kprograma = 'inprmt046' THEN FETCH FIRST bdocumento INTO otros_mov.cod_mov,xdescrip_mov, otros_mov.num_doc,otros_mov.fecha, datos1.depto_a,pnum_emp,otros_mov.bodega ELSE FETCH FIRST bdocumento INTO xcod_mov_tmp,xdescrip_mov, datos1.num_doc,datos1.fecha, datos1.depto_a,pnum_emp,datos1.bodega END IF IF STATUS = NOTFOUND THEN CALL msg(3) RETURN END IF CALL busca_info() MENU "NAVEGACION:" COMMAND "Siguiente" "Busca el siguiente documento" IF kprograma = 'inprmt046' THEN FETCH NEXT bdocumento INTO otros_mov.cod_mov,xdescrip_mov, otros_mov.num_doc,otros_mov.fecha, datos1.depto_a,pnum_emp,otros_mov.bodega ELSE FETCH NEXT bdocumento INTO xcod_mov_tmp,xdescrip_mov, datos1.num_doc,datos1.fecha, datos1.depto_a,pnum_emp,datos1.bodega END IF CALL busca_info() COMMAND "Primero" "Busca el siguiente documento" IF kprograma = 'inprmt046' THEN FETCH FIRST bdocumento INTO otros_mov.cod_mov,xdescrip_mov, otros_mov.num_doc,otros_mov.fecha, datos1.depto_a,pnum_emp,otros_mov.bodega ELSE FETCH FIRST bdocumento INTO xcod_mov_tmp,xdescrip_mov, datos1.num_doc,datos1.fecha, datos1.depto_a,pnum_emp,datos1.bodega END IF CALL busca_info() COMMAND "Anterior" "Busca el Registrosiguiente documento" IF kprograma = 'inprmt046' THEN FETCH PREVIOUS bdocumento INTO otros_mov.cod_mov,xdescrip_mov, otros_mov.num_doc,otros_mov.fecha, datos1.depto_a,pnum_emp,otros_mov.bodega ELSE FETCH PREVIOUS bdocumento INTO xcod_mov_tmp,xdescrip_mov, datos1.num_doc,datos1.fecha, datos1.depto_a,pnum_emp,datos1.bodega END IF CALL busca_info() COMMAND "Ultimo" "Busca el Ultimo Documento" IF kprograma = 'inprmt046' THEN FETCH LAST bdocumento INTO otros_mov.cod_mov,xdescrip_mov, otros_mov.num_doc,otros_mov.fecha, datos1.depto_a,pnum_emp,otros_mov.bodega ELSE FETCH LAST bdocumento INTO xcod_mov_tmp,xdescrip_mov, datos1.num_doc,datos1.fecha, datos1.depto_a,pnum_emp,datos1.bodega END IF CALL busca_info() COMMAND KEY("T") "reTornar" "Salir de busqueda" EXIT MENU END MENU END FUNCTION FUNCTION busca_info() IF kprograma = 'inprmt046' THEN SELECT UNIQUE nom_dpto INTO nombre_d FROM adtb00001 a WHERE a.departamento = datos1.depto_a and a.status_t is NULL LET nombre =NULL LET apellido = NULL SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido FROM adtb00003 a WHERE a.num_Emp = pnum_emp DISPLAY BY NAME otros_mov.cod_mov,otros_mov.num_doc, otros_mov.fecha,nombre,apellido DISPLAY datos1.depto_a TO departamento DECLARE busca CURSOR FOR SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_Sec,a.cantidad_2, b.unidad_med, b.descrip_Esp,NULL, a.maquina, a.clasf_bloque FROM intb00006 a,intb00001 b WHERE a.num_Doc = otros_mov.num_doc AND a.cod_mov = otros_mov.cod_mov AND 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 a.bodega = otros_mov.bodega LET idx = 1 FOREACH busca INTO movi2[idx].cod_n,movi2[idx].cod_grupo, movi2[idx].cod_tipo,movi2[idx].cod_sec, movi2[idx].cantidad_2, movi2[idx].unidad_med, movi2[idx].descrip_esp, movi2[idx].existencia, movi2[idx].maquina, movi2[idx].clasf_bloque LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY movi2 TO s_movi1.* BEFORE DISPLAY CALL maquinaria() CALL clasf_bloque() ON ACTION rimprimir CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT formu46 TO archivo FOR idx = 1 TO movi2.getLength() OUTPUT TO REPORT formu46(otros_mov.num_doc,otros_mov.fecha, otros_mov.cod_mov,otros_mov.bodega,xdescrip_mov, nombre_d, movi2[idx].*) END FOR FINISH REPORT formu46 RUN imprime END DISPLAY ELSE SELECT UNIQUE nom_dpto INTO datos1.nom_dpto FROM adtb00001 a WHERE a.departamento = datos1.depto_a and a.status_t is NULL DISPLAY BY NAME datos1.num_doc,datos1.fecha,datos1.depto_a,datos1.bodega DISPLAY datos1.nom_dpto TO nombre_d DECLARE busca36 CURSOR FOR SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_Sec,a.cantidad_1,a.cantidad_2, b.unidad_med, b.descrip_Esp FROM intb00006 a,intb00001 b WHERE a.num_Doc = datos1.num_doc AND a.cod_mov = 36 AND 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 a.bodega = datos1.bodega LET idx = 1 FOREACH busca36 INTO movi[idx].cod_n,movi[idx].cod_grupo, movi[idx].cod_tipo,movi[idx].cod_sec, movi[idx].cantidad_1,movi[idx].cantidad_2, movi[idx].unidad_med,movi[idx].descrip_esp LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY movi TO s_movi1.* ON ACTION rimprimir CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT formu36 TO archivo FOR idx = 1 TO movi.getLength() IF movi[idx].cod_n is not null and movi[idx].cod_grupo is not null and movi[idx].cod_tipo is not null and movi[idx].cod_sec is not null THEN LET movi[idx].cantidad_2 = movi[idx].cantidad_2 * -1 OUTPUT TO REPORT formu36(datos1.num_doc,datos1.fecha, datos1.depto_a,datos1.nom_dpto, movi[idx].*) END IF END FOR FINISH REPORT formu36 RUN imprime END DISPLAY END IF END FUNCTION REPORT formu46(x,xnombre_d,z) DEFINE x RECORD num_doc LIKE iptb00006.num_doc, fecha LIKE iptb00006.fecha, cod_mov LIKE intb00005.cod_mov, bodega SMALLINT, descrip_mov CHAR(30) END RECORD DEFINE z RECORD cod_n LIKE intb00003.cod_n, cod_grupo LIKE intb00003.cod_grupo, cod_tipo LIKE intb00003.cod_tipo, cod_sec LIKE intb00003.cod_sec, #cantidad_1 LIKE intb00006.cantidad_1, cantidad_2 LIKE intb00006.cantidad_2, unidad_med LIKE intb00001.unidad_med, descrip_esp LIKE intb00001.descrip_esp, existencia FLOAT, maquina INT, clasf_bloque INT END RECORD, xancho1,xlargo1,xespesor1,xancho2,xlargo2,xespesor2,xmedida1,xmedida2, total_medida1,total_medida2 DEC(12,4), xcodigo_bloque CHAR(12),xnombre_d CHAR(30), titulo_bodega VARCHAR(60) DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(2) OUTPUT LEFT MARGIN 0 ORDER BY x.num_doc,z.cod_sec FORMAT BEFORE GROUP OF x.num_doc LET doble = ASCII 14 LET doble_of = ASCII 20 LET negras = ASCII 27, ASCII 69 LET negras_off = ASCII 27, ASCII 70 LET comp_on= ASCII 15 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 PRINT comp_on PRINT COLUMN 1, negras,doble,p_companias.nombre CLIPPED PRINT COLUMN 71,"No. ",doble,x.num_doc using "<<<<<<" PRINT COLUMN 30, x.cod_mov using "&&"," ",x.descrip_mov CLIPPED, COLUMN 71, x.fecha using "dd/mm/yy" PRINT COLUMN 1, "DEPARTAMENTO: ",datos1.depto_a," ",xnombre_d PRINT COLUMN 1, "OPERADOR : ",pnum_emp,"-",nombre," ",apellido # BUSCA BODEGA SELECT ISNULL(a.descripcion,'NO TIENE') INTO titulo_bodega FROM intb00009 a WHERE a.cod_bodega = x.bodega PRINT COLUMN 1,"BODEGA: ",titulo_bodega CLIPPED PRINT COLUMN 1, "------------------------------------------------------------------------------", "---------------------------" PRINT COLUMN 68, "CANTIDAD" PRINT COLUMN 2,doble, "PRODUCTO",doble_of clipped, COLUMN 61, "ENTREGADA", COLUMN 76, "MAQUINA", COLUMN 86, "CLASF.BLQ" PRINT COLUMN 1, "------------------------------------------------------------------------------", "---------------------------" SKIP 1 LINES ON EVERY ROW PRINT COLUMN 2, z.cod_n using "&","-", COLUMN 4, z.cod_grupo using "&","-", COLUMN 6, z.cod_tipo using "&&","-", COLUMN 9, z.cod_sec using "&&&", COLUMN 17, z.descrip_esp clipped," ", z.unidad_med, #COLUMN 63, z.cantidad_1 using "###,###,###.##", COLUMN 63, z.cantidad_2 using "###,###.####", COLUMN 76, z.maquina using "&&&&&&", COLUMN 86, z.clasf_bloque using "&&&&&&&" SELECT DISTINCT a.documento FROM intb00018 a WHERE a.documento = x.num_doc AND a.cod_mov = x.cod_mov AND a.bodega = x.bodega AND a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND a.cod_tipo = z.cod_tipo AND a.cod_Sec = z.cod_sec IF STATUS <> NOTFOUND THEN PRINT COLUMN 2, "=========","========================================","===========================================" PRINT COLUMN 2, " CODIGO "," MEDIDAS RECIBIDAS |"," MEDIDAS ENVIADAS |" PRINT COLUMN 2, "=========","========================================","===========================================" PRINT COLUMN 2, " ANCHO LARGO ESPES ",z.unidad_med," |"," ANCHO LARGO ESPES MEDIDA" DECLARE busca_medida CURSOR FOR SELECT a.codigo_bloque,a.ancho1,a.largo1,a.espesor1,a.medida1, a.ancho2,a.largo2,a.espesor2,a.medida2 INTO xcodigo_bloque,xancho1,xlargo1,xespesor1,xmedida1, xancho2,xlargo2,xespesor2,xmedida2 FROM intb00018 a WHERE a.cod_n = z.cod_n and a.cod_grupo = z.cod_grupo and a.cod_tipo = z.cod_tipo and a.cod_Sec = z.cod_Sec and a.documento =x.num_doc and a.cod_mov = x.cod_mov AND a.bodega = x.bodega LET total_medida1 = 0 LET total_medida2 = 0 FOREACH busca_medida PRINT COLUMN 2,xcodigo_bloque," ",xancho1 USING "###.####", 2 spaces, xlargo1 USING "###.####", 2 spaces, xespesor1 USING "###.####", 2 spaces, xmedida1 USING "#,###.####", 3 spaces, xancho2 USING "###.####",2 spaces, xlargo2 USING "###.####", 2 spaces, xespesor2 USING "###.####", 2 spaces, xmedida2 USING "#,###.####" LET total_medida1 = xmedida1 + total_medida1 LET total_medida2 = xmedida2 + total_medida2 END FOREACH PRINT COLUMN 45,"==========", COLUMN 90,"==========" PRINT COLUMN 45, total_medida1 USING "#,###.####", COLUMN 90, total_medida2 USING "#,###.####" END IF PAGE TRAILER PRINT COLUMN 1, "------------------", COLUMN 22, "------------------", COLUMN 45, "------------------", COLUMN 65, "------------------" PRINT COLUMN 5, "Entregado Por", COLUMN 24, "Recibido Por", COLUMN 48, "Aprobado Por", COLUMN 68, "Aprobado Por" PRINT normal END REPORT