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!");
             }
         }
     }
 }
 public function set_impuesto($cod)
 {
     $impuesto = new impuesto();
     $imp0 = $impuesto->get($cod);
     if ($imp0) {
         $this->codimpuesto = $imp0->codimpuesto;
         $this->iva = $imp0->iva;
     } else {
         $this->codimpuesto = NULL;
         $this->iva = 0;
     }
 }
예제 #3
0
 public function __construct()
 {
     $this->asiento = FALSE;
     $this->ejercicio = new ejercicio();
     $impuesto = new impuesto();
     $this->impuestos = array();
     foreach ($impuesto->all() as $imp) {
         $this->impuestos[$imp->codimpuesto] = $imp;
     }
     $this->messages = array();
     $this->errors = array();
     $this->soloasiento = FALSE;
 }
 public function __construct()
 {
     $this->asiento = FALSE;
     $this->cuenta_banco = new cuenta_banco();
     $this->divisa = new divisa();
     $this->ejercicio = new ejercicio();
     $this->empresa = new empresa();
     $this->forma_pago = new forma_pago();
     $this->subcuenta = new subcuenta();
     $impuesto = new impuesto();
     $this->impuestos = array();
     foreach ($impuesto->all() as $imp) {
         $this->impuestos[$imp->codimpuesto] = $imp;
     }
     $this->messages = array();
     $this->errors = array();
     $this->soloasiento = FALSE;
 }
 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!");
             }
         }
     }
 }
예제 #6
0
 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!");
             }
         }
     }
 }
 /**
  * Devuelve el % de IVA del artículo.
  * Si $reload es TRUE, vuelve a consultarlo en lugar de usar los datos cargados.
  * @param type $reload
  * @return type
  */
 public function get_iva($reload = TRUE)
 {
     if ($reload) {
         $this->iva = NULL;
     }
     if (is_null($this->iva)) {
         $this->iva = 0;
         if (!is_null($this->codimpuesto)) {
             $encontrado = FALSE;
             foreach (self::$impuestos as $i) {
                 if ($i->codimpuesto == $this->codimpuesto) {
                     $this->iva = $i->iva;
                     $encontrado = TRUE;
                     break;
                 }
             }
             if (!$encontrado) {
                 $imp = new impuesto();
                 $imp0 = $imp->get($this->codimpuesto);
                 if ($imp0) {
                     $this->iva = $imp0->iva;
                     self::$impuestos[] = $imp0;
                 }
             }
         }
     }
     return $this->iva;
 }
예제 #8
0
 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.');
     }
 }
예제 #9
0
 /**
  * Cambia el impuesto asociado al artículo.
  * @param type $codimpuesto
  */
 public function set_impuesto($codimpuesto)
 {
     if ($codimpuesto != $this->codimpuesto) {
         $this->codimpuesto = $codimpuesto;
         $encontrado = FALSE;
         foreach (self::$impuestos as $i) {
             if ($i->codimpuesto == $this->codimpuesto) {
                 $this->iva = floatval($i->iva);
                 $encontrado = TRUE;
                 break;
             }
         }
         if (!$encontrado) {
             $imp = new impuesto();
             $imp0 = $imp->get($this->codimpuesto);
             if ($imp0) {
                 $this->iva = floatval($imp0->iva);
                 self::$impuestos[] = $imp0;
             } else {
                 $this->iva = 0;
             }
         }
     }
 }
예제 #10
0
 public function move_codimpuesto($cod0, $cod1, $mantener = FALSE)
 {
     if ($mantener) {
         $this->clean_cache();
         $impuesto = new impuesto();
         $impuesto0 = $impuesto->get($cod0);
         $impuesto1 = $impuesto->get($cod1);
         $multiplo = (100 + $impuesto0->iva) / (100 + $impuesto1->iva);
         return $this->db->exec("UPDATE " . $this->table_name . " SET codimpuesto = " . $this->var2str($cod1) . ", pvp = (pvp*" . $multiplo . ") WHERE codimpuesto = " . $this->var2str($cod0) . ";");
     } else {
         return $this->db->exec("UPDATE " . $this->table_name . " SET codimpuesto = " . $this->var2str($cod1) . " WHERE codimpuesto = " . $this->var2str($cod0) . ";");
     }
 }
예제 #11
0
 private function generar_albaran()
 {
     $albaran = new albaran_cliente();
     $albaran->apartado = $this->servicio->apartado;
     $albaran->cifnif = $this->servicio->cifnif;
     $albaran->ciudad = $this->servicio->ciudad;
     $albaran->codagente = $this->servicio->codagente;
     if ($this->servicio->codalmacen) {
         $albaran->codalmacen = $this->servicio->codalmacen;
     } else {
         $albaran->codalmacen = $this->empresa->codalmacen;
     }
     $albaran->codcliente = $this->servicio->codcliente;
     $albaran->coddir = $this->servicio->coddir;
     $albaran->coddivisa = $this->servicio->coddivisa;
     $albaran->tasaconv = $this->servicio->tasaconv;
     $albaran->codpago = $this->servicio->codpago;
     $albaran->codpais = $this->servicio->codpais;
     $albaran->codpostal = $this->servicio->codpostal;
     $albaran->codserie = $this->servicio->codserie;
     $albaran->direccion = $this->servicio->direccion;
     $albaran->neto = $this->servicio->neto;
     $albaran->nombrecliente = $this->servicio->nombrecliente;
     $albaran->observaciones = $this->servicio->observaciones;
     $albaran->provincia = $this->servicio->provincia;
     $albaran->total = $this->servicio->total;
     $albaran->totaliva = $this->servicio->totaliva;
     $albaran->numero2 = $this->servicio->numero2;
     $albaran->irpf = $this->servicio->irpf;
     $albaran->porcomision = $this->servicio->porcomision;
     $albaran->totalirpf = $this->servicio->totalirpf;
     $albaran->totalrecargo = $this->servicio->totalrecargo;
     /**
      * Obtenemos el ejercicio para la fecha de hoy (puede que
      * no sea el mismo ejercicio que el del servicio, por ejemplo
      * si hemos cambiado de año)
      */
     $eje0 = $this->ejercicio->get_by_fecha($albaran->fecha);
     $albaran->codejercicio = $eje0->codejercicio;
     if (!$eje0) {
         $this->new_error_msg("Ejercicio no encontrado.");
     } else {
         if (!$eje0->abierto()) {
             $this->new_error_msg("El ejercicio está cerrado.");
         } else {
             if ($albaran->save()) {
                 $this->new_message("El " . FS_ALBARAN . " " . $albaran->codigo . " ha sido creado correctamente.");
                 $continuar = TRUE;
                 $art0 = new articulo();
                 $i = 0;
                 foreach ($this->servicio->get_lineas() as $l) {
                     $n = new linea_albaran_cliente();
                     $n->idalbaran = $albaran->idalbaran;
                     $n->cantidad = $l->cantidad;
                     $n->codimpuesto = $l->codimpuesto;
                     $n->descripcion = $l->descripcion;
                     if ($i == 0) {
                         if ($this->setup['servicios_linea'] && $this->setup['servicios_linea1']) {
                             $n->descripcion .= "\n";
                             if ($this->setup['servicios_material_linea']) {
                                 $n->descripcion .= $this->setup['st_material'] . ": " . $this->servicio->material . "\n";
                             }
                             if ($this->setup['servicios_material_estado_linea']) {
                                 $n->descripcion .= $this->setup['st_material_estado'] . ": " . $this->servicio->material_estado . "\n";
                             }
                             if ($this->setup['servicios_accesorios_linea']) {
                                 $n->descripcion .= $this->setup['st_accesorios'] . ": " . $this->servicio->accesorios . "\n";
                             }
                             if ($this->setup['servicios_descripcion_linea']) {
                                 $n->descripcion .= $this->setup['st_descripcion'] . ": " . $this->servicio->descripcion . "\n";
                             }
                             if ($this->setup['servicios_solucion_linea']) {
                                 $n->descripcion .= $this->setup['st_solucion'] . ": " . $this->servicio->solucion . "\n";
                             }
                             if ($this->setup['servicios_fechainicio_linea']) {
                                 $n->descripcion .= $this->setup['st_fechainicio'] . ": " . $this->servicio->fechainicio . "   ";
                             }
                             if ($this->setup['servicios_fechafin_linea']) {
                                 $n->descripcion .= $this->setup['st_fechafin'] . ": " . $this->servicio->fechafin . "   ";
                             }
                             if ($this->setup['servicios_garantia_linea']) {
                                 $n->descripcion .= $this->setup['st_garantia'] . ": " . $this->servicio->garantia . "\n";
                             }
                         }
                     }
                     $n->dtopor = $l->dtopor;
                     $n->irpf = $l->irpf;
                     $n->iva = $l->iva;
                     $n->pvpsindto = $l->pvpsindto;
                     $n->pvptotal = $l->pvptotal;
                     $n->pvpunitario = $l->pvpunitario;
                     $n->recargo = $l->recargo;
                     $n->referencia = $l->referencia;
                     $i++;
                     if ($n->save()) {
                         /// descontamos del stock
                         if (!is_null($n->referencia)) {
                             $articulo = $art0->get($n->referencia);
                             if ($articulo) {
                                 $articulo->sum_stock($albaran->codalmacen, 0 - $l->cantidad);
                             }
                         }
                     } else {
                         $continuar = FALSE;
                         $this->new_error_msg("¡Imposible guardar la línea el artículo " . $n->referencia . "! ");
                         break;
                     }
                 }
                 if ($this->setup['servicios_linea'] && !$this->setup['servicios_linea1']) {
                     /// generamos la linea con detalles del servicio
                     if ($this->setup['servicios_linea']) {
                         $ns = new linea_albaran_cliente();
                         $ns->idalbaran = $albaran->idalbaran;
                         $ns->cantidad = '0';
                         /// usamos el impuestos por defecto
                         $imp0 = new impuesto();
                         foreach ($imp0->all() as $imp) {
                             if ($imp->is_default()) {
                                 $ns->codimpuesto = $imp->codimpuesto;
                                 $ns->iva = $imp->iva;
                             }
                         }
                         $ns->descripcion = FS_SERVICIO . ": " . $this->servicio->codigo . " Fecha: " . $this->servicio->fecha . "\n";
                         if ($this->setup['servicios_material_linea']) {
                             $ns->descripcion .= $this->setup['st_material'] . ": " . $this->servicio->material . "\n";
                         }
                         if ($this->setup['servicios_material_estado_linea']) {
                             $ns->descripcion .= $this->setup['st_material_estado'] . ": " . $this->servicio->material_estado . "\n";
                         }
                         if ($this->setup['servicios_accesorios_linea']) {
                             $ns->descripcion .= $this->setup['st_accesorios'] . ": " . $this->servicio->accesorios . "\n";
                         }
                         if ($this->setup['servicios_descripcion_linea']) {
                             $ns->descripcion .= $this->setup['st_descripcion'] . ": " . $this->servicio->descripcion . "\n";
                         }
                         if ($this->setup['servicios_solucion_linea']) {
                             $ns->descripcion .= $this->setup['st_solucion'] . ": " . $this->servicio->solucion . "\n";
                         }
                         if ($this->setup['servicios_fechainicio_linea']) {
                             $ns->descripcion .= $this->setup['st_fechainicio'] . ": " . $this->servicio->fechainicio . "   ";
                         }
                         if ($this->setup['servicios_fechafin_linea']) {
                             $ns->descripcion .= $this->setup['st_fechafin'] . ": " . $this->servicio->fechafin . "   ";
                         }
                         if ($this->setup['servicios_garantia_linea']) {
                             $ns->descripcion .= $this->setup['st_garantia'] . ": " . $this->servicio->garantia . "\n";
                         }
                         $ns->dtopor = '0';
                         $ns->irpf = '0';
                         $ns->pvpsindto = '0';
                         $ns->pvptotal = '0';
                         $ns->pvpunitario = '0';
                         $ns->recargo = '0';
                         $ns->referencia = '';
                         $ns->save();
                     }
                 }
                 if ($continuar) {
                     $this->servicio->idalbaran = $albaran->idalbaran;
                 } else {
                     if ($albaran->delete()) {
                         $this->new_error_msg("El " . FS_ALBARAN . " se ha borrado.");
                     } else {
                         $this->new_error_msg("¡Imposible borrar el " . FS_ALBARAN . "!");
                     }
                 }
             } else {
                 $this->new_error_msg("¡Imposible guardar el " . FS_ALBARAN . "!");
             }
         }
     }
 }