271 lines
8.5 KiB
Plaintext
271 lines
8.5 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : CCPRCS003
|
|
OBJETIVO : Consultas de Movimientos CXC
|
|
REALIZADO POR : JUAN SOTO
|
|
FECHA : Enero 26, 1997
|
|
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "ccprgb000.4gl"
|
|
|
|
DEFINE valor_cheque1,p_num_doc,aplicar INTEGER
|
|
DEFINE valor_nc,nc_pend,valor_ctrl,p_total,val_pen,valor2 DECIMAL(12,2)
|
|
DEFINE fecha1 DATE
|
|
DEFINE nombre_cta CHAR(30)
|
|
DEFINE tipo_doc1 CHAR(2)
|
|
DEFINE opc CHAR(1)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
CALL ARG_VAL(7) RETURNING strconect
|
|
|
|
|
|
IF strconect = 'marmotech' THEN
|
|
CONNECT to strconect USER 'conecta' USING 'conecta'
|
|
ELSE
|
|
CONNECT to strconect USER usuarios USING clave
|
|
|
|
END IF
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
CALL ccprcs003()
|
|
END MAIN
|
|
|
|
####### Funcion para agregar un recibo de pago
|
|
|
|
FUNCTION ccprcs003()
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 23
|
|
|
|
#CALL pantalla()
|
|
OPEN FORM ccfmcs003 FROM "ccfmcs003"
|
|
DISPLAY FORM ccfmcs003
|
|
DISPLAY "ccprcs003" AT 4,3
|
|
DISPLAY "Movimientos de CXC" AT 6,31
|
|
|
|
MENU "OPCION"
|
|
COMMAND "Consultar-modificar"
|
|
"<Esc> Busca Registro <Delete> Cancela Operacion"
|
|
CALL ccpccs003()
|
|
COMMAND "Salir" "Retorna Menu Anterior"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
|
|
## Funcion para consultar/modificar un recibo de pago
|
|
FUNCTION ccpccs003()
|
|
|
|
DEFINE usuario RECORD
|
|
us_crea CHAR(9),
|
|
fech_crea LIKE cctb00001.fech_crea
|
|
END RECORD
|
|
|
|
DIALOG ATTRIBUTES(UNBUFFERED, FIELD ORDER FORM)
|
|
## SE PREPARA EL CRITERIO PARA CONSULTAR/MODIFICAR UN REGISTRO
|
|
CONSTRUCT CRITERIO ON a.tipo_doc,a.num_doc,a.tipo_cliente,a.sec_cliente,
|
|
a.cod_emp_sec
|
|
FROM tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec
|
|
ON ACTION buscar
|
|
LET selec =
|
|
"SELECT UNIQUE a.tipo_doc,a.num_doc,a.tipo_cliente, ",
|
|
" a.sec_cliente,a.cod_emp_sec,CONVERT(CHAR(10),a.fecha_orig,103) ",
|
|
"FROM cctb00001 a ",
|
|
"WHERE ",criterio clipped,
|
|
" and a.tipo_doc NOT IN ('FE','FT','DE','PC') AND ",
|
|
" a.status_t is null ORDER BY CONVERT(CHAR(10),a.fecha_orig,103)"
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO recibo.*
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
CALL informacion()
|
|
|
|
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
|
|
|
|
CALL informacion()
|
|
|
|
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
|
|
|
|
CALL informacion()
|
|
|
|
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
|
|
|
|
CALL informacion()
|
|
|
|
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
|
|
|
|
CALL informacion()
|
|
|
|
COMMAND "Ver"
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
LET selec =
|
|
"SELECT a.num_doc,a.aplica_a,a.valor,a.monto_desc,a.valor FROM cctb00001 a ",
|
|
"WHERE a.tipo_cliente = ? and a.sec_cliente = ? and (a.tipo_doc = ? OR ",
|
|
" a.tipo_doc = 'DE') AND a.num_cheque = ? AND a.status_t IS NULL ",
|
|
" ORDER BY aplica_a,num_doc "
|
|
ELSE
|
|
LET selec =
|
|
"SELECT num_doc,aplica_a,valor,monto_desc,valor FROM cctb00001 ",
|
|
"WHERE tipo_cliente = ? and sec_cliente = ? and tipo_doc = ? AND ",
|
|
" num_cheque = ? AND status_t IS NULL ORDER BY num_doc,aplica_A "
|
|
END IF
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE buscar1 CURSOR FOR comando
|
|
OPEN buscar1 USING recibo.tipo_cliente,recibo.sec_cliente,recibo.tipo_doc,
|
|
recibo.num_doc
|
|
|
|
LET idx = 1
|
|
WHILE STATUS != NOTFOUND
|
|
FETCH buscar1 INTO arr_recibo[idx].*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF arr_recibo[idx].num_nc = recibo.num_doc THEN
|
|
LET arr_recibo[idx].num_nc = null
|
|
END IF
|
|
IF recibo.tipo_doc != "ND" OR recibo.tipo_doc='OD' THEN
|
|
LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen * -1
|
|
ELSE
|
|
IF arr_recibo[idx].valor_pen < 0 THEN
|
|
LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen *-1
|
|
END IF
|
|
END IF
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pen
|
|
LET arr_recibo[idx].valor_pen = 0
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
|
|
SELECT sum(valor+monto_desc) INTO valor2 FROM cctb00001
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente and
|
|
aplica_a = arr_recibo[idx].aplica_a and
|
|
status_t is null AND num_cheque = recibo.num_doc
|
|
|
|
LET arr_recibo[idx].valor_pen = valor2
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
|
|
CALL set_count(idx - 1)
|
|
|
|
## AQUI SE MODIFICAN/ACTUALIZAN LOS CAMPOS DEL ARREGLO
|
|
DISPLAY ARRAY arr_recibo TO s_recibo.*
|
|
ON ACTION productos
|
|
IF recibo.tipo_doc = 'ND' OR recibo.tipo_doc='OD' OR recibo.tipo_doc='NC' OR recibo.tipo_doc='OC' THEN
|
|
CALL productos(arr_recibo[arr_curr()].aplica_a)
|
|
END IF
|
|
AFTER DISPLAY
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
ON ACTION CANCEL
|
|
LET INT_FLAG=FALSE
|
|
EXIT PROGRAM
|
|
AFTER CONSTRUCT
|
|
|
|
END CONSTRUCT
|
|
END DIALOG
|
|
END FUNCTION
|
|
|
|
FUNCTION informacion()
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = "PG" AND
|
|
a.num_doc = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
|
|
SELECT SUM((a.valor)*-1) INTO valor_nc FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = "AV" AND
|
|
a.num_cheque = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
|
|
IF valor_nc IS NULL THEN
|
|
LET valor_nc = 0
|
|
END IF
|
|
|
|
LET valor_ctrl = valor_ctrl - valor_nc
|
|
ELSE
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = recibo.tipo_doc AND
|
|
a.num_cheque = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
END IF
|
|
|
|
IF valor_ctrl IS NULL THEN
|
|
LET valor_ctrl = 0
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" OR recibo.tipo_doc = 'OD' THEN
|
|
SELECT DISTINCT a.num_doc INTO pnum_doc FROM iptb00006 a
|
|
WHERE a.fact_no
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
IF valor_ctrl < 0 THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
END IF
|
|
END IF
|
|
|
|
SELECT nombre INTO nom_cli FROM vetb00004
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente
|
|
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,valor_ctrl,nombre_cta
|
|
|
|
END FUNCTION |