292 lines
8.5 KiB
Plaintext
292 lines
8.5 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : CGPRMT016
|
|
OBJETIVO : Mantenimiento de Cheques de pago Seguro Medico
|
|
REALIZADO POR : Ing. Juan F. Soto
|
|
FECHA : Noviembre 19, 1996
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "cgprgb000.4gl"
|
|
DEFINE smtb13 RECORD LIKE smtb00013.*
|
|
|
|
DEFINE pago_seguro RECORD
|
|
numero LIKE cgtb00005.cheque_no,
|
|
cuenta_p LIKE cgtb00005.cuenta_no,
|
|
num_sol LIKE smtb00014.num_sol,
|
|
beneficia SMALLINT,
|
|
nombre CHAR(44),
|
|
fecha LIKE cgtb00005.fecha,
|
|
monto DECIMAL(12,2),
|
|
codigo LIKE tetb00003.codigo
|
|
END RECORD
|
|
|
|
DEFINE reclamaciones ARRAY[20] OF RECORD
|
|
num_serv LIKE smtb00014.num_serv,
|
|
valor LIKE smtb00014.valor_a_pagar
|
|
END RECORD
|
|
|
|
###### Funcion que adiciona informacion referente a la aplicacion de un pago
|
|
FUNCTION cgprmt016()
|
|
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 23
|
|
|
|
CALL pantalla()
|
|
OPEN FORM cgfmmt016 FROM "cgfmmt016"
|
|
DISPLAY FORM cgfmmt016
|
|
|
|
DISPLAY "cgprmt016" AT 4,3
|
|
DISPLAY "Registro De Cheques Seguro Medico" AT 6,27
|
|
|
|
MENU "Mant."
|
|
COMMAND "Adicionar"
|
|
"Presione ESC Para Grabar Ctrl-C Para Cancelar Ctrl-F Moverse en Pantalla"
|
|
LET int_flag = FALSE
|
|
CALL cgprad016()
|
|
COMMAND "Salir"
|
|
LET int_flag = FALSE
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION cgprad016()
|
|
LET hoy = TODAY
|
|
LABEL volver1:
|
|
INITIALIZE pago_seguro.* TO NULL
|
|
CLEAR FORM
|
|
LABEL volver:
|
|
IF opc = "S" OR opc IS NULL THEN
|
|
LET pago_seguro.nombre = NULL
|
|
LET pago_seguro.monto = NULL
|
|
LET opc = NULL
|
|
END IF
|
|
#### Aceptando los valores a insertar referentes al pago
|
|
LET pago_seguro.cuenta_p = "1106"
|
|
ERROR "Para Anular Cheques Presione <Ctrl-B>"
|
|
INPUT BY NAME pago_seguro.* WITHOUT DEFAULTS
|
|
ON KEY (CONTROL-B)
|
|
LET anula_seguro = "S"
|
|
CALL cgprmt015()
|
|
|
|
AFTER FIELD codigo
|
|
LET p_descrip = NULL
|
|
IF pago_seguro.codigo IS not NULL THEN
|
|
SELECT a.descripcion INTO p_descrip
|
|
FROM tetb00003 a
|
|
WHERE a.codigo = pago_seguro.codigo
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD codigo
|
|
END IF
|
|
DISPLAY BY NAME p_descrip
|
|
END IF
|
|
|
|
AFTER FIELD num_sol
|
|
##### Selecionando datos referentes al suplidor
|
|
IF pago_seguro.num_sol IS NOT NULL THEN
|
|
# Verifica Que La Cuenta Del Catalogo Este En La Tabla de Los Bancos
|
|
# Y Busca El Ultimo Numero De Secuencia
|
|
SELECT cheque_no INTO numero FROM cgtb00012
|
|
WHERE cuenta_no = pago_seguro.cuenta_p
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 205
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_p
|
|
END IF
|
|
LET numero = numero + 1
|
|
LET pago_seguro.numero = numero
|
|
DISPLAY BY NAME pago_seguro.numero
|
|
|
|
# Busca Los Datos Del Banco Como: Direccion, Telefono, Cuenta Bancaria
|
|
SELECT *INTO datos_ck.* FROM cgtb00012
|
|
WHERE cuenta_no = pago_seguro.cuenta_p
|
|
|
|
# Verifica Que La Solicitud Exista
|
|
SELECT a.*
|
|
INTO smtb13.*
|
|
FROM smtb00013 a
|
|
WHERE a.num_sol = pago_seguro.num_sol
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_sol
|
|
END IF
|
|
# Controla Que La Solicitud No Este Pagada
|
|
IF smtb13.cheque_no IS NOT NULL THEN
|
|
LET numero_msg = 363
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_sol
|
|
END IF
|
|
|
|
# Si La Solicitud Es Pagada A Un Empleado. Busca El Nombre Del Empleado En
|
|
# La Maestra De Asegurados Al Seguro Medico
|
|
IF smtb13.num_emp IS NOT NULL THEN
|
|
SELECT UNIQUE a.nombre
|
|
INTO pago_seguro.nombre
|
|
FROM adtb00021 a, smtb00012 b
|
|
WHERE (a.num_emp = b.num_emp) AND (a.cod_par = b.cod_par AND
|
|
a.sec_par=b.sec_par) AND (a.num_emp=smtb13.num_emp) AND
|
|
(a.cod_par = 0 AND a.sec_par = 0) AND (a.status_t IS NULL)
|
|
AND (b.status_t IS NULL)
|
|
|
|
LET pago_seguro.beneficia = smtb13.num_emp
|
|
END IF
|
|
|
|
# Si La Solicitud Es Hecha A Una Clinica. Busca El Nombre De La Clinica En
|
|
# La Maestra De Clinicas.
|
|
IF smtb13.cod_cli IS NOT NULL THEN
|
|
SELECT a.nom_cli INTO pago_seguro.nombre
|
|
FROM smtb00006 a
|
|
WHERE a.cod_cli = smtb13.cod_cli
|
|
LET pago_seguro.beneficia = smtb13.cod_cli
|
|
END IF
|
|
|
|
# Si La Solicitud Es Hecha A Un Medico. Busca El Nombre Del Medico En
|
|
# La Maestra De Medicos Afiliados.
|
|
IF smtb13.cod_med IS NOT NULL THEN
|
|
SELECT a.nom_med INTO pago_seguro.nombre
|
|
FROM smtb00007 a
|
|
WHERE a.cod_med = smtb13.cod_med
|
|
LET pago_seguro.beneficia = smtb13.cod_med
|
|
END IF
|
|
DISPLAY BY NAME pago_seguro.nombre
|
|
LET pago_seguro.monto = smtb13.monto
|
|
END IF
|
|
|
|
BEFORE FIELD fecha
|
|
LET pago_seguro.fecha = hoy
|
|
DISPLAY BY NAME pago_seguro.fecha
|
|
|
|
AFTER FIELD fecha
|
|
LET hoy = pago_seguro.fecha
|
|
IF pago_seguro.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
# Controla Que La Fecha Del Cheque Este Dentro De Los Periodos Contables.
|
|
LET p_fechas = pago_seguro.fecha
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
|
|
####### Creando la facilidad para cancelar proceso mediante CTRL-C
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
IF pago_seguro.monto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD monto
|
|
END IF
|
|
|
|
# Control Por Si La Secuencia Es Modificada Manualmente y Se Va A Duplicar
|
|
# Un Cheque.
|
|
SELECT UNIQUE cheque_no FROM cgtb00005
|
|
WHERE cheque_no = pago_seguro.numero and
|
|
cuenta_no = pago_seguro.cuenta_p
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
#--------------------------------------------------------------------
|
|
# Funcion que captura 5 lineas de detalles
|
|
CALL detallado()
|
|
#--------------------------------------------------------------------
|
|
|
|
PROMPT "Toda la Informacion Esta Correcta (S/N) ?" FOR char opc
|
|
LET opc = UPSHIFT(opc)
|
|
LET opc1 = "N"
|
|
IF opc = "S" THEN
|
|
|
|
LET opc1 = "S"
|
|
|
|
START REPORT cheque TO "cheques"
|
|
|
|
# ACTUALIZACION DE LA TABLA SOLICITUDES DE CHEQUES
|
|
UPDATE smtb00013 SET cheque_no = pago_seguro.numero,
|
|
us_mod = user,
|
|
fech_mod = current
|
|
WHERE num_sol = pago_seguro.num_sol AND
|
|
cheque_no IS NULL
|
|
|
|
# Actualizacion de la tabla datos generales del cheque
|
|
INSERT INTO cgtb00005 values
|
|
(pago_seguro.cuenta_p,pago_seguro.numero,NULL,pago_seguro.fecha,
|
|
pago_seguro.nombre ,0,pago_seguro.monto,opc1,
|
|
NULL,user,current,NULL,NULL)
|
|
|
|
# Actualizacion de la tabla control de los cheques
|
|
UPDATE cgtb00012 set cheque_no = pago_seguro.numero
|
|
WHERE cuenta_no = pago_seguro.cuenta_p
|
|
|
|
# Inserta los registros necesarios para la tabla de tesoreria
|
|
# Codigos de Partida
|
|
INSERT INTO tetb00006 values (pago_seguro.numero,pago_seguro.cuenta_p,
|
|
pago_seguro.codigo,NULL,user,current,NULL,NULL)
|
|
|
|
# Impresion del cheque de pago
|
|
FOR idx =1 TO 2
|
|
LET arr_cuenta1[idx].cuenta_no = null
|
|
LET arr_cuenta1[idx].departamento = null
|
|
LET arr_cuenta1[idx].cod_aux = null
|
|
LET arr_cuenta1[idx].cod_sec = null
|
|
LET arr_cuenta1[idx].num_doc = null
|
|
LET arr_cuenta1[idx].nom_cuenta = null
|
|
END FOR
|
|
LET recibo.tipo_doc = "CK"
|
|
LET recibo.cuenta_p = "1112"
|
|
LET recibo.numero = pago_seguro.numero
|
|
LET recibo.nom_sup = pago_seguro.nombre
|
|
LET recibo.fecha = pago_seguro.fecha
|
|
LET recibo.monto = pago_seguro.monto
|
|
LET recibo.codigo = pago_seguro.codigo
|
|
OUTPUT TO REPORT cheque(recibo.*,arr_cuenta1[1].*)
|
|
|
|
DISPLAY " " AT 1,1
|
|
FINISH REPORT cheque
|
|
ELSE
|
|
GOTO volver
|
|
END IF
|
|
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
# Impresion Fija Hacia La Impresora Secretaria de Finanzas O
|
|
# Impresora de Tesoreria
|
|
IF opc1 = "S" THEN
|
|
IF printer = 1 THEN
|
|
RUN "lp -dlpt33 $HOME/cheques"
|
|
ELSE
|
|
IF printer = 2 THEN
|
|
RUN "lp -dlpt12 $HOME/cheques"
|
|
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
END FUNCTION
|