Перейти к содержанию
Официальный форум поддержки Simpla

Сумма заказа с конвертацией в списке заказов (orders) не конвертируется


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

53 минуты назад, phukortsin сказал:

Очевидным образом направление уже дано. В частности, если в результате валюты должны быть РАЗНЫМИ, а метод предлагает ОДНУ, то и надо исправлять это место.

Если под "правильный ответ" понимаете полное рабочее решение, то оно требует некоторых трудозатрат. К чему приводит попытка дать решение с наскоку, в этой теме уже видели. Если Вам это действительно нужно и готовы оплачивать, обращайтесь в личку...

Как выше и сказали, Уважаемый Корс, сотрясать воздух, критикуя попытки исправить недоработку системы это не сюда. Если бы нужна была платная доработка зашел бы на фриланс. Либо предлагайте решение, либо не беспокойте людей попыткой самоутвердится за чужой счет и ищите заработок на отведенных для этого ресурсах. 

Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, alexivchenko сказал:

Напишу еще раз...

Имеем 2 валюты

1. карта - 1.03 = 1.00

метод оплаты - Оплата картой банка 

2. банк - 1.06 = 1.00

метод оплаты - Оплата по квитанции

Есть 2 заказа

1. сумма 19200₽ - оплата картой - должны получить вывод с +6% - 20352₽

2. сумма 16154₽ - оплата квитанцией - должны получить вывод с +3% - 17123,24₽

 

в simpla/ OrdersAdmin.php

меняем 


// Отображение
		$orders = array();
		foreach($this->orders->get_orders($filter) as $o)
			$orders[$o->id] = $o;

на


		// Отображение
		$orders = array();
		$payment_method = array();
		foreach($this->orders->get_orders($filter) as $o) {
			$orders[$o->id] = $o;
			$payment_method[] = $orders[$o->id]->payment_method_id;
		}

после 


		// Метки заказов
		$orders_labels = array();
	  	foreach($this->orders->get_order_labels(array_keys($orders)) as $ol)
	  		$orders[$ol->order_id]->labels[] = $ol;

добавляем 


		// Способ оплаты
		$payment_methods = $this->payment->get_payment_method(
			$payment_method
		);
		
		$payment_currency = $this->money->get_currency(
				intval($payment_methods->currency_id)
		);

после 


$this->design->assign('orders', $orders);

добавляем


$this->design->assign('payment_currency', $payment_currency);

https://prnt.sc/10f32e7

вывод

{$order->total_price|convert:$payment_currency->id} {$payment_currency->sign}

Уважаемый Алекс, мне кажется нужно добавлять payment_currency как label добавляются, к каждому заказу вот так ->

$orders_labels = array();
        foreach($this->orders->get_order_labels(array_keys($orders)) as $ol) {
            $orders[$ol->order_id]->labels[] = $ol;
        }

Вот что передается в шаблон через {debug} -> https://ibb.co/z7HMzc8

 

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Asilis сказал:

..критикуя попытки исправить недоработку системы это не сюда. Если бы нужна была платная доработка зашел бы на фриланс. Либо предлагайте решение, либо не беспокойте людей попыткой самоутвердится за чужой счет и ищите заработок на отведенных для этого ресурсах. 

Если подходить формально, то именно сюда, ибо форум и предназначен для обсуждения вопросов, связанных с Simpla, в частности, с доработками.

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

Обычно разработчики понимают, что нахождение ошибок - непростая задача, и благодарят за указания на ошибку, так как понимают, что ее исправление только сделает разработку лучше. Но c Вашей стороны несколько иначе.

А если считаете, что найти ошибку - это ерунда, то возьмите предложенное решение и найдите там все ошибки...  И исправьте...

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Asilis сказал:

Уважаемый Алекс, мне кажется нужно добавлять payment_currency как label добавляются, к каждому заказу вот так ->


$orders_labels = array();
        foreach($this->orders->get_order_labels(array_keys($orders)) as $ol) {
            $orders[$ol->order_id]->labels[] = $ol;
        }

Вот что передается в шаблон через {debug} -> https://ibb.co/z7HMzc8

 

@Asilis, вам не проще будет на момент заказа к итоговой сумме прибавлять % от выбранного метода оплаты и записывать эту сумму в базу как итоговую?

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

В стандартной Simpla заказ создается БЕЗ указания метода оплаты. Метод оплаты выбирается позже к УЖЕ имеющемуся заказу. Поэтому предложение выглядит бессмысленно...

Можно, конечно, прибавлять % в момент выбора (или изменения) метода оплаты, но это, скорее всего, создаст добавочные сложности...

Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, phukortsin сказал:

В стандартной Simpla заказ создается БЕЗ указания метода оплаты. Метод оплаты выбирается позже к УЖЕ имеющемуся заказу. Поэтому предложение выглядит бессмысленно...

Можно, конечно, прибавлять % в момент выбора (или изменения) метода оплаты, но это, скорее всего, создаст добавочные сложности...

знаю, что стандартно вывод методов на странице order.

но можно вывести методы оплаты на станицу cart и во все прибавлять % к сумме при выборе метода

сумма заказа: 19000₽

выбранный способ оплаты: картой банка (+3%)

итого: 19570₽

Ссылка на сообщение
Поделиться на другие сайты
21 минуту назад, alexivchenko сказал:

знаю, что стандартно вывод методов на странице order.

но можно вывести методы оплаты на станицу cart и во все прибавлять % к сумме при выборе метода

сумма заказа: 19000₽

выбранный способ оплаты: картой банка (+3%)

итого: 19570₽

Конечно, можно. Но зачем? Чтоб еще сложнее стало? Редко когда на форуме появлялись решения, аккуратно работающие с изменением цен в заказе, обычно в изменениях такого функционала ошибок бывает немерено...

Первоначальный вариант, когда надо только ПОКАЗАТЬ текущие данные в админке на странице заказов, по-моему, в разы проще...

Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, phukortsin сказал:

Конечно, можно. Но зачем? Чтоб еще сложнее стало? Редко когда на форуме появлялись решения, аккуратно работающие с изменением цен в заказе, обычно в изменениях такого функционала ошибок бывает немерено...

Первоначальный вариант, когда надо только ПОКАЗАТЬ текущие данные в админке на странице заказов, по-моему, в разы проще...

Всё верно! Лучше ничего не обрабатывать лишний раз, всех возможных вариантов такой обработки можно не учесть, а потом пожинать плоды внедрения такой обработки. По поводу моего вопроса, то он не настолько острый. Работе магазина не мешает, я лишь хотел чтоб правильно отображал там где из коробки должен. Но маркеры которые я леплю что это безнал или карта мне точно показывают что это. Поэтому вопрос не спешный, странно правда что раньше это никого не смущало))))) Впринципе очередная задача толкающая на продолжение освоения ООП скучными вечерами или в редкие минуты свободного времени.

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

в simpla/OrdersAdmin.php

заменить

		// Отображение
		$orders = array();
		foreach($this->orders->get_orders($filter) as $o)
			$orders[$o->id] = $o;

на 

		// Отображение
		$orders = array();
		foreach($this->orders->get_orders($filter) as $o) {
			$orders[$o->id] = $o;
			
			$payment_method = $this->payment->get_payment_method($o->payment_method_id);
			$payment_currency = $this->money->get_currency(intval($payment_method->currency_id));
			$orders[$o->id]->payment_currency = $payment_currency;
		}

вывод в шаблоне 

{$order->total_price|convert:$order->payment_currency->id} {$order->payment_currency->sign}

 

Изменено пользователем alexivchenko
Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, phukortsin сказал:

Такое работать будет, результат даст верный, то ужас как нерационально.

Жду рационального решения))

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

Ваше решение выполняет для заказа ДВА запроса к базе - один для получения данных по методу платежа, другой по валюте. Если на странице 5 заказов, то будет 10 однотипных запросов. Если 50 заказов -то 100 запросов. Встречались админы, которые и 1000 заказов выводят. И если на странице применяются 2-3 разработки, подобных Вашей, то иногда и вообще сервер намертво зависает...

А правильное решение рядом - в том же файле смотрите, например, как извлекаются данные по меткам для заказов...

 

Ссылка на сообщение
Поделиться на другие сайты
45 минут назад, phukortsin сказал:

Ваше решение выполняет для заказа ДВА запроса к базе - один для получения данных по методу платежа, другой по валюте. Если на странице 5 заказов, то будет 10 однотипных запросов. Если 50 заказов -то 100 запросов. Встречались админы, которые и 1000 заказов выводят. И если на странице применяются 2-3 разработки, подобных Вашей, то иногда и вообще сервер намертво зависает...

А правильное решение рядом - в том же файле смотрите, например, как извлекаются данные по меткам для заказов...

 

То есть проще написать 482 символа, 408 пробелов и 75 слова, вместо рационального решения.

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, alexivchenko сказал:

То есть проще написать 482 символа, 408 пробелов и 75 слова, вместо рационального решения.

Написать вам готовое решение, это значит забрать у вас часть опыта, вы просто забудете и все. Вам дают хорошую подсказку, если ей воспользуйтесь то и решение сделаете и свой скилл прокачаете.

Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, Kami сказал:

Написать вам готовое решение, это значит забрать у вас часть опыта, вы просто забудете и все. Вам дают хорошую подсказку, если ей воспользуйтесь то и решение сделаете и свой скилл прокачаете.

Тут полностью солидарен))

Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, alexivchenko сказал:

в simpla/OrdersAdmin.php

заменить


		// Отображение
		$orders = array();
		foreach($this->orders->get_orders($filter) as $o)
			$orders[$o->id] = $o;

на 


		// Отображение
		$orders = array();
		foreach($this->orders->get_orders($filter) as $o) {
			$orders[$o->id] = $o;
			
			$payment_method = $this->payment->get_payment_method($o->payment_method_id);
			$payment_currency = $this->money->get_currency(intval($payment_method->currency_id));
			$orders[$o->id]->payment_currency = $payment_currency;
		}

вывод в шаблоне 


{$order->total_price|convert:$order->payment_currency->id} {$order->payment_currency->sign}

 

Всё работает отлично! Единственное у меня наименование валюты не показывал пока я не передал в шаблон payment_currency. Итоговый вариант у меня --> 

// Отображение
		$orders = array();
		foreach($this->orders->get_orders($filter) as $o) {
			$orders[$o->id] = $o;
			$orders[$o->id]->purchases = $this->orders->get_purchases(array('order_id'=>$o->id)); //Здесь у меня список товаров по клику выводятся в каджом заказе
			$payment_method = $this->payment->get_payment_method($o->payment_method_id);
			$payment_currency = $this->money->get_currency(intval($payment_method->currency_id));
			$orders[$o->id]->payment_currency = $payment_currency;
			$this->design->assign('payment_currency', $payment_currency);
		}

Прошу прислать номер карты в личку для персональной благодарности. Благодарю за бескорыстную помощь!

Ссылка на сообщение
Поделиться на другие сайты
9 часов назад, Asilis сказал:

Всё работает отлично! Единственное у меня наименование валюты не показывал пока я не передал в шаблон payment_currency.

Переменную $payment_currency нет смысла передавать в шаблон, да еще и в цикле. Очевидно же, что она должна иметь не одно значение, а индивидуальное значение у каждого заказа.

Если у Вас работает верно, то либо Вы ее в шаблоне не используете, либо Вы пока еще не обнаружили тот случай, когда работает неправильно.

А еще в коде добываются данные по покупкам каждого заказа В ЦИКЛЕ, что есть  добавочная нерациональность.

Но если Вас все устраивает, то примите мои поздравления...

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...