FacturaScripts  
Personalizar los tickets mediante un plugin.
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:
1.- Creamos un nuevo plugin.
2.- Creamos una carpeta model dentro de ese plugin.
3.- Dentro de la carpeta modelo 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();
   }
}
4.- 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.

hace 2 meses   tronico_f74d39
He creado un nuevo plugin y he copiado tal cual el código anterior, he modificado tan solo en nombre de la empresa y he puesto el nombre corto. He activado el plugin y lo he probado, efectivamente funciona, pero... al intentar imprimir con el TPV táctil me da error de terminal, si voy a la configuración de terminales veo que los nombres han desaparecido y aunque ponga un nombre no se guarda. Desactivo el plugin y todo vuelve a la normalidad.

saludos
hace 2 meses   NeoRazorX   [admin]
Si, eso es porque el plugin TPV_tactil incluye su propio modelo terminal_caja, así que tendrás que copiarlo, en lugar de usar este método.
No se pueden hacer más comentarios. Mejor escribe una nueva pregunta

  Documentación
Puedes consultar el resto de la documentación en la sección documentación (arriba a la derecha). Se suele actualizar semanalmente.

O también puedes usar el buscador ;-)

Financiación

30 patrocinadores

Este mes se han realizado un total de 30 aportaciones económicas para documentar, planificar, diseñar, programar y mantener el proyecto.

90% Complete

270 € este mes

+5 €




© 2013-2017 FacturaScripts