{ ----------------------------------------------------------------------------- PROGRAMA : CGPRCS001 OBJETIVO : Consulta de Cheques de pago REALIZADO POR : Juan Fco Soto FECHA : Mayo 26, 1993. ----------------------------------------------------------------------------- } GLOBALS "cgprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_compania.* FROM companias a CALL cgprcs001() END MAIN ###### Funcion que adiciona informacion referente a la aplicacion de un pago FUNCTION cgprcs001() OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 22, PROMPT LINE 23 CALL pantalla() OPEN FORM cgfmcs001 FROM "cgfmcs001" DISPLAY FORM cgfmcs001 DISPLAY "cgprcs001" AT 4,3 DISPLAY "Registro de Cheques" AT 6,30 MENU "Cons." COMMAND "Consultar" "Presione ESC Para Buscar Informacion Ctrl-C Para Cancelar " LET int_flag = FALSE CALL cgmod001() COMMAND "Salir" LET int_flag = FALSE EXIT MENU END MENU END FUNCTION FUNCTION cgmod001() CLEAR FORM CONSTRUCT criterio ON a.cheque_no,a.cuenta_no,a.portador FROM numero,cuenta_p,nom_sup IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET selec_p = "SELECT UNIQUE 'CK',a.cuenta_no,a.cheque_no,0,0,a.portador, ", " a.fecha,a.tasa,a.monto,c.codigo,' ' ", "FROM cgtb00005 a,outer tetb00006 c ", "WHERE (a.status_t IS NULL OR a.status_t='C') AND a.cheque_no=c.cheque_no and ", " a.cuenta_no = c.banco AND ",criterio CLIPPED, " ORDER BY 3 " PREPARE comando FROM selec_p DECLARE accion5 SCROLL CURSOR FOR comando OPEN accion5 FETCH FIRST accion5 INTO recibo.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF LET referencia = "CK.",recibo.numero USING "&&&&&&" SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2 FROM cgtb00004 a WHERE a.ref = referencia AND (a.status_t IS NULL OR a.status_t = 'C') AND a.cuenta_no = recibo.cuenta_p CALL procede() DISPLAY BY NAME recibo.*,p_descrip MENU "Consulta" COMMAND "Primero" FETCH FIRST accion5 INTO recibo.* LET referencia = "CK.",recibo.numero USING "&&&&&&" SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2 FROM cgtb00004 a WHERE a.ref = referencia AND a.status_t IS NULL AND a.cuenta_no = recibo.cuenta_p CALL procede() DISPLAY BY NAME recibo.*,p_descrip LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Siguiente" FETCH NEXT accion5 INTO recibo.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2 FROM cgtb00004 a WHERE (a.ref = referencia) AND (a.cuenta_no = recibo.cuenta_p) CALL procede() DISPLAY BY NAME recibo.*,p_descrip COMMAND "Anterior" FETCH PREVIOUS accion5 INTO recibo.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF LET referencia = "CK.",recibo.numero USING "&&&&&&" SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2 FROM cgtb00004 a WHERE a.ref = referencia AND a.cuenta_no = recibo.cuenta_p CALL procede() DISPLAY BY NAME recibo.*,p_descrip COMMAND "Ultimo" FETCH LAST accion5 INTO recibo.* LET referencia = "CK.",recibo.numero USING "&&&&&&" SELECT UNIQUE a.detalle_1,a.detalle_2 INTO detalle_1,detalle_2 FROM cgtb00004 a WHERE a.ref = referencia AND a.cuenta_no = recibo.cuenta_p CALL procede() DISPLAY BY NAME recibo.*,p_descrip LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Ver" "Ver Informacion de las Cuentas Contables o Transacciones Cuentas por Pagar" ####### Creando la facilidad para cancelar proceso mediante DELETE o SUPR IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET numero1 = recibo.numero USING "<<<<<<<" DECLARE buscara CURSOR FOR SELECT b.tipo,b.orden_no,b.aplica_a,b.valor*-1,b.valor*-1 FROM cptb00001 b WHERE b.status_t IS NULL AND b.num_doc = numero1 AND b.tipo_doc = recibo.tipo_doc AND b.cta_ctble = recibo.cuenta_p LET idx = 1 LET i = 0 FOREACH buscara INTO arr_recibo[idx].* LET arr_recibo[idx].valor_pen = 0 LET idx = idx + 1 LET i = i + 1 END FOREACH CALL SET_COUNT(idx -1) IF i = 0 THEN LET existe = "N" END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF IF idx > 1 THEN DISPLAY ARRAY arr_recibo TO s_recibo.* END IF LET referencia = "CK.",recibo.numero USING "&&&&&&" DECLARE buscara1 CURSOR FOR SELECT c.cuenta_no,c.departamento,c.cod_aux,c.cod_sec,c.num_doc,d.descripcion, c.debito,c.credito FROM cgtb00004 c,cgtb00001 d WHERE c.cuenta_no = d.cuenta_no AND c.ref = referencia AND c.detalles LIKE recibo.cuenta_p AND d.status_t IS NULL AND c.cuenta_no NOT IN (recibo.cuenta_p) LET idx = 1 FOREACH buscara1 INTO arr_cuenta1[idx].* LET idx = idx + 1 END FOREACH CALL SET_COUNT(idx - 1) DISPLAY ARRAY arr_cuenta1 TO s_cuenta.* 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 # Funcion para buscar la descripcion de la procedencia FUNCTION procede() SELECT descripcion INTO p_descrip FROM tetb00003 WHERE @codigo = recibo.codigo DISPLAY BY NAME p_descrip END FUNCTION