Перейти к содержанию
Helloween

[Решено] Unknown column 'usd_price' in 'field list' (Error No: 1054)

Рекомендуемые сообщения

Версия движка ocStore: 1.5.5.1.2
Шаблон дефолтный, модули не ставил. Допиливал сам некоторые вещи, но проблем нет кроме этой:

 

При попытке добавить акцию - выскакивает сообщение о неизвестном индексе usd_price.
Notice: Undefined index: usd_price in ПАПКА_САЙТА/admin/model/catalog/product.php on line 196

Notice: Undefined index: eur_price in ПАПКА_САЙТА/admin/model/catalog/product.php on line 196

Notice: Error: Unknown column 'usd_price' in 'field list'

Error No: 1054
INSERT INTO oc_product_special SET product_id = '3826', customer_group_id = '1', priority = '0', price = '38900', usd_price = '0', eur_price = '0', date_start = '2015-01-28', date_end = '' in ПАПКА_САЙТА/system/database/mysql.php on line 50
 
Поля usd_price и eur_price я добавлял сам, везде, где нужно было для работы админки. Все добавления и редактирования товаров работают, цены пересчитываются по заданному мной курсу.

Видимо, для добавления акции их тоже надо где-то прописать, но где?

 

Апдейт.

Добавил такие же поля в таблицу oc_product_special и вот, что получаю теперь:

 

Notice: Undefined index: usd_price in admin/model/catalog/product.php on line 196

Notice: Undefined index: eur_price in admin/model/catalog/product.php on line 196

Warning: Cannot modify header information - headers already sent by (output started at admin/index.php:82) in system/engine/controller.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at admin/index.php:82) in system/engine/controller.php on line 29

 

При этом, данные сохраняются.

 

Кусок кода указанного файла, содержащий строку 196

		if (isset($data['product_special'])) {
			foreach ($data['product_special'] as $product_special) {
				$this->db->query("INSERT INTO " . DB_PREFIX . "product_special SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_special['customer_group_id'] . "', priority = '" . (int)$product_special['priority'] . "', price = '" . (float)$product_special['price'] . "', usd_price = '" . (float)$product_special['usd_price'] . "', eur_price = '" . (float)$product_special['eur_price'] . "', date_start = '" . $this->db->escape($product_special['date_start']) . "', date_end = '" . $this->db->escape($product_special['date_end']) . "'");
			}
		}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поборол удалением из этого куска кода лишних запросов:

Вырезал

, usd_price = '" . (float)$product_special['usd_price'] . "', eur_price = '" . (float)$product_special['eur_price'] . "'

Тоже самое сделал с кодом выше, где запрос к дискаунту идет.

тоже вырезал оттуда лишнее.

Все работает.

Естественно, таблицы oc_product_special и oc_product_discount вернул к исходному виду (убрал оттуда столбцы с валютами)

Пользуйтесь, если у кого подобная проблема :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, решено :)

в сообщении выше написано же, что поборол удалением лишних запросов  и не подробно, но все же поясняется, что при расчете дискаунта (или акции), обращений к валютам не требуется, там должно по прежнему оставаться только обращение к цене, установленной по умолчанию (то есть, к стандартному полю 'price')

Все работает как положено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.