public function generar_asiento_faltante(&$faltante, $ejercicio)
 {
     $ok = FALSE;
     $this->asiento = FALSE;
     $tipo = $faltante->estado;
     $conductor0 = new distribucion_conductores();
     $subcuenta_conductor = FALSE;
     $concepto = $tipo == 'pendiente' ? "Faltante " : "Pago Faltante ";
     $conductor = $conductor0->get($faltante->idempresa, $faltante->conductor);
     if ($conductor) {
         $subcuenta_conductor = $this->get_subcuenta($ejercicio);
     }
     if (!$subcuenta_conductor) {
         $eje0 = $this->ejercicio->get($ejercicio);
         return "No se ha podido generar una subcuenta para el conductor <a href='" . $eje0->url() . "'>¿Has importado los datos del ejercicio?</a>";
         if (!$this->soloasiento) {
             return "Aun así el <a href='" . $faltante->url() . "'>faltante</a> se ha generado correctamente, pero sin asiento contable.";
         }
     } else {
         $asiento = new asiento();
         $asiento->codejercicio = $ejercicio;
         $asiento->concepto = $concepto . $faltante->idrecibo . " - " . $faltante->nombreconductor;
         $asiento->documento = $faltante->idrecibo;
         $asiento->editable = FALSE;
         $asiento->fecha = $faltante->fecha;
         $asiento->importe = $faltante->importe;
         $asiento->tipodocumento = $concepto . ' Liquidacion';
         if ($asiento->save()) {
             $asiento_correcto = TRUE;
             $subcuenta = new subcuenta();
             $partida0 = new partida();
             $partida0->idasiento = $asiento->idasiento;
             $partida0->concepto = $asiento->concepto;
             $partida0->idsubcuenta = $subcuenta_conductor->idsubcuenta;
             $partida0->codsubcuenta = $subcuenta_conductor->codsubcuenta;
             if ($tipo == 'pendiente') {
                 $partida0->debe = $faltante->importe;
             } elseif ($tipo == 'pagado') {
                 $partida0->haber = $faltante->importe;
             }
             $partida0->coddivisa = $faltante->coddivisa;
             $partida0->tasaconv = 1;
             $partida0->codserie = NULL;
             if (!$partida0->save()) {
                 $asiento_correcto = FALSE;
             }
             if ($asiento_correcto) {
                 $faltante->idasiento = $asiento->idasiento;
                 $faltante->idsubcuenta = $partida0->idsubcuenta;
                 $faltante->codcuenta = $partida0->codsubcuenta;
                 if ($faltante->save()) {
                     $ok = TRUE;
                     $this->asiento = $asiento;
                 } else {
                     return "¡Imposible añadir el asiento al faltante!";
                 }
             } else {
                 if ($asiento->delete()) {
                     return "El asiento se ha borrado.";
                 } else {
                     return "¡Imposible borrar el asiento!";
                 }
             }
         } else {
             return "¡Imposible guardar el asiento!";
         }
     }
     return $ok;
 }
 private function buscar_conductor()
 {
     /// desactivamos la plantilla HTML
     $this->template = FALSE;
     $con0 = new distribucion_conductores();
     $json = array();
     foreach ($con0->search($this->empresa->id, $_REQUEST['buscar_conductor']) as $con) {
         $json[] = array('value' => $con->nombre, 'data' => $con->licencia);
     }
     header('Content-Type: application/json');
     echo json_encode(array('query' => $_REQUEST['buscar_conductor'], 'suggestions' => $json));
 }