{ ---------------------------------------------------------------------------- PROGRAMA : IRPRMT006 OBJETIVO : Programa Captura Documento Movimiento:REPORTE ENTRADA de Inventario de Repuestos. PROGRAMADOR : Juan Fco. Soto (Johnny) FECHA REALIZACION : Febrero 1, 1993. MODIFICADO POR : Juan Fco. Soto FECHA : Septiembre 8, 1993. ---------------------------------------------------------------------------- } GLOBALS "irprgb000.4gl" DEFINE total_cantidad, porciento, r_cantidad, ordenada, recibida, existe_act, r_cantidad1, tasa DECIMAL(12, 2) DEFINE p_maquina SMALLINT DEFINE errores, cerrada CHAR(1), pano SMALLINT DEFINE pcosto DYNAMIC ARRAY OF FLOAT DEFINE pcosto_old DYNAMIC ARRAY OF FLOAT DEFINE opc1 CHAR(1) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT TO "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL irprmt006() END MAIN FUNCTION irprmt006() DEFINE fecha CHAR(8) CLEAR SCREEN OPTIONS ERROR LINE 24, FORM LINE 4, COMMENT LINE 22, PROMPT LINE 23 LET fecha = TODAY USING "dd/mm/yyyy" OPEN FORM irfmmt006 FROM "irfmmt006" DISPLAY FORM irfmmt006 MENU ON ACTION nuevo CALL inpcad006() ON ACTION buscar CALL irprmf006() ON ACTION salir EXIT MENU END MENU END FUNCTION FUNCTION inpcad006() LET int_flag = FALSE INITIALIZE datos_gen.* TO NULL LET datos_gen.fecha = TODAY USING "dd/mm/yyyy" LABEL otra_vez: LABEL vuelve: IF (OPC = "S" OR OPC = "s") OR opc IS NULL THEN INITIALIZE datos_gen.* TO NULL END IF LET datos_gen.cod_mov = cod_mov_ant LET datos_gen.fecha = TODAY USING "dd/mm/yyyy" INPUT BY NAME datos_gen.cod_mov THRU datos_gen.descrip_mov WITHOUT DEFAULTS BEFORE FIELD num_doc LET datos_gen.fecha = TODAY USING "dd/mm/yyyy" DISPLAY BY NAME datos_gen.fecha AFTER FIELD sec_a SELECT a.nom_dpto INTO nombre_d FROM adtb00001 a WHERE a.departamento = datos_gen.sec_a IF STATUS = NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD num_doc END IF AFTER FIELD fecha IF datos_gen.fecha IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha END IF IF datos_gen.fecha > TODAY THEN LET numero_msg = 189 CALL msg(numero_msg) NEXT FIELD fecha END IF LET p_fechas = datos_gen.fecha USING "ddmmyyyy" CALL prd(p_fechas, usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha END IF AFTER FIELD cod_mov IF datos_gen.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov END IF LET cod_mov_ant = datos_gen.cod_mov # Control codigos para este programa SELECT UNIQUE a.cod_mov FROM irtb00018 a WHERE a.cod_mov = datos_gen.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 datos_gen.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov END IF SELECT a.descrip_mov INTO datos_gen.descrip_mov FROM irtb00005 a WHERE a.cod_mov = datos_gen.cod_mov AND a.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 datos_gen.descrip_mov AFTER FIELD orden_compra SELECT DISTINCT a.cod_sp, a.cod_sp_sec, cierre, c.tasa_cambio INTO datos_gen.cod_sp, datos_gen.cod_sp_sec, cerrada, tasa FROM cotb00014 a, cotb00015 b, cotb00031 c WHERE a.num_oc = datos_gen.orden_compra AND a.tipo = datos_gen.tipo AND a.num_oc = b.num_oc AND b.cod_mon = c.cod_mon AND a.status_t IS NULL IF status >= 0 THEN IF cerrada = "S" THEN LET numero_msg = 74 CALL msg(numero_msg) NEXT FIELD tipo END IF IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo END IF END IF SELECT UNIQUE nom_sp INTO datos_gen.nom_sp FROM cotb00001 WHERE cod_sp = datos_gen.cod_sp AND cod_sp_sec = datos_gen.cod_sp_sec AND status_t IS NULL IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo END IF END IF DISPLAY BY NAME datos_gen.cod_sp, datos_gen.cod_sp_sec, datos_gen.nom_sp NEXT FIELD conduce_no AFTER FIELD fact_no # Verifica que el numero de la factura no se repita con el mismo numero de # documento. IF datos_gen.conduce_no IS NULL AND datos_gen.fact_no IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD conduce_no END IF IF datos_gen.conduce_no IS NOT NULL AND datos_gen.fact_no IS NOT NULL THEN LET numero_msg = 29 CALL msg(numero_msg) NEXT FIELD conduce_no END IF IF datos_gen.fact_no IS NOT NULL THEN SELECT UNIQUE num_doc FROM irtb00006 WHERE num_doc = datos_gen.num_doc AND orden_compra = datos_gen.orden_compra AND fact_no = datos_gen.fact_no AND cod_mov = datos_gen.cod_mov AND status_t IS NULL IF status >= 0 THEN IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD num_doc END IF END IF END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL movi.clear() SLEEP 2 RETURN END IF SELECT UNIQUE a.num_doc FROM irtb00006 a WHERE a.num_doc = datos_gen.num_doc AND a.orden_compra = datos_gen.orden_compra AND a.fact_no = datos_gen.fact_no AND a.cod_mov = datos_gen.cod_mov AND a.status_t IS NULL IF status >= 0 THEN IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD num_doc END IF END IF IF datos_gen.conduce_no IS NULL AND datos_gen.fact_no IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD conduce_no END IF IF datos_gen.fecha IS NULL THEN CALL msg(16) NEXT FIELD fecha END IF EXIT INPUT END INPUT INITIALIZE ant_art.* TO NULL IF opc = "S" OR opc = "s" OR opc IS NULL THEN CALL movi.clear() END IF DECLARE busca CURSOR FOR SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, b.descrip_esp, b.unidad_med, SUM(a.cantidad), SUM(a.precio) FROM cotb00015 a, irtb00002 b WHERE a.num_oc = datos_gen.orden_compra AND a.tipo = datos_gen.tipo AND a.status_t IS NULL AND a.cod_n = b.cod_n 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 b.status_t IS NULL GROUP BY a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, b.descrip_esp, b.unidad_med LET errores = "N" LET idx = 1 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].unidad_med, movi[idx].cantidad_1, pcosto[idx] IF (movi[idx].cod_n < 4 OR movi[idx].cod_n > 9) THEN LET numero_msg = 83 CALL msg(numero_msg) LET errores = "S" EXIT FOREACH END IF LET existe_act = 0 IF movi[idx].cod_n = 4 THEN SELECT SUM(a.cantidad_2) INTO existe_act FROM ihtb00006 a WHERE a.orden_compra = datos_gen.orden_compra AND a.tipo = datos_gen.tipo AND a.status_t IS NULL AND a.cod_n = movi[idx].cod_n AND a.cod_grupo = movi[idx].cod_grupo AND a.cod_tipo = movi[idx].cod_tipo AND a.cod_sec = movi[idx].cod_sec ELSE SELECT SUM(a.cantidad_2) INTO existe_act FROM irtb00006 a WHERE a.orden_compra = datos_gen.orden_compra AND a.tipo = datos_gen.tipo AND a.status_t IS NULL AND a.cod_n = movi[idx].cod_n AND a.cod_grupo = movi[idx].cod_grupo AND a.cod_tipo = movi[idx].cod_tipo AND a.cod_sec = movi[idx].cod_sec END IF IF existe_act IS NULL THEN LET existe_act = 0 END IF LET movi[idx].cantidad_2 = movi[idx].cantidad_2 - existe_act LET movi[idx].maquina = NULL SELECT ISNULL(a.costo_st, 0) INTO pcosto_old[idx] FROM irtb00013 a WHERE a.cod_n = movi[idx].cod_n AND a.cod_grupo = movi[idx].cod_grupo AND a.cod_tipo = movi[idx].cod_tipo AND a.cod_sec = movi[idx].cod_sec AND a.mes_ini = '01' AND a.mes_fin = '12' AND a.ano = YEAR(TODAY) LET idx = idx + 1 END FOREACH # CAPTURA ARREGLO DE LOS CODIGOS DE MATERIA PRIMA IF errores = "S" THEN LET idx = idx + 1 END IF CALL set_count(idx - 1) INPUT ARRAY movi WITHOUT DEFAULTS FROM s_movi1.* BEFORE ROW LET p_act = arr_curr() LET scr_l = scr_line() BEFORE FIELD cod_n NEXT FIELD cantidad_2 BEFORE FIELD cod_sec NEXT FIELD cantidad_2 BEFORE DELETE CALL pcosto.deleteElement(p_act) CALL pcosto_old.deleteElement(p_act) AFTER FIELD maquina IF movi[p_act].maquina IS NOT NULL THEN SELECT a.nombre INTO maquinaria.nombre FROM irtb00009 a WHERE a.codigo = movi[p_act].maquina IF status = NOTFOUND THEN LET numero_msg = 115 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF DISPLAY BY NAME maquinaria.nombre AFTER FIELD cantidad_2 IF errores = "S" THEN RETURN END IF LET ordenada = 0 LET recibida = 0 IF movi[p_act].cantidad_2 IS NOT NULL THEN IF movi[p_act].cod_n = 4 THEN SELECT UNIQUE * FROM irtb00002 WHERE cod_n = movi[p_act].cod_n AND cod_grupo = movi[p_act].cod_grupo AND cod_tipo = movi[p_act].cod_tipo AND cod_sec = movi[p_act].cod_sec AND status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 35 CALL msg(numero_msg) NEXT FIELD cantidad_2 END IF SELECT SUM(a.cantidad_2) INTO recibida FROM ihtb00006 a WHERE a.orden_compra = datos_gen.orden_compra AND a.tipo = datos_gen.tipo AND a.cod_n = movi[p_act].cod_n AND a.cod_grupo = movi[p_act].cod_grupo AND a.cod_tipo = movi[p_act].cod_tipo AND a.cod_sec = movi[p_act].cod_sec AND a.status_t IS NULL SELECT SUM(a.cantidad) INTO ordenada FROM cotb00015 a WHERE a.num_oc = datos_gen.orden_compra AND a.tipo = datos_gen.tipo AND a.cod_n = movi[p_act].cod_n AND a.cod_grupo = movi[p_act].cod_grupo AND a.cod_tipo = movi[p_act].cod_tipo AND a.cod_sec = movi[p_act].cod_sec ELSE SELECT UNIQUE * FROM irtb00002 WHERE cod_n = movi[p_act].cod_n AND cod_grupo = movi[p_act].cod_grupo AND cod_tipo = movi[p_act].cod_tipo AND cod_sec = movi[p_act].cod_sec AND status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 35 CALL msg(numero_msg) NEXT FIELD cantidad_2 END IF SELECT SUM(a.cantidad_2) INTO recibida FROM irtb00006 a WHERE a.orden_compra = datos_gen.orden_compra AND a.tipo = datos_gen.tipo AND a.cod_n = movi[p_act].cod_n AND a.cod_grupo = movi[p_act].cod_grupo AND a.cod_tipo = movi[p_act].cod_tipo AND a.cod_sec = movi[p_act].cod_sec AND a.status_t IS NULL SELECT SUM(a.cantidad) INTO ordenada FROM cotb00015 a WHERE a.num_oc = datos_gen.orden_compra AND a.tipo = datos_gen.tipo AND a.cod_n = movi[p_act].cod_n AND a.cod_grupo = movi[p_act].cod_grupo AND a.cod_tipo = movi[p_act].cod_tipo AND a.cod_sec = movi[p_act].cod_sec END IF IF recibida IS NULL THEN LET recibida = 0 END IF IF ordenada IS NULL THEN LET ordenada = 0 END IF LET porciento = ordenada * 0.10 LET recibida = recibida + movi[p_act].cantidad_2 LET r_cantidad = ordenada + porciento DISPLAY recibida DISPLAY r_cantidad IF recibida > r_cantidad THEN LET numero_msg = 28 CALL msg(numero_msg) NEXT FIELD cantidad_2 END IF # BUSCA EL COSTO DE LAS ORDENES { CALL pcosto.deleteElement(p_act) CALL pcosto_old.deleteElement(p_act) SELECT ISNULL(a.costo_st, 0) INTO pcosto_old[p_act] FROM irtb00013 a WHERE a.cod_n = movi[p_act].cod_n AND a.cod_grupo = movi[p_act].cod_grupo AND a.cod_tipo = movi[p_act].cod_tipo AND a.cod_sec = movi[p_act].cod_sec AND a.mes_ini = '01' AND a.mes_fin = '12' AND a.ano = YEAR(TODAY) SELECT ISNULL(a.precio, 0) INTO pcosto[p_act] FROM cotb00015 a WHERE a.cod_n = movi[p_act].cod_n AND a.cod_grupo = movi[p_act].cod_grupo AND a.cod_tipo = movi[p_act].cod_tipo AND a.cod_sec = movi[p_act].cod_sec AND a.num_oc = datos_gen.orden_compra AND a.tipo = datos_Gen.tipo} END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CALL movi.clear() SLEEP 2 RETURN END IF PROMPT "Toda la Informacion Esta Correcta? (S/N)" FOR CHAR opc LET opc = UPSHIFT(opc) IF OPC = "S" THEN PROMPT "Imprimo documento ahora? (S/N)" FOR CHAR opc1 LET opc1 = upshift(opc1) IF opc1 = "S" THEN 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 rep_ent TO archivo END IF # BUSCA ULTIMO NUMERO DOCUMENTO LET p_ultimo = 0 SELECT MAX(num_salida) INTO p_ultimo FROM irtb00014 WHERE cod_mov = datos_gen.cod_mov IF p_ultimo IS NULL THEN LET p_ultimo = 0 END IF LET datos_gen.num_doc = p_ultimo + 1 SELECT UNIQUE a.num_doc FROM irtb00006 a WHERE a.num_doc = p_ultimo AND a.cod_mov = datos_gen.cod_mov IF status != NOTFOUND THEN SELECT MAX(a.num_doc) INTO p_ultimo FROM irtb00006 a WHERE a.cod_mov = datos_gen.cod_mov IF p_ultimo IS NULL THEN LET p_ultimo = 0 END IF LET datos_gen.num_doc = p_ultimo + 1 END IF DISPLAY BY NAME datos_gen.num_doc LET pano = YEAR(datos_gen.fecha) BEGIN WORK #-------------------------------------------------------------------------- FOR idx = 1 TO arr_count() 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 IF movi[idx].cantidad_2 IS NOT NULL THEN IF movi[idx].cod_n = 4 THEN INSERT INTO irtb00006( num_doc, fecha, fact_no, conduce_no, tipo, orden_compra, cod_sp, cod_sp_Sec, cod_mov, maquina, cod_n, cod_grupo, cod_tipo, cod_Sec, cantidad_1, cantidad_2, sec_a, us_Crea, fech_Crea, bodega) VALUES(datos_gen.num_doc, datos_gen.fecha, datos_gen.fact_no, datos_gen.conduce_no, datos_gen.tipo, datos_gen.orden_compra, datos_gen.cod_sp, datos_gen.cod_sp_sec, datos_gen.cod_mov, movi[idx].maquina, movi[idx].cod_n, movi[idx].cod_grupo, movi[idx].cod_tipo, movi[idx].cod_sec, movi[idx].cantidad_1, movi[idx].cantidad_2, datos_gen.sec_a, SUSER_SNAME(), GETDATE(), '1') ELSE INSERT INTO irtb00006( num_doc, fecha, fact_no, conduce_no, tipo, orden_compra, cod_sp, cod_sp_Sec, cod_mov, maquina, cod_n, cod_grupo, cod_tipo, cod_Sec, cantidad_1, cantidad_2, us_Crea, fech_Crea, bodega, costo_act, costo_old) VALUES(datos_gen.num_doc, datos_gen.fecha, datos_gen.fact_no, datos_gen.conduce_no, datos_gen.tipo, datos_gen.orden_compra, datos_gen.cod_sp, datos_gen.cod_sp_sec, datos_gen.cod_mov, movi[idx].maquina, movi[idx].cod_n, movi[idx].cod_grupo, movi[idx].cod_tipo, movi[idx].cod_sec, movi[idx].cantidad_1, movi[idx].cantidad_2, SUSER_SNAME(), GETDATE(), '1', pcosto[idx], pcosto_old[idx]) IF datos_gen.cod_mov = 35 THEN LET pcosto[idx] = pcosto[idx] * tasa SELECT DISTINCT a.cod_n FROM irtb00013 a WHERE a.cod_n = movi[idx].cod_n AND a.cod_grupo = movi[idx].cod_grupo AND a.cod_tipo = movi[idx].cod_tipo AND a.cod_sec = movi[idx].cod_Sec AND a.ano = YEAR(datos_gen.fecha) IF STATUS = NOTFOUND THEN INSERT INTO irtb00013( ano, mes_ini, mes_fin, cod_n, cod_grupo, cod_tipo, cod_sec, costo_st, us_crea, fech_crea) VALUES(pano, '01', '12', movi[idx].cod_n, movi[idx].cod_grupo, movi[idx].cod_tipo, movi[idx].cod_sec, pcosto[idx], usuarios, getdate()) ELSE UPDATE irtb00013 SET costo_st = pcosto[idx], us_mod = USUARIOS, fech_mod = getdate() WHERE cod_n = movi[idx].cod_n AND cod_grupo = movi[idx].cod_grupo AND cod_tipo = movi[idx].cod_tipo AND cod_sec = movi[idx].cod_Sec AND ano = pano END IF END IF END IF END IF IF opc1 = "S" THEN IF movi[idx].cantidad_2 IS NOT NULL THEN OUTPUT TO REPORT rep_ent(datos_gen.*, movi[idx].*) END IF END IF END IF END FOR COMMIT WORK CALL movi.clear() IF opc1 = "S" THEN DISPLAY " " AT 1, 1 FINISH REPORT rep_ent RUN imprime END IF SELECT * FROM irtb00014 WHERE @cod_mov = datos_gen.cod_mov IF status = NOTFOUND THEN INSERT INTO irtb00014 VALUES(datos_gen.num_doc, datos_gen.cod_mov, NULL, SUSER_SNAME(), GETDATE(), NULL, NULL) END IF UPDATE irtb00014 SET num_salida = datos_gen.num_doc WHERE cod_mov = datos_gen.cod_mov SELECT * FROM irtb00014 WHERE cod_mov = datos_gen.cod_mov IF status = NOTFOUND THEN INSERT INTO irtb00014 VALUES(datos_gen.num_doc, datos_gen.cod_mov, SUSER_SNAME(), GETDATE()) END IF UPDATE irtb00014 SET num_salida = datos_gen.num_doc WHERE cod_mov = datos_gen.cod_mov UPDATE cotb00014 SET cierre = cerrada WHERE num_oc = datos_gen.orden_compra AND tipo = datos_gen.tipo LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM ELSE GOTO otra_vez END IF GOTO vuelve END FUNCTION FUNCTION limpia() CALL movi.clear() END FUNCTION REPORT rep_ent(x, z) DEFINE x RECORD cod_mov LIKE irtb00006.cod_mov, num_doc LIKE irtb00006.num_doc, tipo CHAR(2), orden_compra LIKE irtb00006.orden_compra, cod_sp LIKE irtb00006.cod_sp, cod_sp_sec LIKE irtb00006.cod_sp_sec, conduce_no LIKE irtb00006.conduce_no, fact_no LIKE irtb00006.fact_no, fecha DATE, sec_a LIKE irtb00006.sec_a, nom_sp LIKE cotb00001.nom_sp, descrip_mov CHAR(30) END RECORD DEFINE z RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, cantidad_1 LIKE iptb00006.cantidad_1, cantidad_2 LIKE iptb00006.cantidad_2, maquina SMALLINT END RECORD DEFINE l SMALLINT DEFINE negras_of, negras_on, doble_on, doble_of CHAR(2) DEFINE unidades INTEGER DEFINE p_nombre, p_descrip CHAR(30) DEFINE p_unidad CHAR(4) OUTPUT TOP MARGIN 0 BOTTOM MARGIN 0 LEFT MARGIN 0 FORMAT BEFORE GROUP OF x.num_doc LET negras_on = ASCII 27, ASCII 69 LET negras_of = ASCII 27, ASCII 70 LET doble_on = ASCII 14 LET doble_of = ASCII 20 PRINT COLUMN 1, negras_on, doble_on, COLUMN 1, p_companias.nombre CLIPPED, negras_of PRINT COLUMN 58, "REPORTE DE ENTRADA" PRINT COLUMN 58, "No.", doble_on, x.num_doc USING "&&&&&&" LET l = (80 - LENGTH(x.descrip_mov)) / 2 PRINT COLUMN l, "REPUESTOS" PRINT COLUMN l, negras_on, "(", x.cod_mov USING "<<<", ")", x.descrip_mov, negras_of SKIP 1 LINE PRINT COLUMN 1, "Fecha : ", x.fecha USING "dd/mm/yyyy", COLUMN 53, "Orden de Compra: ", x.tipo, "-", x.orden_compra USING "&&&&&&" PRINT COLUMN 1, "Departamento: ", x.sec_a USING "<<<<", " ", nombre_d PRINT COLUMN 1, "Proveedor : ", x.cod_sp USING "&&", "-", x.cod_sp_sec USING "&&&&", " ", x.nom_sp PRINT COLUMN 1, "Conduce : ", x.conduce_no CLIPPED PRINT COLUMN 1, "Factura : ", x.fact_no CLIPPED PRINT COLUMN 1, "===========================================================================" PRINT COLUMN 1, "CODIGO", COLUMN 16, "CANTIDAD", COLUMN 30, "UNIDAD", COLUMN 45, "D E S C R I P C I O N" PRINT COLUMN 1, "===========================================================================" SKIP 1 LINE ON EVERY ROW IF z.maquina IS NOT NULL THEN SELECT UNIQUE a.nombre INTO p_nombre FROM irtb00009 a WHERE a.codigo = z.maquina END IF PRINT COLUMN 1, z.cod_n USING "&", "-", COLUMN 3, z.cod_grupo USING "&", "-", COLUMN 5, z.cod_tipo USING "&&", "-", COLUMN 8, z.cod_sec USING "&&&", COLUMN 16, z.cantidad_2 USING "##,###", COLUMN 30, z.unidad_med, 5 SPACES, z.descrip_esp IF z.maquina IS NOT NULL THEN PRINT COLUMN 30, z.maquina USING "&&#", " (", p_nombre CLIPPED, ")" END IF PAGE TRAILER PRINT COLUMN 1, "OBSERVACION :" PRINT PRINT COLUMN 1, "--------------------------------------------------------------------------" PRINT PRINT COLUMN 1, "--------------------------------------------------------------------------" SKIP 2 LINE PRINT COLUMN 3, "----------------------", COLUMN 30, "----------------------", COLUMN 60, "--------------------" PRINT COLUMN 3, "Entregado Por", COLUMN 30, "Recibido Por", COLUMN 60, "Aprobado Por" SKIP 4 LINES END REPORT FUNCTION irprmf006() CONSTRUCT criterio ON a.num_doc, a.cod_mov FROM num_doc, cod_mov LET selec = "SELECT DISTINCT a.cod_mov,a.num_doc,a.tipo,a.orden_compra,a.cod_sp,a.cod_sp_Sec,a.conduce_no,", "a.fact_no,a.fecha,a.sec_a,b.nom_sp,c.descrip_mov ", "FROM irtb00006 a,cotb00001 b,irtb00005 c ", "WHERE a.cod_sp = b.cod_sp and a.cod_sp_Sec = b.cod_sp_sec and a.cod_mov = c.cod_mov and a.status_t IS NULL AND ", criterio CLIPPED PREPARE comando FROM selec DECLARE busca_entrada SCROLL CURSOR FOR comando OPEN busca_entrada FETCH FIRST busca_entrada INTO datos_gen.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME datos_gen.* MENU "NAVEGA" COMMAND "Siguiente" FETCH NEXT busca_entrada INTO datos_gen.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME datos_gen.* COMMAND "Anterior" FETCH PREVIOUS busca_entrada INTO datos_gen.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME datos_gen.* COMMAND "Ultimo" FETCH LAST busca_entrada INTO datos_gen.* DISPLAY BY NAME datos_gen.* COMMAND "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 rep_ent TO archivo DECLARE busca_material CURSOR FOR SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, b.descrip_esp, b.unidad_med, a.cantidad_1, a.cantidad_2, a.maquina FROM irtb00006 a, irtb00002 b WHERE a.num_doc = datos_Gen.num_doc AND a.cod_mov = datos_gen.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 LET idx = 1 FOREACH busca_material INTO movi[idx].* OUTPUT TO REPORT rep_ent(datos_gen.*, movi[idx].*) LET idx = idx + 1 END FOREACH CALL set_count(idx - 1) DISPLAY ARRAY movi TO s_movi1.* FINISH REPORT rep_ent RUN imprime COMMAND KEY("T") "reTornar" EXIT MENU END MENU END FUNCTION