Апдейт:
AdminImport.php( Размер файла: 77.26KB )
Нашел баги, связанные с обязательными параметрами по умолчанию. Выкладываю подправленную версию.
Кроме того, обратил внимание, что цены некоторых товаров скрипт не обновил, а сбросил на 0. Поэтому, проверяйте импорт.
Но лучше переписать функцию priceupdateImport, так чтоб не делал лишний обращений к базе и обновлял не по id_product, а по выбранному параметру. Ну, хотелось бы, чтобы учитывалась выбранная налоговая политика (цена с налогом или без).
Я не программист, поэтому жду ваших предложений. Код функции:
Код:
public function priceupdateImport()
{ global $cookie;
$this->receiveTab();
$handle = $this->openCsvFile();
$defaultLanguageId = (int)(Configuration::get('PS_LANG_DEFAULT'));
self::setLocale();
for ($current_line = 0; $line = fgetcsv($handle, MAX_LINE_SIZE, Tools::getValue('separator')); $current_line++)
{
if (Tools::getValue('convert'))
$line = $this->utf8_encode_array($line);
$info = self::getMaskedRow($line);
$itemprc = Tools::getValue('match_prc');
//ищем товар по выбранному ключевому показателю
$sql="SELECT id_product FROM "._DB_PREFIX_."product WHERE ".$itemprc." = '".$info[$itemprc]."'";
$id_product = Db::getInstance()->getValue($sql);
if ($id_product){
$sql=mysql_query("UPDATE `"._DB_PREFIX_."product` SET `price` = '".$info['price']."' WHERE `id_product`='".$id_product."' LIMIT 1");
echo "<p style='color:green'>".$this->l('New price of product with')." ".$itemprc." <b>".$info[$itemprc]."</b> ".$this->l('is')." ".$info['price']."</p>";
}
else{
echo "<p style='color:red '>".$this->l('Product with')." ".$this->l($itemprc)." <b>".$info[$itemprc]."</b>".$this->l('not found')."</p>";
}
}
$this->closeCsvFile($handle);
}