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

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


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

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

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

$payment_currency->id этот параметр не передается на страницу Orders И поэтому в списке заказов не конвертируется почему-то и дает просто $order->total_price. Как его выцепить чтоб работало всю голову сломал и гуглил и яндексил. Подскажите кто знает.

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

Можно несколько уточнений

1. orders - где? фронт или бэк?

2. Какую цель вы хотите достигнуть? Стандартно из коробки, поменяв валюту на сайте, меняется валюта и происходит конвертация в заказе 

{$order->total_price|convert}

 

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

Можно несколько уточнений

1. orders - где? фронт или бэк?

2. Какую цель вы хотите достигнуть? Стандартно из коробки, поменяв валюту на сайте, меняется валюта и происходит конвертация в заказе 



{$order->total_price|convert}

 

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

2. При чем тут "поменяв валюту на сайте"?  Речь про список заказов, у каждого заказа есть СВОЙ метод оплаты, у каждого метода оплаты есть СВОЯ валюта. Видимо, цель у ТС в том, чтоб в списке заказов показывать сумму каждого заказа в СВОЕЙ валюте...

2 часа назад, Asilis сказал:

$payment_currency->id этот параметр не передается на страницу Orders И поэтому в списке заказов не конвертируется почему-то и дает просто $order->total_price.Как его выцепить чтоб работало всю голову сломал и гуглил и яндексил. Подскажите кто знает.

Выходит, надо передавать нужные значения. Подобные действия происходят в simpla/ProductsAdmin.php.

 

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

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

2. При чем тут "поменяв валюту на сайте"?  Речь про список заказов, у каждого заказа есть СВОЙ метод оплаты, у каждого метода оплаты есть СВОЯ валюта. Видимо, цель у ТС в том, чтоб в списке заказов показывать сумму каждого заказа в СВОЕЙ валюте...

Выходит, надо передавать нужные значения. Подобные действия происходят в simpla/ProductsAdmin.php.

 

Всё правильно! Цель такая что я сделал метод оплаты - карта +3% - соответственно к ней создал валюту - руб 1.03 = 1.00 что выводит по данному методу оплаты увеличение тотал суммы заказа на 3%. В заказе (order) всё работает как нужно и стандартно выдается через конвертацию. Но, во вкладке все  заказы (он же список заказов, он же orders) сумма только тотал передается но не срабатывает конвертация потому что не передается от метода валюта. Хотя тотал передается одинаково ($order->total_price). Просто ($payment_currency->id) не передается. Он отельно генерируется. В order.php ->

if(!empty($order->id)) {
            // Способ доставки
            $delivery = $this->delivery->get_delivery($order->delivery_id);
            $this->design->assign('delivery', $delivery);
            
            // Способ оплаты
            $payment_method = $this->payment->get_payment_method($order->payment_method_id);
            
            if(!empty($payment_method)) {
                $this->design->assign('payment_method', $payment_method);
                // Валюта оплаты
                $payment_currency = $this->money->get_currency(intval($payment_method->currency_id));
                $this->design->assign('payment_currency', $payment_currency);
            }
            // Пользователь
            if($order->user_id) {
                $this->design->assign('user', $this->users->get_user(intval($order->user_id)));
            }
            
            // Соседние заказы
            $this->design->assign('next_order', $this->orders->get_next_order($order->id, $this->request->get('status', 'string')));
            $this->design->assign('prev_order', $this->orders->get_prev_order($order->id, $this->request->get('status', 'string')));
        }

 

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

В simpla/OrdersAdmin.php

После 

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

Вставить 

		// Способ оплаты
		$payment_method = $this->payment->get_payment_method($orders[$o->id]->payment_method_id);

		if(!empty($payment_method))
		{
			$this->design->assign('payment_method', $payment_method);
		
			// Валюта оплаты
			$payment_currency = $this->money->get_currency(intval($payment_method->currency_id));
			$this->design->assign('payment_currency', $payment_currency);
		}

Вывод в simpla/design/html/orders.tpl

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

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

В simpla/OrdersAdmin.php

После 


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

Вставить 


		// Способ оплаты
		$payment_method = $this->payment->get_payment_method($orders[$o->id]->payment_method_id);

		if(!empty($payment_method))
		{
			$this->design->assign('payment_method', $payment_method);
		
			// Валюта оплаты
			$payment_currency = $this->money->get_currency(intval($payment_method->currency_id));
			$this->design->assign('payment_currency', $payment_currency);
		}

Вывод 

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

Пробовал. Не срабатывает( Ордер формируется по другому. Всё в шаблон передётся. Смотрел через {debug}

А ОрдерС формирует заказы через аррей, и получается нужно выводить к каждому заказу метод который там используется. Тут моей грамоты уже не хватает. Всё это склеить в рабочий вариант.

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

Да как не работает? Только что проверил, цена меняется в зависимости от указанной валюты в выбранной оплате 

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

Да как не работает? Только что проверил, цена меняется в зависимости от указанной валюты в выбранной оплате 

Да действительно работает. Хотя я так пробовал ранее %\. Сутки потратил. Но часть вопроса открыта. При переносе в выполненные уже не работает. Может я там сначала проверял. Проверьте у себя пожалуйста. 

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

Да действительно работает. Хотя я так пробовал ранее %\. Сутки потратил. Но часть вопроса открыта. При переносе в выполненные уже не работает. Может я там сначала проверял. Проверьте у себя пожалуйста. 

Все так же работает, проверяйте у себя. Выполненные работают на базе OrdersAdmin.php

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

Все так же работает, проверяйте у себя. Выполненные работают на базе OrdersAdmin.php

можете прислать ваш OrdersAdmin.php? Я именно туда и вставил и в двух случаях работает, а в двух других(выполнен, удален) не работает. Хочу по разнице понять в чем дело.

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

можете прислать ваш OrdersAdmin.php? Я именно туда и вставил и в двух случаях работает, а в двух других(выполнен, удален) не работает. Хочу по разнице понять в чем дело.

стандартный файл https://github.com/pikusov/Simpla/blob/master/simpla/OrdersAdmin.php

за исключением кода, что написал вам выше 

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

стандартный файл https://github.com/pikusov/Simpla/blob/master/simpla/OrdersAdmin.php

за исключением кода, что написал вам выше 

Всё правильно не работает! Если добавить ещё один метод то он берет другой. У меня их несколько. Есть ещё безналичный рачет он +6% соответственно валюта 1.06 = 1.00; А так как в выполненных много таких то отрабатывает не для каждого заказа, а для всех. Поэтому у вас один заказ правильно отрабатывает везде. 

Чтоб работало нужно как то в каждом заказе делать. 

К примеру как список покупок выводится ->

$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));
        }

Кто подскажет как внедрить?

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

Всё правильно не работает! Если добавить ещё один метод то он берет другой. У меня их несколько. Есть ещё безналичный рачет он +6% соответственно валюта 1.06 = 1.00; А так как в выполненных много таких то отрабатывает не для каждого заказа, а для всех. Поэтому у вас один заказ правильно отрабатывает везде. 

Чтоб работало нужно как то в каждом заказе делать. 

К примеру как список покупок выводится ->


$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));
        }

Кто подскажет как внедрить?

в 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)
		);

вывод

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

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

в 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)
		);

вывод

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

Интересно, неужели автор не видит, что такое даже В ПРИНЦИПЕ работать не будет?
С ходу видно как минимум две причины:
1. заказов  НЕСКОЛЬКО, а метод платежа и валюта определяются ОДИН РАЗ,
2. даже это найденное единственое значение $payment_currency в шаблон не передается...

 

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

в 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)
		);

вывод

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

Не работает совсем.

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

Интересно, неужели автор не видит, что такое даже В ПРИНЦИПЕ работать не будет?
С ходу видно как минимум две причины:
1. заказов  НЕСКОЛЬКО, а метод платежа и валюта определяются ОДИН РАЗ,
2. даже это найденное единственое значение $payment_currency в шаблон не передается...

 

Есть мысли как сделать правильно?

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

Интересно, неужели автор не видит, что такое даже В ПРИНЦИПЕ работать не будет?
С ходу видно как минимум две причины:
1. заказов  НЕСКОЛЬКО, а метод платежа и валюта определяются ОДИН РАЗ,
2. даже это найденное единственое значение $payment_currency в шаблон не передается...

 

Балаболить и я могу, вот только это работает. И методы выводит к каждому заказу и в шаблон передаётся. Нужно всего лишь внимательно посмотреть на мои сообщения. 

Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, 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}

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

Балаболить и я могу, вот только это работает. И методы выводит к каждому заказу и в шаблон передаётся. Нужно всего лишь внимательно посмотреть на мои сообщения. 

"вот только это работает" - заявлять столько категорично как раз и означает "балаболить".  Видимо, имеете в виду, что у Вас где-то что-то как-то работает. Вам уже в теме ТС делал замечание ранее, что Ваш метод работает при ОДНОМ заказе. Сомневаюсь, что Вы проверяли реально при РАЗНЫХ данных.

А чтоб не балаболить, попробуйте ответить по пунктам:

1. Откуда из цитированного кода видно, что метод платежа и валюта определяются к каждому заказу, а не один раз?

2. Откуда из цитированного кода видно, что $payment_currency в шаблон передается?

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

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

2. Ага, уважаемый разработчик осознал и в последнем коде вставил-таки передачу в шаблон. Спасибо!

3. Следующий вопрос: что в шаблон передается-то? Переменная $payment_currency - это ОДНА валюта, и она одна выводится в шаблоне на ВСЕ заказы. А у каждого ведь СВОЯ валюта должна показываться.

4. И по скрину видно, что у обоих заказов знаки валют ОДИНАКОВЫЕ. А должны быть разные...

5. И даже проценты неверно посчитаны:

17 минут назад, alexivchenko сказал:

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

Как такое быть может? Предположение лишь одно. Разработчик настолько уверен в правильности своей методы, что даже не проверил расчет, а просто скопировал результат своего неправильного расчета и выдал нам как доказательство. Ну очень смешно...

 

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

2. Ага, уважаемый разработчик осознал и в последнем коде вставил-таки передачу в шаблон. Спасибо!

3. Следующий вопрос: что в шаблон передается-то? Переменная $payment_currency - это ОДНА валюта, и она одна выводится в шаблоне на ВСЕ заказы. А у каждого ведь СВОЯ валюта должна показываться.

4. И по скрину видно, что у обоих заказов знаки валют ОДИНАКОВЫЕ. А должны быть разные...

5. И даже проценты неверно посчитаны:

Как такое быть может? Предположение лишь одно. Разработчик настолько уверен в правильности своей методы, что даже не проверил расчет, а просто скопировал результат своего неправильного расчета и выдал нам как доказательство. Ну очень смешно...

 

Уважаемый КОРС, я осознаю ваше величие и слежу за вашим творчеством на форумах Okay, Simpla и в Telegram движка Okay, понимаю, что иногда и вы бываете не компетентны. А так же нажимать на кнопочки вашей клавиатуры, дабы составить умное предложение не составляет труда. Не составит ли вам труда предложить ваше решение в этой ветке. А не рассуждать какого цвета воздух.

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

Уважаемый КОРС, я осознаю ваше величие и слежу за вашим творчеством на форумах Okay, Simpla и в Telegram движка Okay, понимаю, что иногда и вы бываете не компетентны. А так же нажимать на кнопочки вашей клавиатуры, дабы составить умное предложение не составляет труда. Не составит ли вам труда предложить ваше решение в этой ветке. А не рассуждать какого цвета воздух.

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

Общие рассуждения "какого цвета воздух" идут именно от Вас. С моей стороны поставлены как раз конкретные вопросы по пунктам. А Вы пока ни на один точно не ответили...

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

2. Ага, уважаемый разработчик осознал и в последнем коде вставил-таки передачу в шаблон. Спасибо!

3. Следующий вопрос: что в шаблон передается-то? Переменная $payment_currency - это ОДНА валюта, и она одна выводится в шаблоне на ВСЕ заказы. А у каждого ведь СВОЯ валюта должна показываться.

4. И по скрину видно, что у обоих заказов знаки валют ОДИНАКОВЫЕ. А должны быть разные...

5. И даже проценты неверно посчитаны:

Как такое быть может? Предположение лишь одно. Разработчик настолько уверен в правильности своей методы, что даже не проверил расчет, а просто скопировал результат своего неправильного расчета и выдал нам как доказательство. Ну очень смешно...

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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