FacturaScripts  

FacturaScripts es básicamente una aplicación web, como un blog, y para instalarlo necesita un servidor web con PHP 5.3 o superior (incluido PHP 7.0). Puede instalarlo en su propio ordenador, o bien puede instalarlo en la nube (un hosting) y tenerlo disponible siempre online desde cualquier parte del mundo.

  • Requisitos:
    • Servidor web con PHP 5.3 o superior.
    • MySQL o PostgreSQL.
  • Recomendado:
    • Apache 2.x con PHP 7.0.
    • MySQL 5.x o superior.
    • Memcache.

En la sección descargar encontrará tanto FacturaScripts como distintos empaquetados para Windows y Mac, que ya incluyen apache, php y mysql.


El instalador

FacturaScripts dispone de un potente instalador integrado que puede ver a continuación.

Este instalador sirve para crear un archivo config.php para indicar a FacturaScripts como conectar a la base de datos, memcaché, etc.


¿Problemas en la instalación?

Existen varias situaciones en las que es más complicado de lo normal instalar FacturaScripts.

  • Ya tiene instalada otra aplicación que utiliza el puerto 80.
  • Ya tiene instalado XAMP o similar y se niega a reconocerlo.
  • Se niega a seguir los pasos de instalación, o cree que están equivocados.
  • Se niega a leer los mensajes de error, o cree que están equivocados.

En el vídeo de arriba se explican los distintos errores que se puede uno encontrar y sus soluciones. Pero si no desea verlo o no soliciona sus problemas, tiene dos opciones:

  • Usar uno de los hosting que ofrecen FacturaScripts ya instalado, gratis durante unos días.
  • Contratar a uno de los Partners para que revise sus sistema y le instale FacturaScripts.
  Hostings con FacturaScripts   Soporte

  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...

Leer más...

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.

Más información...

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.

Más información...


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.


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

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
Ver plugins comprados


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.

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.

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.

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.

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.



FacturaScripts es prácticamente un framework MVC escrito en PHP 5.3 (compatible con versiones superiores, inluida PHP 7.X). 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.


  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.

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.


¿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.


¿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.

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.
<?php

/// la clase se debe llamar igual que el archivo
class mi_controlador extends fs_controller
{
   public function __construct()
   {
      /// se crea una entrada 'Mi controlador' dentro del menú 'Mio'
      parent::__construct(__CLASS__, 'Mi controlador', 'mio');
   }
   
   protected function private_core()
   {
      /// tu código php lo pondrás aquí
   }
}

Tu código comenzará a ejecutarse en la función private_core().

{include="header"}

<h1>Tu HTML aquí</h1>

{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.

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.

<?php

/// la clase se debe llamar igual que el archivo
class mi_modelo extends fs_model
{
   public $id;
   public $columna1;

   public function __construct($d = FALSE)
   {
      parent::__construct('mi_tabla'); /// aquí indicamos el NOMBRE DE LA TABLA
      if($d)
      {
         $this->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).";");
   }
}

¿Demasiado código?

Puedes generar todo este código automáticamente con el plugin FSDK, que genera modelos completos a partir de una tabla.

  Plugin FSDK

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:

<?xml version="1.0" encoding="UTF-8"?>
<tabla>
   <columna>
      <nombre>codserie</nombre>
      <tipo>character varying(2)</tipo>
      <nulo>NO</nulo>
   </columna>
   <columna>
      <nombre>descripcion</nombre>
      <tipo>character varying(100)</tipo>
      <nulo>YES</nulo>
   </columna>
   <restriccion>
      <nombre>series_pkey</nombre>
      <consulta>PRIMARY KEY (codserie)</consulta>
   </restriccion>
</tabla>

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.



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}
  Todos los detalles del motor de plantillas

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

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).

<?php

class mi_controlador extends fs_controller
{
   public $mi_variable;
   
   public function __construct()
   {
      /// se crea una entrada 'Mi controlador' dentro del menú 'Mio'
      parent::__construct(__CLASS__, 'Mi controlador', 'mio');
   }
   
   protected function private_core()
   {
      $mi_variable = 42;
   }
}

Ahora mostramos el contenido de esa propiedade desde la vista:

{include="header"}

{$fsc->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.

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.');

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.');
   }
}

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.

<?php

function mi_funcion()
{
   /// tu código
}

?>

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

<?php

class cron_mi_plugin
{
   private $db;
   private $empresa;

   public function __construct(&$db, &$empresa)
   {
      $this->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á.

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.

<?php

require_once 'plugins/facturacion_base/model/core/factura_cliente.php';

class factura_cliente extends FacturaScripts\model\factura_cliente
{
   /// modifica o añade las propiedades o funciones que desees.
}

?>
  ver en youtube

Herencia de controladores

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



  Más documentación...

Guía de contribución Chat para programadores Tareas pendientes
Enviar plugin




© 2013-2017 FacturaScripts