private function imprimir_ticket($num_tickets = 2)
 {
     $fpt = new fs_printer();
     $fpt->abrir_cajon();
     while ($num_tickets > 0) {
         $linea = "\nTicket: " . $this->albaran->codigo;
         $linea .= " " . $this->albaran->fecha;
         $linea .= " " . $this->albaran->show_hora(FALSE) . "\n";
         $fpt->add($linea);
         $fpt->add("Cliente: " . $this->albaran->nombrecliente . "\n");
         $fpt->add("Agente: " . $this->albaran->codagente . "\n\n");
         $fpt->add(sprintf("%3s", "Ud.") . " " . sprintf("%-25s", "Articulo") . " " . sprintf("%10s", "TOTAL") . "\n");
         $fpt->add(sprintf("%3s", "---") . " " . sprintf("%-25s", "-------------------------") . " " . sprintf("%10s", "----------") . "\n");
         foreach ($this->albaran->get_lineas() as $col) {
             $linea = sprintf("%3s", $col->cantidad) . " " . sprintf("%-25s", $col->referencia) . " " . sprintf("%10s", $this->show_numero($col->total_iva())) . "\n";
             $fpt->add($linea);
         }
         $linea = "----------------------------------------\n" . $fpt->center_text("IVA: " . $this->show_precio($this->albaran->totaliva, $this->albaran->coddivisa, FALSE) . "   " . "Total: " . $this->show_precio($this->albaran->total, $this->albaran->coddivisa, FALSE)) . "\n\n";
         if (isset($_POST['efectivo'])) {
             $linea .= $fpt->center_text("Efectivo..........: " . sprintf("%12s", $this->show_precio($_POST['efectivo'], $this->albaran->coddivisa, FALSE))) . "\n";
         }
         if (isset($_POST['cambio'])) {
             $linea .= $fpt->center_text("Cambio............: " . sprintf("%12s", $this->show_precio($_POST['cambio'], $this->albaran->coddivisa, FALSE))) . "\n";
         }
         $linea .= "\n\n\n";
         $fpt->add($linea);
         $fpt->add_big($fpt->center_text($this->empresa->nombre, 16) . "\n");
         $fpt->add($fpt->center_text($this->empresa->lema) . "\n\n");
         $fpt->add($fpt->center_text($this->empresa->direccion . " - " . $this->empresa->ciudad) . "\n");
         $fpt->add($fpt->center_text("CIF: " . $this->empresa->cifnif) . chr(27) . chr(105) . "\n\n");
         /// corta el papel
         $fpt->add($fpt->center_text($this->empresa->horario) . "\n");
         $fpt->imprimir();
         $num_tickets--;
     }
 }
 private function imprimir_ticket($albaran, $num_tickets = 1, $cajon = TRUE)
 {
     $fpt = new fs_printer();
     if ($cajon) {
         $fpt->abrir_cajon();
     }
     while ($num_tickets > 0) {
         $linea = "\nTicket: " . $albaran->codigo;
         $linea .= " " . $albaran->fecha;
         $linea .= " " . $albaran->show_hora(FALSE) . "\n";
         $fpt->add($linea);
         $fpt->add("Cliente: " . $albaran->nombrecliente . "\n");
         $fpt->add("Empleado: " . $albaran->codagente . "\n\n");
         if ($this->imprimir_observaciones) {
             $fpt->add('Observaciones: ' . $albaran->observaciones . "\n\n");
         }
         $fpt->add(sprintf("%3s", "Ud.") . " " . sprintf("%-25s", "Articulo") . " " . sprintf("%10s", "TOTAL") . "\n");
         $fpt->add(sprintf("%3s", "---") . " " . sprintf("%-25s", "-------------------------") . " " . sprintf("%10s", "----------") . "\n");
         foreach ($albaran->get_lineas() as $col) {
             if ($this->imprimir_descripciones) {
                 $linea = sprintf("%3s", $col->cantidad) . " " . sprintf("%-25s", substr($col->descripcion, 0, 24)) . " " . sprintf("%10s", $this->show_numero($col->total_iva())) . "\n";
             } else {
                 $linea = sprintf("%3s", $col->cantidad) . " " . sprintf("%-25s", $col->referencia) . " " . sprintf("%10s", $this->show_numero($col->total_iva())) . "\n";
             }
             $fpt->add($linea);
         }
         $linea = "----------------------------------------\n" . $fpt->center_text("IVA: " . $this->show_precio($albaran->totaliva, $albaran->coddivisa, FALSE) . '   ' . "Total: " . $this->show_precio($albaran->total, $albaran->coddivisa, FALSE)) . "\n\n\n\n";
         $fpt->add($linea);
         $fpt->add_big($fpt->center_text($this->empresa->nombre, 16) . "\n");
         if ($this->empresa->lema != '') {
             $fpt->add($fpt->center_text($this->empresa->lema) . "\n\n");
         } else {
             $fpt->add("\n");
         }
         $fpt->add($fpt->center_text($this->empresa->direccion . " - " . $this->empresa->ciudad) . "\n");
         $fpt->add($fpt->center_text("CIF: " . $this->empresa->cifnif) . chr(27) . chr(105) . "\n\n");
         /// corta el papel
         if ($this->empresa->horario != '') {
             $fpt->add($fpt->center_text($this->empresa->horario) . "\n");
         }
         $fpt->imprimir();
         $num_tickets--;
     }
 }
 private function cerrar_caja()
 {
     $this->caja->fecha_fin = Date('d-m-Y H:i:s');
     if ($this->caja->save()) {
         $fpt = new fs_printer();
         $fpt->add_big("\nCIERRE DE CAJA:\n");
         $fpt->add("Empleado: " . $this->user->codagente . " " . $this->agente->get_fullname() . "\n");
         $fpt->add("Caja: " . $this->caja->fs_id . "\n");
         $fpt->add("Fecha inicial: " . $this->caja->fecha_inicial . "\n");
         $fpt->add("Dinero inicial: " . $this->show_precio($this->caja->dinero_inicial, FALSE, FALSE) . "\n");
         $fpt->add("Fecha fin: " . $this->caja->show_fecha_fin() . "\n");
         $fpt->add("Dinero fin: " . $this->show_precio($this->caja->dinero_fin, FALSE, FALSE) . "\n");
         $fpt->add("Diferencia: " . $this->show_precio($this->caja->diferencia(), FALSE, FALSE) . "\n");
         $fpt->add("Tickets: " . $this->caja->tickets . "\n\n");
         $fpt->add("Dinero pesado:\n\n\n");
         $fpt->add("Observaciones:\n\n\n\n");
         $fpt->add("Firma:\n\n\n\n\n\n\n");
         /// encabezado común para los tickets
         $fpt->add_big($fpt->center_text($this->empresa->nombre, 16) . "\n");
         $fpt->add($fpt->center_text($this->empresa->lema) . "\n\n");
         $fpt->add($fpt->center_text($this->empresa->direccion . " - " . $this->empresa->ciudad) . "\n");
         $fpt->add($fpt->center_text("CIF: " . $this->empresa->cifnif) . chr(27) . chr(105) . "\n\n");
         /// corta el papel
         $fpt->add($fpt->center_text($this->empresa->horario) . "\n");
         $fpt->imprimir();
         $fpt->abrir_cajon();
         /// recargamos la página
         header('location: ' . $this->url());
     } else {
         $this->new_error_msg("¡Imposible cerrar la caja!");
     }
 }