public function get_tarifas($todas = FALSE)
 {
     $tarifa = new tarifa();
     $tarifas = $tarifa->all();
     $tarifa_articulo = new tarifa_articulo();
     $tas = $tarifa_articulo->all_from_articulo($this->referencia);
     if ($todas) {
         foreach ($tarifas as $t) {
             $encontrada = FALSE;
             foreach ($tas as $ta) {
                 if ($ta->codtarifa == $t->codtarifa) {
                     $encontrada = TRUE;
                     break;
                 }
             }
             if (!$encontrada) {
                 /// añadimos las tarifas que no tiene asignadas
                 $tas[] = new tarifa_articulo(array('id' => NULL, 'codtarifa' => $t->codtarifa, 'referencia' => $this->referencia, 'descuento' => 0 - $t->incporcentual));
             }
         }
     }
     /// rellenamos las tarifas
     foreach ($tas as $ta) {
         foreach ($tarifas as $t) {
             if ($t->codtarifa == $ta->codtarifa) {
                 $ta->nombre = $t->nombre;
                 $ta->pvp = $this->pvp;
                 $ta->iva = $this->get_iva();
                 break;
             }
         }
     }
     return $tas;
 }
 protected function private_core()
 {
     $this->share_extension();
     $this->impuesto = new impuesto();
     $this->articulo = FALSE;
     if (isset($_POST['pvpiva'])) {
         $articulo = new articulo();
         $this->articulo = $articulo->get($_POST['referencia']);
         if ($this->articulo) {
             $continuar = TRUE;
             $this->articulo->set_impuesto($_POST['codimpuesto']);
             $this->articulo->set_pvp_iva($_POST['pvpiva']);
             if (isset($_POST['preciocoste'])) {
                 $this->articulo->costemedio = $this->articulo->preciocoste = floatval($_POST['preciocoste']);
             }
             if (!$this->articulo->save()) {
                 $this->new_error_msg("¡Imposible modificar el artículo!");
                 $continuar = FALSE;
             }
             $tarifa_articulo = new tarifa_articulo();
             for ($i = 0; $i < 100; $i++) {
                 if (isset($_POST['codtarifa_' . $i])) {
                     if ($_POST['pvpi_' . $i] != '') {
                         $ta = $tarifa_articulo->get_by($this->articulo->referencia, $_POST['codtarifa_' . $i]);
                         if (!$ta) {
                             $ta = new tarifa_articulo();
                             $ta->codtarifa = $_POST['codtarifa_' . $i];
                             $ta->referencia = $this->articulo->referencia;
                         }
                         $ta->calculado = FALSE;
                         $ta->pvp = $this->pvpiva2pvp(floatval($_POST['pvpi_' . $i]));
                         if (!$ta->save()) {
                             $this->new_error_msg("¡Imposible modificar la tarifa!");
                             $continuar = FALSE;
                         }
                     } else {
                         if ($_POST['pvp_' . $i] != '') {
                             $ta = $tarifa_articulo->get_by($this->articulo->referencia, $_POST['codtarifa_' . $i]);
                             if (!$ta) {
                                 $ta = new tarifa_articulo();
                                 $ta->codtarifa = $_POST['codtarifa_' . $i];
                                 $ta->referencia = $this->articulo->referencia;
                             }
                             $ta->calculado = FALSE;
                             $ta->pvp = floatval($_POST['pvp_' . $i]);
                             if (!$ta->save()) {
                                 $this->new_error_msg("¡Imposible modificar la tarifa!");
                                 $continuar = FALSE;
                             }
                         }
                     }
                 } else {
                     break;
                 }
             }
             if ($continuar) {
                 $this->new_message("Precios modificadas correctamente.");
             }
         }
     } else {
         if (isset($_GET['ref'])) {
             $art = new articulo();
             $this->articulo = $art->get($_GET['ref']);
         }
     }
     if ($this->articulo) {
         if (isset($_GET['recalcular'])) {
             /// eliminamos los precios fijos almacenados
             $tarifa_articulo = new tarifa_articulo();
             foreach ($tarifa_articulo->all_from_articulo($this->articulo->referencia) as $ta) {
                 $ta->delete();
             }
         }
     } else {
         $this->new_error_msg('Artículo no encontrado.');
     }
 }