{ ----------------------------------------------------------------------------- PROGRAMA : CPPRCS003 OBJETIVO : Consulta de Movimeinto de CXP REALIZADO POR : Tadeo A. Ferreras FECHA : Junio 27, 1993 ----------------------------------------------------------------------------- } GLOBALS "cpprgb000.4gl" DEFINE aplicar INTEGER DEFINE cod1_sp,cod1_sp_sec,p_orden SMALLINT DEFINE p_tipo CHAR(2) DEFINE val_pen,valor_fac1,valor2 DECIMAL(12,2) DEFINE nom_tipo CHAR(15) FUNCTION cpprcs003() OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 22, PROMPT LINE 23 CALL pantalla() OPEN FORM cpfmcs003 FROM "cpfmmt002" DISPLAY FORM cpfmcs003 DISPLAY "cpprcs003" AT 4,3 DISPLAY "Movimientos de Cuenta por Pagar" AT 6,24 MENU "OPCION" COMMAND "Consultar" " Busca Registro Cancela Operacion" CLEAR FORM CALL cppccs003() COMMAND "Salir" EXIT MENU END MENU END FUNCTION FUNCTION cppccs003() DEFINE usuario RECORD us_crea CHAR(9), fech_crea LIKE cptb00001.fech_crea END RECORD DEFINE tipo_doc CHAR(2) ##### Creando el criterio de busqueda INPUT BY NAME tipo_doc AFTER FIELD tipo_doc IF tipo_doc IS NULL OR tipo_doc = "FT" THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_doc END IF END INPUT CONSTRUCT CRITERIO ON b.num_doc,b.cod_sp,b.cod_sp_sec FROM num_doc,cod_sp,cod_sp_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF ###### Selecionando la informacion a modificar IF tipo_doc = "CP" THEN LET selec = "SELECT UNIQUE b.tipo_doc,b.num_doc,b.cta_ctble,b.cod_sp, ", " b.cod_sp_sec,b.fecha_orig,b.detalle ", "FROM cptb00001 b ", "WHERE b.tipo_doc = ? AND b.status_t is null AND ", " b.aplica_a IS NULL AND ",criterio clipped," ORDER BY 1,2" ELSE LET selec = "SELECT UNIQUE b.tipo_doc,b.num_doc,b.cta_ctble,b.cod_sp, ", " b.cod_sp_sec,b.fecha_orig,b.detalle ", "FROM cptb00001 b ", "WHERE b.tipo_doc = ? AND b.status_t is null AND ", criterio clipped," ORDER BY 1,2" END IF PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos USING tipo_doc FETCH FIRST datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ###### Selecionado datos referentes al suplidor SELECT nom_sp INTO nom_sup FROM cotb00001 WHERE cod_sp = recibo.cod_sp and cod_sp_sec = recibo.cod_sp_sec ###### Selecionando nombre de la cuenta a que afectara SELECT descripcion INTO nom_cuenta FROM cgtb00001 WHERE cuenta_no = recibo.cta_ctble DISPLAY BY NAME recibo.*,nom_sup,nom_cuenta LABEL vuelve: MENU "OPCION" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT nom_sp INTO nom_sup FROM cotb00001 WHERE cod_sp = recibo.cod_sp and cod_sp_sec = recibo.cod_sp_sec SELECT descripcion INTO nom_cuenta FROM cgtb00001 WHERE cuenta_no = recibo.cta_ctble DISPLAY BY NAME recibo.*,nom_sup,nom_cuenta COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT nom_sp INTO nom_sup FROM cotb00001 WHERE cod_sp = recibo.cod_sp and cod_sp_sec = recibo.cod_sp_sec SELECT descripcion INTO nom_cuenta FROM cgtb00001 WHERE cuenta_no = recibo.cta_ctble DISPLAY BY NAME recibo.*,nom_sup,nom_cuenta COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT nom_sp INTO nom_sup FROM cotb00001 WHERE cod_sp = recibo.cod_sp AND cod_sp_sec = recibo.cod_sp_sec SELECT descripcion INTO nom_cuenta FROM cgtb00001 WHERE cuenta_no = recibo.cta_ctble DISPLAY BY NAME recibo.*,nom_sup,nom_cuenta COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT nom_sp INTO nom_sup FROM cotb00001 WHERE cod_sp = recibo.cod_sp and cod_sp_sec = recibo.cod_sp_sec SELECT descripcion INTO nom_cuenta FROM cgtb00001 WHERE cuenta_no = recibo.cta_ctble DISPLAY BY NAME recibo.*,nom_sup,nom_cuenta COMMAND "Ver" " Busca Registro Cancela Operacion" ##### Buscando la informaciona desplegar en el arreglo IF recibo.tipo_doc = "CP" THEN DECLARE buscar1 CURSOR FOR SELECT a.tipo,a.orden_no,a.aplica_a,a.valor*-1 FROM cptb00001 a WHERE a.tipo_doc = recibo.tipo_doc and a.num_doc = recibo.num_doc AND a.cod_sp = recibo.cod_sp AND a.cod_sp_sec = recibo.cod_sp_sec AND a.status_t IS NULL AND a.aplica_a IS NULL ORDER BY 1 ELSE DECLARE buscar2 CURSOR FOR SELECT a.tipo,a.orden_no,a.aplica_a,valor*-1 FROM cptb00001 a WHERE a.tipo_doc = recibo.tipo_doc and a.num_doc = recibo.num_doc AND a.cod_sp = recibo.cod_sp AND a.cod_sp_sec = recibo.cod_sp_sec AND a.status_t IS NULL ORDER BY 1 END IF LET idx = 1 IF recibo.tipo_doc = "CP" THEN FOREACH buscar1 INTO arr_recibo[idx].* IF recibo.tipo_doc = "NC" THEN LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen * -1 END IF LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pen LET idx = idx + 1 END FOREACH ELSE FOREACH buscar2 INTO arr_recibo[idx].* LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pen LET idx = idx + 1 END FOREACH END IF CALL set_count(idx - 1) ##### Aceptando los valores que se digitaran en el arreglo DISPLAY ARRAY arr_recibo TO s_recibo.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF COMMAND "Retornar" CLEAR FORM EXIT MENU END MENU END FUNCTION