# Pineboo

Pineboo ERP/CRM es un software de Planificación de recursos empresariales (PRE, ERP en inglés) y administración de la relación con los clientes (CRM en inglés) open source para la Pequeña y mediana empresa, autónomos o asociaciones. Se creó en 2012 por David Martínez Martí como evolución compatible (en código libre) del programa Eneboo, que venía de AbanQ (y éste venía de FacturaLux). Actualmente, a febrero de 2020, hay una versión funcional en desarrollo. No se recomienda su uso en producción, aún. Está programándose en Python 3.

## Características

La aplicación está disponible bajo licencia GNU/GPL (GNU General Public License). Pineboo es una adaptación del software de gestión ERP Eneboo al lenguaje Python para darle proyección de futuro ante la falta de soporte de algunas herramientas con las que se creó Eneboo (Scripts de QSA, equivalente a QT3 y ECMAScripts-JavaScripts). Pineboo es una evolución en Python de Eneboo, que a la vez es fork de AbanQ 2.4, una aplicación orientada al desarrollo rápido de aplicaciones empresariales basadas fuertemente en base de datos bajo la licencia GPLv2. Fue creado para poder introducir correcciones al programa y darle un aspecto más colaborativo al proyecto. Entre otras cosas, ofrece un sistema de compilación algo más sencillo y no hace uso de módulos firmados binarios.
Para su funcionamiento requiere los siguientes elementos:
* Ordenador y sistema operativo (ejemplo: windows, linux, mac)
* Servidor de base de datos: Apache+PhP+(MySQL o PostgreSQL) (ejemplo: wampserver, XAMPP, LAMPP, etc)
* El programa base, descargable en https://github.com/Aulla/pineboo
* Pineboo necesita estas dependencias
* Los módulos generales (instalados por Eneboo)
* Los módulos+extensiones personalizadas (algunas gratis y otras de pago)
Una vez instalado, el programa se compone de tres elementos independientes:
* El programa base': que se puede actualizar a la última versión sin afectar al resto, o borrar y re-instalar varias veces. (hay dos tipos: "dba" para el ordenador-administrador y "quick" para los ordenadores-clientes o empleados)
* La base de datos': alojada en un subdirectorio del servidor. Almacena los datos junto con los módulos mezclados.
* La "Mezcla": es una copia externa de los módulos y extensiones (guardadas en la base de datos) que se usarán en futuras personalizaciones/ modificaciones mediante las "eneboo-tools" (programadas en Python 2.7).
Las características principales del sistema Eneboo podría resumirse en los siguientes puntos:
* Es un Sistema Multiusuario
* Una interfaz personalizable mediante módulos
* Permite modificar el código directamente con editores de texto.
* Permite varios controladores/servidores de base de datos (PostgreSQL, MySQL o SQLite). El recomendado para grandes proyectos (o en entorno linux) es PostgreSQL (porque las extensiones nuevas tienen menos errores).
Solo existe una única aproximación a la ejecución de proyectos de Eneboo:
* Python3.x + PyQt5
* Permite ejecutarlo en PostgreSQL , SQLite y en MySQL.
* Motor realizado íntegramente en Python
* Conversión al vuelo de QSA a PY con parseador FLScriptParser2
* Conversión al vuelo de formularios Qt3 a Qt5 creando un UiLoader manualmente

## Funcionalidades

Pineboo incluye las funcionalidades más importantes de un PGI/GRC (En inglés ERP/CRM) incluye la gestión contable. Está basado en diferentes módulos más o menos dependientes unos de otros. Se caracteriza principalmente por su facilidad de instalación y su simplicidad de uso a pesar del gran número de funcionalidades que se activan a través de módulos.

## Módulos principales: Eneboo estándar

* Módulos oficiales de Facturación y Financiera
* Existe un "proyecto" con los principales módulos y extensiones ya aplicados

## Extensiones para personalizar el programa

* ext0001-co_subarticulo - Subcuenta de venta asociada a los artículos
* ext0002-norma58 - Creación de un fichero de texto de una remesa de recibos según la norma 58
* ext0005-infovtos - Informe de vencimientos de recibos de clientes y proveedores
* ext0011-info_riesgocli - Informe de riesgo acumulado de clientes.
* ext0014-recibosprov - Informe de riesgo acumulado de clientes.
* ext0020-co_renumasiento - Renumeración automática de asientos
* ext0022-diaspagoprov - Establecimiento de determinados días del mes como días de pago para un proveedor
* ext0048-listadoscliprov - Listados de clientes y proveedores
* ext0125-cambio_empresa - Cambio de empresa sin salir de la aplicación
* ext0157-co_traspasoejer - Traspaso de movimientos contables entre dos subcuentas
* ext0224-pgc2008 - Adaptaciones al nuevo plan general contable 2008
* ext0308-multilinea - Descripción de texto largo multilínea en los artículos
* ext0599-iva_periodos - Distintos % de iva para un determinado tipo de impuesto
* ext0450-envio_mail - Envío directo de correos electrónicos

### Diversos

* Multi-usuario, permisos por funcionalidades
* Varios gestores de menú (diferentes para los usuarios internos en back-office y para los externos en front-office)
* Muy simple de instalar y de usar
* Varios temas
* Código altamente personalizable con las extensiones.
* Funciona con MySQL, PostgreSQL, etc

## Características que faltan / puntos débiles

* Tiene prioridad el desarrollo en PostgreSQL, por lo que el de MySQL, SQL MS Server, MariaDB, etc tienen más errores.
* Acceso por móvil Android en desarrollo.

## Arquitectura por capas

La interfaz convierte "al vuelo" al lenguaje Python 3 scripts en lenguaje QSA y la aplicación base de Eneboo programada en C++ a través de las librerías QT. En el entorno de Eneboo se utilizan tres tipos de lenguajes:
* Lenguaje QSA.' Es el utilizado en los scripts de los módulos, basado en ECMAScript (y por tanto muy parecido a JavaScript). No necesita ser compilado.
* Lenguaje C++.' Es el utilizado para crear el núcleo de Eneboo (antes Abanq y antes FacturaLUX) (esto es, las aplicación base). Se utiliza el Qt, una biblioteca multiplataforma para desarrollar interfaces gráficas de usuario. Utiliza el lenguaje C++ pero permite usar también C, Python y Perl, además cuenta con soporte para acceder a bases de datos mediante SQL, XML y API para el manejo de ficheros.
* Lenguaje Python 2.7.' Es el usado en las herramientas de personalización del programa, llamadas "
Soporta varias bases de datos( MySQL, PostgreSQL, SQLite). Ha sido diseñado para funcionar con la más amplia gama de servidores o hosts posible.
Eneboo puede ser instalado en los Sistemas Operativos Windows (wampserver, WAMPP,...), Mac OS X (......) y Linux Ubuntu/Debian (LAMPP,..... para Ubuntu).

### Componentes de un módulo

* tables. Definiciones de las tablas. Cada tabla se define en un archivo de extensión mtd
* forms. Definiciones de los formularios. Cada formulario se define en un archivo de extensión ui
* scripts. Definiciones de los scripts. Cada script se define en un archivo de extensión qs
* queries. Definiciones de las consultas. Cada consulta se define en un archivo de extensión qry
* reports. Definiciones de los informes. Cada informe se define en un archivo de extensión kut
* translations. Listados de traducciones. Cada listado de traducciones para un determinado idioma se define en un archivo de extensión ts

## Historia

Hasta la fecha, estas son las versiones del programa base publicadas:
* José A. Fernández (alias "Aulla") se encarga de desarrollarlo en Python 3 durante 2019 a 2021.
* El logotipo y varios splashscreen fueron "actualizados" por Gabriel Castro Vidal de El Cuartito Diseño en 2018.
* El primer boceto se creó en 2012 por David Martínez en python 2.7
Otros desarrolladores, particulares, empresas o independientes (por ejemplo, ...) contribuyen, a través de sus tests, envío de parches al foro o lista de correo, a la evolución de Eneboo.