Esta web utiliza cookies propias y de terceros para su funcionamiento. ¿Aceptas? Leer más
Personalizaciones comunes

Personalizar tickets

Los tickets se generan en el modelo terminal_caja del plugin facturacion_base, 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.