{ ----------------------------------------------------------------------- PROGRAMA : IPPRCS001 OBJETIVO : Programa Consulta Movimientos Productos: Reporte de Entrada. PROGRAMADOR : Juan Fco. Soto FECHA REALIZACION : AGOSTO 1997 ASESOR : JOSE ALFREDO PAULINO ----------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" FUNCTION ipprcs001() DEFINE idx1 SMALLINT DEFINE voy CHAR(1) 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 "E L E C T R O D O M E S T I C O S J U V I R" AT 3,19 ATTRIBUTE (REVERSE,BLUE) DISPLAY fecha1 AT 3,70 ATTRIBUTE (BLUE) DISPLAY hora1 AT 4,73 ATTRIBUTE (BLUE) DISPLAY "Consulta Reporte de Entrada" at 4,26 DISPLAY " Ejecuta Consulta " AT 5,2 ATTRIBUTE (BLUE,REVERSE) DISPLAY " Cancela Operacion" AT 5,57 ATTRIBUTE (BLUE,REVERSE) DISPLAY "ipprcs001" AT 3,2 ATTRIBUTE (BLUE) OPEN FORM ipfmcs001 FROM "ipfmcs001" DISPLAY FORM ipfmcs001 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,c.nom_sp, ", " a.fact_no,a.conduce_no, a.fecha ", "FROM iptb00006 a,iptb00005 b,OUTER cotb00001 c ", "WHERE ", criterio clipped," and c.cod_sp = a.cod_sp ", " and c.cod_sp_sec = a.cod_sp_sec ", " and a.cod_mov = b.cod_mov and a.cod_mov < 30 ", " and a.status_t is null 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.nom_sp, 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 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 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 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 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 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 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 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,datos_gen.conduce_no, datos_gen.fecha IF status = notfound THEN LET numero_msg = 4 CALL msg(numero_msg) END IF 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 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 COMMAND "Retornar" EXIT MENU END MENU GOTO volver 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 iptb00002 k,iptb00006 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].*,descrip1 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 movi[idx].descrip_esp = movi[idx].descrip_esp CLIPPED 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 LET idx = idx + 1 END FOREACH CALL set_count(idx - 1) END FUNCTION