protected function process()
 {
     $this->custom_search = TRUE;
     $articulo = new articulo();
     $this->familia = new familia();
     $this->impuesto = new impuesto();
     $this->tarifa = new tarifa();
     $this->buttons[] = new fs_button('b_nuevo_articulo', 'Nuevo', '#nuevo');
     $this->buttons[] = new fs_button('b_modificar_iva', 'Modificar IVA', '#mod-iva');
     $this->codfamilia = '';
     if (isset($_REQUEST['codfamilia'])) {
         $this->codfamilia = $_REQUEST['codfamilia'];
     }
     $this->con_stock = isset($_REQUEST['con_stock']);
     if (isset($_POST['codtarifa'])) {
         $tar0 = $this->tarifa->get($_POST['codtarifa']);
         if (!$tar0) {
             $tar0 = new tarifa();
             $tar0->codtarifa = $_POST['codtarifa'];
         }
         $tar0->nombre = $_POST['nombre'];
         $tar0->incporcentual = 0 - floatval($_POST['dtopor']);
         if ($tar0->save()) {
             $this->new_message("Tarifa guardada correctamente.");
         } else {
             $this->new_error_msg("¡Imposible guardar la tarifa!");
         }
     } else {
         if (isset($_GET['delete_tarifa'])) {
             $tar0 = $this->tarifa->get($_GET['delete_tarifa']);
             if ($tar0) {
                 if ($tar0->delete()) {
                     $this->new_message("Tarifa borrada correctamente.");
                 } else {
                     $this->new_error_msg("¡Imposible borrar la tarifa!");
                 }
             } else {
                 $this->new_error_msg("¡La tarifa no existe!");
             }
         } else {
             if (isset($_POST['mod_iva'])) {
                 if ($_POST['codimpuesto'] == $_POST['codimpuesto2']) {
                     $this->new_error_msg("¡Has seleccionado el mismo IVA dos veces!");
                 } else {
                     if ($articulo->move_codimpuesto($_POST['codimpuesto'], $_POST['codimpuesto2'], isset($_POST['mantener']))) {
                         $this->new_message("Artículos modificados correctamente.");
                     } else {
                         $this->new_error_msg("¡Impodible modificar los artículos!");
                     }
                 }
             } else {
                 if (isset($_POST['referencia']) and isset($_POST['codfamilia']) and isset($_POST['codimpuesto'])) {
                     $this->save_codfamilia($_POST['codfamilia']);
                     $this->save_codimpuesto($_POST['codimpuesto']);
                     $art0 = $articulo->get($_POST['referencia']);
                     if ($art0) {
                         $this->new_error_msg('Ya existe el artículo <a href="' . $art0->url() . '">' . $art0->referencia . '</a>');
                     } else {
                         $articulo->referencia = $_POST['referencia'];
                         $articulo->descripcion = $_POST['referencia'];
                         $articulo->codfamilia = $_POST['codfamilia'];
                         $articulo->set_impuesto($_POST['codimpuesto']);
                         if ($articulo->save()) {
                             header('location: ' . $articulo->url());
                         } else {
                             $this->new_error_msg("¡Error al crear el articulo!");
                         }
                     }
                 } else {
                     if (isset($_GET['delete'])) {
                         $art = $articulo->get($_GET['delete']);
                         if ($art) {
                             if ($art->delete()) {
                                 $this->new_message("Articulo " . $art->referencia . " eliminado correctamente.");
                             } else {
                                 $this->new_error_msg("¡Error al eliminarl el articulo!");
                             }
                         }
                     }
                 }
             }
         }
     }
     $this->offset = 0;
     if (isset($_GET['offset'])) {
         $this->offset = intval($_GET['offset']);
     }
     if ($this->query != '') {
         $this->resultados = $articulo->search($this->query, $this->offset, $this->codfamilia, $this->con_stock);
     } else {
         if (isset($_GET['solo_stock'])) {
             $this->resultados = $articulo->search('', $this->offset, '', TRUE);
         } else {
             if (isset($_GET['public'])) {
                 $this->resultados = $articulo->all_publico($this->offset);
             } else {
                 $this->resultados = $articulo->all($this->offset);
             }
         }
     }
 }