private function csvline2articulo($tarifa) { $retorno = FALSE; 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->save()) { if (count($tarifa) >= 5) { /// ¿Actualizamos el stock? if (strlen($tarifa[4]) > 0) { $articulo->set_stock($this->empresa->codalmacen, floatval($tarifa[4])); } } $retorno = TRUE; $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); } } else { if ($this->family_data->no_nuevos) { $retorno = TRUE; } else { $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->save()) { if (count($tarifa) >= 5) { /// ¿Actualizamos el stock? if (strlen($tarifa[4]) > 0) { $articulo->set_stock($this->empresa->codalmacen, floatval($tarifa[4])); } } $retorno = TRUE; $this->family_data->articulos_nuevos += 1; } else { $this->new_error_msg('Hay un error en el artículo ' . $articulo->referencia); } } } } else { $retorno = TRUE; } return $retorno; }