protected function private_core()
 {
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     $this->agente = new agente();
     $this->cliente = new cliente();
     $this->cliente_s = FALSE;
     $this->forma_pago = new forma_pago();
     $contrato = new contrato_servicio();
     $this->contrato = FALSE;
     if (isset($_REQUEST['id'])) {
         $this->contrato = $contrato->get($_REQUEST['id']);
     }
     if ($this->contrato) {
         if (isset($_POST['codcliente'])) {
             $this->contrato->codcliente = $_POST['codcliente'];
             $this->contrato->codagente = $_POST['codagente'];
             $this->contrato->fecha_alta = $_POST['fecha_alta'];
             $this->contrato->fecha_renovacion = NULL;
             if ($_POST['fecha_renovacion']) {
                 $this->contrato->fecha_renovacion = $_POST['fecha_renovacion'];
             }
             $this->contrato->importe_anual = floatval($_POST['importe_anual']);
             $this->contrato->codpago = $_POST['codpago'];
             $this->contrato->periodo = NULL;
             if ($_POST['periodo'] == '') {
                 $this->contrato->fsiguiente_servicio = NULL;
                 if ($_POST['fsiguiente_servicio'] != '') {
                     $this->contrato->fsiguiente_servicio = $_POST['fsiguiente_servicio'];
                 }
             } else {
                 $this->contrato->periodo = $_POST['periodo'];
                 $this->contrato->fsiguiente_servicio = date('d-m-Y', strtotime($this->contrato->periodo));
             }
             $this->contrato->observaciones = $_POST['observaciones'];
             if ($this->contrato->save()) {
                 $this->new_message('Datos guardados correctamente.');
             } else {
                 $this->new_error_msg('Error al guardar los datos.');
             }
         }
         $this->cliente_s = $this->cliente->get($this->contrato->codcliente);
         $this->comprobar_upload();
     } else {
         $this->new_error_msg('Contrato no encontrado.');
     }
 }
 private function minicron()
 {
     $this->template = FALSE;
     $contrato = new contrato_servicio();
     $eje0 = new ejercicio();
     $estado = new estado_servicio();
     $idestado = NULL;
     foreach ($estado->all() as $est) {
         $idestado = $est->id;
         break;
     }
     $offset = 0;
     $contratos = $contrato->all($offset, 'fsiguiente_servicio ASC');
     while ($contratos) {
         foreach ($contratos as $con) {
             if ($con->fsiguiente_servicio) {
                 if (strtotime($con->fsiguiente_servicio) > strtotime($con->fecha_renovacion)) {
                     /// caducado
                 } else {
                     if (strtotime($con->fsiguiente_servicio) < strtotime('+1month')) {
                         $cliente = $this->cliente->get($con->codcliente);
                         if ($cliente) {
                             $ejercicio = $eje0->get_by_fecha($con->fsiguiente_servicio);
                             if ($ejercicio) {
                                 $servicio = new servicio_cliente();
                                 $servicio->codcliente = $cliente->codcliente;
                                 $servicio->cifnif = $cliente->cifnif;
                                 $servicio->nombrecliente = $cliente->razonsocial;
                                 $servicio->codagente = $con->codagente;
                                 $servicio->coddivisa = $this->empresa->coddivisa;
                                 $servicio->codejercicio = $ejercicio->codejercicio;
                                 $servicio->codpago = $con->codpago;
                                 $servicio->codserie = $cliente->codserie;
                                 $servicio->fecha = $con->fsiguiente_servicio;
                                 $servicio->fechainicio = $con->fsiguiente_servicio . ' ' . $this->nuevocli_setup['cal_inicio'];
                                 $servicio->idestado = $idestado;
                                 foreach ($cliente->get_direcciones() as $dir) {
                                     if ($dir->domfacturacion) {
                                         $servicio->direccion = $dir->direccion;
                                         $servicio->codpostal = $dir->codpostal;
                                         $servicio->ciudad = $dir->ciudad;
                                         $servicio->provincia = $dir->provincia;
                                         $servicio->codpais = $dir->codpais;
                                         break;
                                     }
                                 }
                                 if ($servicio->save()) {
                                     $con->fsiguiente_servicio = NULL;
                                     if ($con->periodo) {
                                         $con->fsiguiente_servicio = date('d-m-Y', strtotime($servicio->fechainicio . ' ' . $con->periodo));
                                     }
                                     $con->save();
                                 } else {
                                     echo "Error al crear el servicio.\n";
                                     foreach ($this->get_errors() as $err) {
                                         echo $err . "\n";
                                     }
                                 }
                             }
                         }
                     } else {
                         echo "Cliente no encontrado.\n";
                     }
                 }
             }
             $offset++;
         }
         $contratos = $contrato->all($offset, 'fsiguiente_servicio ASC');
     }
 }