Files
MBS/PROYECTO/cgdir/cgprmt016.4gl
T

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