# Justificación

Nuestras Organizaciones están abocadas hacia un mejor control y gestión de la información. Los profesionales, como parte determinante dentro de este proceso aportan el conocimiento y la experiencia para el buen aprovechamiento de la información que se origina en el entorno del negocio y dentro del mismo a través de sus diferentes esferas. El profesional de lenguas, en particular, está llamado a ser uno de los protagonistas frente al reto de la recolección, clasificación y análisis de la información. Consideramos que su formación le permite cumplir con esta especializada labor y hacer un aporte de valía en cuanto al logro de mejores escenarios de gestión administrativa. Por otra parte, el uso de nuevas tecnologías informáticas cobra cada vez más un mayor valor dentro del desarrollo y la evolución de las diferentes alternativas empresariales de grande y pequeña escala. La posibilidad de contar con herramientas informáticas de avanzada puede representar costos adicionales importantes, dentro del presupuesto de creación de los pequeños nuevos negocios y constituirse en una potencial desventaja frente al mercado, en caso de no poder acceder a los mismos. El software libre, a través de proyectos tales como phEANix, proporciona una alternativa tecnológica importante, de bajo costo, y con un alto grado de rendimiento y eficiencia dentro de las tecnologías de avanzada. El software SQL-LEDGER, está orientado a satisfacer las necesidades de la administración contable de diferentes tipos de negocios, y se convierte en una herramienta de gestión y apoyo que permite optimizar los procesos de análisis y control de los diferentes rubros económicos del negocio. El poder contar con esta herramienta en un idioma propio amplia las posibilidades de éxito en su uso generando mayor cercanía y confianza hacia la misma.
Por las anteriores razones, y considerando las necesidades mencionadas, especialmente evidenciadas por parte de la pequeña y mediada empresa (PYMEs), creemos que este trabajo aporta a las misma, una alternativa seria, de apoyo en la búsqueda y consecución de los objetivos empresariales.
Por tratarse de un Software de libre distribución, no sobra hacer referencia al gran número de usuarios, que de forma creciente, acuden al uso de aplicaciones como SQL-LEDGER. Algunas administraciones públicas han mostrado apoyo decidido a desarrollo de los proyectos de software libre, dentro de estos ejemplos se pueden mencionar a:
* Alemania pagando por el desarrollo del Groupware
* China, con su acuerdo con Sun Microsystems para distribuir millones de Java Desktop (una distribución de linux basada en gnome y especialmente bien integrada con java
* Brasil, con una actitud generalmente positiva, y, por ejemplo, con el desarrollo de los telecentros
* Extremadura con la distribución LinEx, basada en Debian
* Andalucía con la distribución GuadaLinex, basada en metadistros
* Una serie de ciudades, entre ellas Munich, que también están migrando sus sistemas a linux.

# Marco Teórico
## Sql-Ledger

SQL-Ledger es un sistema contable de doble entrada. La contabilización de los datos se almacena en un servidor SQL, y para su presentación se puede utilizar cualquier texto o software de Interfaz Gráfica de Usuario (GUI). El sistema completo está unido a través de un flujo de cuentas. Cada ítem en el inventario está unido con los ingresos, los gastos, el inventario y las cuentas de impuestos. Cuando se venden y compran bienes y servicios las cuentas se actualizan automáticamente. Con la característica de ensamble se puede construir bienes manufacturados de partes, servicios y ensambles. Cuando se venden ensambles todas las cuentas unidas a las partes individuales, servicios y ensambles son actualizadas y los niveles de existencias se ajustan en consecuencia. Si algún ítem que pertenece a un ensamble se modifica todos los ensambles son actualizados al mismo tiempo.
Las facturas, listas de pedidos, estados de ingresos, hojas de balance, las ventas y ordenes de compras, estados, recibos y cheques son generados desde las plantillas y pueden modificarse de acuerdo con las necesidades. Las plantillas están hechas en HTML y texto formateado. Las plantillas de texto se procesan con latex para producir postscript y documentos PDF. Los reportes pueden se impresos, visualizados en formato PDF o enviados por correo electrónico. Las ventas y las ordenes de compra son también una manera muy conveniente de crear facturas recurrentes o para mantener hojas de registro. Las transacciones en moneda extranjera se convierten automáticamente y las diferencias en la tasa de cambio, perdidas y ganancias, si hay lugar, enviadas a las cuentas apropiadas. Los informes de AR, AP, y GL pueden ser personalizados y ordenados para generar un gran número de reportes, informes históricos que muestran lo que es sobresaliente en un tiempo determinado, el informe de impuestos se puede utilizar para crear una lista con las transacciones gravadas por impuesto recaudado y pagado. El reporte GL se puede utilizar para producir libros diarios de ventas y compras o libros mayores de cualquier tipo. Se puede igualmente adentrar en cualquier cuenta y visualizar / editar las transacciones completas del sistema. El lenguaje y la fuente de datos puede ser seleccionada por cada usuario. Pueden tener lenguajes diferentes o un conjunto diferente de libros o utilizar un servidor SQL distinto en una misma instalación.
El acceso al menú de ítems puede inhabilitarse para permitir a los usuarios acceder a ciertas secciones o funciones específicas. Los ítems inhabilitados del menú no se despliegan en la pantalla. El control de acceso está unido a la estructura de menú y si se adicionan nuevos items, estos también serán incluidos automáticamente.
El control de Auditoría se puede habilitar para todas las transacciones o hasta cierto día. Con el control activo de Auditoría, las transacciones incorrectas se deben anular y publicar nuevamente.
SQL-Ledger puede ser personalizado globalmente y por usuario con código Perl externo. La instalación de Plug in no requieren la modificación del núcleo principal.
La interfaz de línea de comandos permite construir y hacer interfaz con cualquier otra aplicación en tiempo real o por transacciones batch (tiempo no real). Esto hace posible hacer interfaz con aplicaciones remotas fuera de línea o usar un POS con esquemas completamente distintos de almacenamiento.
SQL-Ledger está escrito en Perl, desarrollado sobre FreeBSD, Linux con Netscape, links, Lynx, Explorer, Galeon, Konqueror, Voyager (QNX), Apache para la presentación, y PostgreSQL, Oracle, o DB2 para almacenar los datos de la contabilidad. SQL-Ledger se ejecuta sobre cualquier plataforma *NIX, Mac y Windows.

## SQL Ledger en Windows

Tambien puedes descargar un facil instalador para Windows en el siguiente enlace: http://www.filefactory.com/file/2dad41/
Instala automáticamente: SQL Ledger Version 2.8.6, Postgresql 8.1 Dev, Apache 2.2.4, ActivePerl 5.8.8 Build 820, PDB-Pg, DBI

## Aplicaciones LAMP

De acuerdo con Wikipedia (conocida enciclopedia en Internet), “el término LAMP se refiere a un acrónimo para designar un conjunto de programas, en entorno de Software libre, comúnmente utilizados en forma conjunta para ejecución dinámica de Sitios Web:
* Linux, (el sistema Operativo)
* Apache, (el Servidor Web)
* MySQL, el sistema de Administración de Base de Datos ( o servidor de Base de datos);
* Perl, PHP, y Python, los lenguajes de programación.”
Es claro que estos programas no se diseñaron o crearon con la intención de hacer un trabajo conjunto. Sin embargo, su uso integrado es impulsado por su disponibilidad y acceso a bajo costo. Adicionalmente, estos programas pueden ejecutar bajo cualquiera de las distribuciones de Linux.
Se dice que el término se utilizó por primera vez en una revista Alemana de Computación en 1998. Entre los angloparlantes fue popularizado por O'Reilly & Associates y MySQL AB. Algunas variantes incluyen LAPP (substituyendo PostgreSQL por MySQL), WAMP (substituyendo Microsoft Windows por Linux), y simplemente AMP (omitiendo el sistema operativo; esta variante es distribuida por Apple Computer) .

### Linux

También conocido como GNU/Linux, es un sistema operativo de atributos similares al popular Unix y además de libre distribución. La primera versión del núcleo Linux fue escrita por el hacker finlandés Linus Torvalds y liberada en 1991, combinada con componentes GNU.
“El término "Linux" se utiliza actualmente para distribuciones Linux completas, las cuales suelen contener grandes cantidades de software además del núcleo, partiendo de servidores web como Apache a entornos gráficos como GNOME o KDE y suites ofimáticas como OpenOffice.org”.
Este sistema operativo ha incrementado su popularidad muy rápidamente en los últimos años, compitiendo con Unix y Windows, al permitir su instalación en computadoras de tipo personal, supercomputadoras, dispositivos portátiles como teléfonos celulares, etc.

### Distribuciones Linux

También conocidas como "distros", estas se ensamblan por individuos, empresas y otros organismos. Cada distribución puede incluir cualquier número de software adicional, incluyendo software que facilite la instalación del sistema en una computadora. La base del sistema de cada distribución incluye el núcleo Linux, pero suele incluir también
varios paquetes de software del proyecto GNU, incluyendo un intérprete de comandos y utilidades como bibliotecas, compiladores y editores de texto.
La mayoría de los sistemas Linux incluyen también herramientas procedentes del mundo BSD y usualmente se utiliza la plataforma XFree86 para sostener interfaces gráficas.

### Aplicaciones de los Sistemas Linux

La adopción de Linux por numerosas empresas fabricantes de PCs, muchas computadoras son vendidas con distribuciones Linux pre-instaladas, y Linux ha comenzado a tomar su lugar en el vasto mercado de las computadoras de escritorio.
Como alternativa, algunas distribuciones (como Knoppix o Gentoo) permiten el arranque de Linux directamente desde un disco compacto (a menudo llamado un CDVivo o "LiveCD") sin modificar en absoluto el disco duro. Para este tipo de distribuciones, en general, el usuario puede descargar la imagen del disco desde el Internet, quemar un disco con ella y ejecutar Linux desde el CD.Otras posibilidades incluyen iniciar el arranque desde una red (para sistemas minimalistas) o desde un disco flexible.
Con entornos de escritorio como KDE y GNOME, Linux ofrece una interfaz gráfica más similar a aquellas de Mac OS o Windows que a la tradicional interfaz de línea de comandos de Unix. Existen en la actualidad numerosas aplicaciones gráficas, ya sean libres o no, que ofrecen funcionalidad similar a la de programas disponibles para otros sistemas operativos gráficos.

### Servidor HTTP Apache

El servidor HTTP Apache es un servidor HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc), Windows y otras plataformas. Cuando comenzó su desarrollo en 1995 estuvo basado en código del popular NCSA HTTPd 1.3, pero fue más tarde reescrito por completo. Apache es el servidor HTTP mas usado en el mundo, el 67.37% de los sitios web utilizan Apache y continúa ganando terreno constantemente, desde su liberación en 1995 su uso ha crecido constantemente provocando una baja constante en el porcentaje de mercado de todos los demás servidores web (Estadísticas históricas y al día proporcionadas por Netcraft ).

### MySQL

Es una de las bases de datos más populares desarrolladas bajo la filosofía de código abierto, lo cual significa que puede utilizarse gratuitamente y su código fuente se encuentra disponible.

### Perl

Perl son las siglas del lenguaje Práctico de extracción de informes (Practical Extraction and Report Language). “En Unix se trata de un lenguaje de creación de scripts, cuya principal tarea es explorar los archivos de texto, extraer información de esos archivos y preparar informes que resuman la información” . Perl fue desarrollado por Larry Wall (lwall at netlabs.com) inspirado en otras herramientas de UNIX como son: sed, grep, awk, c-shell, para la administración de tareas propias de sistemas UNIX.

### PHP

PHP es el acrónimo de "PHP: Hypertext Preprocessor". Este es un lenguaje de programación de scripts, concebido en el tercer trimestre de 1994 por Rasmus Lerdorf.
Se utiliza principalmente para la programación de CGIs para páginas web, destaca por su capacidad de ser embebido en el código HTML. Además, existe un compilador comercial (el Zend Optimizer).

### Python

Python es un lenguaje de programación creado por Guido van Rossum en 1990.
Es un lenguaje de programación de scripts, la "oposición leal" a Perl, lenguaje con el cual mantiene una rivalidad amistosa. Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica con el usuario) como Tk.
Python es un lenguaje interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa de la base hacia arriba.
SQL-Ledger es un sistema complejo si no sabes sobre contabilidad.

# Instalación

Se presenta a continuación una guía para instalar Sql Ledger, se asume conocimientos básicos en el manejo del entorno del sistema como: instalación de paquetes,, manejo del directorio de archivos, manejo de consola, administrar permisos, administrar grupos.

## Ubuntu 7.10
### Instalar PostgreSql

En Ubuntu es fácil instalar la base de datos de PostgreSQL ya que se puede hacer por medio del repositorio de instalación Synaptic, para ello abrimos Synaptic buscamos postgresql y se marca para instalar y se aplica el cambio de instalación.

### Configurando la cuenta postgres

La cuenta postgres es la que se crea por defecto cuando se instala la base de datos; luego de instalada se abre la consola y se ejecuta:
Estando en consola con el usuario postgres se ejecuta:
En este paso ya se esta ejecutando PostgreSql en modo consola con el usuario postgres, luego se le cambia la contraseña por una que sea fácil de recordar:
PostgreSql responde exitoso cuando devuelve:
Nota: En PostgreSql los comandos son sensibles por lo que se debe tener atención a este detalle. Con este dato (usuario postgres y la clave) se configura la conexión a PostgreSql con el administrador pgAdminIII.

### Instalar pgAdminIII

Es recomendable instalar pgAdmin (http://www.pgadmin.org), que es un administrador gráfico de la base de datos PostgreSql, lo que permite que se administre la base PostgreSql con facilidad. Para instalarlo se ingresa por administrador de paquetes Synaptic y se busca pgadmin, se selecciona para instalar y se aplican los cambios.
Nota: Hay quienes prefieren el uso de la consola, para este caso el enfoque será en el uso de PostgreSql con pgAdmin por su facilidad de manejo, también hay otros administradores gráficos para PostgreSql.
El paquete instalado por lo general se encuentra por la ruta Aplicaciones > Herramientas del Sistema> pgAdmin. Si por algún motivo no aparece se puede ejecutar por consola con el comando:
Se ejecuta pgAdmin para conectarse con la base de datos, se da clic en el boton New Server Registration allí se ingresan los siguientes datos:
Se crea el usuario sql-ledger con clic derecho sobre Login Roles luego New Role.
Luego que se conecte se crea la base de datos donde quedaran los datos de Sql Ledger, clic derecho sobre Databases luego New Database se llenan los datos:
En este paso se puede proceder a instalar el sitio web Sql Ledger.

### Instalar Apache2

Para instalar Apache2 se procede de la misma forma que lo hicimos con PostgreSql y pgAdmin III, se abre el administrador de paquetes Synaptic y se busca apache se marca para instalar y se aplican cambios para que se instale. Al instalar apache crea las carpetas:

### Instalar Sql Ledger

La forma fácil de instalar Sql Ledger es por medio de Synaptic, igual que los paquetes anteriores se abre Synaptic se busca sql-ledger se marca para instalar y se aplican los cambios, la siguiente forma permite instalar la versión más actualizada ya que se puede descargar la última desde el sitio web oficial.
Se descarga el paquete sql-ledger-x.xx.xx.tar.gz del sitio web http://www.sql-ledger.org, luego se descomprime el paquete en la ruta /var/www/ en la carpeta sql-ledger.
Se otorgan permisos de escritura sobre la carpeta, si es para ir probando se puede configurar con:
Se agrega el sitio web en el archivo de configuración de Apache2 de la siguiente forma:
Se busca la última línea justo antes de </VirtualHost> y se agrega el sitio web:
Se guardan los cambios en el archivo de configuración.
Se reinicia el servidor Apache2:
Se guardan los cambios, ahora se prueba que funcione el sitio web, se abre el navegador y se digita la siguiente dirección http://localhost/sql-ledger/admin.pl se comprueba que esta funcionando porque carga la página de administrador donde solicita la contraseña.

### Configurar Sql Ledger y Localización para Colombia

Luego que se carga la pagina del administrador por defecto en el navegador http://localhost/sql-ledger/admin.pl se pasa a configurar la base de datos y las cuentas de usuario.
La contraseña por defecto es en blanco por lo que se presiona el botón de login para ingresar, se visualiza los siguientes botones:
Pero no es nada fácil

# Bibliografía

* J. HURTADO, Alberto. Manual de Contabilidad Comercial, 6ª Edición. Editorial Presencia Limitada. pg.15.
* http://en.wikipedia.org/wiki/LAMP
* w:Soluciones_LAMP
* http://news.netcraft.com/archives/web_server_survey.html
* http://www.gestiopolis.com/recursos/documentos/fulldocs/fin/ppioscontablesgralmenteaceptados.htm
* http://www.sql-ledger.org
* PFAFFENBERG, Bryan. Diccionario de Términos de Computación. Editorial PEARSON. pg. 391.
* http://www.pgadmin.org
* http://www.postgresql.org