protected function private_core()
 {
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     $this->impuesto = new impuesto();
     /// Leemos las subcuentas predeterminadas
     $subcuenta = new subcuenta();
     $this->codsubcuentasop = '';
     $subcuentasop = $subcuenta->get_cuentaesp('IVASOP', $this->empresa->codejercicio);
     if ($subcuentasop) {
         $this->codsubcuentasop = $subcuentasop->codsubcuenta;
     }
     $this->codsubcuentarep = '';
     $subcuentarep = $subcuenta->get_cuentaesp('IVAREP', $this->empresa->codejercicio);
     if ($subcuentarep) {
         $this->codsubcuentarep = $subcuentarep->codsubcuenta;
     }
     if (isset($_GET['delete'])) {
         if (!$this->user->admin) {
             $this->new_error_msg('Sólo un administrador puede eliminar impuestos.');
         } else {
             $impuesto = $this->impuesto->get($_GET['delete']);
             if ($impuesto) {
                 if ($impuesto->delete()) {
                     $this->new_message('Impuesto eliminado correctamente.');
                 } else {
                     $this->new_error_msg('Ha sido imposible eliminar el impuesto.');
                 }
             } else {
                 $this->new_error_msg('Impuesto no encontrado.');
             }
         }
     } else {
         if (isset($_POST['codimpuesto'])) {
             $impuesto = $this->impuesto->get($_POST['codimpuesto']);
             if (!$impuesto) {
                 $impuesto = new impuesto();
                 $impuesto->codimpuesto = $_POST['codimpuesto'];
             }
             $impuesto->descripcion = $_POST['descripcion'];
             $impuesto->codsubcuentarep = NULL;
             if ($_POST['codsubcuentarep'] != '') {
                 $impuesto->codsubcuentarep = $_POST['codsubcuentarep'];
             }
             $impuesto->codsubcuentasop = NULL;
             if ($_POST['codsubcuentasop'] != '') {
                 $impuesto->codsubcuentasop = $_POST['codsubcuentasop'];
             }
             $impuesto->iva = floatval($_POST['iva']);
             $impuesto->recargo = floatval($_POST['recargo']);
             if ($impuesto->save()) {
                 $this->new_message("Impuesto " . $impuesto->codimpuesto . " guardado correctamente.");
             } else {
                 $this->new_error_msg("¡Error al guardar el impuesto!");
             }
         }
     }
 }
 protected function process()
 {
     $this->impuesto = new impuesto();
     if (isset($_GET['delete'])) {
         if (FS_DEMO) {
             $this->new_error_msg('En el modo demo no puedes eliminar impuestos.
            Otro usuario podría necesitarlo.');
         } else {
             if (!$this->user->admin) {
                 $this->new_error_msg('Sólo un administrador puede eliminar impuestos.');
             } else {
                 $impuesto = $this->impuesto->get($_GET['delete']);
                 if ($impuesto) {
                     if ($impuesto->delete()) {
                         $this->new_message('Impuesto eliminado correctamente.');
                     } else {
                         $this->new_error_msg('Ha sido imposible eliminar el impuesto.');
                     }
                 } else {
                     $this->new_error_msg('Impuesto no encontrado.');
                 }
             }
         }
     } else {
         if (isset($_POST['codimpuesto'])) {
             $impuesto = $this->impuesto->get($_POST['codimpuesto']);
             if (!$impuesto) {
                 $impuesto = new impuesto();
                 $impuesto->codimpuesto = $_POST['codimpuesto'];
             }
             $impuesto->descripcion = $_POST['descripcion'];
             $impuesto->iva = floatval($_POST['iva']);
             $impuesto->recargo = floatval($_POST['recargo']);
             if ($impuesto->save()) {
                 $this->new_message("Impuesto " . $impuesto->codimpuesto . " guardado correctamente.");
             } else {
                 $this->new_error_msg("¡Error al guardar el impuesto!");
             }
         }
     }
 }
 protected function process()
 {
     $this->impuesto = new impuesto();
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     if (isset($_GET['delete'])) {
         if (!$this->user->admin) {
             $this->new_error_msg('Sólo un administrador puede eliminar impuestos.');
         } else {
             $impuesto = $this->impuesto->get($_GET['delete']);
             if ($impuesto) {
                 if ($impuesto->delete()) {
                     $this->new_message('Impuesto eliminado correctamente.');
                 } else {
                     $this->new_error_msg('Ha sido imposible eliminar el impuesto.');
                 }
             } else {
                 $this->new_error_msg('Impuesto no encontrado.');
             }
         }
     } else {
         if (isset($_POST['codimpuesto'])) {
             $impuesto = $this->impuesto->get($_POST['codimpuesto']);
             if (!$impuesto) {
                 $impuesto = new impuesto();
                 $impuesto->codimpuesto = $_POST['codimpuesto'];
             }
             $impuesto->descripcion = $_POST['descripcion'];
             $impuesto->iva = floatval($_POST['iva']);
             $impuesto->recargo = floatval($_POST['recargo']);
             if ($impuesto->save()) {
                 $this->new_message("Impuesto " . $impuesto->codimpuesto . " guardado correctamente.");
             } else {
                 $this->new_error_msg("¡Error al guardar el impuesto!");
             }
         }
     }
 }
 public function impuestos()
 {
     $tratamiento = false;
     $impuestos = new impuesto();
     //Eliminamos los Impuestos que no son de RD
     $lista_impuestos = array();
     foreach ($this->impuestos_rd as $imp) {
         $lista_impuestos[] = $imp['porcentaje'];
     }
     foreach ($impuestos->all() as $imp) {
         if (!in_array($imp->iva, $lista_impuestos)) {
             $imp->delete();
         }
     }
     //Agregamos los Impuestos de RD
     foreach ($this->impuestos_rd as $imp) {
         if (!$impuestos->get_by_iva($imp['porcentaje'])) {
             $imp0 = new impuesto();
             $imp0->codimpuesto = $imp['codigo'];
             $imp0->descripcion = $imp['descripcion'];
             $imp0->iva = $imp['porcentaje'];
             $imp0->recargo = $imp['recargo'];
             $imp0->codsubcuentasop = $imp['subcuenta_compras'];
             $imp0->codsubcuentarep = $imp['subcuenta_ventas'];
             if ($imp0->save()) {
                 $tratamiento = true;
             }
         }
     }
     //Corregimos la información de las Cuentas especiales con los nombres correctos
     $cuentas_especiales_rd['IVAACR'] = 'Cuentas acreedoras de ITBIS en la regularización';
     $cuentas_especiales_rd['IVASOP'] = 'Cuentas de ITBIS Compras';
     $cuentas_especiales_rd['IVARXP'] = 'Cuentas de ITBIS exportaciones';
     $cuentas_especiales_rd['IVASIM'] = 'Cuentas de ITBIS importaciones';
     $cuentas_especiales_rd['IVAREX'] = 'Cuentas de ITBIS para clientes exentos';
     $cuentas_especiales_rd['IVAREP'] = 'Cuentas de ITBIS Ventas';
     $cuentas_especiales = new cuenta_especial();
     foreach ($cuentas_especiales_rd as $id => $desc) {
         $linea = $cuentas_especiales->get($id);
         if ($linea->descripcion !== $desc) {
             $linea->descripcion = $desc;
             $linea->save();
         }
     }
     if ($tratamiento) {
         $this->new_message('Información de impuestos actualizada correctamente');
     } else {
         $this->new_message('No se modificaron datos de impuestos previamente tratados.');
     }
 }