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

Траблы с обработкой заказа.

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

Итак имеется две валюты: Бакс и гривна. Основная валюта бакс(курс 1,0), гривна для удобства восприятия покупателям(курс 8,1).

Пользователь для удобства восприятия выбирает себе валюту гривну и заказывает товар. Я так как закупаю товар в баках мне удобней отслеживать изменения и т.п. цен тоже в баках и потому по умолчанию цену бью в баках.

И так внимание господа...

Наш клиент набился я смотрю заказ и обнаруживаю что такого-то товара нет (ну или он прозвонил и сказал что хотел бы заменить тут-то позицию на иную)я как человек ни о чём не подозревающий лезу в заказ и начинаю удалять позиции и о боги что я наблюдаю. Конечная сума итого не в зависимости от того убираю я товар вообще или добавляю с каждым моим действием возрастает чуть ли не в геометрической прогрессии. Сразу говорю никаких трабл не будет если клиент набъётся в баксах.

Люди помогите сей страшный глюк решить.

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


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

Да, действительно есть такая проблема.

Однако должен заметить, что где-то я подобное обсуждение уже видел - вот только где?...

Ну да ничего - разберемся сегодня/завтра =)

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


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

Никто так решение не нашол?

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


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

а я думаю - "на какую тему я не ответил?" :lol:

занялся этим вопросом.

UPD

Как это ни странно, однако такая проблема существует для всех валют, кроме "валюты по-умолчанию" https://opencartforum.com/public/style_emoticons/default/dry.gif

Виной тому - строчки:

'order_total' => $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], False),
'formatted_order_total' => $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], True),
'formatted_total' => $this->currency->format($total, $order_info['currency'], $order_info['value'], True),
'new_grand_total' => $this->currency->format($order_info['total'] + $total, $order_info['currency'], $order_info['value'], False),
'formatted_grand_total' => $this->currency->format($order_info['total'] + $total, $order_info['currency'], $order_info['value'], True),
в функции

public function addProduct() {
файла

admin/controller/sale/order.php

Как решить эту проблему - пока не могу подсказать.

Но продолжаю работать над этим вопросом.

Изменено пользователем afwollis
*опа...

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


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

Там не столько по умолчанию сколько валюты с курсом отличным от 1.0000000. Если по-умолчанию выбрать другую валюту (хоть правда там написано что валюта по-умолчанию должна быть с курсом 1.00000) с другим курсом всё равно будет та же трабла. А вот если все валютам назначить курс 1 всё будет типтоп.

Я не пробовал курс меньше 1 (0.5, 0.33 и т.п.) но думаю что и там таже беда будет.

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


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

Там не столько по умолчанию сколько валюты с курсом отличным от 1.0000000

я это и имел ввиду :)

Если курс меньше, чем 1, тогда сумма будет уменьшаться.

Причина в данных уходящих в функцию или в самой функции...

Надо придумать самое оптимальное решение.

У меня его до сих пор нет :(

Хотя мысли определенные имеются :)

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


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

Если есть желающие стать "подопытными" - то есть один вариант.

Проверял на заказах в долларах (USD).

Валюта по-умолчанию - фунты стерлингов (GBP)

Изменения коснутся файла

admin/controller/sale/order.php
Изменено пользователем afwollis

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


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

Сегодня/завтра постараюсь "вытянуть" изменения из файла (много чего менял в нем для разных модов).

Потом свяжусь с вами.

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


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

Удалось проблему порешать? Или ещё не дошли руки?

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


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

afwollis, я конечно дико извиняюсь, но проблема реально существует. Может накропаешь хоть пару слов, получилось исправить, или нет? Такое впечатление, что у всех всё нормально, только у двоих-троих эта проблема существует... :blink:

Кстати, может на англоязычных ресурсах что-то есть по этому вопросу? Я бы и сам поискал, только я вэри бэд спик инглиш... :(

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


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

Я вкурсе, что проблема существует.

А что поделать? Вопросов масса, а отвечающих...

Делайте бэкап файла

admin/controller/sale/order.php

найдите функцию

public function addProduct() {
поменяйте

$product_data = array(
					'product_id'			=> $result['product_id'],
					'name'					=> $result['name'],
					'model'					=> $result['model']." debug:<br />".$wTotalDebug,
					'sku'					=> $result['sku'],
					'stock'					=> $result['quantity'],
					'minimum'				=> $result['minimum'],
					'tax_class_id'			=> $result['tax_class_id'],
					'price'					=> $subtotal,
					'formatted_price'		=> $this->currency->format($subtotal, $order_info['currency'], $order_info['value'], True),
					'quantity'				=> $quantity,
					'tax'					=> $tax,
					'total'					=> $total,
					'order_total'			=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], False),
					'formatted_order_total'	=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], True),
					'formatted_total'		=> $this->currency->format($total, $order_info['currency'], $order_info['value'], True),
					'new_grand_total'		=> $this->currency->format($order_info['total'] + $total, $order_info['currency'], $order_info['value'], False),
					'formatted_grand_total'	=> $this->currency->format($order_info['total'] + $total, $order_info['currency'], $order_info['value'], True),
					'options'				=> $option_data,
					'href'					=> HTTPS_SERVER . 'index.php?route=catalog/product/update&token=' . $this->session->data['token'] . '&product_id=' . $result['product_id']
				);
на

$product_data = array(
					'product_id'			=> $result['product_id'],
					'name'					=> $result['name'],
					'model'					=> $result['model'],
					'sku'					=> $result['sku'],
					'stock'					=> $result['quantity'],
					'minimum'				=> $result['minimum'],
					'tax_class_id'			=> $result['tax_class_id'],
					'price'					=> $subtotal,
					'formatted_price'		=> $this->currency->format($subtotal, $order_info['currency'], $order_info['value'], True),
					'quantity'				=> $quantity,
					'tax'					=> $tax,
					'total'					=> $total,
					'order_total'			=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], False),
					'formatted_order_total'	=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], True),
					'formatted_total'		=> $this->currency->format($total, $order_info['currency'], $order_info['value'], True),
					'new_grand_total'		=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], False),
					'formatted_grand_total'	=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], True),
					'options'				=> $option_data,
					'href'					=> HTTPS_SERVER . 'index.php?route=catalog/product/update&token=' . $this->session->data['token'] . '&product_id=' . $result['product_id']
				);

найдите функцию

public function removeProduct() {
поменяйте

$product_data = array(
				'order_product_id'		=> $order_product_id,
				'order_total'			=> $this->currency->format($order_total - $total, $order_info['currency'], $order_info['value'], False),
				'formatted_order_total' => $this->currency->format($order_total - $total, $order_info['currency'], $order_info['value'], True),
				'new_grand_total'		=> $this->currency->format($order_info['total'] - $total, $order_info['currency'], $order_info['value'], False),
				'formatted_grand_total'	=> $this->currency->format($order_info['total'] - $total, $order_info['currency'], $order_info['value'], True),
			);
на

$product_data = array(
				'order_product_id'		=> $order_product_id,
				'order_total'			=> $this->currency->format($order_total - $total, $order_info['currency'], $order_info['value'], False),
				'formatted_order_total' => $this->currency->format($order_total - $total, $order_info['currency'], $order_info['value'], True),
				'new_grand_total'		=> $this->currency->format($order_total - $total, $order_info['currency'], $order_info['value'], False),
				'formatted_grand_total'	=> $this->currency->format($order_total - $total, $order_info['currency'], $order_info['value'], True),
			);

Неизвестно, как с налогами работает.

Отпишитесь о результатах.

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


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

Через пару часиков поюзаю и отпишусь. Только у меня товары без налогов все, поэтому, если у кого-то есть товары с налогами - тоже поюзайте и отпишитесь.

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


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

Вот что я наюзал:

Берём любой заказ. Например, №27:

post-5108-0-55638300-1298444681_thumb.jpg

Смотрим, какие товары в нём есть:

post-5108-0-39031200-1298444743_thumb.jpg

Убираем один товар, смотрим, что получилось:

post-5108-0-77161900-1298444783_thumb.jpg

Пока всё в норме. На этой странице. А вот что показывает на той, откуда взят первый скрин - чуть ниже. Так вот. Добавляем сюда же любой другой товар:

post-5108-0-40654900-1298444884_thumb.jpg

Сумма отображается нормально, но появилась лишняя строка. Она ни на что не влияет, но всё же...

Добавляем сюда же ещё один товар:

post-5108-0-99856100-1298445116_thumb.jpg

Получаем нечто кривенькое и непонятненькое, хотя, в принципе, конечная сумма таки корректная.

А теперь смотрим на предыдущую страницу в заказы:

post-5108-0-91105700-1298445461_thumb.jpg

Как видим, сумма сугубо некорректная... :blink:

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


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

Я не говорил, что это стопроцентное решение :)

Главное что почти оно.

Возвращайте файлик на место и ожидайте следующего апдейта.

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


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

Так и сделал. :)

И на том спасибо, что хоть занимаетесь этим. :rolleyes:

Что-то у меня всё крепчает убеждение, что решение этого вопроса нужно только мне... Я, конечно, понимаю, что проблема не такая уж и критическая, но всё же...

Неужели никому больше не надо? Или все ждут готового решения и облом даже потестить то, что предлагается?

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


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

Понятно, будем разбираться дальше.

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


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

Кто-нибудь решил эту проблему? Очень актуально.

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


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

				$product_data = array(
					'product_id'			=> $result['product_id'],
					'name'					=> $result['name'],
					'model'					=> $result['model'],
					'sku'					=> $result['sku'],
					'stock'					=> $result['quantity'],
					'minimum'				=> $result['minimum'],
					'tax_class_id'			=> $result['tax_class_id'],
					'price'					=> $subtotal,
					'formatted_price'		=> $this->currency->format($subtotal, $order_info['currency'], $order_info['value'], True),
					'quantity'				=> $quantity,
					'tax'					=> $tax,
					'total'					=> $total,
					'order_total'			=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], False),
					'formatted_order_total'	=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], True),
					'formatted_total'		=> $this->currency->format($total, $order_info['currency'], $order_info['value'], True),
					'new_grand_total'		=> $this->currency->format($order_info['total'] + $total, $order_info['currency'], $order_info['value'], False),
					'formatted_grand_total'	=> $this->currency->format($order_info['total'] + $total, $order_info['currency'], $order_info['value'], True),
					'options'				=> $option_data,
					'href'					=> HTTPS_SERVER . 'index.php?route=catalog/product/update&token=' . $this->session->data['token'] . '&product_id=' . $result['product_id']
				);

заменить на


				$product_data = array(
					'product_id'			=> $result['product_id'],
					'name'					=> $result['name'],
					'model'					=> $result['model'],
					'sku'					=> $result['sku'],
					'stock'					=> $result['quantity'],
					'minimum'				=> $result['minimum'],
					'tax_class_id'			=> $result['tax_class_id'],
					'price'					=> $subtotal,
					'formatted_price'		=> $this->currency->format($subtotal, $order_info['currency'], $order_info['value'], True),
					'quantity'				=> $quantity,
					'tax'					=> $tax,
					'total'					=> $total,
					'order_total'			=> $order_total + $total,
					'formatted_order_total'	=> $this->currency->format($order_total + $total, $order_info['currency'], $order_info['value'], True),
					'formatted_total'		=> $this->currency->format($total, $order_info['currency'], $order_info['value'], True),
 False),
					'new_grand_total'		=> $order_info['total'] + $total,
					'formatted_grand_total'	=> $this->currency->format($order_info['total'] + $total, $order_info['currency'], $order_info['value'], True),
					'options'				=> $option_data,
					'href'					=> HTTPS_SERVER . 'index.php?route=catalog/product/update&token=' . $this->session->data['token'] . '&product_id=' . $result['product_id']
				);

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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