{ PROGRAMA : INPRCS001 OBJETIVO : Programa Consulta Movimientos Materia Prima: Reporte de Entrada. PROGRAMADOR : Juan Fco. Soto (Johnny) FECHA REALIZACION : Agosto 13,1992. MODIFICADO POR : Ing. Betania Guerrero y Lic. Abner Montalvo Z. FECHA REALIZACION : Agosto 25, 1992. } GLOBALS "inprgb000.4gl" MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL inprcs001() END MAIN FUNCTION inprcs001() DEFINE fecha1 char(8) DEFINE hora1 char(5) LET fecha1 = today using "dd/mm/yy" LET hora1 = time LET int_flag = false LET bandera = 0 WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS ERROR LINE 24, FORM LINE 6, COMMENT LINE 22, PROMPT LINE 23 DISPLAY p_companias.nombre AT 3,lj ATTRIBUTE (REVERSE,YELLOW) DISPLAY fecha1 AT 3,70 ATTRIBUTE (YELLOW) DISPLAY hora1 AT 4,73 ATTRIBUTE (YELLOW) DISPLAY "Reporte de Entrada" at 4,31 DISPLAY " Ejecuta Consulta " AT 5,2 ATTRIBUTE (YELLOW,REVERSE) DISPLAY " Cancela Operacion" AT 5,54 ATTRIBUTE (YELLOW,REVERSE) DISPLAY "inprcs001" AT 3,2 ATTRIBUTE (YELLOW) LET p_formulario = formulario CLIPPED,"infmcs001" OPEN FORM infmcs001 FROM "infmcs001" DISPLAY FORM infmcs001 INITIALIZE datos_gen.* TO NULL LABEL volver: DISPLAY " " AT 1,1 CONSTRUCT criterio ON a.cod_mov,a.num_doc,a.cod_sp, a.cod_sp_sec,a.orden_compra, a.conduce_no,a.fact_no,a.fecha FROM cod_mov,num_doc,cod_sp, cod_sp_sec,orden_compra, conduce_no,fact_no,fecha LET SELEC = "SELECT UNIQUE a.cod_mov,b.descrip_mov,a.num_doc,", "a.cod_sp,a.cod_sp_sec,a.orden_compra,a.fact_no, ", "a.conduce_no,a.fecha FROM intb00006 a,", "intb00005 b ", " WHERE ", criterio clipped, " and a.cod_mov = b.cod_mov ", " and a.cod_mov between 34 and 35 ", " ORDER BY 1,3" IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF PREPARE busca FROM selec DECLARE johnn SCROLL CURSOR FOR busca OPEN johnn FETCH FIRST johnn INTO datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra, datos_gen.fact_no, datos_gen.conduce_no,datos_gen.fecha IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) GOTO volver END IF SELECT 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 DISPLAY BY NAME datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no, datos_gen.conduce_no,datos_gen.fecha LABEL vuelve1: MENU "OPCION" COMMAND "Siguiente" "Presenta en pantalla SIGUIENTE registro encontrado." FETCH NEXT johnn INTO datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no, datos_gen.conduce_no,datos_gen.fecha IF status = notfound THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT 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 DISPLAY BY NAME datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no COMMAND "Anterior" "Presenta en pantalla el registro ANTERIOR encontrado." FETCH PREVIOUS johnn INTO datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no, datos_gen.conduce_no,datos_gen.fecha IF status = notfound THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT 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 DISPLAY BY NAME datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no COMMAND "Primero" "Presenta en pantalla PRIMER registro encontrado." FETCH FIRST johnn INTO datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no, datos_gen.conduce_no,datos_gen.fecha IF status = notfound THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT 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 DISPLAY BY NAME datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no COMMAND "Ultimo" "Presenta en pantalla ULTIMO registro encontrado." FETCH LAST johnn INTO datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no IF status = notfound THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT 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 DISPLAY BY NAME datos_gen.cod_mov,datos_gen.descrip_mov, datos_gen.num_doc,datos_gen.cod_sp,datos_gen.cod_sp_sec, datos_gen.orden_compra,datos_gen.nom_sp, datos_gen.fact_no COMMAND "Ver" CALL desplega() DISPLAY ARRAY movi3 TO s_movi1.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false GOTO vuelve1 END IF CLEAR FORM GOTO volver COMMAND "Retornar" EXIT MENU END MENU END FUNCTION FUNCTION desplega() DECLARE jhonn CURSOR FOR SELECT p.cod_n,p.cod_grupo,p.cod_tipo,p.cod_sec,p.cantidad_1,p.cantidad_2, k.unidad_med,k.descrip_esp FROM intb00001 k,intb00006 p WHERE p.num_doc = datos_gen.num_doc and p.cod_mov = datos_gen.cod_mov and p.cod_n = k.cod_n and p.cod_grupo = k.cod_grupo and p.cod_tipo = k.cod_tipo and p.cod_sec = k.cod_sec and p.status_t is null and k.status_t is null OPEN jhonn CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET idx = 1 FOREACH jhonn INTO movi[idx].* CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF IF STATUS = NOTFOUND THEN EXIT FOREACH RETURN END IF IF opera1 = "S" THEN LET movi[idx].cantidad_2 = movi[idx].cantidad_2 * -1 END IF LET movi3[idx].codigo = movi[idx].cod_n using "&", "-", movi[idx].cod_grupo using "&", "-", movi[idx].cod_tipo using "&&","-", movi[idx].cod_sec using "&&&" LET movi3[idx].cantidad_1 = movi[idx].cantidad_1 using "##,###,###.##" LET movi3[idx].cantidad_2 = movi[idx].cantidad_2 using "##,###,###.##" LET movi3[idx].unidad_med = movi[idx].unidad_med LET movi3[idx].descrip_esp = movi[idx].descrip_esp LET movi3[idx].diferencia = movi[idx].cantidad_1 - movi[idx].cantidad_2 using "##,###,###.##" LET idx = idx + 1 END FOREACH CALL set_count(idx - 1) END FUNCTION