private function test_articulo($tarifa)
 {
     $retorno = TRUE;
     if (count($tarifa) >= 4) {
         // sustituimos las comas por puntos en el pvp
         $tarifa[1] = floatval(str_replace(',', '.', $tarifa[1]));
         $articulo = $this->articulo->get($tarifa[0] . $this->family_data->sufijo);
         if ($articulo) {
             if (strlen($tarifa[2]) > 0) {
                 $articulo->descripcion = $tarifa[2];
             }
             if (strlen($tarifa[3]) > 0) {
                 $articulo->codbarras = $tarifa[3];
             }
             if ($this->family_data->pvp_max) {
                 if ($this->family_data->con_iva) {
                     $pvp = max(array($tarifa[1], $articulo->show_pvp_iva(FALSE)));
                 } else {
                     $pvp = max(array($tarifa[1], $articulo->pvp));
                 }
             } else {
                 $pvp = $tarifa[1];
             }
             if ($this->family_data->con_iva) {
                 $articulo->set_pvp_iva($pvp);
             } else {
                 $articulo->set_pvp($pvp);
             }
             if ($articulo->codfamilia != $this->family_data->codfamilia) {
                 $this->new_error_msg('El artículo ' . $articulo->referencia . ' pertenece a la
               familia ' . $articulo->codfamilia);
                 $retorno = FALSE;
             } else {
                 if ($articulo->test()) {
                     $this->family_data->articulos_actualizados += 1;
                     $diff = $articulo->pvp - $articulo->pvp_ant;
                     if (abs($diff) > 0.01) {
                         if ($articulo->pvp > $articulo->pvp_ant) {
                             $this->family_data->pvp_suben += 1;
                         } else {
                             $this->family_data->pvp_bajan += 1;
                         }
                         if ($diff != 0 and $articulo->pvp != 0) {
                             $diff = $diff * 100 / $articulo->pvp;
                             $this->family_data->pvp_sum_diferencias += $diff;
                         }
                     } else {
                         $this->family_data->pvp_igual += 1;
                     }
                 } else {
                     $this->new_error_msg('Hay un error en el artículo ' . $articulo->referencia);
                     $retorno = FALSE;
                 }
             }
         } else {
             if (!$this->family_data->no_nuevos) {
                 $articulo = new articulo();
                 $articulo->referencia = $tarifa[0] . $this->family_data->sufijo;
                 $articulo->descripcion = $tarifa[2];
                 $articulo->codbarras = $tarifa[3];
                 $articulo->codfamilia = $this->familia->codfamilia;
                 $articulo->set_impuesto($this->family_data->codimpuesto);
                 if ($this->family_data->con_iva) {
                     $articulo->set_pvp_iva($tarifa[1]);
                 } else {
                     $articulo->set_pvp($tarifa[1]);
                 }
                 if ($articulo->test()) {
                     $this->family_data->articulos_nuevos += 1;
                 } else {
                     $retorno = FALSE;
                     $this->new_error_msg('Hay un error en el artículo ' . $articulo->referencia);
                 }
             }
         }
     }
     return $retorno;
 }