{ ----------------------------------------------------------------------------- PROGRAMA : prprcs001 OBJETIVO : Consulta de Ordenes REALIZADO POR : Lic. Oscar Castillo FECHA : Saturday, July 22, 2000 ----------------------------------------------------------------------------- } GLOBALS "prprgb000.4gl" DEFINE balance2 DECIMAL(12,2), tipo_orden STRING DEFINE g_prtb09 RECORD tipo_cliente LIKE vetb00004.tipo_cliente, sec_cliente LIKE vetb00004.sec_cliente, num_oc LIKE prtb00009.num_oc, fecha LIKE prtb00009.fecha, pendiente LIKE prtb00009.pendiente END RECORD DEFINE p_nombre LIKE vetb00004.nombre, descrip_pend CHAR(10), detalle LIKE prtb00009.detalle DEFINE arr_prtb09 ARRAY[100] OF RECORD m_fecha LIKE prtb00009.fecha, hora LIKE prtb00009.fech_crea END RECORD 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 CALL prprcs001() END MAIN ###### Funcion que adiciona informacion referente a la aplicacion de un pago FUNCTION prprcs001() DEFINE porc_p DECIMAL(10,2) DEFINE emp SMALLINT DEFINE hoy DATE OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 22, PROMPT LINE 23 # CALL pantalla() OPEN FORM prfmcs001 FROM "prfmcs001" DISPLAY FORM prfmcs001 DISPLAY "prprcs001" AT 4,3 DISPLAY "Ordenes de Compra" AT 6,33 DISPLAY " CANCELA OPERACION" AT 2,5 ATTRIBUTE (BOLD) LET int_flag = FALSE DIALOG ATTRIBUTES(UNBUFFERED) INPUT BY NAME tipo_orden AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF END INPUT CONSTRUCT BY NAME criterio ON a.tipo_cliente,a.sec_cliente, a.num_oc,a.fecha_oc FROM tipo_cliente,sec_cliente, num_oc,fecha AFTER CONSTRUCT IF tipo_orden = 'N' THEN LET selec = " SELECT a.tipo_cliente,a.sec_cliente,a.num_oc, ", " a.fecha_oc,c.nombre,a.cotizacion_no ", " FROM prtb00012 a,vetb00004 c ", " WHERE a.tipo_cliente = c.tipo_cliente and ", " a.sec_cliente = c.sec_cliente AND a.cerrada ='N'", " AND ",criterio CLIPPED, " ORDER BY a.num_oc " END IF IF tipo_orden = 'S' THEN LET selec = " SELECT a.tipo_cliente,a.sec_cliente,a.num_oc, ", " a.fecha_oc,c.nombre,a.cotizacion_no ", " FROM prtb00012 a,vetb00004 c ", " WHERE a.tipo_cliente = c.tipo_cliente and ", " a.sec_cliente = c.sec_cliente AND a.cerrada ='N'", " AND ",criterio CLIPPED, " ORDER BY a.num_oc " END IF IF tipo_orden = 'T' THEN LET selec = " SELECT a.tipo_cliente,a.sec_cliente,a.num_oc, ", " a.fecha_oc,c.nombre,a.cotizacion_no ", " FROM prtb00012 a,vetb00004 c ", " WHERE a.tipo_cliente = c.tipo_cliente and ", " a.sec_cliente = c.sec_cliente ", " AND ",criterio CLIPPED, " ORDER BY a.num_oc " END IF END CONSTRUCT ON ACTION close RETURN EXIT DIALOG ON ACTION ejecuta PREPARE comando FROM selec DECLARE busca SCROLL CURSOR FOR comando OPEN busca END DIALOG FETCH FIRST busca INTO g_prtb09.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL buscando() MENU "Opcion" COMMAND "Siguiente" FETCH NEXT busca INTO g_prtb09.* IF STATUS = NOTFOUND THEN FETCH LAST busca INTO g_prtb09.* CALL buscando() LET numero_msg = 5 CALL msg(numero_msg) END IF CALL buscando() COMMAND "Anterior" FETCH PREVIOUS busca INTO g_prtb09.* IF STATUS = NOTFOUND THEN FETCH FIRST busca INTO g_prtb09.* CALL buscando() LET numero_msg = 5 CALL msg(numero_msg) END IF CALL buscando() COMMAND "Primero" FETCH FIRST busca INTO g_prtb09.* CALL buscando() LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Ultimo" FETCH LAST busca INTO g_prtb09.* CALL buscando() LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Ver" DECLARE busca1 SCROLL CURSOR FOR SELECT a.fecha,a.fech_crea FROM prtb00009 a WHERE a.num_oc = g_prtb09.num_oc AND a.status_t IS NULL ORDER BY 1 OPEN busca1 LET idx = 1 WHILE STATUS != NOTFOUND FETCH ABSOLUTE idx busca1 INTO arr_prtb09[idx].* IF STATUS = NOTFOUND THEN EXIT WHILE END IF LET idx = idx + 1 END WHILE CALL SET_COUNT(idx - 1) DISPLAY ARRAY arr_prtb09 TO s_orden.* AFTER ROW LET curr = arr_curr() SELECT a.detalle INTO detalle FROM prtb00009 a WHERE a.fecha = arr_prtb09[curr].m_fecha AND a.num_oc = g_prtb09.num_oc AND a.fech_crea = arr_prtb09[curr].hora DISPLAY BY NAME detalle AFTER DISPLAY EXIT DISPLAY END DISPLAY IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF COMMAND "Retornar" EXIT MENU END MENU END FUNCTION FUNCTION buscando() SELECT a.nombre INTO p_nombre FROM vetb00004 a WHERE a.tipo_cliente = g_prtb09.tipo_cliente AND a.sec_cliente = g_prtb09.sec_cliente AND a.status_t IS NULL IF g_prtb09.pendiente = "S" THEN LET descrip_pend = "ABIERTA" ELSE LET descrip_pend = "CERRADA" END IF DISPLAY BY NAME g_prtb09.*,p_nombre,descrip_pend END FUNCTION