Esta documentación pertenece a FacturaScripts 2017 y se considera obsoleta.
Por favor, consulta la nueva documentación desde la guía de programación

Personalizar tickets

Los tickets se generan en el modelo terminalcaja del plugin facturacionbase, por tanto es muy sencillo hacer un plugin para modificar su formato:

  • Creamos un nuevo plugin.
  • Creamos una carpeta model dentro de ese plugin.
  • Dentro de la carpeta model del plugin creamos el archivo terminal_caja.php con este contenido:
<?php
require_once 'plugins/facturacion_base/model/core/terminal_caja.php';

class terminal_caja extends FacturaScripts\model\terminal_caja
{
   /**
    * A partir de una factura añade un ticket a la cola de impresión de este terminal.
    * @param \factura_cliente $factura
    * @param \empresa $empresa
    * @param type $imprimir_descripciones
    * @param type $imprimir_observaciones
    */
   public function imprimir_ticket(&$factura, &$empresa, $imprimir_descripciones = TRUE, $imprimir_observaciones = FALSE)
   {
      $medio = $this->anchopapel / 2.5;
      $this->add_linea_big( $this->center_text( $this->sanitize($empresa->nombre), $medio)."\n");

      if($empresa->lema != '')
      {
         $this->add_linea( $this->center_text( $this->sanitize($empresa->lema) ) . "\n\n");
      }
      else
         $this->add_linea("\n");

      $this->add_linea(
              $this->center_text( $this->sanitize($empresa->direccion)." - ".$this->sanitize($empresa->ciudad) )."\n"
      );

      $this->add_linea( $this->center_text(FS_CIFNIF.": ".$empresa->cifnif) );
      $this->add_linea("\n\n");

      if($empresa->horario != '')
      {
         $this->add_linea( $this->center_text( $this->sanitize($empresa->horario) ) . "\n\n");
      }

      $linea = "\n".ucfirst(FS_FACTURA_SIMPLIFICADA).": " . $factura->codigo . "\n";
      $linea .= $factura->fecha. " " . Date('H:i', strtotime($factura->hora)) . "\n";
      $this->add_linea($linea);
      $this->add_linea("Cliente: " . $this->sanitize($factura->nombrecliente) . "\n");
      $this->add_linea("Empleado: " . $factura->codagente . "\n\n");
      
      if($imprimir_observaciones)
      {
         $this->add_linea('Observaciones: ' . $this->sanitize($factura->observaciones) . "\n\n");
      }
      
      $width = $this->anchopapel - 15;
      $this->add_linea(
              sprintf("%3s", "Ud.")." ".
              sprintf("%-".$width."s", "Articulo")." ".
              sprintf("%10s", "TOTAL")."\n"
      );

      $this->add_linea(
              sprintf("%3s", "---")." ".
              sprintf("%-".$width."s", substr("--------------------------------------------------------", 0, $width-1))." ".
              sprintf("%10s", "----------")."\n"
      );

      foreach($factura->get_lineas() as $col)
      {
         if($imprimir_descripciones)
         {
            $linea = sprintf("%3s", $col->cantidad)." ".sprintf("%-".$width."s",
                    substr($this->sanitize($col->descripcion), 0, $width-1))." ".
                    sprintf("%10s", $this->show_numero($col->total_iva()))."\n";
         }
         else
         {
            $linea = sprintf("%3s", $col->cantidad)." ".sprintf("%-".$width."s", $this->sanitize($col->referencia))
                    ." ".sprintf("%10s", $this->show_numero($col->total_iva()))."\n";
         }
         
         $this->add_linea($linea);
      }
      
      $lineaiguales = '';
      for($i = 0; $i < $this->anchopapel; $i++)
      {
         $lineaiguales .= '=';
      }
      $this->add_linea($lineaiguales."\n");
      $this->add_linea(
              'TOTAL A PAGAR: '.sprintf("%".($this->anchopapel-15)."s", $this->show_precio($factura->total, $factura->coddivisa))."\n"
      );
      $this->add_linea($lineaiguales."\n");
     
      /// imprimimos los impuestos desglosados
      $this->add_linea(
              'TIPO   BASE    '.FS_IVA.'    RE'.
              sprintf('%'.($this->anchopapel-24).'s', 'TOTAL').
              "\n"
      );
      foreach($factura->get_lineas_iva() as $imp)
      {
         $this->add_linea(
                 sprintf("%-6s", $imp->iva.'%').' '.
                 sprintf("%-7s", $this->show_numero($imp->neto)).' '.
                 sprintf("%-6s", $this->show_numero($imp->totaliva)).' '.
                 sprintf("%-6s", $this->show_numero($imp->totalrecargo)).' '.
                 sprintf('%'.($this->anchopapel-29).'s', $this->show_numero($imp->totallinea)).
                 "\n"
         );
      }
      
      $lineaiguales .= "\n\n\n\n\n\n\n\n";
      $this->add_linea($lineaiguales);
      $this->cortar_papel();
   }
}

Activamos el plugin.

Ahora ya podemos hacer los cambios que queramos sobre esa función. FacturaScripts la usará para generar los tickets del TPV, y no tenemos que preocuparnos por que los cambios los perdamos con una actualización, ya que al ser un plugin nuevo, facturaScripts no va a modificarlo al actualizar.

Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2026 FacturaScripts
0.08367s

Soporte