Files
MBS/PROYECTO/cpdir/cpprcs003.4gl
T

244 lines
7.3 KiB
Plaintext

{
-----------------------------------------------------------------------------
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"
"<Esc> Busca Registro <Delete> 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"
"<Esc> Busca Registro <Delete> 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