Asilis Posted March 6, 2021 Report Share Posted March 6, 2021 Сумма заказа с конвертацией в списке заказов (orders) не конвертируется, а в самом заказе конвертируется. {$order->total_price|convert:$payment_currency->id} {$payment_currency->sign} $payment_currency->id этот параметр не передается на страницу Orders И поэтому в списке заказов не конвертируется почему-то и дает просто $order->total_price. Как его выцепить чтоб работало всю голову сломал и гуглил и яндексил. Подскажите кто знает. Quote Link to post Share on other sites
sergeevizh Posted March 6, 2021 Report Share Posted March 6, 2021 Можно несколько уточнений 1. orders - где? фронт или бэк? 2. Какую цель вы хотите достигнуть? Стандартно из коробки, поменяв валюту на сайте, меняется валюта и происходит конвертация в заказе {$order->total_price|convert} Quote Link to post Share on other sites
phukortsin Posted March 6, 2021 Report Share Posted March 6, 2021 (edited) 2 часа назад, alexivchenko сказал: Можно несколько уточнений 1. orders - где? фронт или бэк? 2. Какую цель вы хотите достигнуть? Стандартно из коробки, поменяв валюту на сайте, меняется валюта и происходит конвертация в заказе {$order->total_price|convert} 1. Поскольку модуля Orders на витрине нет, то, видимо, речь про админку. 2. При чем тут "поменяв валюту на сайте"? Речь про список заказов, у каждого заказа есть СВОЙ метод оплаты, у каждого метода оплаты есть СВОЯ валюта. Видимо, цель у ТС в том, чтоб в списке заказов показывать сумму каждого заказа в СВОЕЙ валюте... 2 часа назад, Asilis сказал: $payment_currency->id этот параметр не передается на страницу Orders И поэтому в списке заказов не конвертируется почему-то и дает просто $order->total_price.Как его выцепить чтоб работало всю голову сломал и гуглил и яндексил. Подскажите кто знает. Выходит, надо передавать нужные значения. Подобные действия происходят в simpla/ProductsAdmin.php. Edited March 6, 2021 by phukortsin Quote Link to post Share on other sites
Asilis Posted March 6, 2021 Author Report Share Posted March 6, 2021 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'))); } Quote Link to post Share on other sites
sergeevizh Posted March 6, 2021 Report Share Posted March 6, 2021 (edited) В 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} Edited March 6, 2021 by alexivchenko Quote Link to post Share on other sites
Asilis Posted March 6, 2021 Author Report Share Posted March 6, 2021 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} А ОрдерС формирует заказы через аррей, и получается нужно выводить к каждому заказу метод который там используется. Тут моей грамоты уже не хватает. Всё это склеить в рабочий вариант. Quote Link to post Share on other sites
sergeevizh Posted March 6, 2021 Report Share Posted March 6, 2021 Да как не работает? Только что проверил, цена меняется в зависимости от указанной валюты в выбранной оплате Quote Link to post Share on other sites
Asilis Posted March 6, 2021 Author Report Share Posted March 6, 2021 9 минут назад, alexivchenko сказал: Да как не работает? Только что проверил, цена меняется в зависимости от указанной валюты в выбранной оплате Да действительно работает. Хотя я так пробовал ранее %\. Сутки потратил. Но часть вопроса открыта. При переносе в выполненные уже не работает. Может я там сначала проверял. Проверьте у себя пожалуйста. Quote Link to post Share on other sites
sergeevizh Posted March 6, 2021 Report Share Posted March 6, 2021 25 минут назад, Asilis сказал: Да действительно работает. Хотя я так пробовал ранее %\. Сутки потратил. Но часть вопроса открыта. При переносе в выполненные уже не работает. Может я там сначала проверял. Проверьте у себя пожалуйста. Все так же работает, проверяйте у себя. Выполненные работают на базе OrdersAdmin.php Quote Link to post Share on other sites
Asilis Posted March 6, 2021 Author Report Share Posted March 6, 2021 20 минут назад, alexivchenko сказал: Все так же работает, проверяйте у себя. Выполненные работают на базе OrdersAdmin.php можете прислать ваш OrdersAdmin.php? Я именно туда и вставил и в двух случаях работает, а в двух других(выполнен, удален) не работает. Хочу по разнице понять в чем дело. Quote Link to post Share on other sites
sergeevizh Posted March 6, 2021 Report Share Posted March 6, 2021 2 минуты назад, Asilis сказал: можете прислать ваш OrdersAdmin.php? Я именно туда и вставил и в двух случаях работает, а в двух других(выполнен, удален) не работает. Хочу по разнице понять в чем дело. стандартный файл https://github.com/pikusov/Simpla/blob/master/simpla/OrdersAdmin.php за исключением кода, что написал вам выше Quote Link to post Share on other sites
Asilis Posted March 6, 2021 Author Report Share Posted March 6, 2021 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)); } Кто подскажет как внедрить? Quote Link to post Share on other sites
sergeevizh Posted March 6, 2021 Report Share Posted March 6, 2021 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} Quote Link to post Share on other sites
phukortsin Posted March 7, 2021 Report Share Posted March 7, 2021 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 в шаблон не передается... Quote Link to post Share on other sites
Asilis Posted March 7, 2021 Author Report Share Posted March 7, 2021 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} Не работает совсем. Quote Link to post Share on other sites
Asilis Posted March 7, 2021 Author Report Share Posted March 7, 2021 2 часа назад, phukortsin сказал: Интересно, неужели автор не видит, что такое даже В ПРИНЦИПЕ работать не будет? С ходу видно как минимум две причины: 1. заказов НЕСКОЛЬКО, а метод платежа и валюта определяются ОДИН РАЗ, 2. даже это найденное единственое значение $payment_currency в шаблон не передается... Есть мысли как сделать правильно? Quote Link to post Share on other sites
sergeevizh Posted March 7, 2021 Report Share Posted March 7, 2021 2 часа назад, phukortsin сказал: Интересно, неужели автор не видит, что такое даже В ПРИНЦИПЕ работать не будет? С ходу видно как минимум две причины: 1. заказов НЕСКОЛЬКО, а метод платежа и валюта определяются ОДИН РАЗ, 2. даже это найденное единственое значение $payment_currency в шаблон не передается... Балаболить и я могу, вот только это работает. И методы выводит к каждому заказу и в шаблон передаётся. Нужно всего лишь внимательно посмотреть на мои сообщения. Quote Link to post Share on other sites
Asilis Posted March 7, 2021 Author Report Share Posted March 7, 2021 5 минут назад, alexivchenko сказал: Балаболить и я могу, вот только это работает. И методы выводит к каждому заказу и в шаблон передаётся. Нужно всего лишь внимательно посмотреть на мои сообщения. Сорян, если не углядели. Можно, тогда, полную конструкцию? А то, в стандартный вид вставляя только последний код, не работает. Quote Link to post Share on other sites
sergeevizh Posted March 7, 2021 Report Share Posted March 7, 2021 (edited) Напишу еще раз... Имеем 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} Edited March 7, 2021 by alexivchenko Quote Link to post Share on other sites
phukortsin Posted March 7, 2021 Report Share Posted March 7, 2021 5 минут назад, alexivchenko сказал: Балаболить и я могу, вот только это работает. И методы выводит к каждому заказу и в шаблон передаётся. Нужно всего лишь внимательно посмотреть на мои сообщения. "вот только это работает" - заявлять столько категорично как раз и означает "балаболить". Видимо, имеете в виду, что у Вас где-то что-то как-то работает. Вам уже в теме ТС делал замечание ранее, что Ваш метод работает при ОДНОМ заказе. Сомневаюсь, что Вы проверяли реально при РАЗНЫХ данных. А чтоб не балаболить, попробуйте ответить по пунктам: 1. Откуда из цитированного кода видно, что метод платежа и валюта определяются к каждому заказу, а не один раз? 2. Откуда из цитированного кода видно, что $payment_currency в шаблон передается? Если в последнем коде поправочные куски к предыдущему, то хорошо бы заново полную инструкцию, а то гадать, то ли Вы дали полный код, то ли кусок к предыдущему, уже тяжело... Quote Link to post Share on other sites
phukortsin Posted March 7, 2021 Report Share Posted March 7, 2021 2. Ага, уважаемый разработчик осознал и в последнем коде вставил-таки передачу в шаблон. Спасибо! 3. Следующий вопрос: что в шаблон передается-то? Переменная $payment_currency - это ОДНА валюта, и она одна выводится в шаблоне на ВСЕ заказы. А у каждого ведь СВОЯ валюта должна показываться. 4. И по скрину видно, что у обоих заказов знаки валют ОДИНАКОВЫЕ. А должны быть разные... 5. И даже проценты неверно посчитаны: 17 минут назад, alexivchenko сказал: 2. сумма 16154₽ - оплата квитанцией - должны получить вывод с +3% - 17123,24₽ Как такое быть может? Предположение лишь одно. Разработчик настолько уверен в правильности своей методы, что даже не проверил расчет, а просто скопировал результат своего неправильного расчета и выдал нам как доказательство. Ну очень смешно... Quote Link to post Share on other sites
sergeevizh Posted March 7, 2021 Report Share Posted March 7, 2021 8 минут назад, phukortsin сказал: 2. Ага, уважаемый разработчик осознал и в последнем коде вставил-таки передачу в шаблон. Спасибо! 3. Следующий вопрос: что в шаблон передается-то? Переменная $payment_currency - это ОДНА валюта, и она одна выводится в шаблоне на ВСЕ заказы. А у каждого ведь СВОЯ валюта должна показываться. 4. И по скрину видно, что у обоих заказов знаки валют ОДИНАКОВЫЕ. А должны быть разные... 5. И даже проценты неверно посчитаны: Как такое быть может? Предположение лишь одно. Разработчик настолько уверен в правильности своей методы, что даже не проверил расчет, а просто скопировал результат своего неправильного расчета и выдал нам как доказательство. Ну очень смешно... Уважаемый КОРС, я осознаю ваше величие и слежу за вашим творчеством на форумах Okay, Simpla и в Telegram движка Okay, понимаю, что иногда и вы бываете не компетентны. А так же нажимать на кнопочки вашей клавиатуры, дабы составить умное предложение не составляет труда. Не составит ли вам труда предложить ваше решение в этой ветке. А не рассуждать какого цвета воздух. Quote Link to post Share on other sites
phukortsin Posted March 7, 2021 Report Share Posted March 7, 2021 (edited) 9 минут назад, alexivchenko сказал: Уважаемый КОРС, я осознаю ваше величие и слежу за вашим творчеством на форумах Okay, Simpla и в Telegram движка Okay, понимаю, что иногда и вы бываете не компетентны. А так же нажимать на кнопочки вашей клавиатуры, дабы составить умное предложение не составляет труда. Не составит ли вам труда предложить ваше решение в этой ветке. А не рассуждать какого цвета воздух. Как Вы видите из текущей темы, предложить качественное рабочее решение - составляет некоторый труд, и не совсем маленький. Если Вам действительно это нужно и Вы готовы оплачивать эту работу - пишите в личку. Общие рассуждения "какого цвета воздух" идут именно от Вас. С моей стороны поставлены как раз конкретные вопросы по пунктам. А Вы пока ни на один точно не ответили... Edited March 7, 2021 by phukortsin Quote Link to post Share on other sites
Asilis Posted March 7, 2021 Author Report Share Posted March 7, 2021 52 минуты назад, phukortsin сказал: 2. Ага, уважаемый разработчик осознал и в последнем коде вставил-таки передачу в шаблон. Спасибо! 3. Следующий вопрос: что в шаблон передается-то? Переменная $payment_currency - это ОДНА валюта, и она одна выводится в шаблоне на ВСЕ заказы. А у каждого ведь СВОЯ валюта должна показываться. 4. И по скрину видно, что у обоих заказов знаки валют ОДИНАКОВЫЕ. А должны быть разные... 5. И даже проценты неверно посчитаны: Как такое быть может? Предположение лишь одно. Разработчик настолько уверен в правильности своей методы, что даже не проверил расчет, а просто скопировал результат своего неправильного расчета и выдал нам как доказательство. Ну очень смешно... Может быть, вместо критики зная, что не так отрабатывает попробовать дать правильный ответ или направление. Quote Link to post Share on other sites
phukortsin Posted March 7, 2021 Report Share Posted March 7, 2021 34 минуты назад, Asilis сказал: Может быть, вместо критики зная, что не так отрабатывает попробовать дать правильный ответ или направление. Очевидным образом направление уже дано. В частности, если в результате валюты должны быть РАЗНЫМИ, а метод предлагает ОДНУ, то и надо исправлять это место. Если под "правильный ответ" понимаете полное рабочее решение, то оно требует некоторых трудозатрат. К чему приводит попытка дать решение с наскоку, в этой теме уже видели. Если Вам это действительно нужно и готовы оплачивать, обращайтесь в личку... Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.