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.