Logo Studenta

Anualidades-y-programacion-como-una-solucion-a-la-distribucion-de-intereses-en-fondo-de-ahorro

¡Este material tiene más páginas!

Vista previa del material en texto

UNAM – Dirección General de Bibliotecas 
Tesis Digitales 
Restricciones de uso 
 
DERECHOS RESERVADOS © 
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL 
 
Todo el material contenido en esta tesis esta protegido por la Ley Federal 
del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). 
El uso de imágenes, fragmentos de videos, y demás material que sea 
objeto de protección de los derechos de autor, será exclusivamente para 
fines educativos e informativos y deberá citar la fuente donde la obtuvo 
mencionando el autor o autores. Cualquier uso distinto como el lucro, 
reproducción, edición o modificación, será perseguido y sancionado por el 
respectivo titular de los Derechos de Autor. 
 
 
 
 
1.Datos del alumno 
Apellido paterno 
Apellido materno 
Nombre(s) 
Teléfono 
Universidad Nacional Autónoma de México 
Facultad de Ciencias 
Carrera 
Número de cuenta 
1. Datos del alumno 
Muñoz 
Gómez 
Fernando 
56 06 76 55 
Universidad Nacional Autónoma de México 
Facultad de Ciencias 
Actuaría 
081417047 
2. Datos del tutor 
Grado 
Nombre(s) 
Apellido paterno 
Apellido materno 
2. Datos del tutor 
M en C 
Paulo Máximo 
Gutiérrez 
González 
3. Datos del sinodal 1 
Grado 
Nombre(s) 
Apellido paterno 
Apellido materno 
3. Datos del sinodal 1 
Act 
María Aurora 
Valdés 
Michell 
4. Datos del sinodal 2 
Grado 
Nombre(s) 
Apellido paterno 
Apellido materno 
4. Datos del sinodal 2 
Act 
Benigna 
Cuevas 
Pinzón 
5 Datos del sinodal 3 
Grado 
Nombre(s) 
Apellido paterno 
Apellido materno 
5. Datos del sinodal 3 
Act 
José Carlos 
Del Razo 
Domínguez 
6. Datos del sinodal 4 
Grado 
Nombre(s) 
Apellido paterno 
Apellido materno 
6. Datos del sinodal 4 
Act 
José Luis 
Carrasco 
Hernández 
7 Datos del trabajo escrito 
Título 
 
 
Número de páginas 
Año 
7. Datos del trabajo escrito 
Anualidades y programación como una 
solución a la distribución de intereses en fondo 
de ahorro 
61 p 
2006 
Dedicatoria 
 
 
A mi padre Guillermo Muñoz Ordaz a quién le debo la mayoría de las lecciones que 
forjaron no solo mi carácter sino también mi modo de ver, entender y regir mi vida, así 
como el gusto que despertó en mi por la lectura. 
 
A mi madre Carmen Gómez Sánchez porque con sus cuidados, dedicación y apoyo 
incondicional me enseñó a apreciar el valor de una familia así como a disfrutar las cosas 
simples de la vida. 
 
A ambos por estar conmigo en todos los momentos significativos de mi vida. 
 
A mis hermanos Efrén, Carmen, Jesús, Martha, Francisco y Consuelo por su 
compañía, sus bromas y sus consejos. Y sobre todo porque tuve la fortuna de que fueran 
mis hermanos. 
 
A mi esposa Silvia Guadalupe Contreras Becerra por haber aceptado acompañarme en 
la aventura más grande de mi vida, la de formar mi propia familia. Además de llenar 
mis días de amor y comprensión. 
 
A mis hijos, Alejandra y Luis por ser fuente de mi inspiración y darme las dichas más 
grandes con solo decir papá. 
 
A mis amigas Angélica y Norma porque aunque pasen los años me siguen brindando su 
amistad irrestricta como el primer día. 
 
A mi amigo Luis Bayo por saber escucharme y ser confidente de todas mis correrías 
universitarias. 
 
A todos ellos les dedico este breve trabajo como un homenaje por todo lo que he 
aprendido y recibido de ellos. 
Agradecimientos 
 
Cuando se pretende hacer las cosas bien hechas, se busca la ayuda y asesoría de 
personas con un alto grado de experiencia y un conocimiento técnico especializado. 
 
Sin embargo cuando además se quiere que esas mismas cosas sean perfectas, amén de lo 
anterior se requiere que los involucrados pongan el corazón en cada una de las partes 
del proyecto en cuestión. 
 
Hoy, tengo la fortuna de agradecer esa participación a las siguientes personas: 
 
Al M. en C. Paulo Máximo Gutiérrez González por haber dirigido esta tesis y por sus 
acertados comentarios para llevar a feliz termino el trabajo. 
 
A mis sinodales Act. Aurora Valdés Michell, Act. Benigna Cuevas Pinzón, Act. José 
Carlos del Razo Domínguez y Act. José Luis Carrasco Hernández por su invaluable 
ayuda y por todo el tiempo que invirtieron en asesorarme y revisar este trabajo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ANUALIDADES Y PROGRAMACION COMO UNA SOLUCION A LA 
DISTRIBUCION DE INTERESES EN FONDO DE AHORRO 
 
 
INDICE 
 
Dedicatoria 
Agradecimientos 
Introducción 
 
Capítulo I. Una situación real 
 1.1. El ahorro como beneficio empresarial. 1 
 1.2. Fundamentos legales. 2 
1.3 Un conflicto de intereses. 5 
 
Capítulo II. Anualidades 
2.1 Anualidades. 7 
2.2 Desarrollo y justificación de la solución. 19 
 
Capítulo III. La programación como complemento de la solución 
3.1 Definición de un sistema para solucionar el problema. 22 
3.2 Especificación de los menús necesarios para la aplicación. 25 
 
Capítulo IV. Parte técnica 
4.1 Selección base de datos y ambiente de desarrollo. 31 
4.2 Definición de estructura de base de datos. 36 
 
Capítulo V. Desarrollo 
 5.1 Codificación de la aplicación. 40 
 5.2 Pruebas de funcionalidad. 54 
 
Capitulo VI. Un sistema en producción 
6.1 Consideraciones finales. 57 
6.2 Conclusiones 58 
 
Apéndice 60 
Bibliografía 61 
Introducción 
 
Ante la necesidad de ser cada día más eficientes y poder dar cumplimiento de manera 
práctica y equitativa a la distribución intereses en los planes de fondo de ahorro, me 
permito presentar esta propuesta de trabajo como una posible solución al problema. 
 
Con esta propuesta intento llevar a la práctica una pequeña parte de algo que nos 
enseñan todos los días en las aulas, la aplicación de un modelo sencillo para resolver un 
problema de manera equitativa y soportado en la teoría de las matemáticas financieras. 
 
En esta solución combino la aplicación de las matemáticas financieras con otra 
herramienta muy poderosa, la programación de computadoras. 
 
Cuando me planteé por primera vez el problema de la distribución de intereses, lo 
intenté resolver de una manera tradicional, es decir calculando los intereses a través de 
interés compuesto. Resolverlo así, hubiera sido quizás la forma más sencilla de hacerlo, 
pero mientras más consideraba las formas de ahorro, las maneras de integrarse las 
personas al grupo de ahorradores y la manera en que se liquidaba el ejercicio noté para 
mi sorpresa que se asemejaba a un ejercicio de anualidades. 
 
Así, con esta idea en mente, regresé a documentarme y hoy tengo el orgullo de 
presentarles esta aplicación, en la que de una manera simple se ataca un problema que 
aqueja a muchas empresas y que puede ser resuelto mediante un programa que aplique 
anualidades, con un alto grado de certeza en la distribución justa de los intereses de 
acuerdo al tiempo y ahorro que cada persona del grupo haya realizado. 
 
 
Capítulo I 
 
El ahorro como beneficio empresarial. 
 
El fondo de ahorro es una prestación de previsión social que las compañías ofrecen 
como parte de su paquete de compensaciones con el claro objetivo de mantener o atraer 
a sus trabajadores. 
 
La finalidad de dicha prestación es la de promover el ahorro entre los trabajadores para 
ayudarlos a afrontar cualquier eventualidad de carácter económico en el futuro. 
 
Un punto adicional que fomenta el ahorro es el hecho de que por cada peso que aporta 
el empleado, el patrón aporta la misma cantidad, de esta forma al final del ejercicio se 
tiene el doble de la cantidadahorrada más los intereses generados. 
 
Sin embargo, debido a los beneficios que ofrece el ahorro y para evitar que se desvirtúe 
el sentido de la prestación, la ley regula tanto la cantidad que se debe de ahorrar como el 
tipo de inversión a la que se puede someter este ahorro. 
 
Así tenemos que el ahorro máximo que puede realizar el empleado no puede ser mayor 
al trece por ciento de diez veces el salario mínimo anualizado, y el monto de ahorro se 
deberá invertir en documentos de riesgo mínimo con rendimiento garantizado. 
 
El tratamiento fiscal está contemplado en las siguientes leyes: Ley del Impuesto sobre la 
Renta (LISR) y, la Ley del Seguro Social (LSS). 
 
Fundamentos legales. 
 
La ley del seguro social indica en su artículo 27 en el inciso II lo siguiente respecto al 
fondo de ahorro. 
 
Art. 27.- Para los efectos de esta Ley, se excluyen como integrantes del salario base de 
cotización, dada su naturaleza, los siguientes conceptos: 
 
 II. El ahorro, cuando se integre por un depósito de cantidad semanaria, quincenal o 
mensual igual del trabajador y de la empresa; si se constituye en forma diversa o puede 
el trabajador retirarlo más de dos veces al año, integrará salario; tampoco se tomarán en 
cuenta las cantidades otorgadas por el patrón para fines sociales de carácter 
sindical. 
 
La ley del impuesto sobre la renta establece ciertas regulaciones para hacer deducible el 
fondo de ahorro en su artículo 31 inciso XII. 
 
XII. Que cuando se trate de gastos de previsión social, las prestaciones 
correspondientes se otorguen en forma general en beneficio de todos los trabajadores. 
 
Para estos efectos, tratándose de trabajadores sindicalizados se considera que las 
prestaciones de previsión social se otorgan de manera general cuando las mismas se 
establecen de acuerdo a los contratos colectivos de trabajo o contratos ley. 
 
Cuando una persona moral tenga dos o más sindicatos, se considera que las prestaciones 
de previsión social se otorgan de manera general siempre que se otorguen de acuerdo 
con los contratos colectivos de trabajo o contratos ley y sean las mismas para todos los 
trabajadores del mismo sindicato, aun cuando éstas sean distintas en relación con las 
otorgadas a los trabajadores de otros sindicatos de la propia persona moral, de acuerdo 
con sus contratos colectivos de trabajo o contratos ley. 
 
Tratándose de trabajadores no sindicalizados, se considera que las prestaciones de 
previsión social son generales cuando se otorguen las mismas prestaciones a todos ellos 
y siempre que las erogaciones deducibles que se efectúen por este concepto, excluidas 
las aportaciones de seguridad social, sean en promedio aritmético por cada trabajador no 
sindicalizado, en un monto igual o menor que las erogaciones deducibles por el mismo 
concepto, excluidas las aportaciones de seguridad social, efectuadas por cada trabajador 
sindicalizado. A falta de trabajadores sindicalizados, se cumple con lo establecido en 
este párrafo cuando se esté a lo dispuesto en el último párrafo de esta fracción. 
 
En el caso de las aportaciones a los fondos de ahorro, éstas sólo serán deducibles 
cuando, además de ser generales en los términos de los tres párrafos anteriores, el 
monto de las aportaciones efectuadas por el contribuyente sea igual al monto aportado 
por los trabajadores, la aportación del contribuyente no exceda del trece por ciento del 
salario del trabajador, sin que en ningún caso dicha aportación exceda del monto 
equivalente de 1.3 veces el salario mínimo general del área geográfica que corresponda 
al trabajador, elevado al año y siempre que se cumplan los requisitos de permanencia 
que se establezcan en el Reglamento de esta Ley. 
 
 
El reglamento del impuesto sobre la renta establece que: 
Artículo 42. Las aportaciones que efectúen los contribuyentes a fondos de ahorro, en los 
términos de la fracción XII del artículo 31 de la Ley, serán deducibles cuando se ajusten 
a los plazos y requisitos siguientes: 
I. Que el plan establezca que el trabajador pueda retirar las aportaciones de que se trata, 
únicamente al término de la relación de trabajo o una vez por año. 
II. Que el fondo se destine a otorgar préstamos a los trabajadores participantes y el 
remanente se invierta en valores a cargo del Gobierno Federal inscritos en el Registro 
Nacional de Valores, así como en títulos valor que se coloquen entre el gran público 
inversionista o en valores de renta fija que el SAT determine. 
III. Que en el caso de préstamos otorgados a trabajadores que tengan como garantía las 
aportaciones del fondo, dichos préstamos no excedan del monto que el trabajador tenga 
en el fondo, siempre que dichos préstamos sean otorgados una vez al año. Cuando se 
otorgue más de un préstamo al año, las aportaciones que se efectúen al fondo de ahorro 
serán deducibles, siempre que el último préstamo que se hubiera otorgado al mismo 
trabajador se haya pagado en su totalidad y siempre que haya transcurrido como mínimo 
seis meses desde que se cubrió la totalidad de dicho préstamo. 
 
 
 
Un conflicto de intereses. 
 
Un ejercicio típico de fondo de ahorro tiene una duración de un año. En ese lapso 
ocurren diversos eventos entre los cuales tenemos, el ingreso de nuevos elementos al 
plan (contrataciones), la baja de participantes (liquidaciones) y el retiro semestral del 
fondo de ahorro. 
 
Bajo esta situación ocurre que al finalizar el plan anual nos encontramos con varios 
empleados que durante el año consiguieron ahorrar la misma cantidad pero, su ingreso 
al fondo ocurrió en diferentes periodos del año. Así la cuestión es: Dado que su ahorro 
es idéntico, ¿Les corresponde el mismo interés a cada uno de ellos? 
 
Desafortunadamente, la ley regula y establece como se debe de invertir el fondo de 
ahorro pero no hace ninguna observación respecto al reparto de los intereses y es justo 
en este punto donde encontramos que la práctica más común es distribuirlos de manera 
proporcional al ahorro de las personas. 
 
Desde los primeros semestres de la carrera aprendemos que esto no es, por mucho la 
mejor forma de hacerlo, de hecho se podría aplicar una fórmula de interés compuesto y 
seguramente obtendríamos un resultado apropiado para la distribución de las ganancias. 
 
Sin embargo, el modelo del fondo de ahorro o de una caja de ahorros, se adapta a algo 
más conocido por los actuarios, las anualidades. 
 
Y es en este tenor que presento este trabajo como una propuesta en la que pretendo de 
una manera muy simple encontrar una aplicación a un poco de la teoría aprendida en las 
aulas para resolver un problema de índole ordinaria. 
 
Así, imaginemos un ejercicio con los siguientes supuestos: 
En una cierta empresa se tiene dos empleados que ahorraron exactamente el mismo 
importe, sin embargo, uno de ellos se incorporó a la empresa justo a la mitad del año. 
Dado que los dos ahorraron el mismo importe, ¿Les corresponde la misma cantidad de 
interés?, Existe otro empleado, que ahorró el doble de dinero que ambos, ¿Cómo se 
debe de comportar el interés generado?, ¿Será proporcional? 
Capítulo II 
 
Anualidades 
 
Comencemos por introducirnos a los conceptos de anualidades. 
En matemáticas financieras, la expresión anualidad se emplea para indicar el sistema de 
pago de sumas fijas, a intervalos iguales de tiempo. Se usa la palabra anualidad, que en 
un sentido propio de las finanzas no significa pagos anuales sino pagos a intervalos 
regulares de tiempo, en virtud de que en las anualidades contingentes interviene la 
probabilidad de vida anual de las personas. Así, son anualidades los dividendos sobre 
acciones, los fondos de amortización, los pagos de plazos, los pagos periódicos de las 
compañías de seguro y, en forma más general, los sueldos y todo tipo de rentas son 
anualidades. La expresión anualidad puede cambiarse por el de rentas, pagos periódicos, 
amortizacionesu otros, según el caso y las costumbres locales. Nosotros conservamos el 
nombre de anualidad para el estudio general de todo tipo de pagos periódicos. 
 
Una anualidad es una sucesión de pagos periódicos iguales. Si los pagos son diferentes 
o alguno de ellos es diferente los demás, la anualidad toma, según el caso, los nombres 
de anualidades variables o anualidades impropias. 
 
Los factores financieros que intervienen en las anualidades y sus formas de pago 
determinan diferentes tipos de anualidades. Para su estudio ordenado, es necesario 
clasificarlas y definirlas. 
 
A continuación definimos los elementos que integran a una anualidad. 
La renta es el valor de cada pago periódico. 
El tiempo que se fija entre dos pagos sucesivos es denominado como período de pago o 
período de la renta. 
El intervalo de tiempo que transcurre entre el primer período de pago y el final del 
último es el tiempo o plazo de una anualidad. 
La suma de los pagos hechos en un año es la renta anual. 
 El tipo el interés que se fija es la tasa de una anualidad y puede ser nominal o efectiva. 
Según su tiempo, las anualidades se agrupan en dos clases: anualidades ciertas y 
anualidades eventuales o contingentes. 
Son anualidades ciertas aquellas anualidades cuyas fechas, inicial y terminal, se 
conocen por estar estipuladas en forma concreta. Anualidades contingentes son aquellas 
en las que el primer pago o el último, es decir, la fecha inicial y/o la fecha final depende 
de algún suceso previsible, pero cuya fecha de realización no puede fijarse. 
 
Las anualidades perpetuas son una variación de las anualidades ciertas, en las que la 
duración del pago es ilimitada. 
Según la forma en que se estipule el pago de la renta o anualidad, se originan las 
anualidades ordinarias o vencidas y las anualidades anticipadas. 
Una anualidad es ordinaria o vencida, si el pago de la renta se hace al final del período 
de pago. 
Es anticipada, si el pago se efectúa al principio de período de pago. 
De acuerdo con las definiciones anteriores, las anualidades se clasifican de la siguiente 
forma: 
 
Anualidades Ciertas 
Ordinarias o vencidas Anticipadas 
Diferidas Diferidas 
Perpetuas Perpetuas 
Perpetuas Diferidas Perpetuas Diferidas 
Anualidades Eventuales o Contingentes 
Diferidas Diferidas 
Perpetuas Perpetuas 
Perpetuas Diferidas Perpetuas Diferidas 
 
Cada una de las distintas formas de anualidades presenta variantes en la forma de 
calcular sus valores, según el número de pagos en el año y número de períodos de 
capitalizaciones anuales que estipule el tipo de interés. Tengamos también en cuenta 
que otra forma de encontrar las anualidades es en forma creciente y decreciente. 
Si el período de capitalización coincide con el período de pago, se dice que las 
anualidades son anualidades simples. 
 
Es decir, las anualidades simples son aquellas cuyo período de pago coincide con el 
período de capitalización. 
El valor de una anualidad calculado a su terminación es el monto de ella. 
El valor de la anualidad calculado a su comienzo es su valor actual o presente. 
Estos valores pueden, también, calcularse en fechas intermedias; en tal caso, se refiere 
a: monto de la parte vencida o valor actual de las anualidades por vencer. 
 
Monto y Valor Actual de las Anualidades Simples Ciertas Ordinarias. 
Este tipo de anualidad es el más frecuente y, por esto, cuando se dice simplemente 
anualidad, se supone que se trata de una anualidad simple cierta ordinaria. La tasa de 
interés es, por lo general, una tasa de interés nominal anual. En caso de que la tasa no 
sea nominal, se aclarará diciendo tasa efectiva anual. Si la tasa dada es nominal, sin 
especificación de período de capitalización, la tasa efectiva en el período de pago es el 
cociente entre la tasa nominal y el número anual de pagos. 
Símbolos que se utilizan en las anualidades 
R = pago periódico de una anualidad o renta. 
i = tasa efectiva por período de capitalización. 
j = tasa nominal anual. 
m = número de capitalizaciones en el año. 
j(m) = tasa nominal con m períodos de capitalización en el año. 
n = número de períodos de pago. 
S = monto de una anualidad. 
A = valor actual o presente de una anualidad. 
 
Cálculo del monto… Los pagos R efectuados al final de cada período ganan interés 
compuesto, hasta la fecha final. Estableciendo la ecuación de equivalencia para la fecha 
final como fecha focal, tendremos: 
 
 
Cada pago efectuado al final de período capitaliza los intereses en cada uno de los 
períodos que le siguen. El primer pago acumula durante (n – 1) períodos, el segundo (n 
– 2) períodos y, así, sucesivamente hasta el último pago que no gana intereses, ya que su 
pago coincide con la fecha de término. 
Los montos respectivos de los pagos R comenzando por el último serán 
R, R(1 + i), R(1 + i)
2
,…,R(1 + i)
 n-2
 + R(1+ i)
 n-1
. 
El monto total S de la anualidad es igual a la suma de los montos producidos por las 
distintas rentas R, o sea: 
S = R + R(1+i) + R(1+i)
2 + … + 
R(1+i)
n-2 + 
R(1+i)
n-1
 
Los términos del segundo miembro forman una progresión geométrica en n términos, 
razón (1 + i) y primer término R. De donde se tiene que 
S = R {[(1+i)
n 
–1] / i} 
Si el valor de cada pago R es de una unidad monetaria, el monto S corresponderá al 
monto de una anualidad de uno por período y se expresa con el símbolo 
De donde obtenemos que 
Y por lo tanto 
 
 
Valor actual o presente de una anualidad es aquella cantidad A de dinero que con sus 
intereses compuestos, en el tiempo de la anualidad, dará un monto equivalente al monto 
de la anualidad. 
Formando la ecuación de equivalencia y utilizando como fecha focal de fecha final, se 
tiene: A (1+i)
n 
 = S 
De donde podemos inferir que 
Y por tanto el valor de A sería 
Simplificando obtenemos 
 
Si el valor de cada pago R es de una unidad monetaria, el valor actual A es el valor 
actual de una anualidad de 1 por período y se expresa con el símbolo 
De donde se obtiene que 
 
Y por lo tanto 
 
 
 
 
Anualidades Anticipadas 
 
En los negocios, es frecuente que los pagos periódicos se efectúen al comienzo de cada 
período; tal es el caso de la renta de terrenos, edificios y oficinas, cuyo alquiler se paga 
a principio de período. Las ventas a plazos suelen estipular una serie de pagos al 
comienzo de los períodos convenidos en el contrato de venta. En los seguros ya sean 
dotales, de vida o de protección contra riesgos, las pólizas, por lo general, estipulan que 
el asegurado debe pagar sus cuotas o primas de seguro, al comienzo de cada período. En 
estos casos se usa la expresión “El pago vence a principio del período”. 
Una anualidad anticipada o inmediata es una sucesión de pagos o rentas que se efectúan 
o vencen, al principio del período de pago. 
 
El simbolismo de uso más generalizado y, a su vez, recomendado por la Asociación 
Internacional de Actuarios, consiste en utilizar con diéresis los mismos símbolos que se 
utiliza en las anualidades vencidas, conservando su definición. 
 
En esta parte explicaremos las anualidades simples ciertas anticipadas. 
 Para comparar las anualidades anticipadas, con las anualidades vencidas es muy útil el 
siguiente diagrama. Supongamos pagos unitarios. 
 
Observamos que, al agregar un último pago adicional tendríamos una anualidad vencida 
pagada durante n + 1 periodos, por lo tanto su monto sería 
Si restamos el valor del último pago R, entonces tendríamos que la igualdad sería 
 
 
Anualidades Diferidas 
 
En los negocios, es frecuente que algunas circunstancias obliguen a que el primer 
período de pago comience en una fecha futura, hasta después de transcurrido un cierto 
tiempo desde el momento inicial o de convenio. Es decir no coincide la fecha inicial de 
la anualidad, con la fecha del primer pago. En estos casos, se dice que la anualidad es 
diferida.En otras palabras una anualidad diferida es una anualidad cuyo plazo comienza después 
de transcurrido un intervalo de tiempo. 
Y el intervalo de aplazamiento es el tiempo que transcurre entre la fecha inicial, o fecha 
de valoración de la anualidad, y la fecha del primer pago. 
Para medir el intervalo de aplazamiento, se utiliza como unidad el tiempo que 
corresponde a un período de pago. 
Por lo general, las anualidades diferidas se analizan como anualidades ordinarias o 
vencidas; de manera que, en la realidad, al hablar de una anualidad diferida, se supone 
que es vencida. 
Los símbolos utilizados en las anualidades diferidas tienen el mismo significado, que 
los utilizados en las anualidades que ya hemos mencionado. 
Algunos autores separan para su análisis dos grupos de anualidades diferidas; las 
anualidades diferidas vencidas y las anualidades diferidas anticipadas, y utilizan los 
símbolos 
 
para expresar, respectivamente, el valor actual y el monto de una anualidad diferida 
vencida de una unidad monetaria por período, diferida en su pago k períodos y pagadera 
durante n períodos, a la tasa i por período. Para las anualidades diferidas anticipada, 
utilizan los mimos símbolos, con diéresis o encerrados en un recuadro. 
Anualidades Ciertas. Caso General 
 
En realidad, en la práctica, la mayoría de las operaciones comerciales y financieras que 
implican anualidades, tienen un período de capitalización igual al período de pago, es 
decir, son anualidades simples. En los casos en que no hay coincidencia entre el período 
de pago y el de capitalización, se dice que es una anualidad general. 
Por tanto tenemos que una anualidad general es aquella cuyos períodos de pago y 
capitalización no son iguales. 
Todas las definiciones dadas para las distintas clases de anualidades y sus diferentes 
tipos son válidas, para las anualidades generales. También, son válidas para las 
anualidades generales las definiciones de los valores de las anualidades simples, en 
lugar de dar fórmulas generales y otras correspondientes a los casos particulares, para la 
solución de problemas que implican anualidades generales. De aquí que consideramos 
más útil, instructivo y sencillo, desarrollar el tratamiento de las anualidades generales, 
trasformándolas en anualidades simples equivalentes. 
Se utilizan los mismos símbolos y con el mismo significado que se les dio en los 
capítulos anteriores. A continuación, damos una lista de algunos símbolos y su 
significado en las ecuaciones que implican anualidades generales. 
p = número de pagos por año 
W = renta o pago periódico de una anualidad general 
j = tasa nominal 
i =j / m = tasa efectiva por período de capitalización 
j(m) = tasa nominal con m períodos de capitalización 
 
Por todo lo que hemos visto anteriormente tenemos que una anualidad general ordinaria 
y una anualidad simple deberían de cumplir con los siguientes dos puntos: 
Las tasas de interés deben de ser equivalentes y 
Los valores de las anualidades en cualquier fecha deben ser iguales. 
 
Si suponemos que en la anualidad general ordinaria tenemos pagos W, p veces al año a 
una tasa efectiva i´ por periodo y que en la anualidad simple tenemos pagos R, m veces 
al año y una tasa efectiva i entonces los montos al final del año deberían ser 
Como los montos deben de ser iguales entonces tenemos que 
O sea 
Ahora bien, como las tasas deben de ser equivalentes tenemos 
(1+i)
m 
= (1+i´)
p 
luego 
(1+i)
m 
-1 = (1+i´)
p
 -1 
es decir 
R(1/i) = W(1/i) 
Despejando i´ obtengo que 
i´ = (1+i)
m/p
 – 1 
Por lo tanto si substituyo tengo que 
Es decir 
Y como sabemos que 
Entonces tenemos 
Y por lo tanto 
 
Si substituimos k = m/p nuestra relación final sería 
Con el desarrollo anterior demostramos que no importa si n es entero o fracción por lo 
tanto la formula sigue siendo válida. 
Anualidades y Pagos Contingentes 
 
Anualidades contingentes son aquellas en las que el primer pago o el último, es decir, la 
fecha inicial y/o la fecha final depende de algún suceso previsible, pero cuya fecha de 
ocurrencia no puede fijarse. 
 
Las anualidades que se pagan a una persona durante su vida, reciben el nombre de 
rentas vitalicias. 
 
Una dotación o dotal es un contrato que promete pagar a su beneficiario una cierta 
cantidad de dinero, al final de un período de tiempo bien determinado, siempre que esté 
vivo para recibirla. 
 
Anualidades Vitalicias 
 
Una anualidad o renta vitalicia, consiste en una serie de pagos iguales, cuyo término 
queda fijado por la duración de la vida de la persona que ha de recibir la renta. Es decir, 
son anualidades contingentes y como anualidades pueden presentarse en cualquiera de 
sus formas, ya sea simples o generales, vencidas o anticipadas, diferidas, etc., dando 
origen a una gran variedad de rentas vitalicias. Las más frecuentes son las simples 
vencidas que se pagan al final de cada año y, por esto, al decir renta vitalicia o 
anualidad vitalicia, se entiende que se trata de una renta vitalicia simple vencida. 
 
Anualidades Vitalicias Anticipadas o Inmediatas 
 
Cuando los pagos se efectúan al comienzo de cada año, la renta o anualidad vitalicia es 
anticipada o inmediata. 
 
Por ser la renta inmediata, el primer pago de la renta vitalicia se recibe en el momento 
de pagar la prima neta única; luego el valor äx es igual al pago inmediato de una unidad 
monetaria más el valor actual äx de una renta vitalicia ordinaria de una unidad 
monetaria. 
 
 
Anualidades Vitalicias Ordinarias Diferidas 
 
En las rentas o anualidades diferidas, el primer pago queda aplazado un cierto número 
de años, y se paga un año después de expirado el período de aplazamiento y se continúa 
los pagos anuales de la misma manera que una renta vitalicia ordinaria. 
 
Anualidades Vitalicias Diferidas Anticipadas 
 
Para deducir una fórmula que permita calcular el valor de una anualidad vitalicia 
anticipada, diferida k años, se aplica el mismo método empleado en las anualidades 
vitalicias ordinarias diferidas, teniendo en cuenta que el primer dotal es kEx en lugar de 
k+1Ex. 
 
Anualidades Contingentes Temporales 
 
Una anualidad o renta es temporal, si en el contrato se estipula que se pagará el 
beneficiario sólo durante un cierto número de años, si este vive durante esos años, 
extinguiéndose la obligación en caso de muerte del beneficiario. 
 
Las anualidades contingentes temporales pueden ser vencidas, anticipadas, diferidas, 
etc., dando origen a una gran variedad de rentas contingentes o temporales. 
 
Anualidades Contingentes Inmediatas Temporales 
 
Se diferencia de la anterior en que el pago es anticipado, en lugar de vencido. 
 
El símbolo äx:n Se utiliza para expresar el valor actual o prima neta única de una 
anualidad contingente inmediata temporal, de una unidad monetaria, pagadera durante n 
años a una persona de edad x. 
 
Desarrollo y justificación de la solución. 
 
Basados en la teoría antes expuesta, supongamos que los empleados ahorran un peso 
cada quincena, si los pagos se hicieran n veces, la representación gráfica de dichos 
pagos sería la siguiente 
 
 
Si deseamos saber el monto obtenido al final del ejercicio basta con sumar 
1 + (1+i) + (1+i)
2 
+ … + (1+i)
n-2 
+ (1+i)
n-1 
 
 
Es decir, el monto total S de la anualidad es igual a la suma de los montos producidos 
por las distintas rentas, o sea: 
S = 1 + (1+i) + (1+i)
2 + … + 
(1+i)
n-2 + 
(1+i)
n-1
 
Los términos del segundo miembro forman una progresión geométrica en n términos, 
razón (1 + i) y primer término 1. De donde se tiene que 
Esto como ya habíamos explicado lo representamos como 
 
De donde obtenemos que 
Y por lo tanto al suponer que la aportación del empleado es R concluimos con 
 
 
En resumen podemos decir que la solución a nuestro problema de reparto de intereses 
quedará resueltoal obtener el monto de una anualidad pagadera n veces a una tasa de 
interés i. 
 
0 1 2 3 n - 1 n. . .
Se anexa el cuadro con los valores obtenidos al finalizar el ejercicio y calcular los 
montos para cada uno de los empleados. 
 
NUM. NOMBRE INGR. S AHORRO RETIRO INTERES SALARIO 
000001 FERNANDO MUÑOZ GOMEZ 01/01/04 A 23,094.00 0.00 3,485.89 29,786.00 
000002 SILVIA GUADALUPE CONTRERAS 01/01/04 B 0.00 0.00 0.00 12,000.00 
000003 ALEJANDRA MUÑOZ CONTRERAS 01/01/04 A 22,205.04 0.00 3,351.71 14,234.00 
000004 LUIS CARRASCO HERNANDEZ 01/01/04 A 23,094.00 11,547.00 3,485.89 34,768.00 
000005 JUAN F. CARDENAS GUZMAN 01/01/04 A 14,002.56 7,001.28 2,113.59 8,976.00 
000006 CECILIA ROCIO HERNANDEZ RIVERA 01/01/04 A 15,406.56 0.00 2,325.52 9,876.00 
000007 ANGELICA FLORES LLAMAS 01/01/04 A 10,606.44 5,303.23 1,600.83 6,799.00 
000008 NORMA BACA RAIZ 01/01/04 A 5,391.36 2,695.68 813.79 3,456.00 
000009 LUIS MUNOZ CONTRERAS 01/01/04 A 7,800.00 3,900.00 1,177.36 5,000.00 
000010 ANA MARIA CRUZ SANCHEZ 01/01/04 A 7,800.00 0.00 1,177.36 5,000.00 
000011 MARIA LUISA RAMIREZ OJEDA 01/01/04 A 12,480.00 6,240.00 1,883.77 8,000.00 
000012 ANGEL ORTIZ SALAZAR 01/01/04 A 7,122.96 3,561.48 1,075.16 4,566.00 
000013 PAZ BECERRA DE ANDA 01/01/04 A 23,094.00 0.00 3,485.89 35,000.00 
000015 ERICKA I. GONZALEZ RODRIGUEZ 01/01/04 A 13,884.00 6,942.00 2,095.70 8,900.00 
000016 OFELIA GOMEZ CASTELLANOS 28/11/06 A 21,840.00 0.00 3,296.60 14,000.00 
000017 DIANA LAURA MANRIQUEZ PEREZ 01/01/06 A 10,920.00 0.00 1,648.30 7,000.00 
000018 MONICA MALDONADO RANGEL 01/07/06 A 10,920.00 0.00 750.31 14,000.00 
 
Como podemos observar en los valores en rojo, cuando la gente permanece el mismo 
periodo de tiempo y ahorro el mismo importe sus intereses son idénticos, en el caso de 
las empleadas 17 y 18, a pesar de haber ahorrado el mismo importe, sus intereses son 
diferentes, esto es debido a que la primera estuvo desde el inicio del ejercicio y la 
segunda se integró al grupo cuando ya se encontraba a medio plan. 
 
A continuación se presentan los cálculos para los ejemplos citados suponiendo una tasa 
del 1.2 % efectiva por periodo. 
 
Con el cuadro anterior se comprueban los datos obtenidos por el sistema y se verifica 
que el cálculo del monto es correcto. 
 
Nom. Quinc. Aportación Tasa Ahorro 1+Tasa
Luis 24 325 0.012 7800 1.012
Ana 24 325 0.012 7800 1.012
Diana 24 455 0.012 10920 1.012
Mónica 12 910 0.012 10920 1.012
Nom. Se exponencia Se resta 1 Se divide entre tasa Se obtiene monto Interes Real
Luis 1.331472804 0.3314728 27.62273364 8,977.39 1,177.39
Ana 1.331472804 0.3314728 27.62273364 8,977.39 1,177.39
Diana 1.331472804 0.3314728 27.62273364 12,568.34 1,648.34
Mónica 1.153894624 0.1538946 12.82455202 11,670.34 750.34
 
Capítulo III 
 
Definición de un sistema para solucionar el problema. 
 
Una vez determinada la solución, el siguiente paso consiste en plantear la creación de 
un sistema que nos permita automatizar y generar de manera fidedigna los cálculos 
correspondientes al ahorro del empleado. 
 
 
Consideraciones: 
 
El sistema deberá considerar la inclusión de empleados en cualquier punto del año. 
• Se debe de asignar un número de empleado de manera automática. 
• El número deberá ser consecutivo e irrepetible. 
• Se deberá considerar la fecha de captura como la fecha de ingreso. 
• El empleado deberá ser asignado a un departamento de manera obligatoria. 
• Se podrá elegir forma de ahorro semestral o anual. 
• Se tendrá que capturar el sueldo, pero éste de ninguna manera podrá ser menor al 
salario mínimo. 
 
Se tendrá que contar con un módulo de modificación para los datos del empleado. 
• En esta opción se podrá modificar el nombre, el departamento, el plan de ahorro, el 
estado del empleado de activo a baja o viceversa y finalmente se podrá asignar una 
fecha de baja. 
• Deberá presentar un resumen del ahorro, del retiro, del interés ganado y el sueldo 
del empleado. 
• Por ningún motivo se podrá alterar el sueldo, el número del empleado o cualquier 
aportación. 
 
Un punto más a tener en cuenta es el cálculo de las aportaciones quincenales. 
• El cálculo quincenal no se podrá realizar más de una vez. 
• Se deberán de ir inhabilitando las quincenas previamente calculadas. 
 
Una opción del sistema será la posibilidad de hacer un retiro semestral. 
• Deberá validar que previamente se hayan calculado las 12 quincenas 
correspondientes al semestre. 
• No deberá calcularse este retiro si ya se realizó el cálculo de la quincena 13 o 
superior. 
• Sólo se deberá de aplicar el cálculo a los empleados que en ese momento tengan 
seleccionado el plan de ahorro semestral. 
 El programa deberá contar con una opción para liquidar el ejercicio. 
 
• En este punto se deberá realizar el cálculo del monto de las aportaciones más el 
interés generado menos el retiro semestral para aquellos que lo hubieran realizado. 
• El cálculo anterior deberá ser efectuado toda vez que se verifique que las 24 
quincenas del ejercicio han sido realizadas. 
 
Limpieza del sistema 
• La opción restante nos deberá permitir limpiar la base de datos para el inicio del 
nuevo ejercicio, es decir deberá eliminar a todas las bajas y poner en ceros a los 
empleados que permanecen en la compañía. 
 
Especificación de los menús necesarios para la aplicación. 
 
De acuerdo a las condiciones declaradas en el párrafo anterior tenemos que la estructura 
de menús sería la siguiente: 
 
Empleado 
• Agregar. Esta opción nos permitirá agregar un empleado al sistema. 
• Modificar. En esta parte se podrán modificar datos del empleado o borrar registros. 
 
Procesos 
• Cálculo Quincenal. Esta opción nos deberá permitir seleccionar cada una de las 
quincenas a procesar. 
• Préstamo Semestral. En esta opción se deberá poder hacer el cálculo del préstamo 
que puede recibir el empleado con garantía en el fondo de ahorro acumulado. 
• Liquidación Anual. Esta parte se encargará de hacer el cálculo del fondo acumulado 
más los intereses generados. 
• Nuevo Ejercicio. Esta opción deberá poner el sistema listo para iniciar un nuevo 
ejercicio. 
 
 
 
 
Salida. Finalmente esta opción nos permite salir del sistema. 
 
 
 
 
 
 
 
Las pantallas de captura o procesos deberán quedar de la siguiente manera. 
 
Agregar empleados. 
 
 
Como se puede apreciar en el dibujo, la forma de captura reúne todos los elementos 
solicitados en la definición. El campo de número de empleado no es editable, tampoco 
lo es la fecha de ingreso, se asigna de manera obligatoria un departamento al empleado, 
se da la opción de escoger el tipo de plan y se permite la captura del salario. 
Modificar. 
 
 
 
 
 
 
Como se aprecia en las pantallas anteriores la modificación del empleado sólo podrá ser 
aplicada en el nombre, el departamento, la fecha de baja y el plan al que pertenece. 
Procesos quincenales 
 
 
En esta parte sólo se podrán ejecutar proceso. En los procesos quincenales, el sistema 
nos deberá dar la facilidad de escoger que quincena se quiere aplicar. 
El préstamo semestral, la liquidación anual y el nuevo ejercicio sólo deben de disparar 
procedimientos y hacer afectaciones a la base de datos. 
 
 
 
Capítulo IV 
 
Selección base de datos y ambiente de desarrollo. 
 
La selección de la base de datos, así como el ambiente de desarrollo es una parte 
fundamental de la creación de cualquier sistema de información. 
 
Así que empecemos por explicar que una base de datos es un conjunto de información 
que pertenecen al mismo contexto almacenados sistemáticamente para su uso posterior. 
El almacenaje se realiza en poderosos medios magnéticos de una manera ordenada y 
eficiente. 
El actual desarrollo de la informática nos ofrece sistemas gestores de bases de datos 
(SGBD), que permiten almacenar y posteriormente acceder a los datos de forma rápida 
y estructurada. 
Según la variabilidad de los datos almacenados, lasbases de datos se pueden clasificar 
como Estáticas o Dinámicas. 
Las bases de datos estáticas son aquellas de sólo lectura, utilizadas primordialmente 
para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el 
comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y 
tomar decisiones. 
Las bases de datos dinámicas son aquellas bases donde la información almacenada se 
modifica con el tiempo, permitiendo operaciones como actualización y adición de datos, 
además de las operaciones fundamentales de consulta. 
Por su contenido tenemos mayor variabilidad, así tenemos las bases de datos 
bibliográficas que sólo contienen un surrogante (representante) de la fuente primaria, 
que permite localizarla. Un registro típico de una base de datos bibliográfica contiene 
información sobre el autor, fecha de publicación, editorial, título, edición, de una 
determinada publicación, etc. Puede contener un resumen o extracto de la publicación 
original, pero nunca el texto completo. 
Las bases de datos numéricas que como su nombre lo indica, el contenido son cifras o 
números. Por ejemplo, una colección de resultados de análisis de laboratorio. 
Otra posición la ocupan las bases de datos de texto completo que almacenan las fuentes 
primarias, como por ejemplo, todo el contenido de todos las ediciones de una colección 
de revistas científicas. 
Un tipo más son las de directorio como son guías telefónicas en formato electrónico. 
Adicional a las anteriores tenemos las de imágenes, audio, vídeo y multimedia que 
como su nombre lo indica, almacenan información en distintos formatos. 
No es común mezclar los diferentes tipo en una sola base de datos, sin embargo gracias 
al gran desarrollo que ha sufrido este ambiente, hoy es factible realizarlo. 
Además de la clasificación por la función de las bases de datos, éstas también se pueden 
clasificar de acuerdo a su modelo de administración de datos. 
Un modelo de datos es básicamente una "descripción" de algo conocido como 
contenedor de datos (algo en donde se guarda la información), así como de los métodos 
para almacenar y recuperar información de esos contenedores. Los modelos de datos no 
son cosas físicas: son abstracciones que permiten la implementación de un sistema 
eficiente de base de datos. 
 
Algunos modelos con frecuencia utilizados en las bases de datos: 
Bases de datos jerárquicas: Éstas son bases de datos que, como su nombre indica, 
almacenan su información en una estructura jerárquica. En este modelo los datos se 
organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre de 
información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a 
los nodos que no tienen hijos se los conoce como hojas. 
Una de las principales limitaciones de este modelo es su incapacidad de representar 
eficientemente la redundancia de datos. 
Bases de datos de red: Éste es un modelo ligeramente distinto del jerárquico; su 
diferencia fundamental es la modificación del concepto de nodo: se permite que un 
mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico). 
Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución 
eficiente al problema de redundancia de datos; pero, aun así, la dificultad que significa 
administrar la información en una base de datos de red ha significado que sea un 
modelo utilizado en su mayoría por programadores más que por usuarios finales. 
Bases de datos relacionales: Éste es el modelo más utilizado en la actualidad para 
modelar problemas reales y administrar datos dinámicamente. Tras ser postulados sus 
fundamentos en 1970 por Edgar Frank Codd de los laboratorios IBM en San José 
(California), no tardó en consolidarse como un nuevo paradigma en los modelos de base 
de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían 
considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese a que 
ésta es la teoría de las bases de datos relacionales creadas por Edgar Frank Codd, la 
mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es 
pensando en cada relación como si fuese una tabla que está compuesta por registros (las 
filas de una tabla), que representarían las tuplas, y campos (las columnas de una tabla). 
En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia 
(a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable 
ventaja de que es más fácil de entender y de utilizar para un usuario esporádico de la 
base de datos. La información puede ser recuperada o almacenada mediante "consultas" 
que ofrecen una amplia flexibilidad y poder para administrar la información. 
El lenguaje más habitual para construir las consultas a bases de datos relacionales es 
SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar 
implementado por los principales motores o sistemas de gestión de bases de datos 
relacionales. 
Durante su diseño, una base de datos relacional pasa por un proceso al que se le conoce 
como normalización de una base de datos. 
Finalmente tenemos las bases de datos orientadas a objetos: Este modelo, bastante 
reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar 
en la base de datos los objetos completos (estado y comportamiento). 
Una base de datos orientada a objetos es una base de datos que incorpora todos los 
conceptos importantes del paradigma de objetos: 
• Encapsulación - Propiedad que permite ocultar la información al resto de los 
objetos, impidiendo así accesos incorrectos o conflictos. 
• Herencia - Propiedad a través de la cual los objetos heredan comportamiento 
dentro de una jerarquía de clases. 
• Polimorfismo - Propiedad de una operación mediante la cual puede ser aplicada 
a distintos tipos de objetos. 
En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre 
los datos como parte de la definición de la base de datos. Una operación (llamada 
función) se especifica en dos partes. La interfaz (o signatura) de una operación incluye 
el nombre de la operación y los tipos de datos de sus argumentos (o parámetros). La 
implementación (o método) de la operación se especifica separadamente y puede 
modificarse sin afectar la interfaz. Los programas de aplicación de los usuarios pueden 
operar sobre los datos invocando a dichas operaciones a través de sus nombres y 
argumentos, sea cual sea la forma en la que se han implementado. Esto podría 
denominarse independencia entre programas y operaciones. 
De lo anterior se desprende que el modelo que más se ajusta a nuestro desarrollo es el 
modelo relacional. El SGBD más potente del mercado tanto por la seguridad que ofrece 
como por la estabilidad tanto en mantenimiento como en recuperación de información 
es ORACLE. Por tanto nuestra propuesta de desarrollo estará soportada por una base de 
datos en ORACLE y codificada en un lenguaje de programación Power Builder. 
Al llevarnos la construcción a esta plataforma, estamos ofreciendo la posibilidad de 
transportarla una vez concluida a casi cualquier plataforma de base de datos de mediano 
a gran tamaño. Esto es factible ya que ambas plataformas (SGBD y desarrollo) utilizan 
estándares SQL. 
 
 
Definición de estructura de base de datos. 
 
 
 
 
 
 
 
FA_EMPLEADOS
NUMEMP: VARCHAR2(6)
NOMBRE: VARCHAR2(50)
CVEDEP: VARCHAR2(6)
SALARI: NUMBER(10,2)
AHORRO: NUMBER(10,2)
INTERE: NUMBER(10,2)
RETSEM: NUMBER(10,2)
FECING: DATE
FECBAJ: DATE
ESTADO: VARCHAR2(1)
PLAN: VARCHAR2(1)
FA_DEPTOS
CVEDEP: VARCHAR2(6)
DESCRI: VARCHAR2(50)
FA_AHORRO
NUMEMP: VARCHAR2(6)
ENE001: NUMBER(10,2)
ENE002: NUMBER(10,2)
FEB001: NUMBER(10,2)
FEB002: NUMBER(10,2)
MAR001: NUMBER(10,2)
MAR002: NUMBER(10,2)
ABR001: NUMBER(10,2)
ABR002: NUMBER(10,2)
MAY001: NUMBER(10,2)MAY002: NUMBER(10,2)
JUN001: NUMBER(10,2)
JUN002: NUMBER(10,2)
JUL001: NUMBER(10,2)
JUL002: NUMBER(10,2)
AGO001: NUMBER(10,2)
AGO002: NUMBER(10,2)
SEP001: NUMBER(10,2)
SEP002: NUMBER(10,2)
OCT001: NUMBER(10,2)
OCT002: NUMBER(10,2)
NOV001: NUMBER(10,2)
NOV002: NUMBER(10,2)
DIC001: NUMBER(10,2)
DIC002: NUMBER(10,2)
TOTANU: NUMBER(10,2)
ESTADO: VARCHAR2(1)
Descripción de las tablas 
 
 
Nombre FA_EMPLEADOS 
Contenido Esta tabla contiene los datos generales del empleado, así como un 
resumen de sus aportaciones y el valor de su ahorro 
Descripción de las columnas 
Nombre Tipo Nulo Contenido PK FK 
NUMEMP CARACTER(6) NO NULO Número de Empleado 
Campo no nulo 
Seis posiciones obligatorias 
Relleno con ceros a la izquierda 
Si No 
NOMBRE CARACTER(50) NO NULO Nombre del empleado 
Campo no nulo 
Máximo 50 posiciones 
No No 
CVEDEP CARACTER(6) NULO Clave del Departamento 
Seis posiciones obligatorias 
Relleno a la izquierda con ceros 
No Si 
SALARI NÚMERO(10,2) NO NULO Salario mensual del empleado No No 
AHORRO NÚMERO(10,2) NO NULO Importe del ahorro acumulado No No 
INTERE NÚMERO(10,2) NO NULO Interés ganado por el empleado No No 
RETSEM NÚMERO(10,2) NO NULO Retiro semestral No No 
FECING FECHA NO NULO Fecha de ingreso al sistema No No 
FECBAJ FECHA NULO Fecha de baja del sistema No No 
ESTADO CARACTER(1) NO NULO Indica si el empleado está 
A para Activo o 
B si está dado de Baja 
No No 
PLAN CARACTER(1) NO NULO Indica el tipo de plan, que puede ser 
A anual o 
S semestral 
No No 
 
 
Nombre FA_DEPTOS 
Contenido Esta tabla contiene la información relacionada al departamento 
donde labora el empleado 
Descripción de las columnas 
Nombre Tipo Nulo Contenido PK FK 
CVEDEP CARACTER(6) NO NULO Clave del Departamento 
Seis posiciones obligatorias 
Relleno a la izquierda con ceros 
Si No 
DESCRI CARACTER(50) NO NULO Nombre o descripción del 
departamento 
No No 
 
 
 
Nombre FA_AHORRO 
Contenido Esta tabla contiene las aportaciones al fondo de ahorro por 
empleado de manera quincenal 
Descripción de las columnas 
Nombre Tipo Nulo Contenido PK FK 
NUMEMP CARACTER(6) NO NULO Número de Empleado 
Campo no nulo 
Seis posiciones obligatorias 
Relleno con ceros a la izquierda 
Si Si 
ENE001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de enero 
No No 
ENE002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de enero 
No No 
FEB001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de febrero 
No No 
FEB002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de febrero 
No No 
MAR001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de marzo 
No No 
MAR002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de marzo 
No No 
ABR001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de abril 
No No 
ABR002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de abril 
No No 
MAY001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de mayo 
No No 
MAY002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de mayo 
No No 
JUN001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de junio 
No No 
JUN002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de junio 
No No 
JUL001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de julio 
No No 
JUL002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de julio 
No No 
 
 
 
Nombre FA_AHORRO 
Descripción de las columnas (2) 
Nombre Tipo Nulo Contenido PK FK 
AGO001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de agosto 
No No 
AGO002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de agosto 
No No 
SEP001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de septiembre 
No No 
SEP002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de septiembre 
No No 
OCT001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de octubre 
No No 
OCT002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de octubre 
No No 
NOV001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de noviembre 
No No 
NOV002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de noviembre 
No No 
DIC001 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Primera Quincena de diciembre 
No No 
DIC002 NÚMERO(10,2) NO NULO Ahorro en pesos correspondiente a 
la Segunda Quincena de diciembre 
No No 
TOTANU NÚMERO(10,2) NO NULO Ahorro total anualizado No No 
ESTADO CARACTER(1) NO NULO Estado del registro 
A para activo 
B para baja 
No No 
 
 
Capítulo V 
Codificación de la aplicación 
 
A continuación presento la codificación de las principales funciones que nos permiten 
llevar a cabo los cálculos correctos para la generación del ahorro quincenal y el cálculo 
de los intereses respectivos al final del ejercicio. 
 
La conectividad. 
Para poder establecer una conexión entre la aplicación desarrollada y la base de datos es 
necesario cumplir con un protocolo de seguridad y estandarización. Como se ha 
mencionado esta aplicación puede ser adaptada a diferentes bases de datos, por tanto en 
este script de conexión se establecerá con quién se va a conectar el programa y bajo que 
permisos (usuario) 
 
SQLCA.DBMS = "O84 ORACLE 8.0.4" 
SQLCA.LogPass = "FEMUGO64" 
SQLCA.ServerName = "AZTECA" 
SQLCA.LogId = "FMUNOZ" 
SQLCA.AutoCommit = False 
SQLCA.DBParm = "" 
CONNECT USING SQLCA; 
IF SQLCA.SQLCODE < 0 THEN 
 MESSAGEBOX("Error de conexión","No pudo conectarse a la Base de Datos de 
Fondo de Ahorro, " + SQLCA.SQLErrText, StopSign!) 
 HALT CLOSE 
ELSE 
 OPEN(W_INICIAL) 
END IF 
 
Como podemos observar nos estamos conectando a una base de datos ORACLE versión 
8.0.4 
La contraseña para firmarnos es FEMUGO64 
El usuario es FMUNOZ y 
Finalmente la base de datos está identificada como AZTECA. 
 
Estos son los elementos mínimos necesarios para poder establecer un proceso de 
escucha entre la base de datos y una aplicación cliente servidor. 
 
 
Procedimiento MONTOQUINCENAL 
Este procedimiento se encarga de hacer el cálculo del ahorro que realiza el empleado 
basado en su sueldo. Como podemos observar válida que no se ahorró más del 13% de 
10 veces el salario mínimo anualizado cada quincena para cumplir con la 
reglamentación fiscal. 
 
REAL MONTO, SUELDO, XTOPAR, LNAHORRO, LNSALARI, LNACUMUL 
STRING LCNUMEMP, LCESTADO 
DATE LDINGRE 
INTEGER CUANTOS 
DECLARE XREVISAR CURSOR FOR 
SELECT NUMEMP, FECING, ESTADO, AHORRO, SALARI FROM 
FA_EMPLEADOS WHERE ESTADO = 'A' 
ORDER BY NUMEMP; 
XTOPAR = (SALMIN * 365 * 10 * 0.13 * 0.5) / 12 
OPEN XREVISAR; 
FETCH XREVISAR INTO :LCNUMEMP, :LDINGRE, :LCESTADO, :LNAHORRO, 
:LNSALARI; 
DO WHILE SQLCA.SQLCODE = 0 
 MONTO = LNSALARI * 0.13 * 0.5 
 IF MONTO > XTOPAR THEN 
 MONTO = XTOPAR 
 END IF 
 CUANTOS = 0 
 SELECT COUNT(*) INTO :CUANTOS FROM FA_AHORRO WHERE 
 NUMEMP = :LCNUMEMP; 
 IF CUANTOS < 1 THEN 
 CHOOSE CASE QUINCENA 
 CASE 1 
 INSERT INTO FA_AHORRO 
 
VALUES(:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 2 
 INSERT INTO FA_AHORRO 
 
VALUES(0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 3 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 4 
 INSERT INTO FA_AHORROVALUES(0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 5 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 6 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 7 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 8 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 9 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,O,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 10 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 11 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 12 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 13 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 14 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 15 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 16 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 17 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 18 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 19 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 20 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 21 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 22 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE 23 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,0,:MONTO, 
 'A', :LCNUMEMP); 
 CASE ELSE 
 INSERT INTO FA_AHORRO 
 
VALUES(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,:MONTO,:MONTO, 
 'A', :LCNUMEMP); 
 END CHOOSE 
 UPDATE FA_EMPLEADOSS SET AHORRO = :MONTO 
 WHERE NUMEMP = :LCNUMEMP; 
ELSE 
 LNACUMUL = 0 
 SELECT NVL(TOTANU,0) INTO :LNACUMUL FROM FA_AHORRO 
 WHERE NUMEMP = :LCNUMEMP; 
 LNACUMUL = LNACUMUL + MONTO 
 
 CHOOSE CASE QUINCENA 
 CASE 1 
 UPDATE FA_AHORRO SET ENE001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 2 
 UPDATE FA_AHORRO SET ENE002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 3 
 UPDATE FA_AHORRO SET FEB001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 4 
 UPDATE FA_AHORRO SET FEB002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 5 
 UPDATE FA_AHORRO SET MAR001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 6 
 UPDATE FA_AHORRO SET MAR002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 7 
 UPDATE FA_AHORRO SET ABR001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 8 
 UPDATE FA_AHORRO SET ABR002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 9 
 UPDATE FA_AHORRO SET MAY001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 10 
 UPDATE FA_AHORRO SET MAY002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 11 
 UPDATE FA_AHORRO SET JUN001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 12 
 UPDATE FA_AHORRO SET JUN002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 13 
 UPDATE FA_AHORRO SET JUL001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 14 
 UPDATE FA_AHORRO SET JUL002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 15 
 UPDATE FA_AHORRO SET AGO001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 16 
 UPDATE FA_AHORRO SET AGO002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 17 
 UPDATE FA_AHORRO SET SEP001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 18 
 UPDATE FA_AHORRO SET SEP002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 19 
 UPDATE FA_AHORRO SET OCT001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 20 
 UPDATE FA_AHORRO SET OCT002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 21 
 UPDATE FA_AHORRO SET NOV001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 22 
 UPDATE FA_AHORRO SET NOV002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE 23 
 UPDATE FA_AHORRO SET DIC001 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 CASE ELSE 
 UPDATE FA_AHORRO SET DIC002 = :MONTO, 
 TOTANU = :LNACUMUL WHERE NUMEMP = :LCNUMEMP; 
 END CHOOSE 
 UPDATE FA_EMPLEADOS SET AHORRO = :LNACUMUL 
 WHERE NUMEMP = :LCNUMEMP; 
 END IF; 
 FETCH XREVISAR INTO :LCNUMEMP, :LDINGRE, :LCESTADO, 
 :LNAHORRO, :LNSALARI; 
LOOP 
CLOSE XREVISAR; 
COMMIT; 
MESSAGEBOX('Fondo de Ahorro', 'Proceso Concluido Correctamente', Information! ); 
RETURN; 
El procedimiento PRESSEME es el que se encarga de hacer el préstamo semestral del 
fondo de ahorro. Al aplicarse verifica que estén realizados los cálculos para las primeras 
12 quincenas, que no se haya efectuado ya de manera previa el préstamo semestral y por 
último se encarga de habilitar y deshabilitar las opciones ya realizadas para evitar 
confusiones al operador. 
 
REAL LNAHORRO 
REAL LNENE1, LNENE2, LNFEB1, LNFEB2, LNMAR1, LNMAR2, LNABR1, 
 LNABR2, LNMAY1, LNMAY2,LNJUN1, LNJUN2, LNSEGSEM 
STRING LCNUMEMP, LCESTADO 
DATE LDINGRE 
INTEGER CUANTOS 
DECLARE XPROCESAR CURSOR FOR 
SELECT NUMEMP, AHORRO FROM FA_EMPLEADOS 
WHERE ESTADO = 'A' AND PLAN = 'S' 
ORDER BY NUMEMP; 
LNENE1=0 
LNENE2=0 
LNFEB1=0 
LNFEB2=0 
LNMAR1=0 
LNMAR2=0 
LNABR1=0 
LNABR2=0 
LNMAY1=0 
LNMAY2=0 
LNJUN1=0 
LNJUN2=0 
LNSEGSEM = 0 
SELECT SUM(ENE001) INTO :LNENE1 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(ENE002) INTO :LNENE2 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(FEB001) INTO :LNFEB1 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(FEB002) INTO :LNFEB2 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(MAR001) INTO :LNMAR1 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(MAR002) INTO :LNMAR2 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(ABR001) INTO :LNABR1 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(ABR002) INTO :LNABR2 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(MAY001) INTO :LNMAY1 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(MAY002) INTO :LNMAY2 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(JUN001) INTO :LNJUN1 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
SELECT SUM(JUN002) INTO :LNJUN2 FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
IF ISNULL(LNENE1) THEN 
 LNENE1 = 0 
END IF 
IF ISNULL(LNENE2) THEN 
 LNENE2 = 0 
END IF 
IF ISNULL(LNFEB1) THEN 
 LNFEB1 = 0 
END IF 
IF ISNULL(LNFEB2) THEN 
 LNFEB2 = 0 
END IF 
IF ISNULL(LNMAR1) THEN 
 LNMAR1 = 0 
END IF 
IF ISNULL(LNMAR2) THEN 
 LNMAR2 = 0 
END IF 
IF ISNULL(LNABR1) THEN 
 LNABR1 = 0 
END IF 
IF ISNULL(LNABR2) THEN 
 LNABR2 = 0 
END IF 
IF ISNULL(LNMAY1) THEN 
 LNMAY1 = 0 
END IF 
IF ISNULL(LNMAY2) THEN 
 LNMAY2 = 0 
END IF 
IF ISNULL(LNJUN1) THEN 
 LNJUN1 = 0 
END IF 
IF ISNULL(LNJUN2) THEN 
 LNJUN2 = 0 
END IF 
SELECT SUM(RETSEM) INTO :LNSEGSEM FROM FA_EMPLEADOS 
WHERE ESTADO = 'A'; 
IF ISNULL(LNSEGSEM) THEN 
 LNSEGSEM = 0 
END IF 
IF LNENE1 <= 0 OR LNENE2 <= 0 OR LNFEB1 <= 0 OR LNFEB2 <= 0 OR 
 LNMAR1 <= 0 OR LNMAR2 <= 0 OR LNABR1 <= 0 OR LNABR2 <= 0 OR 
 LNMAY1 <= 0 OR LNMAY2 <= 0 OR LNJUN1 <= 0 OR LNJUN2 <= 0 THEN 
 MESSAGEBOX('FONDO DE AHORRO', 'NO SE HAN PROCESADO 
TODAS 
 LAS QUINCENAS DEL SEMESTRE',StopSign!, OK!) 
 RETURN; 
ELSE 
 IF LNSEGSEM <> 0 THEN 
 m_general.m_procesos.m_prestamosemestral.enabled = FALSE 
 MESSAGEBOX('FONDO DE AHORRO', 'YA SE PROCESO EL RETIRO 
 SEMESTRAL',StopSign!, OK!) 
 RETURN; 
 END IF 
END IF 
M_GENERAL.M_PROCESOS.M_PRESTAMOSEMESTRAL.ENABLED = FALSE 
OPEN XPROCESAR; 
FETCH XPROCESAR INTO :LCNUMEMP, :LNAHORRO; 
DO WHILE SQLCA.SQLCODE = 0 
 UPDATE FA_EMPLEADOS SET RETSEM = :LNAHORRO 
 WHERE NUMEMP = :LCNUMEMP; 
 FETCH XPROCESAR INTO :LCNUMEMP, :LNAHORRO; 
LOOP 
CLOSE XPROCESAR; 
COMMIT; 
MESSAGEBOX('FONDO DE AHORRO', 'PRESTAMO SEMESTRAL DEL 
EJERCICIO REALIZADO DE MANERA SATISFACTORIA',StopSign!, OK!) 
RETURN; 
El procedimiento LIQEJE esta encargado de realizar el cálculo de la liquidación del 
ejercicio. En este procedimiento tenemos que lo que se aplica es el cálculo de una 
anualidad pagadera n periodos a una tasa de interés i. 
Los detalles que aquí se cuidan es que ya se haya procesado la quincena 24, que el 
ejercicio no se haya calculado previamente y que sólo se aplique a empleados con 
estado activo. 
 
REAL LNXMES, LNINTERE, LNMONTOS, LNAHORRO, LNAPOQUI, LNENE1, 
 LNENE2, LNFEB1, LNFEB2, LNMAR1, LNMAR2, LNABR1, LNABR2, 
 LNMAY1, LNMAY2, LNJUN1, LNJUN2 
REAL LNJUL1, LNJUL2, LNAGO1, LNAGO2, LNSEP1, LNSEP2, LNOCT1, 
LNOCT2, 
 LNNOV1, LNNOV2, LNDIC1, LNDIC2 
STRING LCNUMEMP 
INTEGER CUANTOS, LNNUMPER 
DECLARE XREVISAR CURSOR FOR 
SELECT NUMEMP, AHORRO FROM FA_EMPLEADOS 
WHERE ESTADO = 'A' 
ORDER BY NUMEMP; 
LNXMES = 0 
SELECT SUM(DIC002) INTO :LNXMES FROM FA_AHORRO 
WHERE ESTADO = 'A'; 
IF ISNULL(LNXMES) OR LNXMES = 0 THEN 
 MESSAGEBOX('FONDO DE AHORRO', 'LA LIQUIDACION DEL EJERCICIO 
NO 
 ES POSIBLE, FALTAN QUINCENAS POR PROCESAR',StopSign!, OK!) 
 RETURN; 
END IF 
LNXMES = 0 
SELECT SUM(INTERE) INTO :LNXMES FROM FA_EMPLEADOS 
WHERE ESTADO = 'A'; 
IF ISNULL(LNXMES) THEN 
 LNXMES = 0 
END IF 
IF LNXMES > 1 THEN 
 MESSAGEBOX('FONDO DE AHORRO', 'LA LIQUIDACION YA FUE 
 REALIZADA',StopSign!, OK!) 
 RETURN; 
END IF 
OPEN XREVISAR; 
FETCH XREVISAR INTO :LCNUMEMP, :LNAHORRO; 
DO WHILE SQLCA.SQLCODE = 0 
 LNAPOQUI = 0 
 LNMONTOS = 0 
 LNINTERE = 0 
 LNENE1 = 0 
 LNENE2 = 0 
 LNFEB1 = 0 
 LNFEB2 = 0 
 LNMAR1 = 0 
 LNMAR2 = 0 
 LNABR1 = 0 
 LNABR2 = 0 
 LNMAY1 = 0 
 LNMAY2 = 0 
 LNJUN1 = 0 
 LNJUN2 = 0 
 LNJUL1 = 0 
 LNJUL2 = 0 
 LNAGO1 = 0 
 LNAGO2 = 0 
 LNSEP1 = 0 
 LNSEP2 = 0 
 LNOCT1 = 0 
 LNOCT2 = 0 
 LNNOV1 = 0 
 LNNOV2 = 0 
 LNDIC1 = 0 
 LNDIC2 = 0 
 SELECT ENE001, ENE002, FEB001, FEB002, MAR001, MAR002, ABR001, 
 ABR002, MAY001, MAY002, JUN001, JUN002, 
 JUL001, JUL002, AGO001, AGO002, SEP001, SEP002, OCT001, OCT002, 
 NOV001, NOV002, DIC001, DIC002 INTO 
 :LNENE1, :LNENE2, :LNFEB1, :LNFEB2, :LNMAR1, :LNMAR2, :LNABR1, 
 :LNABR2, :LNMAY1, :LNMAY2, :LNJUN1, :LNJUN2, 
 :LNJUL1, :LNJUL2, :LNAGO1, :LNAGO2, :LNSEP1, :LNSEP2, :LNOCT1, 
 :LNOCT2, :LNNOV1, :LNNOV2, :LNDIC1, :LNDIC2 
 FROM FA_AHORRO WHERE NUMEMP = :LCNUMEMP; 
 IF LNENE1 <> 0 THEN 
 LNAPOQUI = LNENE1 
 LNNUMPER = 24 
 ELSEIF LNENE2 <> 0 THEN 
 LNAPOQUI = LNENE2 
 LNNUMPER = 23 
 ELSEIF LNFEB1 <> 0 THEN 
 LNAPOQUI = LNFEB1 
 LNNUMPER = 22 
 ELSEIF LNFEB2 <> 0 THEN 
 LNAPOQUI = LNFEB2 
 LNNUMPER = 21 
 ELSEIF LNMAR1 <> 0 THEN 
 LNAPOQUI = LNMAR1 
 LNNUMPER = 20 
 ELSEIF LNMAR2 <> 0 THEN 
 LNAPOQUI = LNMAR2 
 LNNUMPER = 19 
 ELSEIF LNABR1 <> 0 THEN 
 LNAPOQUI = LNABR1 
 LNNUMPER = 18 
 ELSEIF LNABR2 <> 0 THEN 
 LNAPOQUI = LNABR2 
 LNNUMPER = 17 
 ELSEIF LNMAY1 <> 0 THEN 
 LNAPOQUI = LNMAY1 
 LNNUMPER = 16 
 ELSEIF LNMAY2 <> 0 THEN 
 LNAPOQUI = LNMAY2 
 LNNUMPER = 15 
 ELSEIF LNJUN1 <> 0 THEN 
 LNAPOQUI = LNJUN1 
 LNNUMPER = 14 
 ELSEIF LNJUN2 <> 0 THEN 
 LNAPOQUI = LNJUN2 
 LNNUMPER = 13 
 ELSEIF LNJUL1 <> 0 THEN 
 LNAPOQUI = LNJUL1 
 LNNUMPER = 12 
 ELSEIF LNJUL2 <> 0 THEN 
 LNAPOQUI = LNJUL2 
 LNNUMPER = 11 
 ELSEIF LNAGO1 <> 0 THEN 
 LNAPOQUI = LNAGO1 
 LNNUMPER = 10 
 ELSEIF LNAGO2 <> 0 THEN 
 LNAPOQUI = LNAGO2 
 LNNUMPER = 9 
 ELSEIF LNSEP1 <> 0 THEN 
 LNAPOQUI = LNSEP1 
 LNNUMPER = 8 
 ELSEIF LNSEP2 <> 0 THEN 
 LNAPOQUI = LNSEP2 
 LNNUMPER = 7 
 ELSEIF LNOCT1 <> 0 THEN 
 LNAPOQUI = LNOCT1 
 LNNUMPER = 6 
 ELSEIF LNOCT2 <> 0 THEN 
 LNAPOQUI = LNOCT2 
 LNNUMPER = 5 
 ELSEIF LNNOV1 <> 0 THEN 
 LNAPOQUI = LNNOV1 
 LNNUMPER = 4 
 ELSEIF LNNOV2 <> 0 THEN 
 LNAPOQUI = LNNOV2 
 LNNUMPER = 3 
 ELSEIF LNDIC1 <> 0 THEN 
 LNAPOQUI = LNDIC1 
 LNNUMPER = 2 
 ELSE 
 LNAPOQUI = LNDIC2 
 LNNUMPER = 1 
 END IF 
 IF LNAPOQUI <= 0 THEN 
 CONTINUE; 
 END IF 
 LNMONTOS = LNAPOQUI * ((((1 + LATASA) ^ LNNUMPER) - 1) / 
LATASA) 
 LNINTERE = LNMONTOS - LNAHORRO 
 UPDATE FA_EMPLEADOS SET INTERE = :LNINTERE 
 WHERE NUMEMP = :LCNUMEMP; 
 FETCH XREVISAR INTO :LCNUMEMP, :LNAHORRO; 
LOOP 
CLOSE XREVISAR; 
COMMIT; 
MESSAGEBOX('FONDO DE AHORRO', 'LIQUIDACION DEL EJERCICIO 
REALIZADA DE MANERA SATISFACTORIA',StopSign!, OK!) 
RETURN; 
Pruebas de funcionalidad. 
 
Actualmente el salario mínimo vigente en el Distrito Federal es de $48.67 
 
Dado que el tope anual del fondo es el 13% del diez veces el salario mínimo anualizado 
tenemos que: 
 
TFA = 48.67 * 365 * 10 * 0.13 = 23093.915 
 
Si tenemos en cuenta que nos interesa el tope mensual, basta dividir entre 12 y nuestro 
tope para el fondo de ahorro mensual sería de 
 
TFM = 23093.915 / 12 = 1924.49292 
 
Que para efectos prácticos podemos considerar como TFM = 1924.50 
 
Ahora bien, nuestros periodos de acumulación son quincenales, por tanto el tope que 
realmente buscamos es: 
 
TFQ = 1924.50 / 2 = 962.25 
 
Ahora veamos los ejemplos de los siguientes empleados 
 
Un empleado que gana 14 mil pesos mensuales tendría el siguiente cálculo 
 
FondoQuincenal = 14000 * 0.13 * 0.5 = 910.00 
 
Dado que no rebasa el tope y si suponemos que estuvo durante todo el año el tendría un 
ahorro de: 
 
Ahorro Anual = 910 * 24 = 21840.00 
 
Si aplicamos la fórmula obtenida para el monto acumulado suponiendo una tasa de 
1.2% efectiva quincenal tendríamos que 
 
Monto = 910*(((1+0.012)24 – 1 ) / 0.12) = 910 * ((1.3314728 – 1 ) / 0.12 ) = 
 
Monto = 910 * 27.6227336 = 25136.6876 
 
Si un empleado con el mismo sueldo entrara justo a la mitad del año entonces 
tendríamos que su cálculo sería el siguiente: 
 
Fondo Quincenal = 14000 * 0.13 * 0.5 = 910.00 
 
Nuevamente no es topado por lo tanto su ahorro proporcional al año sería 
 
Ahorro Anual = 910 * 12 = 10920 
Si obtenemos ahora el cálculo de los interese bajo el mismo esquema que el anterior 
obtenemos que: 
 
Monto = 910*(((1+0.012)12 – 1 ) / 0.12) = 910 * ((1.15389462 – 1 ) / 0.12 ) = 
 
Monto = 910 * 12.824552 = 11670.3423 
 
Otro caso es el de un trabajador con un sueldo de 7000 pesos que laboró durante todo el 
año. El cálculo sería el siguiente: 
 
Fondo Quincenal = 7000 * 0.13 * 0.5 = 455.00 
 
Como tampoco es topado su ahorro llevado al año sería 
 
Ahorro Anual = 455 * 24 = 10920 
 
De donde al obtener su ahorro más intereses tenemos 
 
Monto = 455*(((1+0.012)24 – 1 ) / 0.12) = 910 * ((1.3314728 – 1 ) / 0.12 ) = 
 
Monto = 455 * 27.6227336 = 12568.3438 
 
Finalmente tenemos que el tope mensual de fondo de ahorro es 1924.50, por tanto toda 
aquella persona cuyo salario exceda 
 
Salario = 1924.50 / 01.3 = 14803.8462 
 
Deberá quedar automáticamente topada a 1924.50 mensual de fondo o en nuestro caso a 
962.25 ya que el ahorro es quincenal. 
 
Observemos la siguiente tabla 
 
Aportación quincenal Periodos Ahorro Anual Interés Ganado 
910.00 24 21840.00 3296.6876 
455.00 12 10920.00 750.3423 
455 24 10920.00 1648.3438 
 
Como podemos observar a ahorro idénticos no corresponde la misma cantidad de 
interés ya que la mayor permanencia en el plan nos permite reinvertir lo aportado y así 
generar mayor utilidad. 
 
En el caso de los participantes uno y tres notamos que si se mantiene la proporción, esto 
debido a que su inversión fue al mismo plazo y con la misma tasa de interés. 
 
Con esto demostramos que la solución propuesta se adecua a nuestras necesidades y 
resuelve de una forma eficiente el problema que se planteo. 
 
Capítulo VI 
Consideraciones finales. 
 
Una vez concluida la aplicación se debe de considerar el ambiente donde se vaya a 
montar a producción. Esta aplicación ha sido diseñada para ser fácilmente transportada 
de una base de datos a otra, basta con modificar la cadena de conexión y contar con el 
controlador (nativo u ODBC) apropiado para que sin ningún problema se trabaje en una 
base de datos o en otra. Así, podemos decir que lo mismo funciona en Access, que en 
SQL server, Informix u Oracle. 
 
Los requisitos mínimos esperados para que la aplicación funcione como cliente, es un 
equipo Pentium con memoria de 256 kb y monitor a color con un ambiente de sistema 
operativo windows 95 o superior. 
 
Es importante señalar que la documentación del sistema consta de una descripción de 
las tablas en un archivo de formato Erwin, esto con el objeto de poder crear las tablas de 
manera automática en cualquier base de datos. 
 
Se anexan los archivos JPG con las imágenes de los iconos utilizados, la librería fonaho 
para que en caso de que se quieran cambiar las cadenas de conexión o los límites del 
fondo de ahorro así como el salario mínimo se puedan realzar y compilar para generar el 
ejecutable sin ningún problema. 
 
El ejecutable se está creando en una versión de Power Builder versión 7.0 
 
 
Conclusiones 
 
La razón principal que me llevó a realizar este trabajo fue la de presentar de una forma 
muy sencilla una aplicación que combinara el aspecto financiero básico de la teoría de 
las matemáticas financieras para resolver un problema común que se presenta todos los 
días en el ámbito laboral. No es definitivamente la manera más ortodoxa de atacar el 
problema y sin embargo nos muestra que con un mínimo de elementos, si se saben 
mezclar se obtiene soluciones efectivas. Considero que la aportación principal de este 
trabajo es mostrar como debemos en nuestro papel de profesionistas llevar a la 
aplicación diaria todo aquello que día a día aprendemos en las aulas. En un ambiente tan 
competido no basta con llegar y hacer las cosas bien, hoy tenemos que innovar. 
 
Con esta forma de cálculo, mi pretensión fue mostrar como un ejercicio teórico puede 
consolidarse como una práctica en el mercado. 
 
Hoy estamos mostrando que nuestro perfil en el mercado no es sólo de un profesional 
que aplica técnica de manera eficaz, sino que vamos más allá y buscamos rellenar esas 
lagunas legales en beneficio de los integrantes de nuestra sociedad, ya que si bien, la ley 
indica que se debe de hacer una distribución de intereses en los fondos de ahorro o las 
cajas, no regula esta distribución, por tanto es nuestra obligación buscar esa repartición 
de manera equitativa y justa. 
 
Además de lo anterior podemos concluir que la computación va cada vez más de la 
mano con nuestro desarrollo como profesionistas, es una herramienta básica la cual nos 
permite de manera sencilla realizar cálculos, verificaciones masiva y dar un valor 
agregado a nuestro trabajo ya que cada día es más accesible y sencilla su programación. 
Sin embargo no debemos de olvidar que es sólo una herramienta, el valor de nuestro 
trabajo está en todo aquello que aprendimos en las aulas y la aplicación de esto será lo 
que realmente nos coloque como verdaderos profesionistas. 
 
 
Se ha mencionado la posibilidad de hacer uso de este programa para una caja de ahorro 
porque estructuralmente el funcionamiento es muy similar, bastaría con hacer un par de 
adecuaciones (como los topes) y obtendríamos una aplicación para administrar una caja 
de ahorro. 
 
Apéndice 
 
Base de datos 
 
Campo. Unidad mínima de información dentro de una base de datos. Se conoce 
igualmente como columna. Debe de contener siempre el mismo tipo de datos. 
 
Registro. Agrupación de campos que conservan siempre el mismo orden de campos. Se 
conocen como renglones. 
 
PK. Una llave primaria se define como el valor único de una columna en una tabla. 
 
FK. Se dice que un campo es llave foránea cuando su valor está restringido por el valor 
de una llave primaria en otra tabla. 
 
Tipo de dato. Característica del dato que se inserta en las columnas, puede ser numérico, 
fecha, carácter u objeto. 
 
Ejecutable. Archivo de aplicación que realiza la interfaz entre el sistema operativo y el 
usuario final. Se dice del programa que lleva a cabo las funciones o procedimientos. 
 
Power Builder. Lenguaje visual de programación que sirve para crear aplicaciones 
cliente servidor. 
 
Archivos JPG. Documentos que contienen imágenes. 
 
Librerías Pbl. Archivos fuente de power builder donde se guardan las instrucciones de 
un programa. 
 
Erwin. Paquetería que nos ayuda a genera código para crear estructuras de bases de 
datos en diferentes plataformas. 
 
 1 
Bibliografía 
Ley del Seguro Social. 
 
Ley del Impuesto Sobre la Renta. 
 
Matemáticas Financieras 
Benjamín de la Cueva 
Limusa 
 
Matemáticas Financieras 
Lincoyán Portus Govinden 
McGraw Hill 
 
Data Base Architecture and Administration 
David Austin 
Vijay Venkatachalam 
Oracle Inc. 
 
Oracle 9i Administración de bases de datos 
César Pérez 
Mc Graw Hill 
 
Foundations of Power Builder 
Smith Schaad 
Mc Graw Hill 
 
Power Builder 
Dejan Popovic 
Prentice Hall 
 
 
	Portada
	Índice
	Introducción
	Capítulo I. El Ahorro como Beneficio Empresarial
	Capítulo II. Anualidades
	Capítulo III. Definición de un Sistema para Solucionar el Problema.
	Capítulo IV. Selección Base de Datos y

Otros materiales