GLOBALS "inprgb000.4gl" DEFINE nombre,apellido CHAR(30), xinserta CHAR(1), kprograma varchar(20), xdescrip_mov VARCHAR(50) 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 PREPARE breimprime FROM selec DECLARE bdocumento SCROLL CURSOR FOR breimprime OPEN bdocumento 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 IF STATUS = NOTFOUND THEN CALL msg(3) RETURN END IF LET kprograma = xprograma CALL busca_info() MENU "NAVEGACION:" COMMAND "Siguiente" "Busca el siguiente documento" 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 CALL busca_info() COMMAND "Primero" "Busca el siguiente documento" 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 CALL busca_info() COMMAND "Anterior" "Busca el Registrosiguiente documento" 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 CALL busca_info() COMMAND "Ultimo" "Busca el Ultimo Documento" 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 CALL busca_info() COMMAND KEY("T") "reTornar" "Salir de busqueda" EXIT MENU END MENU END FUNCTION FUNCTION busca_info() 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 IF kprograma = 'inprmt046' THEN 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 # CALL configureoutput('PDF') RETURNING handler # START REPORT formu46 TO XML HANDLER handler 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 FOREACH busca INTO movi[idx].cod_n,movi[idx].cod_grupo, movi[idx].cod_tipo,movi[idx].cod_sec, movi[idx].descrip_esp,movi[idx].cantidad_2 LET idx = idx + 1 END FOREACH 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 # CALL configureoutput('PDF') RETURNING HANDLER # START REPORT formu36 TO XML HANDLER HANDLER 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 FUNCTION maquinaria() DEFINE kmaquina VARCHAR(14), kdescripcion CHAR(75), maquinas ui.ComboBox LET maquinas = ui.combobox.forname("formonly.codigo") DECLARE busca_maquinas1 CURSOR FOR SELECT a.cod_maquina, a.descrip_maquina FROM intb00059 a ORDER BY a.cod_maquina CALL maquinas.clear() FOREACH busca_maquinas1 INTO kmaquina, kdescripcion CALL maquinas.additem(kmaquina, kdescripcion) END FOREACH END FUNCTION