27327){
$reference = $data[0]; // A
$name = str_replace("=","",str_replace("°","",str_replace("#","",$data[1]))); // B
$shortdesc = $data[847]; // AFP
$desc = $data[460]; // QS
$pricewt = $data[12]; // M
$wholesale_price = $data[10]; // K
$meta_description = str_replace("=","",str_replace("°","",str_replace("#","",$data[160]))); // FE
$meta_keywords = str_replace("=","",str_replace("°","",str_replace("#","",$data[162]))); // FG
$active = $data[136]; // EG
$carac_fabricant = $data[177]; // FV
$carac_reference = $data[178]; // FW
$out_of_stock = $data[138]; // EI
$carac_echelle = $data[183]; // GB
$namecategory = $data[313]; // LB
$quantity = (int)$data[275]; // JP
if($active == "Oui"){
$active = true;
}else{
$active = false;
}
if($out_of_stock == "Oui"){
$out_of_stock = 1;
}else if($out_of_stock == "Non"){
$out_of_stock = 0;
}else{
$out_of_stock = 2;
}
if($name && $reference != "CODE"){
$id_product = existsRefInDatabase($reference);
if($id_product){
$product = new Product($id_product);
$update = true;
}else{
$product = new Product();
$update = false;
}
$language = Language::getLanguages(false);
$numlang = count($language) + 1;
$tabname = array();
for($i = 1 ; $i < $numlang; $i++){
$tabname[$i] = $name;
}
$tabrewrite = array();
for($i = 1 ; $i < $numlang; $i++){
$tabrewrite[$i] = Tools::str2url($name);
}
$tabshortdesc = array();
for($i = 1 ; $i < $numlang; $i++){
$tabshortdesc[$i] = $shortdesc;
}
$tabdesc = array();
for($i = 1; $i < $numlang; $i++){
$tabdesc[$i] = $desc;
}
$tabmeta_description = array();
for($i = 1 ; $i < $numlang; $i++){
$tabmeta_description[$i] = $meta_description;
}
$tabmeta_keywords = array();
for($i = 1; $i < $numlang; $i++){
$tabmeta_keywords[$i] = $meta_keywords;
}
$tabavailable_now = array();
for($i = 1; $i < $numlang; $i++){
$tabavailable_now[$i] = "En stock";
}
$product->name = $tabname;
$product->link_rewrite = $tabrewrite;
$product->meta_title = $tabmeta_description;
$product->meta_description = $tabmeta_description;
$product->meta_keywords = $tabmeta_keywords;
$product->reference = $reference;
$product->supplier_reference = $reference;
$product->available_now = $tabavailable_now;
$product->price = (float)$pricewt;
$product->wholesale_price = (float)$wholesale_price;
$product->quantity = (int)$quantity;
$product->active = $active;
$product->description = $tabdesc;
$product->description_short = $tabshortdesc;
if($category = Category::searchByName(1,$namecategory)){
$product->id_category_default = $category[0]['id_category'];
$product->updateCategories(array($category[0]['id_category']));
}else{
$category = new Category();
$tabnamecategory = array();
for($i = 1; $i < $numlang; $i++){
$tabnamecategory[$i] = $namecategory;
}
$tabrewritecategory = array();
for($i = 1 ; $i < $numlang; $i++){
$tabrewritecategory[$i] = substr(Tools::str2url($name), 0, 60);
}
$category->name = $tabnamecategory;
$category->link_rewrite = $tabrewritecategory;
$category->id_parent = 209;
$category->add();
$product->id_category_default = $category->id;
$product->updateCategories(array($category->id));
}
if(!$update){
if(!$product->add()){
echo $row;
}
}else{
$product->update();
}
StockAvailable::setProductOutOfStock($product->id, (int)$out_of_stock);
if($carac_fabricant){
$idfeature = FeatureValue::addFeatureValueImport(6, $carac_fabricant);
$feature_value = new FeatureValue($idfeature);
$feature_value->custom = 0;
$feature_value->update();
Product::addFeatureProductImport($product->id, 6, $idfeature);
}
if($carac_reference){
$idfeature = FeatureValue::addFeatureValueImport(7, $carac_reference);
$feature_value = new FeatureValue($idfeature);
Product::addFeatureProductImport($product->id, 7, $idfeature);
}
if($carac_echelle){
$idfeature = FeatureValue::addFeatureValueImport(1, $carac_echelle);
$feature_value = new FeatureValue($idfeature);
$feature_value->custom = 0;
$feature_value->update();
Product::addFeatureProductImport($product->id, 1, $idfeature);
}
setQuantity($product->id, 0, (int)$quantity);
echo $product->id."
";
}
}
$row++;
echo $row."
";
ob_end_flush();
flush();
ob_start();
}
fclose($handle);
echo "Import terminé";
}else{
echo "prob ouverture";
}
function existsRefInDatabase($reference){
$row = Db::getInstance()->getRow('
SELECT `id_product`
FROM `'._DB_PREFIX_.'product` p
WHERE p.reference = "'.$reference.'"');
return $row['id_product'];
}
function utf8EncodeArray($array){
return (is_array($array) ? array_map('utf8_encode', $array) : utf8_encode($array));
}
function setQuantity($id_product, $id_product_attribute, $quantity, $id_shop = null){
if (!Validate::isUnsignedId($id_product))
return false;
$context = Context::getContext();
// if there is no $id_shop, gets the context one
if ($id_shop === null && Shop::getContext() != Shop::CONTEXT_GROUP)
$id_shop = (int)$context->shop->id;
$depends_on_stock = StockAvailable::dependsOnStock($id_product);
//Try to set available quantity if product does not depend on physical stock
if (!$depends_on_stock)
{
$id_stock_available = (int)StockAvailable::getStockAvailableIdByProductId($id_product, $id_product_attribute, $id_shop);
if ($id_stock_available)
{
$stock_available = new StockAvailable($id_stock_available);
$stock_available->quantity = (int)$quantity;
$stock_available->update();
}
else
{
$out_of_stock = StockAvailable::outOfStock($id_product, $id_shop);
$stock_available = new StockAvailable();
$stock_available->out_of_stock = (int)$out_of_stock;
$stock_available->id_product = (int)$id_product;
$stock_available->id_product_attribute = (int)$id_product_attribute;
$stock_available->quantity = (int)$quantity;
if ($id_shop === null)
$shop_group = Shop::getContextShopGroup();
else
$shop_group = new ShopGroup((int)Shop::getGroupFromShop((int)$id_shop));
// if quantities are shared between shops of the group
if ($shop_group->share_stock)
{
$stock_available->id_shop = 0;
$stock_available->id_shop_group = (int)$shop_group->id;
}
else
{
$stock_available->id_shop = (int)$id_shop;
$stock_available->id_shop_group = 0;
}
$stock_available->add();
}
}
}