INTRODUCCION GENERAL - Miguel-J/facturascripts-doc GitHub Wiki


Sacado el 10-mayo-2017 de:

https://www.facturascripts.com/documentacion

1. config.php

El archivo config.php es el que le dice a FacturaScripts como conectar a la base de datos, además de otros parámetros como: configuración de memcaché, nombre del directorio temporal, caducidad de las cookies y número de elementos en pantalla por defecto...

1. Abanq / Eneboo

FacturaScripts es compatible con la base de datos de FacturaLux y sus derivados (Abanq y Eneboo). Pero la compatibilidad es solamente con los datos, no con las personalizaciones. Es decir, si ha añadido nuevos formularios o campos en Eneboo, no los va a ver en FacturaScripts.

2. El cron

FacturaScripts necesita de un proceso cron para ciertas tareas como generar los documentos contables (libro diario, etc) y acelerar ciertos procesos, como la sincronización con PrestaShop. Configurar el cron se hace de forma distinta si tienes instalado FacturaScripts en Windows, Linux, Mac o bien en un Hosting externo.

3. Instalar plugins

Los plugins permiten añadir nuevas funcionalidades o cambiar el comportamiento por defecto para adaptarlo a sus necesidades. FacturaScripts dispone de decenas y decenas de plugins a su disposición. Puede ver los plugins instalados en el menú admin > Panel de control.

4. Instalar plugins gratuitos

Los plugins gratuitos los puede instalar muy fácilmente desde el menú admin > Panel de control. Haga clic en la pestaña descargas y ahí tiene todos los plugins. Por último haga clic en el botón descargar del plugin que quiera instalar. descargar plugins

5. Instalar plugins de pago

Si ha comprado un plugin de pago, puede descargarlo desde el enlace que le habrá llegado por email, o bien desde la sección sus claves de su perfil en la comunidad, es decir, haciendo clic aquí. Una vez tenga el archivo, vaya al menú admin -> Panel de control. Haga clic en el botón añadir, selecciona el archivo que ha descargado y pulse el botón añadir. instalar plugin

1. Primeros pasos

Una vez instalado llegará al panel de control y un asistente de configuración se inicia. Siga los pasos del asistente y descargue facturacion_base. El asistente le preguntará nombre, dirección, provincia, etc, además de los datos de facturación. No olvide escribir el IRPF que use y marcar si necesita comprar con recargo de equivalencia. Por último, si desea usar la configuración integrada, marque la casilla contabilidad integrada e importe los datos contables del ejercicio. Impuestos (IVA)

Puede configurar los tipos de IVA desde el menú contabilidad > Impuestos. Por defecto tiene los principales tipos de IVA para España, pero puede modificarlos, eliminarlos y/o crear nuevos.

Recargo de Equivalencia

Para poder comprar con recargo de equivalencia debe activarlo en el menú admin > Empresa > Facturación. Para poder vender con recargo de equivalencia debe activarlo en el propio cliente. El porcentaje de recargo es editable para cada línea, y los porcentajes predeterminados están configurados en el menú contabilidad > Impuestos.

IRPF

El IRPF se configura en las series (menú contabilidad > Series). Elija una serie con IRPF al hacer una nueva compra o venta cuando lo necesite. Puede crear todas las series que necesites. Además podrá modificar el IRPF para cada línea del documento, con lo que tiene máxima flexibilidad. Ejercicios fiscales

FacturaScripts genera automáticamente un ejercicio fiscal cada año, conforme lo va necesitando. Si por ejemplo crea un pedido con fecha de 2 de febrero de 2021, FacturaScripts creará el ejercicio para el año 2021 si no existe. Lo que no generá automáticamente es la estructura contable, los epígrafes, cuentas y subcuentas necesarias. Ese paso deberá realizarlo husted. Eso si, facturaScripts dispone de un asistente para importar esos datos rápidamente.

Puede ver los ejercicios fiscales en el menú contabilidad > Ejercicios. Si hace clic en cualquiera de ellos, y este ejercicio no tiene epígrafes, se le mostrará un asistente para importarlos rápidamente.

FacturaScripts dispone de un sistema contable con infinitos niveles, para ello dispone de los epígrafes, que pueden tener tantos hijos como sea necesario. Sitúese en el epígrafe que necesite y en la parte inferior encontrará un botón para crear un nuevo epígrafe, que será hijo de este, aumentando un nivel de profundidad. Repita el proceso tantas veces necesite.

Epígrafes y grupos

Puede ver los epígrafes y grupos de epígrafes de cada ejercicio desde el menú contabilidad > Grupos y epígrafes. Dispone de un selector a la izquierda para seleccionar el ejercicio fiscal.

Cuentas y subcuentas

Puede ver las cuentas y subcuentas de cada ejercicio en el menú contabilidad > Cuentas. Dispone de un selector para filtrar por ejercicio. Traducciones

Muchos términos de FacturaScripts como albaranes, número 2, IVA e IRPF pueden ser traducidos en todo el programa. Puede modificar esas traducciones desde el menú admin > Panel de control > Avanzado. Decimales

En FacturaScripts puede configurar los decimales a use en los totales y los decimales para los precios de los artículos de forma separada, permitiendo la máxima flexibilidad. Puede modificar los decimales desde el menú admin > Panel de control > Avanzado.


1. Programación

FacturaScripts es prácticamente un framework MVC escrito en PHP 5.3 (compatible con versiones superiores, inluida PHP 7.0). Puede conectar tanto a MySQL como a PostgreSQL. La capa gráfica está construida sobre bootstrap para adaptarse a PC, tablet y móvil. Y su sistema de plugins permite modificar el comportamiento de cualquier clase.

Los plugins se encuentran en la carpeta plugins, uno por carpeta, y tienen esta estructura:

plugins/mi_plugin/
    controller/

    Contiene los controladores del plugin, uno en cada archivo, con el mismo nombre que la clase del controlador que contienen. Es decir, si el archivo se llama ventas_imprimir.php, la clase que contiene debe ser ventas_imprimir.
    model/

    Contiene los modelos del plugin, uno en cada archivo, con el mismo nombre que la clase del modelo que contienen. Es decir, si el archivo se llama factura_cliente.php, la clase que contiene debe ser factura_cliente.
    model/table/

    Contiene las descripciones de las tablas de la base de datos que se deseen crear/modificar. Los archivos se llaman igual que las tablas, es decir, el archivo articulos.xml es para crear/modificar la tabla articulos.
    view/

    Contiene las vistas HTML del plugin, una en cada archivo.
    view/js/

    Contiene los archivos javascript del plugin.
    cron.php (opcional)

    Contiene el código que se ejecutará cada vez que se ejecute el cron, simpre que el plugin esté activo.
    description (opcional)

    Contiene la descripción del plugin (este plugin hace tal y tal...).
    facturascripts.ini

    Indicia a FacturaScripts la versión del plugin, requisitos, etc...
    functions.php (opcional)

    Contiene funciones que pueden ser llamadas desde cualquier modelo, controlador o vista.

1. MVC o 2 capas:

FacturaScripts también permite acceder a la base de datos directamente desde los controladores, con lo que el uso de modelos no es estríctamente obligatorio. Puedes hacer consultas rápidas a la base de datos sin necesidad de crear o extender modelos. Prioridades de plugins

Lo primero que debe tener claro es el sistema de prioridades por el que se rige FacturaScripts. El último plugin activo tiene más prioridad que el anterior, y así sucesivamente. Cuando se consulta una página, se carga un modelo, una vista html o un archivo javascript, primero se comprueba si está en el plugin con mayor prioridad, si no se encuentra, se continua con el siguiente, etc...

Gracias a este sistema podemos modificar el comportamiento de cualquier página, simplemente copiamos el archivo necesario a nuestro plugin, hacemos ahí los cambios, y al activar el plugin, como ha sido el último en activar, tiene preferencia sobre el resto y se utiliza el archivo que hemos modificado, pero solamente ese, quedando intacto el resto.

1. ¿Quiere modificar el comportamiento de ventas_imprimir.php?

Copie el archivo ventas_imprimir.php a la carpete controller de su plugin, modifique el archivo a su gusto. Active su plugin y verá como se usa su archivo en lugar del original.

1. ¿Quiere modificar el ventas_articulos.html?

Copie el archivo ventas_articulos.html a la carpete view de su plugin, modifique el archivo a su gusto. Active su plugin y verá como se usa su archivo en lugar del original. facturascripts.ini

version = 1 ; Indica la versión del plugin, debe ser un número entero.

version_url = 'http...' ; opcional Una URL donde consultar este archivo facturascripts.ini actualizado, así el actualizador puede comprobar cuando hay actualizaciones.

update_url = 'http.....zip' ; opcional Una URL de donde descargar la nueva versión del plugin

require = 'facturacion_base' ; opcional Indica que el plugin facturacion_base es imprescindible para el tuyo.

mi_controlador.php

Todos los controladores heredan de la clase fs_controller.

Tu HTML aquí {include="footer"} Los archivos header.html y footer.html contienen el código html de la parte superior e inferior de FacturaScripts, es decir, el menú principal y los principales objetos de la interfaz. También dispones de los archivos header2.html y footer2.html si solamente quieres cargar el css necesario, pero no el menú superior y la parte de abajo. mi_modelo.php Todos los modelos heredan de la clase fs_model, que es la que se encarga de comprobar la tabla y hacer los ajustes necesarios. Imaginemos una tabla llamada mi_tabla que tiene dos columnas: id (entero y clave primaria) y columna1, que es de tipo varchar(200). Este sería su modelo. id = $this->instval($d['id']); $this->columna1 = $d['columna1']; } else { $this->id = null; $this->columna1 = null; } } public function install() { return ''; } public function exists() { if( is_null($this->id) ) { return FALSE; } else { return $this->db->select("SELECT * FROM ".$this->table_name." WHERE id = ".$this->var2str($this->id).";"); } } public function save() { if( $this->exists() ) { $sql = "UPDATE ".$this->table_name." SET ... WHERE id = ".$this->var2str($this->id).";"; } else { $sql = "INSERT INTO ".$this->table_name." (id,columna1) VALUES (...);"; } return $this->db->exec($sql); } public function delete() { return $this->db->exec("DELETE FROM ".$this->table_name." WHERE id = ".$this->var2str($this->id).";"); } } #### 1. ¿Demasiado código? Puedes generar todo este código automáticamente con el plugin FSDK, que genera modelos completos a partir de una tabla. mi_tabla.xml Estructura de la tabla FacturaScripts utiliza los archivos de la carpeta model/table para generar y adaptar la estructura de las tablas. Estos archivos son XML y tienen el siguiente estilo: codserie character varying(2) NO descripcion character varying(100) YES series_pkey PRIMARY KEY (codserie)

Puedes generar estos archivos muy facilmente con el plugin FSDK. Además se rigen por el mismo sistema de prioridades de los plugins, de forma que si añades por ejemplo el archivo model/table/articulos.xml a tu plugin, se utilizará en lugar del original, permitiéndote alterar la estructura de la tabla artículos sin modificar el modelo.

El motor de plantillas HTML

FacturaScripts utiliza una versión personalizada de rainTPL. Este motor de plantillas es extremadamente rápido y simple. Cuanta con apenas 8 etiquetas para bucles, condiciones, functiones e includes.

{loop="$fsc->mi_funcion_que_devuelve_array()"} {$value1} {/loop}

1. Mostrar datos del controlador en la vista

El controlador está disponible en la vista mediante la variable $fsc. Podremos acceder a todas sus propiedades y funciones públicas.

Añadimos al controlador una propiedad pública (una variable pública).

mi_variable} {include="footer"} Ten en cuenta que la vista se genera lo último. Antes de empezar a generar el HTML se habrá ejecutado toda la función private_core() del controlador. Puedes hacer exactamente lo mismo con funciones públicas, en ese caso, se ejecutarán cuando se cargue la vista. Mostrar mensajes y errores Dispones de la función new_message() en controladores y modelos para mostrar mensajes, así como new_error_msg() para mostrar errores. $this->new_message('Esto es un mensaje.'); $this->new_error_msg('Esto es un mensaje de error.'); Consultar la base de datos Pese a que FacturaScripts es MVC y el acceso a la base de datos suele hacerse en el modelo, FacturaScripts también permite consultar la base de datos desde los controladores para facilitar el desarrollo, por ejemplo cuando tienes que hacer una consulta concreta que solamente relizas en ese controlador. /// mostramos un mensaje para cada artículo con pvp = 0 $data = $this->db->select("SELECT * FROM articulos WHERE pvp = '0';"); if($data) { foreach($data as $d) { $this->new_message('El artículo '.$d['referencia'].' tiene precio = 0.'); } } functions.php En este archivo puedes definir funciones que podrás usar desde cualquier controlador, modelo o vista. No es necesario ningún include o require hacia este archivo, el núcleo ya se ocupa de cargar todos los archivos functions.php de los plugins activos.

cron.php

En este archivo puedes añadir código que se ejecutará cada vez que se ejecute el cron (siempre que el plugin esté activo).

db = $db; $this->empresa = $empresa; /// tu código aquí } } new cron_mi_plugin($db, $empresa); ?>

Recuerda que el archivo que hay que ejecutar es el cron.php de la carpeta de FacturaScripts. Ese se encarga de ejecutar el cron.php de cada plugin. No ejecutes el cron.php del plugin por separado, no funcionará. Desactivar la salida HTML

Para desactivar la salida HTML simplemente debes poner a false la propiedad template del controlador.

$this->template = FALSE;

/// ahora ya puedes escribir lo que quieras en la salida estándar echo 'hola mundo';

Cambiar la vista HTML

Si lo que deseas es usar otro archivo para la vista, indica el nombre del archivo en la propiedad template del controlador.

$this->template = 'otro_archivo'; /// sin el .html

Herencia de modelos

Los modelos de los principales plugins ya permiten herencia de forma muy sencilla. Si por ejemplo deseas extender el modelo factura_cliente, copia el archivo plugins/facturacion_base/model/factura_cliente.php a tu plugin. Este archivo ya realiza la herencia al de la carpeta core, así que simplemente debes reimplementar la función o funciones que desees.

Herencia de controladores

La herencia de controladores todavía no está disponible.

Cómo contribuir a FacturaScripts

Esta es una comunidad abierta y puedes contribuir con cambios en los plugins existentes o bien enviando nuevos plugins. Lee aténtamente la guía de contribución. Enviar plugin

Desde la sección plugins puedes enviarnos plugins que quieras compartir con todo el mundo, ya sea con github o directamente en u

n zip.

⚠️ **GitHub.com Fallback** ⚠️