protected function process()
 {
     $this->asiento = FALSE;
     $this->ppage = $this->page->get('contabilidad_asientos');
     $this->divisa = new divisa();
     $this->ejercicio = new ejercicio();
     $this->impuesto = new impuesto();
     $this->subcuenta = new subcuenta();
     //// regreso de asiento a la solapa correspondiente
     if (isset($_GET['solapa'])) {
         if ($_GET['solapa'] == 'may') {
             $this->solapa = '&mayorizados=TRUE';
         }
         if ($_GET['solapa'] == 'des') {
             $this->solapa = '&descuadrados=TRUE';
         }
         if ($_GET['solapa'] == 'all') {
             $this->solapa = '';
         }
     }
     ///////////////////////////////////////
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     $asiento = new asiento();
     if (isset($_GET['id'])) {
         $this->asiento = $asiento->get($_GET['id']);
     }
     /*	 			 print '<script language="JavaScript">'; 
     				print 'alert(" id partida : '.$this->asiento->codejercicio.'  id asiento '.$this->asiento->idasiento.' ");'; 
     				print '</script>'; 
     */
     if (isset($this->asiento->tipodocumento)) {
         if ($this->asiento->tipodocumento == 'Ingreso proveedor') {
             $this->factura_prov = new factura_proveedor();
             $this->factura_prov->codejercicio = $this->asiento->codejercicio;
             $this->factura_prov->idasiento = $this->asiento->idasiento;
             $this->resultados1 = $this->factura_prov->facturas_proveedor();
         } else {
             if ($this->asiento->tipodocumento == 'Ingreso') {
                 $this->factura_cli = new factura_cliente();
                 $this->factura_cli->codejercicio = $this->asiento->codejercicio;
                 $this->factura_cli->idasiento = $this->asiento->idasiento;
                 $this->resultados1 = $this->factura_cli->facturas_cliente();
             }
         }
     }
     if (isset($_GET['genlibro'])) {
         if ($_GET['genlibro'] == 1) {
             $idasiento = $_GET['idasiento'];
             $this->asiento->mayorizado = 1;
             $this->asiento->editable = 0;
             $may_corr = 0;
             $may_inco = 1;
             if ($this->asiento->save()) {
                 $libro_mayor = new libro_mayor();
                 $partida = new partida();
                 $asiento_all = new asiento();
                 $asientos_ejer = $asiento_all->all_por_ejercicio($this->asiento->codejercicio);
                 foreach ($asientos_ejer as $ext) {
                     // suma por sub cuenta
                     //  SELECT codsubcuenta,sum(`debe`),sum(`haber`) FROM `co_partidas` WHERE `libromayor`=1 group by codsubcuenta
                     //		partida
                     $libro_mes = substr($ext->fecha, 3, 2);
                     if ($partida->marca_libro_idasiento($ext->idasiento, $libro_mes, $this->asiento->codejercicio)) {
                         $may_corr = 1;
                     } else {
                         $may_inco = 0;
                     }
                 }
             }
             if ($may_corr * $may_inco == 1) {
                 $this->new_message('Mayorizado correcto.');
             } else {
                 $this->new_message('Imposible Mayorizar.');
             }
         }
     }
     ////////
     if (isset($_GET['anu_may'])) {
         $idasiento = $_GET['anu_may'];
         $may_corr = 0;
         $may_inco = 1;
         $libro_mayor = new libro_mayor();
         $partida = new partida();
         $asiento_all = new asiento();
         $asientos_ejer = $asiento_all->all_por_ejercicio($this->asiento->codejercicio);
         foreach ($asientos_ejer as $ext) {
             $libro_mes = substr($ext->fecha, 3, 2);
             if ($partida->marca_libro_idasiento($idasiento, '0', '0')) {
                 $may_corr = 1;
             } else {
                 $may_inco = 0;
             }
         }
         if ($may_corr * $may_inco == 1) {
             $this->asiento->mayorizado = 0;
             $this->asiento->editable = 1;
             if ($this->asiento->save()) {
                 $this->new_message('Mayorizado Anulado.');
             }
         } else {
             $this->asiento->mayorizado = 1;
             $this->asiento->editable = 0;
             $this->asiento->save();
             $this->new_message('Imposible Anular Mayorizado.');
         }
     }
     ///////////
     if (isset($_POST['fecha']) and isset($_POST['query'])) {
         $this->new_search();
     } else {
         if ($this->asiento) {
             $this->page->title = 'Asiento: ' . $this->asiento->numero;
             //////
             if (isset($_GET['bloquear'])) {
                 $this->asiento->editable = FALSE;
                 if ($this->asiento->bloquear_on_off()) {
                     $this->new_message('Asiento bloqueado correctamente.');
                 } else {
                     $this->new_error_msg('Imposible bloquear el asiento.');
                 }
             } else {
                 if (isset($_GET['desbloquear'])) {
                     $this->asiento->editable = TRUE;
                     if ($this->asiento->bloquear_on_off()) {
                         $this->new_message('Asiento desbloqueado correctamente.');
                     } else {
                         $this->new_error_msg('Imposible desbloquear el asiento.');
                     }
                 }
             }
             ////
             if (isset($_POST['fecha']) and $this->asiento->editable) {
                 $this->modificar();
             }
             /// comprobamos el asiento
             $this->asiento->full_test();
             $this->lineas = $this->get_lineas_asiento();
             $partida = new partida();
             $valores = $partida->totales_from_asiento($this->asiento->idasiento);
             $this->suma_debe = $valores['debe'];
             $this->suma_haber = $valores['haber'];
             $this->saldo = $valores['saldo'];
             //		 $this->comprobante = $valores['comprobante'];
             //		 $this->referencia = $valores['referencia'];
         } else {
             $this->new_error_msg("Asiento no encontrado.");
         }
     }
 }