{ ----------------------------------------------------------------------------- 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 " 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