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.
20-04-2017 20:48:08  





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



Soporte:

FacturaScripts es software libre y gratuito, pero si lo que busca es asesoramiento y soporte profesional, use la sección soporte.

  Soporte

¿Desea ser distribuidor?

Si desa ser distribuidor oficial de FacturaScripts, comience hoy mismo el proceso.

  hágase partner

Redes sociales:

Puede encontrarnos en las principales redes sociales. Y también en google+.





© 2013-2017 FacturaScripts