protected function process()
 {
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     /**
      * Si hay alguna extensión de tipo config y texto button_plazos,
      * mostramos un botón con enlace a la página de la extensión.
      */
     $this->button_plazos = FALSE;
     foreach ($this->extensions as $ext) {
         if ($ext->type == 'config' and $ext->text == 'button_plazos') {
             $this->button_plazos = $ext->from;
             break;
         }
     }
     $cuentab = new cuenta_banco();
     $this->cuentas_banco = $cuentab->all_from_empresa();
     $this->forma_pago = new forma_pago();
     if (isset($_POST['codpago'])) {
         $fp0 = $this->forma_pago->get($_POST['codpago']);
         if (!$fp0) {
             $fp0 = new forma_pago();
             $fp0->codpago = $_POST['codpago'];
         }
         $fp0->descripcion = $_POST['descripcion'];
         $fp0->genrecibos = $_POST['genrecibos'];
         $fp0->vencimiento = $_POST['vencimiento'];
         $fp0->domiciliado = isset($_POST['domiciliado']);
         $fp0->codcuenta = NULL;
         if ($_POST['codcuenta'] != '') {
             $fp0->codcuenta = $_POST['codcuenta'];
         }
         if ($fp0->codpago == '' or $fp0->descripcion == '') {
             $this->new_error_msg('Debes poner algún nombre a la forma de pago.');
         } else {
             if ($fp0->save()) {
                 $this->new_message('Forma pago ' . $fp0->codpago . ' guardada correctamente.');
             } else {
                 $this->new_error_msg('Error al guardar la forma pago.');
             }
         }
     } else {
         if (isset($_GET['delete'])) {
             $fp0 = $this->forma_pago->get($_GET['delete']);
             if ($fp0) {
                 if (!$this->user->admin) {
                     $this->new_error_msg('Sólo un administrador puede eliminar formas de pago.');
                 } else {
                     if ($fp0->delete()) {
                         $this->new_message('Forma de pago ' . $fp0->codpago . ' eliminada correctamente.');
                     } else {
                         $this->new_error_msg('Error al eliminar la forma de pago ' . $fp0->codpago . '.');
                     }
                 }
             } else {
                 $this->new_error_msg('Forma de pago no encontrada.');
             }
         }
     }
 }
 protected function private_core()
 {
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     /**
      * Si hay alguna extensión de tipo config y texto button_plazos,
      * mostramos un botón con enlace a la página de la extensión.
      */
     $this->button_plazos = FALSE;
     foreach ($this->extensions as $ext) {
         if ($ext->type == 'config' and $ext->text == 'button_plazos') {
             $this->button_plazos = $ext->from;
             break;
         }
     }
     $cuentab = new cuenta_banco();
     $this->cuentas_banco = $cuentab->all_from_empresa();
     $this->forma_pago = new forma_pago();
     if (isset($_POST['codpago'])) {
         /// crear/modificar forma de pago
         $nueva = FALSE;
         $fp0 = $this->forma_pago->get($_POST['codpago']);
         if (!$fp0) {
             $fp0 = new forma_pago();
             $fp0->codpago = $_POST['codpago'];
             $nueva = TRUE;
         }
         $fp0->descripcion = $_POST['descripcion'];
         $fp0->genrecibos = $_POST['genrecibos'];
         $fp0->vencimiento = $_POST['vencimiento'];
         $fp0->codcuenta = NULL;
         if ($_POST['codcuenta'] != '') {
             $fp0->codcuenta = $_POST['codcuenta'];
         }
         $fp0->domiciliado = FALSE;
         if (isset($_POST['domiciliado'])) {
             if (is_null($fp0->codcuenta)) {
                 $this->new_error_msg('Para marcar una forma de pago como domiciliada,' . ' también tienes que seleccionar una cuenta bancaria.');
             } else {
                 $fp0->domiciliado = TRUE;
             }
         }
         if ($fp0->codpago == '' or $fp0->descripcion == '') {
             $this->new_error_msg('Debes poner algún nombre a la forma de pago.');
         } else {
             if ($fp0->save()) {
                 $this->new_message('Forma de pago ' . $fp0->codpago . ' guardada correctamente.');
                 if ($nueva and $this->button_plazos and $fp0->genrecibos == 'Emitidos') {
                     header('Location: index.php?page=' . $this->button_plazos . '&cod=' . $fp0->codpago . '&nueva=TRUE');
                 }
             } else {
                 $this->new_error_msg('Error al guardar la forma pago.');
             }
         }
     } else {
         if (isset($_GET['delete'])) {
             $fp0 = $this->forma_pago->get($_GET['delete']);
             if ($fp0) {
                 if (!$this->user->admin) {
                     $this->new_error_msg('Sólo un administrador puede eliminar formas de pago.');
                 } else {
                     if ($fp0->delete()) {
                         $this->new_message('Forma de pago ' . $fp0->codpago . ' eliminada correctamente.');
                     } else {
                         $this->new_error_msg('Error al eliminar la forma de pago ' . $fp0->codpago . '.');
                     }
                 }
             } else {
                 $this->new_error_msg('Forma de pago no encontrada.');
             }
         }
     }
 }