Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Som

Recommended Posts

Итак имеется две валюты: Бакс и гривна. Основная валюта бакс(курс 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:

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

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

Надіслати
Поділитися на інших сайтах


  • 8 months later...
  • 1 year later...

				$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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.