El último Software de Aplicación que escribí para un importante Hospital en Melbourne Australia tenía el siguiente propósito. Permitir la definición de entidades de nivel superior, en este caso un Hospital, había varios Hospitales en el grupo. Dentro de una entidad de nivel superior definida se podía definir cualquier número de entidades de nivel inferior, definiendo el padre de la nueva entidad. Podría haber varias entidades de nivel inferior con el mismo padre, pero el porcentaje de contribución de cada entidad a su padre podría, debe, ser definido. La entidad de nivel inferior de cada entidad de nivel superior era un Centro de Coste. Una vez establecida la estructura necesaria, los saldos del Libro Mayor, obtenidos a partir de otra aplicación propia, podían ser transferidos a la estructura, lo que permitía revisar los detalles financieros de cada nivel de entidad. Se evitaron las relaciones circulares y se adjuntaron los centros de coste desconocidos a una entidad ficticia para su posterior investigación y corrección. La entidad del «Balance de comprobación», a la que se transferían todos los costes del Libro Mayor, tenía que estar a cero después de cada ejercicio de «roll up» y, si no lo estaba, significaba que el Libro Mayor se estaba actualizando. El «Roll Up» se repetía hasta que la entidad del Libro Mayor se equilibraba a cero.
También era posible, y necesario, definir tantos Grupos de Informes como se deseara para cada estructura. Se definían los propietarios de cada entidad y los propietarios sólo tenían acceso a las estructuras de las que eran propietarios. También era posible definir uniones inclusivas o exclusivas entre las estructuras definidas utilizando grupos de informes especificados, permitiendo así una estructura que mostrara, por ejemplo, el coste de los «clips» en cada nivel de una estructura.
Se podía informar sobre cualquier nivel sobre el que se tuviera autoridad y las cuentas detalladas del libro mayor también se adjuntaban a los centros de costes de nivel más bajo y se podía informar sobre ellas, de forma interactiva o como un informe.
Esto se construyó a mediados de los 90 y contenía 750.000 líneas de código. Mi memoria no es lo que era, pero debo haber fechado y cronometrado cada ‘Roll Up’ para que sólo los registros del libro mayor con una fecha y hora posterior fueran procesados cada vez que se realizaba el ‘Roll Up’, reduciendo así el tiempo de ‘Roll Up’ al mínimo. Había otros trucos, pero ahora se me escapan los detalles; creo que se podían comparar los saldos de varios ejercicios en cualquier fecha. El sistema también contenía presupuestos con los que se podían comparar los reales y ser movidos por el administrador financiero entre las entidades según fuera necesario.
La actividad en cada nivel de la estructura se registraba y el administrador del sistema podía revisar, e informar sobre la actividad de los usuarios.