Выводит в итоге
Key 'count_insert_item' in 'ru' language does not exist for model 'shop_item'. — 0
Key 'count_update_item' in 'ru' language does not exist for model 'shop_item'. — 0
Key 'create_catalog' in 'ru' language does not exist for model 'shop_item'. — 0
Key 'update_catalog' in 'ru' language does not exist for model 'shop_item'. — 0
как понять, что и где идет не так, файл простой, сделал из двух строк, поля артикул и количество, файл открывается, работает, ничего не обновляет, нужно обновить остатки товаров.
Сам код
<?php
@ini_set('display_errors', 1);
error_reporting(E_ALL);
@set_time_limit(90000);
/* Подключаем основные классы */
require_once(dirname(__FILE__) .'/'.'bootstrap.php');
// Проверка авторизации
Core_Auth::authorization('Shop'); // Если скрипт будет запускаться только из браузера - желательно расскоментировать эту строку. Для крона строка должна быть закомментирована!
if (!defined('CURRENT_SITE')){
$oShop = Core_Entity::factory('Shop', Core_Array::getRequest('shop_id', 0));
define('CURRENT_SITE', $oShop->site_id);
$oSite = Core_Entity::factory('Site', CURRENT_SITE);
Core::initConstants($oSite);
}
if (!defined('SITE_LOCAL')){
$oSite = Core_Entity::factory('Site', CURRENT_SITE);
define('SITE_LOCAL', $oSite->locale);
}
if(!isset($argv[1])){
define("AUTO_IMPORT", true);// идет запуск через браузер
$import_price_max_count = 100;
}
else{
define("AUTO_IMPORT_CRON", true);// идет запуск через крон
$import_price_max_count = 9999999;// устанавливаем количество товара импортируемого за один (единственный) проход
}
// Инициализация переменных
$_REQUEST['shop_id'] = 1;
$_REQUEST['locale'] = 'UTF-8';
$_REQUEST['hostcms']['action'] = 'start_import';
// ВНИМАНИЕ! Оставьте в этом массиве только нужные Вам поля!
$aGetParam = array(
// идентификатор родительской директории для выгрузки данных
'shop_groups_parent_id' => 0,
// дополнительный путь для изображений
'import_price_load_files_path' => '',
// максимальное время загрузки данных за один проход
'import_price_max_time' => 20,
// что делать со старыми картинками? 0 - не удалять, 1 - удалять
'import_price_action_delete_image' => 0,
// максимальное количество товаров, импортируемых за один проход
'import_price_max_count' => $import_price_max_count,
// первая строка - название полей?
'firstlineheader' => 1,
// входной файл
'csv_filename' => 'ost_resanta.csv',
// разделитель данных
'import_price_separator' => ';',
// ограничитель данных
'import_price_stop' => '"',
// действия над существующими товарами, 1 - обновить
'import_price_action_items' => Core_Array::getGet('importAction', 1),
// использовать событийную индексацию
'search_event_indexation' => 0,
// Основные свойства товаров, групп, а так же сервисные данные (ярлыки, дополнительные группы и прочее)
// Название группы товаров
// 'field0' => 'shop_groups_value',
// CML идентификатор группы
// 'field1' => 'shop_groups_cml_id',
// CML идентификатор родительской группы
// 'field2' => 'shop_shop_groups_parent_cml_id',
// SEO Title для группы
// 'field3' => 'shop_groups_seo_title',
// SEO Description для группы
// 'field4' => 'shop_groups_seo_description',
// SEO Keywords для группы
// 'field5' => 'shop_groups_seo_keywords',
// Описание группы
// 'field6' => 'shop_groups_description',
// Путь для группы
// 'field7' => 'shop_groups_path',
// Название товара
// 'field8' => 'shop_items_catalog_name',
// Описание товара
// 'field9' => 'shop_items_catalog_description',
// Артикул товара
'field10' => 'shop_items_catalog_marking',
// Артикул родительского товара
// 'field11' => 'shop_item_parent_mark',
// Текст товара
// 'field12' => 'shop_items_catalog_text',
// Вес товара
// 'field13' => 'shop_items_catalog_weight',
// Тип товара
// 'field14' => 'shop_shop_items_catalog_type',
// Остаток товара на складе (Количество по старому)
//'field15' => 'shop_items_catalog_rest',
// Цена товара
// 'field16' => 'shop_items_catalog_price',
// Активность товара
// 'field17' => 'shop_items_catalog_is_active',
// Порядок сортировки товара
// 'field18' => 'shop_items_catalog_order',
// Путь для товара
// 'field19' => 'shop_items_catalog_path',
// Идентификатор налога товара
// 'field20' => 'shop_tax_id',
// Идентификатор валюты товара
// 'field21' => 'shop_currency_id',
// Название продавца товара
// 'field22' => 'shop_sallers_name',
// Название производителя товара
// 'field23' => 'shop_producers_list_value',
// Идентификатор единицы измерения товара
// 'field24' => 'shop_mesures_id',
// SEO Title товара
// 'field25' => 'shop_items_catalog_seo_title',
// SEO Description товара
// 'field26' => 'shop_items_catalog_seo_description',
// SEO Keywords товара
// 'field27' => 'shop_items_catalog_seo_keywords',
// Флаг "Индексировать" для товара
// 'field28' => 'shop_items_catalog_indexation',
// Флаг "Выгружать в Яндекс.Маркет" для товара
// 'field29' => 'shop_shop_items_catalog_yandex_market_allow',
// Флаг "Выгружать в Рамблер.Покупки" для товара
// 'field30' => 'shop_shop_items_catalog_rambler_pokupki_allow',
// Яндекс.Маркет BID
// 'field31' => 'shop_shop_items_catalog_yandex_market_bid',
// Яндекс.Маркет CID
// 'field32' => 'shop_shop_items_catalog_yandex_market_cid',
// Дата создания товара
// 'field33' => 'shop_shop_items_catalog_date_time',
// Дата начала публикации товара
// 'field34' => 'shop_shop_items_catalog_putoff_date',
// Дата окончания публикации товара
// 'field35' => 'shop_shop_items_catalog_putend_date',
// Изображение группы
// 'field36' => 'shop_groups_image',
// CML идентификатор товара
// 'field37' => 'shop_items_cml_id',
// артикул родительского товара (модификация)
// 'field38' => 'shop_item_parent_mark',
/* // Доп. Изображение товара 1
// 'field39' => 'prop-218',
// Доп. Малое Изображение товара 1
// 'field40' => 'propsmall-218',
// Доп. Изображение товара 2
// 'field41' => 'prop-219',
// Доп. Малое Изображение товара 2
// 'field42' => 'propsmall-219',
// Доп. Изображение товара 3
// 'field43' => 'prop-220',
// Доп. Малое Изображение товара 3
// 'field44' => 'propsmall-220', */
// Остаток товара на складе - Основной (Количество товара по новому)
'field45' => 'warehouse-1'
);
$Shop_Item_Import_Csv_Controller = new Shop_Item_Import_Csv_Controller(Core_Array::getRequest('shop_id', 0), Core_Array::get($aGetParam, 'shop_groups_parent_id', 0));
$aConformity = array();
foreach ($aGetParam as $iKey => $sValue){
if(mb_strpos($iKey, "field") === 0){
$aConformity[] = $sValue;
}
}
$iNextSeekPosition = Core_Array::getGet('seek', 0);
$Shop_Item_Import_Csv_Controller
->file(Core_Array::get($aGetParam, 'csv_filename'))
->encoding(Core_Array::get($aGetParam, 'locale', 'UTF-8'))
->csv_fields($aConformity)
->time(Core_Array::get($aGetParam, 'import_price_max_time'))
->step(Core_Array::get($aGetParam, 'import_price_max_count'))
->separator(Core_Array::get($aGetParam, 'import_price_separator'))
->limiter(Core_Array::get($aGetParam, 'import_price_stop'))
->imagesPath(Core_Array::get($aGetParam, 'import_price_load_files_path'))
->importAction(Core_Array::get($aGetParam, 'import_price_action_items'))
->deletePropertyValues(true)
->searchIndexation(Core_Array::get($aGetParam, 'search_event_indexation'))
;
if(!$iNextSeekPosition && Core_Array::get($aGetParam, 'firstlineheader', 0)){
$fInputFile = fopen(Core_Array::get($aGetParam, 'csv_filename'), 'rb');
@fgetcsv($fInputFile, 0, Core_Array::get($aGetParam, 'import_price_separator'), Core_Array::get($aGetParam, 'import_price_stop'));
$iNextSeekPosition = ftell($fInputFile);
fclose($fInputFile);
}
$Shop_Item_Import_Csv_Controller->seek = $iNextSeekPosition;
ob_start();
if(($iNextSeekPosition = $Shop_Item_Import_Csv_Controller->import()) !== FALSE){
if($Shop_Item_Import_Csv_Controller->importAction == 0){
$Shop_Item_Import_Csv_Controller->importAction = 1;
}
$iRedirectTime = 10;
$InsertedItemsCount = Core_Array::getRequest('InsertedItemsCount', 0) + $Shop_Item_Import_Csv_Controller->getInsertedItemsCount();
$UpdatedItemsCount = Core_Array::getRequest('UpdatedItemsCount', 0) + $Shop_Item_Import_Csv_Controller->getUpdatedItemsCount();
$InsertedGroupsCount = Core_Array::getRequest('InsertedGroupsCount', 0) + $Shop_Item_Import_Csv_Controller->getInsertedGroupsCount();
$UpdatedGroupsCount = Core_Array::getRequest('UpdatedGroupsCount', 0) + $Shop_Item_Import_Csv_Controller->getUpdatedGroupsCount();
@header('Refresh: '.$iRedirectTime.'; URL=/auto_import_csv_resanta.php?'."shop_id=".Core_Array::getRequest('shop_id', 0)."&shop_group_id=".Core_Array::get($aGetParam, 'shop_groups_parent_id', 0)."&importAction=".$Shop_Item_Import_Csv_Controller->importAction."&seek=".$iNextSeekPosition."&InsertedItemsCount={$InsertedItemsCount}&UpdatedItemsCount={$UpdatedItemsCount}&InsertedGroupsCount={$InsertedGroupsCount}&UpdatedGroupsCount={$UpdatedGroupsCount}");
showStat($Shop_Item_Import_Csv_Controller);
}
else{
Core_Message::show(Core::_('Shop_Item.msg_download_price_complete'));
showStat($Shop_Item_Import_Csv_Controller);
}
exit(ob_get_clean());
function showStat($Shop_Item_Import_Csv_Controller)
{
echo Core::_('Shop_Item.count_insert_item') . ' — <b>' . (Core_Array::getRequest('InsertedItemsCount', 0) + $Shop_Item_Import_Csv_Controller->getInsertedItemsCount()) . '</b><br/>';
echo Core::_('Shop_Item.count_update_item') . ' — <b>' . (Core_Array::getRequest('UpdatedItemsCount', 0) + $Shop_Item_Import_Csv_Controller->getUpdatedItemsCount()) . '</b><br/>';
echo Core::_('Shop_Item.create_catalog') . ' — <b>' . (Core_Array::getRequest('InsertedGroupsCount', 0) + $Shop_Item_Import_Csv_Controller->getInsertedGroupsCount()) . '</b><br/>';
echo Core::_('Shop_Item.update_catalog') . ' — <b>' . (Core_Array::getRequest('UpdatedGroupsCount', 0) + $Shop_Item_Import_Csv_Controller->getUpdatedGroupsCount()) . '</b><br/>';
}
?>