faceoff

Опции товара, рассчет стоимости.

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

faceoff    13

Добрый день. Подскажите в каком файле идет рассчет окончательной стоимости товара с учетом его опций (+ -) к основной цене?

Спасибо.

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


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

Сами опции задаются на странице товара product.tpl , а итог мы видим либо в корзине либо в оформление заказа

Можно в принципе установить модуль который будет изменять цену в зависимости от выбранных опций, прямо на странице с товаром...

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


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

Т. е. сам рассчет цена+опция идет в корзине? Какой файл отвечает за это, не смог найти.

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


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

Вы лучше скажите что Вам конкретно надо сделать. ото я не могу сориентироваться...

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


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

Я хочу сделать, чтобы была возможность помимо + - сделать еще вариант =, чтобы мне не высчитывать на сколько это у меня дороже стоит товар или дешевле, а просто прописывать цену.

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


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

Ааа понял, я тоже хотел такое сделать (такая функция кстати есть в virtuemart магазине), но у меня ничего не вышло, смог только добавить внешние изменения в админку, но реально они не работали.

Там просто надо много файлов, менять в том числе и php, вот если вы знаете php то я могу попробовать найти все файлы где нужно вносить изменения.

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


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

Вот я как раз php и ищу, потому что внешнюю часть я тоже сделал :)

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


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

Вам нужно воспользоваться программой Agent Ransack - эта прога может искать по названиям файлов и по тексту написанному в самих файлах. Т.е. она быстро и удобно сканирует пока не найдет ваш запрос. Скачать можете с оф сайта.

Мне лично она выдала вот такие результаты:

Изображение

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


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

Я хочу сделать, чтобы была возможность помимо + - сделать еще вариант =, чтобы мне не высчитывать на сколько это у меня дороже стоит товар или дешевле, а просто прописывать цену.

+ и - покзывают отклонения от основной цены

поэтому "=" там ненужно. = это нулевое отклонение.

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


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

+ и - покзывают отклонения от основной цены

поэтому "=" там ненужно. = это нулевое отклонение.

думаю имеется ввиду возможность задать цену сразу, без расчетов

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


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

думаю имеется ввиду возможность задать цену сразу, без расчетов

Да, именно это я и хочу сделать.

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


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

для версии 1.5.3

при редактировании цены у опции укажите =, например

=100

тогда двиг сам посчитает и укажет + или -

Index: admin/model/catalog/product.php
===================================================================
--- admin/model/catalog/product.php	(revision 44:90e85bd8f0dc)
+++ admin/model/catalog/product.php	(revision 44+:90e85bd8f0dc+)
@@ -40,6 +40,15 @@
				
					 if (isset($product_option['product_option_value'])) {
						 foreach ($product_option['product_option_value'] as $product_option_value) {
+							if(strlen($product_option_value['price']) > 0 && $product_option_value['price'][0] == '=') {
+								$option_price = (float)$data['price'] - (float)substr($product_option_value['price'], 1);
+								if($option_price < 0) {
+									$product_option_value['price'] = -$option_price;
+									$product_option_value['price_prefix'] = "+";
+								} else {
+									$product_option_value['price_prefix'] = "-";
+								}
+							}
							 $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . (int)$product_option_value['option_value_id'] . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', price_prefix = '" . $this->db->escape($product_option_value['price_prefix']) . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "', weight = '" . (float)$product_option_value['weight'] . "', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) . "'");
						 }
					 }
@@ -173,6 +182,15 @@
				
					 if (isset($product_option['product_option_value'])) {
						 foreach ($product_option['product_option_value'] as $product_option_value) {
+							if(strlen($product_option_value['price']) > 0 && $product_option_value['price'][0] == '=') {
+								$option_price = (float)$data['price'] - (float)substr($product_option_value['price'], 1);
+								if($option_price < 0) {
+									$product_option_value['price'] = -$option_price;
+									$product_option_value['price_prefix'] = "+";
+								} else {
+									$product_option_value['price_prefix'] = "-";
+								}
+							}
							 $this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_value_id = '" . (int)$product_option_value['product_option_value_id'] . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . (int)$product_option_value['option_value_id'] . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', price_prefix = '" . $this->db->escape($product_option_value['price_prefix']) . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "', weight = '" . (float)$product_option_value['weight'] . "', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) . "'");
						 }
					 }

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


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

у меня немного по другому - тогда еще скидки можно учесть.

Только я не тестировал.

Изменено пользователем sergiosinicin

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


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

у меня немного по другому - тогда еще скидки можно учесть.

Только я не тестировал.

мне выдает Undefined variable: option_value_query in /home/a/ateliervru/artfabric/public_html/vqmod/vqcache/vq2-system_library_cart.php on line 180Notice: Trying to get property of non-object in /home/a/ateliervru/artfabric/public_html/vqmod/vqcache/vq2-system_library_cart.php on line 180

Если добавляешь товар без опции.

И после того как добавишь 1 товар с опцией =, все другие товары добавляются с такой же ценой )

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


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

мне выдает Undefined variable: option_value_query in /home/a/ateliervru/artfabric/public_html/vqmod/vqcache/vq2-system_library_cart.php on line 180Notice: Trying to get property of non-object in /home/a/ateliervru/artfabric/public_html/vqmod/vqcache/vq2-system_library_cart.php on line 180

Если добавляешь товар без опции.

И после того как добавишь 1 товар с опцией =, все другие товары добавляются с такой же ценой )

Подправил. Если что, вечером гляну еще раз.

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


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

Подправил. Если что, вечером гляну еще раз.

PHP Parse error: syntax error, unexpected T_ISSET, expecting '(' in /home/a/ateliervru/artfabric/public_html/vqmod/vqcache/vq2-system_library_cart.php on line 180

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


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

вы сначала все файлы из vqmod папки удалите (временно) а потом ошибку смотрите, ото он некорректно отображает, пишет что ошибка во vqmod а её там и в помине нет...

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


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

Т.е. у вас все работает?

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


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

Т.е. у вас все работает?

Я проверяю, делаю исправления, поэтому код меняется.

Теперь вроде все.

Попробуйте.

Изменено пользователем sergiosinicin

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


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

Я проверяю, делаю исправления, поэтому код меняется.

Теперь вроде все.

Попробуйте.

Возможно я кэш не почистил, сейчас работает добавление с опцией =. Но есть другой глюк, если этот же товар без опции добавить, то у него будет такая же цена как с опцией :)

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


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

Теперь при добавлении первого товара с опцией =, все последующие добавляются с 0 ценой

Не могу повторить ошибку. А можно скриншот или подробнее?

А ... у меня радио кнопки, у вас наверное чекбоксы. Сейчас посмотрю.

Изменено пользователем sergiosinicin

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


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

Не могу повторить ошибку. А можно скриншот или подробнее?

А ... у меня радио кнопки, у вас наверное чекбоксы. Сейчас посмотрю.

Да, чекбоксы :)

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


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

А на версию 1.5.13 не будете делать?

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


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

А на версию 1.5.13 не будете делать?

Не знаю. Не работает?

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


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

Да, чекбоксы :)

Допустим есть товар и у него 2 опции со знаком =.

При покупке я ставлю оба чекбокса и в корзине это 2 отдельные позиции или одна позиция как сумма двух?

Здесь выложил.

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


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

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

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

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

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

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

Войти

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

Войти


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

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