{ ---------------------------------------------------------------------------- PROGRAMA : IRPRMT036 OBJETIVO : Programa Captura Documento Movimiento: OTROS MOVIMIENTOS DE REPUESTOS de Inventario de Repuesto. PROGRAMADOR : Ing. Juan Fco. Soto (Copiado del IHPRMT036) FECHA REALIZACION : Marzo 1, 1993. ---------------------------------------------------------------------------- } GLOBALS "irprgb000.4gl" DEFINE cerrada CHAR(1) DEFINE r_cantidad1,r_cantidad,total_cantidad,recibida,ordenada INTEGER DEFINE porciento DECIMAL(8,3) DEFINE costo_estandar DECIMAL(12,2), codigo_mq LIKE irtb00008.cod_maq MAIN DEFER INTERRUPT CALL STARTLOG("irprmt36.log") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "decomarmol" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL irprmt036() END MAIN FUNCTION irprmt036() DEFINE fecha CHAR(8) DEFINE hora CHAR(5) CLEAR SCREEN OPTIONS ERROR LINE 24, FORM LINE 4, COMMENT LINE 22, PROMPT LINE 23 LET fecha = today USING "dd/mm/yyyy" LET hora = time LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 DISPLAY p_companias.nombre CLIPPED AT 2,lj ATTRIBUTE (REVERSE,blue) OPEN FORM irfmmt036 FROM "irfmmt036" DISPLAY FORM irfmmt036 MENU ON ACTION nuevo CALL irprad036() ON ACTION buscar LET pprograma = 'inprmt036' CALL reimprime(pprograma) ON ACTION salir EXIT MENU END MENU END FUNCTION FUNCTION irprad036() DEFINE tipos1 CHAR(1) LET tipos1 = null LET opc = null LET int_flag = FALSE INITIALIZE datos1.* TO NULL WHENEVER ERROR CONTINUE DISPLAY " Adiciona Registro" AT 3,2 ATTRIBUTE (blue,REVERSE) LABEL otra_vez: LABEL vuelve: IF (OPC = "S" OR OPC = "s") OR opc is null THEN INITIALIZE datos1.* TO NULL END IF LET datos1.fecha = today using "dd/mm/yyyy" DISPLAY BY NAME datos1.fecha #ERROR "CTRL-W PARA ELIMINAR DOCUMENTOS" INPUT BY NAME datos1.* WITHOUT DEFAULTS AFTER FIELD fecha IF datos1.fecha IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha END IF IF datos1.fecha > TODAY THEN LET numero_msg = 189 CALL msg(numero_msg) NEXT FIELD fecha END IF LET bandera = 0 LET p_fechas = datos1.fecha CALL prd(p_fechas,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha END IF AFTER FIELD orden_compra IF datos1.orden_compra is not null THEN SELECT cod_sp,cod_sp_sec,cierre INTO datos1.cod_sp,datos1.cod_sp_sec,cerrada FROM cotb00014 WHERE num_oc = datos1.orden_compra AND tipo = datos1.tipo AND status_t is null IF status >= 0 THEN IF cerrada = "S" THEN LET numero_msg = 74 CALL msg(numero_msg) NEXT FIELD orden_compra END IF IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD orden_compra END IF END IF SELECT UNIQUE a.nom_sp INTO datos1.nom_sp FROM cotb00001 a WHERE a.cod_sp = datos1.cod_sp and a.cod_sp_sec = datos1.cod_sp_sec and a.status_t is null IF status >= 0 THEN IF STATUS = NOTFOUND THEN SELECT a.nombre INTO datos1.nom_sp FROM vetb00004 a WHERE a.tipo_cliente = datos1.cod_sp AND a.sec_cliente = datos1.cod_sp_Sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sp END IF END IF END IF DISPLAY BY NAME datos1.nom_sp END IF AFTER FIELD cod_sp_Sec IF datos1.cod_sp_Sec IS NOT NULL THEN SELECT UNIQUE a.nom_sp INTO datos1.nom_sp FROM cotb00001 a WHERE a.cod_sp = datos1.cod_sp and a.cod_sp_sec = datos1.cod_sp_sec and a.status_t is null IF STATUS = NOTFOUND THEN SELECT a.nombre INTO datos1.nom_sp FROM vetb00004 a WHERE a.tipo_cliente = datos1.cod_sp AND a.sec_cliente = datos1.cod_sp_Sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sp END IF END IF DISPLAY BY NAME datos1.nom_sp END IF AFTER FIELD cod_mov IF datos1.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov END IF # Controla que el movimiento que se digite pertenezca a este formulario SELECT UNIQUE a.usuario FROM irtb00018 a WHERE a.cod_mov = datos1.cod_mov and a.usuario = SUSER_SNAME() IF status = notfound THEN LET numero_msg = 139 CALL msg(numero_msg) #NEXT FIELD cod_mov END IF IF datos1.cod_mov = 50 THEN GOTO alli END IF LABEL alli: SELECT descrip_mov,status_mov INTO datos1.descrip_mov,transacc.status_mov FROM irtb00005 WHERE @cod_mov = datos1.cod_mov AND @status_t IS NULL IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_mov END IF DISPLAY BY NAME datos1.descrip_mov NEXT FIELD tipo AFTER FIELD secc_a IF datos1.secc_a IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD secc_a ELSE SELECT UNIQUE nom_dpto INTO nombre_d FROM adtb00001 a WHERE a.departamento = datos1.secc_a and a.status_t is null IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD secc_a END IF END IF END IF DISPLAY BY NAME nombre_d AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE FOR idx = 1 to arr_count() LET movi8[idx].cod_n = null LET movi8[idx].cod_grupo = null LET movi8[idx].cod_tipo = null LET movi8[idx].cod_sec = null LET movi8[idx].cantidad_2 = null LET movi8[idx].unidad_med = null LET movi8[idx].descrip_esp = null END FOR SLEEP 3 RETURN END IF EXIT INPUT END INPUT INITIALIZE ant_art.* TO NULL IF opc = "S" or opc = "s" OR opc IS NULL THEN FOR idx = 1 to arr_count() LET movi8[idx].cod_n = null LET movi8[idx].cod_grupo = null LET movi8[idx].cod_tipo = null LET movi8[idx].cod_sec = null LET movi8[idx].cantidad_2 = null LET movi8[idx].unidad_med = null LET movi8[idx].descrip_esp = null END FOR END IF # Busca los articulos de la orden si el usuario la digita IF datos1.orden_compra is not null THEN DECLARE busca CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad FROM cotb00015 a,irtb00002 b WHERE 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.num_oc = datos1.orden_compra and a.tipo = datos1.tipo and a.status_t IS NULL AND b.status_t IS NULL LET idx = 1 FOREACH busca INTO movi8[idx].* LET idx = idx + 1 END FOREACH # CAPTURA ARREGLO DE LOS CODIGOS DE MATERIA PRIMA CALL set_count(idx-1) END IF INPUT ARRAY movi8 WITHOUT DEFAULTS FROM s_movi1.* ON KEY(F2) CALL reimprime(pprograma) ON KEY(CONTROL-W) LET consulta = "S" CALL busca_maquina() LET movi8[p_act].codigo = busca_wd2[curr1].codigo DISPLAY movi8[p_act].codigo TO s_movi1[scr_l].codigo DISPLAY BY NAME maquinaria.nombre ON KEY(CONTROL-E) CALL busca_prod1() LET movi8[p_act].cod_n = arr_prod[idx].cod_n LET movi8[p_act].cod_grupo = arr_prod[idx].cod_grupo LET movi8[p_act].cod_tipo = arr_prod[idx].cod_tipo LET movi8[p_act].cod_sec = arr_prod[idx].cod_sec LET movi8[p_act].descrip_esp = arr_prod[idx].descrip_esp DISPLAY movi8[p_act].cod_n TO s_movi1.cod_n DISPLAY movi8[p_act].cod_grupo TO s_movi1.cod_grupo DISPLAY movi8[p_act].cod_tipo TO s_movi1.cod_tipo DISPLAY movi8[p_act].cod_sec TO s_movi1.cod_sec DISPLAY movi8[p_act].descrip_esp TO s_movi1.descrip_esp BEFORE ROW LET p_act = arr_curr() LET scr_l = scr_line() AFTER ROW IF movi8[p_act].cod_n is not null and movi8[p_act].cod_grupo is not null and movi8[p_act].cod_tipo is not null and movi8[p_act].cod_sec is not null then LET p_act = arr_curr() LET ant_art.cod_n = movi8[p_act].cod_n LET ant_art.cod_grupo = movi8[p_act].cod_grupo LET ant_art.cod_tipo = movi8[p_act].cod_tipo LET ant_art.cod_sec = movi8[p_act].cod_sec LET ant_art.maquina = movi8[p_act].codigo FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi8[idx].cod_n = ant_art.cod_n AND movi8[idx].cod_grupo = ant_art.cod_grupo AND movi8[idx].cod_tipo = ant_art.cod_tipo AND movi8[idx].cod_sec = ant_art.cod_sec AND movi8[idx].codigo = ant_art.maquina THEN LET numero_msg = 21 CALL msg(numero_msg) LET p_act = p_act - 1 NEXT FIELD cod_n END IF END IF END FOR IF movi8[p_act].cantidad_2 IS NULL AND movi8[p_act].cod_n is not null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF LET ant_art.cod_n = movi8[p_act].cod_n LET ant_art.cod_grupo = movi8[p_act].cod_grupo LET ant_art.cod_tipo = movi8[p_act].cod_tipo LET ant_art.cod_sec = movi8[p_act].cod_sec LET ant_art.maquina = movi8[p_act].codigo AFTER FIELD cod_n LET p_act = arr_curr() IF movi8[p_act].cod_n is not null then LET ant_art.cod_n = movi8[p_act].cod_n LET ant_art.cod_grupo = movi8[p_act].cod_grupo LET ant_art.cod_tipo = movi8[p_act].cod_tipo LET ant_art.cod_sec = movi8[p_act].cod_sec LET ant_art.maquina = movi8[p_act].codigo FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi8[idx].cod_n = ant_art.cod_n AND movi8[idx].cod_grupo = ant_art.cod_grupo AND movi8[idx].cod_tipo = ant_art.cod_tipo AND movi8[idx].cod_sec = ant_art.cod_sec AND movi8[idx].codigo = ant_art.maquina THEN LET p_act = p_act - 1 NEXT FIELD cod_grupo END IF END IF END FOR END IF AFTER FIELD cod_grupo IF movi8[p_act].cod_grupo is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET p_act = arr_curr() LET ant_art.cod_n = movi8[p_act].cod_n LET ant_art.cod_grupo = movi8[p_act].cod_grupo LET ant_art.cod_tipo = movi8[p_act].cod_tipo LET ant_art.cod_sec = movi8[p_act].cod_sec LET ant_art.maquina = movi8[p_act].codigo FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi8[idx].cod_n = ant_art.cod_n AND movi8[idx].cod_grupo = ant_art.cod_grupo AND movi8[idx].cod_tipo = ant_art.cod_tipo AND movi8[idx].cod_sec = ant_art.cod_sec AND movi8[idx].codigo = ant_art.maquina THEN LET p_act = p_act - 1 NEXT FIELD cod_tipo END IF END IF END FOR AFTER FIELD cod_tipo IF movi8[p_act].cod_tipo is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET p_act = arr_curr() LET ant_art.cod_n = movi8[p_act].cod_n LET ant_art.cod_grupo = movi8[p_act].cod_grupo LET ant_art.cod_tipo = movi8[p_act].cod_tipo LET ant_art.cod_sec = movi8[p_act].cod_sec LET ant_art.maquina = movi8[p_act].codigo FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi8[idx].cod_n = ant_art.cod_n AND movi8[idx].cod_grupo = ant_art.cod_grupo AND movi8[idx].cod_tipo = ant_art.cod_tipo AND movi8[idx].cod_sec = ant_art.cod_sec AND movi8[idx].codigo = ant_art.maquina THEN LET p_act = p_act - 1 NEXT FIELD cod_sec END IF END IF END FOR AFTER FIELD codigo IF movi8[p_act].codigo is not null THEN LET datos1.nombre = NULL SELECT a.nombre INTO datos1.nombre FROM irtb00009 a WHERE a.codigo = movi8[p_act].codigo and a.status_t is null IF status = notfound THEN LET numero_msg = 115 CALL msg(numero_msg) NEXT FIELD codigo END IF DISPLAY BY NAME datos1.nombre END IF # Verifica que el numero del documento de entrada no este en el archivo de # movi8mientos. AFTER FIELD cod_sec LET p_act = arr_curr() IF movi8[p_act].cod_sec is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF movi8[p_act].cod_n is null AND movi8[p_act].cod_sec is not null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF movi8[p_act].cod_n is not null and movi8[p_act].cod_grupo is not null and movi8[p_act].cod_tipo is not null and movi8[p_act].cod_sec is not null then SELECT a.descrip_esp,a.unidad_med INTO descrip1,descrip2 FROM irtb00002 a WHERE a.cod_n =movi8[p_act].cod_n AND a.cod_grupo=movi8[p_act].cod_grupo AND a.cod_tipo = movi8[p_act].cod_tipo AND a.cod_sec=movi8[p_act].cod_sec AND a.status_t is null AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF # BUSCA LA MAQUINA PERTENECIENTE AL REPUESTO SELECT a.cod_maq INTO codigo_mq FROM irtb00008 a WHERE a.cod_n = movi8[p_act].cod_n AND a.cod_grupo = movi8[p_act].cod_grupo AND a.cod_tipo = movi8[p_act].cod_tipo AND a.cod_sec = movi8[p_act].cod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 384 CALL msg(numero_msg) #NEXT FIELD cod_sec END IF IF STATUS < 0 THEN LET consulta = "N" CALL busca_maquina() LET movi8[p_act].codigo = busca_wd2[curr1].codigo DISPLAY movi8[p_act].codigo TO s_movi1[scr_l].codigo DISPLAY BY NAME maquinaria.nombre END IF #CONTROL COSTO # LET bandera = 0 # CALL busca_costo() # IF bandera = 1 THEN # NEXT FIELD cod_sec # END IF END IF LET movi8[p_act].descrip_esp = descrip1 LET movi8[p_act].unidad_med = descrip2 clipped DISPLAY movi8[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp DISPLAY movi8[p_act].unidad_med TO s_movi1[scr_l].unidad_med LET ant_art.cod_n = movi8[p_act].cod_n LET ant_art.cod_grupo = movi8[p_act].cod_grupo LET ant_art.cod_tipo = movi8[p_act].cod_tipo LET ant_art.cod_sec = movi8[p_act].cod_sec LET ant_art.maquina = movi8[p_act].codigo FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi8[idx].cod_n = ant_art.cod_n AND movi8[idx].cod_grupo = ant_art.cod_grupo AND movi8[idx].cod_tipo = ant_art.cod_tipo AND movi8[idx].cod_sec = ant_art.cod_sec AND movi8[idx].codigo = ant_art.maquina THEN LET numero_msg = 21 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF END FOR AFTER FIELD cantidad_2 IF movi8[p_act].cod_n is not null and movi8[p_act].cod_grupo is not null and movi8[p_act].cod_tipo is not null and movi8[p_act].cod_sec is not null THEN IF movi8[p_act].cantidad_2 IS NULL OR movi8[p_act].cantidad_2 <= 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF transacc.status_mov = "2" THEN SELECT SUM(a.cantidad_2) INTO existen FROM irtb00006 a WHERE a.cod_n = movi8[p_act].cod_n and a.cod_grupo = movi8[p_act].cod_grupo and a.cod_tipo = movi8[p_act].cod_tipo and a.cod_sec = movi8[p_act].cod_sec and a.status_t is null IF existen IS NULL THEN LET existen = 0 END IF IF existen < 0 THEN LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF movi8[p_act].cantidad_2 > existen THEN LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false FOR idx = 1 to arr_count() LET movi8[idx].cod_n = null LET movi8[idx].cod_grupo = null LET movi8[idx].cod_tipo = null LET movi8[idx].cod_sec = null LET movi8[idx].cantidad_2 = null LET movi8[idx].unidad_med = null LET movi8[idx].descrip_esp = null END FOR SLEEP 3 RETURN END IF FOR idx = 1 TO arr_count() IF movi8[idx].cod_n is not null and movi8[idx].cod_grupo is not null and movi8[idx].cod_tipo is not null and movi8[idx].cod_sec is not null THEN IF movi8[idx].cantidad_2 IS NULL OR movi8[idx].cantidad_2 <= 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF transacc.status_mov = "2" THEN SELECT SUM(a.cantidad_2) INTO existen FROM irtb00006 a WHERE a.cod_n = movi8[idx].cod_n and a.cod_grupo = movi8[idx].cod_grupo and a.cod_tipo = movi8[idx].cod_tipo and a.cod_sec = movi8[idx].cod_sec and a.status_t is null IF existen IS NULL THEN LET existen = 0 END IF IF existen < 0 THEN LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF movi8[idx].cantidad_2 > existen THEN LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF END IF END FOR FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi8[idx].cod_n = ant_art.cod_n AND movi8[idx].cod_grupo = ant_art.cod_grupo AND movi8[idx].cod_tipo = ant_art.cod_tipo AND movi8[idx].cod_sec = ant_art.cod_sec THEN LET numero_msg = 21 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF END FOR IF movi8[p_act].cod_n is null THEN CALL limpia1() END IF IF movi8[p_act].cod_grupo is null THEN CALL limpia1() END IF IF movi8[p_act].cod_tipo is null THEN CALL limpia1() END IF IF movi8[p_act].cod_sec is null THEN CALL limpia1() END IF EXIT INPUT END INPUT PROMPT "Toda la Informacion Esta Correcta? (S/N)" FOR CHAR opc IF OPC = "S" or OPC = "s" THEN IF datos1.orden_compra is not null THEN # Busca la cantidad recibida de la orden especificada SELECT sum(cantidad_2) INTO recibida FROM irtb00006 WHERE orden_compra = datos1.orden_compra and tipo = datos1.tipo # Busca la cantidad ordenada de la orden especificada SELECT sum(cantidad) INTO ordenada FROM cotb00015 WHERE num_oc = datos1.orden_compra and tipo = datos1.tipo IF recibida is null THEN LET recibida = 0 END IF IF ordenada is null THEN LET ordenada = 0 END IF # Calculo de los porcentaje limites de las ordenes LET porciento = ordenada * 0.10 LET recibida = recibida + total_cantidad LET r_cantidad = ordenada - porciento LET r_cantidad1 = ordenada + porciento # Si la cantiad recibida producto de la sumatoria y subtracion del 10% # es mayor o igual a la cantidad recibida y menor o igual a la cantidad de # la orden cierra la orden IF recibida >= r_cantidad and recibida <= r_cantidad1 THEN LET cerrada = "S" END IF END IF #-------------------------------------------------------------------------- # Busca el ultimo numero del documento perteneciente al movimiento SELECT num_salida INTO datos1.num_doc FROM irtb00014 WHERE cod_mov = datos1.cod_mov IF status = notfound THEN LET datos1.num_doc = 0 END IF LET datos1.num_doc = datos1.num_doc + 1 DISPLAY BY NAME datos1.num_doc ATTRIBUTE (BOLD) #--------------------------------------------------------------------------- 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 formu4 TO archivo BEGIN WORK FOR idx = 1 TO arr_count() IF movi8[idx].cod_n is not null and movi8[idx].cod_grupo is not null and movi8[idx].cod_tipo is not null and movi8[idx].cod_sec is not null and (movi8[idx].cantidad_2 IS NOT NULL AND movi8[idx].cantidad_2 > 0) THEN IF transacc.status_mov = "2" THEN LET movi8[idx].cantidad_2 = movi8[idx].cantidad_2 * -1 END IF INSERT INTO irtb00006 VALUES (datos1.num_doc,datos1.fecha,null, null,datos1.tipo,datos1.orden_compra,datos1.cod_sp,datos1.cod_sp_sec, datos1.cod_mov,movi8[idx].codigo,movi8[idx].cod_n, movi8[idx].cod_grupo,movi8[idx].cod_tipo, movi8[idx].cod_sec,null, movi8[idx].cantidad_2,0, datos1.secc_a,transacc.status_mov, null,SUSER_SNAME(),GETDATE(), null,null,'1') IF STATUS < 0 THEN ROLLBACK WORK CALL msg(-1330) RETURN END IF OUTPUT TO REPORT formu4(datos1.*,movi8[idx].*) END IF END FOR COMMIT WORK # Selecciona el registro del ultimo numero de documento para chequear si # existe para insertarlo en la tabla de secuencia SELECT *FROM irtb00014 WHERE cod_mov = datos1.cod_mov IF status = notfound THEN INSERT INTO irtb00014 VALUES (datos1.num_doc,datos1.cod_mov,null, SUSER_SNAME(),GETDATE(),null,null) END IF UPDATE irtb00014 SET num_salida = datos1.num_doc WHERE cod_mov = datos1.cod_mov #---------------------------------------------------------------------------- FINISH REPORT formu4 RUN imprime LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM ELSE GOTO otra_vez END IF GOTO vuelve END FUNCTION FUNCTION limpia1() LET movi8[p_act].cod_n = null LET movi8[p_act].cod_grupo = null LET movi8[p_act].cod_tipo = null LET movi8[p_act].cod_sec = null LET movi8[p_act].cantidad_2 = null LET movi8[p_act].unidad_med = null LET movi8[p_act].descrip_esp = null DISPLAY movi8[p_act].cod_n to s_movi1[scr_l].cod_n DISPLAY movi8[p_act].cod_grupo to s_movi1[scr_l].cod_grupo DISPLAY movi8[p_act].cod_tipo to s_movi1[scr_l].cod_tipo DISPLAY movi8[p_act].cod_sec to s_movi1[scr_l].cod_sec DISPLAY movi8[p_act].cantidad_2 to s_movi1[scr_l].cantidad_2 DISPLAY movi8[p_act].unidad_med to s_movi1[scr_l].unidad_med DISPLAY movi8[p_act].descrip_esp to s_movi1[scr_l].descrip_esp END FUNCTION REPORT formu4(x,z) DEFINE x RECORD cod_mov LIKE irtb00006.cod_mov, descrip_mov LIKE irtb00005.descrip_mov, num_doc LIKE irtb00006.num_doc, tipo LIKE irtb00006.tipo, orden_compra LIKE irtb00006.orden_compra, cod_sp LIKE irtb00006.cod_sp, cod_sp_sec LIKE irtb00006.cod_sp_sec, fecha LIKE irtb00006.fecha, nombre LIKE irtb00009.nombre, secc_a LIKE irtb00006.sec_a, nom_sp 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_2 LIKE irtb00006.cantidad_2, unidad_med LIKE irtb00002.unidad_med, descrip_esp LIKE irtb00002.descrip_esp , codigo LIKE irtb00008.cod_maq END RECORD # DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(2) DEFINE l,cuenta SMALLINT OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 1 PAGE LENGTH 33 ORDER BY x.num_doc,z.cod_sec FORMAT BEFORE GROUP OF x.num_doc LET doce = ASCII 27, ASCII 77 LET doble = ASCII 14 LET doble_of = ASCII 20 LET negras = ASCII 27, ASCII 69 LET negras_off = ASCII 27, ASCII 70 PRINT doce PRINT COLUMN 1, negras,doble,p_companias.nombre CLIPPED PRINT COLUMN 65,"No. ",doble,x.num_doc using "<<<<<<" PRINT COLUMN 30, "MOVIMIENTOS DE ALMACEN", COLUMN 60, x.fecha #using "dd/mm/yyyy" SKIP 1 LINES LET l = (80 - LENGTH (x.descrip_mov)) / 2 PRINT COLUMN l, "(",x.cod_mov using "&&",")",x.descrip_mov,negras_off PRINT COLUMN 1, "Suplidor : ",x.cod_sp using "&&","-", x.cod_sp_sec using "&&&&"," ", x.nom_sp PRINT COLUMN 1, "Departamento: ",x.secc_a USING "<<<<"," ",nombre_d SKIP 1 LINES PRINT COLUMN 1, "---------------------------------------------------------------------" PRINT COLUMN 58, "CANTIDAD" PRINT COLUMN 2,doble, "ARTICULOS",doble_of clipped, COLUMN 51, "REQUERIDA " PRINT COLUMN 1, "-----------------------------------------------------------------------" SKIP 1 LINES ON EVERY ROW IF z.cod_n is not null and z.cod_grupo is not null and z.cod_tipo is not null and z.cod_sec is not null THEN LET x.nombre = NULL SELECT a.nombre INTO x.nombre FROM irtb00009 a WHERE a.codigo = z.codigo and a.status_t is null 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 58, z.cantidad_2 using "##,###.##", COLUMN 68, z.codigo USING "<<<"," ",x.nombre END IF PAGE TRAILER PRINT COLUMN 1, "------------------", COLUMN 27, "------------------", COLUMN 50, "------------------" PRINT COLUMN 5, "Entregado Por", COLUMN 29, "Recibido Por", COLUMN 53, "Aprobado Por" SKIP 2 LINE PRINT COLUMN 2, "Original: Contabilidad Copia: Almacen" SKIP 1 LINE #PRINT normal END REPORT FUNCTION anular() DISPLAY "ELIMINACION REGISTROS " AT 3,2 ATTRIBUTE (blue,REVERSE) INPUT BY NAME datos1.cod_mov,datos1.num_doc AFTER FIELD num_doc IF datos1.num_doc is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_doc END IF SELECT UNIQUE fecha,tipo,orden_compra,sec_de,cod_sp,cod_sp_sec INTO datos1.fecha,datos1.tipo,datos1.orden_compra, datos1.secc_a FROM irtb00006 WHERE @num_doc = datos1.num_doc and @cod_mov = datos1.cod_mov IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_doc END IF DISPLAY BY NAME datos1.* AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT INPUT END IF END INPUT IF int_flag THEN GOTO salir END IF PROMPT "Esta Seguro de Eliminar Este Documento (S/N)? " FOR ya LET ya = upshift(ya) IF ya = "S" THEN UPDATE irtb00006 SET status_t = "E", us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE num_doc = datos1.num_doc and cod_mov = datos1.cod_mov END IF LABEL salir: DISPLAY " Adiciona Registro" AT 3,2 ATTRIBUTE (blue,REVERSE) END FUNCTION FUNCTION busca_prod1() OPEN WINDOW busca_2 AT 8,4 WITH FORM "irfmwd001" ATTRIBUTE (BORDER,FORM LINE FIRST + 1,PROMPT LINE LAST) CONSTRUCT BY NAME criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, a.descrip_esp LET selec_pt = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med FROM irtb00002 a ", "WHERE a.status_t IS NULL AND ",criterio CLIPPED," ORDER BY 5 " PREPARE comando_p FROM selec_pt DECLARE busca_2 CURSOR FOR comando_p LET idx = 1 FOREACH busca_2 INTO arr_prod[idx].* LET idx = idx + 1 END FOREACH CALL SET_COUNT(idx - 1) DISPLAY ARRAY arr_prod TO s_prod.* LET idx = ARR_CURR() CLOSE WINDOW busca_2 END FUNCTION FUNCTION busca_costo() SELECT a.costo_st FROM irtb00013 a WHERE a.cod_n = movi8[p_act].cod_n AND a.cod_grupo = movi8[p_act].cod_grupo AND a.cod_tipo = movi8[p_act].cod_tipo AND a.cod_sec = movi8[p_act].cod_sec AND a.ano = YEAR(TODAY) AND a.mes_fin = 12 and a.status_t is null IF STATUS = NOTFOUND THEN LET numero_msg =351 CALL msg(numero_msg) LET bandera = 1 END IF END FUNCTION FUNCTION busca_maquina() # LET formulario = fgl_getenv("FORMS") CLIPPED,"/codir/" # LET formulario = formulario CLIPPED, "cofmwd002" LET formulario = "irfmwd068" OPEN WINDOW busqueda AT 8,8 WITH FORM "irfmwd068" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST) LET int_flag = false IF consulta = "S" THEN CONSTRUCT criterio ON irtb00009.nombre FROM irtb00009.nombre LET selec = "SELECT codigo,nombre FROM irtb00009 ", " WHERE ", " status_t is null AND ", criterio clipped, "ORDER BY 1 " ELSE { LET selec = "SELECT a.codigo,a.nombre FROM irtb00009 a,irtb00008 b ", " WHERE ", " b.cod_n =7 AND ", " b.cod_grupo = 0 AND ", " b.cod_tipo = 0 AND ", " b.cod_sec = 2 AND ", " a.codigo = b.cod_maq ", "ORDER BY 1 " } LET selec = "SELECT a.codigo,a.nombre FROM irtb00009 a,irtb00008 b ", " WHERE ", " b.cod_n = '",movi8[p_act].cod_n,"' AND ", " b.cod_grupo = '",movi8[p_act].cod_grupo, "' AND ", " b.cod_tipo = '",movi8[p_act].cod_tipo,"' AND ", " b.cod_sec = '",movi8[p_act].cod_sec,"' AND ", " a.codigo = b.cod_maq ", "ORDER BY 1 " END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO sale2 RETURN END IF PREPARE busca2 FROM selec IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 12 CALL msg(numero_msg) END IF END IF DECLARE johnn2 CURSOR FOR busca2 LET idx = 1 FOREACH johnn2 INTO busca_wd2[idx].* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO sale3 END IF IF status = notfound THEN EXIT FOREACH END IF LET idx = idx + 1 LABEL sale3: END FOREACH CALL set_count(idx-1) DISPLAY ARRAY busca_wd2 TO s_desp1.* LET curr1 = arr_curr() LET dm_rep.maquina = busca_wd2[curr1].codigo LET maquinaria.codigo = busca_wd2[curr1].codigo LET maquinaria.nombre = busca_wd2[curr1].nombre LABEL sale2: CLOSE WINDOW busqueda END FUNCTION