Перейти к содержимому


Фото
- - - - -

функция pay($order_id)


  • Чтобы отвечать, сперва войдите на форум
17 ответов в теме

#1 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 06.12.2015 - 20:43

В api/Orders.php есть такой запрос

 

		$query = $this->db->placehold("UPDATE __orders SET payment_status=1, payment_date=NOW(), modified=NOW() WHERE id=? LIMIT 1", $order->id);
		$this->db->query($query);

Запрос это никогда не выполняется, так как дает синтаксическую ошибку, потому как поле payment_status в таблице отсутствует.

Похоже, такое поле было в версии 1, и это отголоски тех времен.

И сама функция с этими строками, кажется, нигде в Simpla не используется...



#2 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 691 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 06.12.2015 - 20:57

Я об этом Денису писал уже, на что получил совсем не верный ответ, цитирую:

Эта функция помечает заказ как оплаченный



#3 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 06.12.2015 - 21:46

Видимо, Денис имел в виду, что эта функция ЗАДУМАНА, чтобы помечать заказ как оплаченный. НО

1. Реально этого не делает, по причине ошибки в SQL-запросе.

2. И по-моему, нигде в стандартной Simpla 2.3.7 функция не вызывается. Если кто знает, где она вызывается, прошу сообщить...



#4 mishanya

mishanya
  • Фрилансер
  • 2 550 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 06.12.2015 - 22:27

поиск по файлам места вызова orders->pay результата не дал



#5 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 691 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 06.12.2015 - 22:33

поиск по файлам места вызова orders->pay результата не дал

В том то и дело, что эта функция нигде не вызывается, Денис с этим не согласен.
В функции есть сразу 2 ошибки, а не одна.

#6 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 07.12.2015 - 09:03

В том то и дело, что эта функция нигде не вызывается, Денис с этим не согласен.

 
Жаль, что он не высказывает АРГУМЕНТИРОВАНО здесь свое несогласие...

#7 mishanya

mishanya
  • Фрилансер
  • 2 550 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 10.12.2015 - 00:24

В том то и дело, что эта функция нигде не вызывается, Денис с этим не согласен.
В функции есть сразу 2 ошибки, а не одна.

 

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



#8 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 691 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 10.12.2015 - 00:50

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

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

#9 mishanya

mishanya
  • Фрилансер
  • 2 550 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 10.12.2015 - 00:55

 С таким мышлением можно тьму кода написать который не будет использоваться и не будет мешать, и толку с этого?

 

ну так, ни толку ни вреда.



#10 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 691 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 10.12.2015 - 01:42


ну так, ни толку ни вреда.


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

#11 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 10.12.2015 - 09:12

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

 

Очень правильно замечено.

Могу дополнительно добавить, что за последние 2-3 года в Simpla обнаружено несколько явно усложненных мест. Например, при выводе главной страницы и в шаблоне тройной  повтор почти одинакового кода и в PHP много дублирования кода (View.php). Пора бы автору меры принять...



#12 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 691 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 10.12.2015 - 19:07

Очень правильно замечено.
Могу дополнительно добавить, что за последние 2-3 года в Simpla обнаружено несколько явно усложненных мест. Например, при выводе главной страницы и в шаблоне тройной  повтор почти одинакового кода и в PHP много дублирования кода (View.php). Пора бы автору меры принять...

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

#13 bananovsv

bananovsv
  • Пользователь
  • 114 сообщений

Опубликовано 21.11.2017 - 09:14

Я правильно понимаю, что если удалить payment_status=1 и добавить эту функцию в колбек платежного модуля, то заработает время оплаты?



#14 bananovsv

bananovsv
  • Пользователь
  • 114 сообщений

Опубликовано 21.11.2017 - 09:29

В том то и дело, что эта функция нигде не вызывается, Денис с этим не согласен.
В функции есть сразу 2 ошибки, а не одна.

А какая вторая ошибка, кроме неиспользуемого payment_status?



#15 miltonmors

miltonmors
  • Забаненый
  • 91 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Николаев

Опубликовано 21.11.2017 - 09:54

Я правильно понимаю, что если удалить payment_status=1 и добавить эту функцию в колбек платежного модуля, то заработает время оплаты?

 

Очень возможно, что да. А лучше вместо подобных вопросов попробовать и узнать ТОЧНО.

Но, имейте в виду, это может породить другие ошибки. Например, запрос в этой функции не выполнится, если на момент оплаты количество товара недостаточно для выполнения заказа. Возможно, это имелось в виду в замечании о второй ошибке. И вообще, стандартно в Simpla состояние заказа open/closed привязывается к статусу заказа. А эта функция привязывает его к состоянию оплаты. Естественно, в такой ситуации возможна путаница



#16 bananovsv

bananovsv
  • Пользователь
  • 114 сообщений

Опубликовано 21.11.2017 - 13:19

Очень возможно, что да. А лучше вместо подобных вопросов попробовать и узнать ТОЧНО.

Но, имейте в виду, это может породить другие ошибки. Например, запрос в этой функции не выполнится, если на момент оплаты количество товара недостаточно для выполнения заказа. Возможно, это имелось в виду в замечании о второй ошибке. И вообще, стандартно в Simpla состояние заказа open/closed привязывается к статусу заказа. А эта функция привязывает его к состоянию оплаты. Естественно, в такой ситуации возможна путаница

 

А есть более простой способ поставить время оплаты? У меня только в этом задача.

 

P. S. Можете мне прям указать, где в этой функции что-то связанное с количеством товара? Не понимаю, почему она не выполнится, если товара недостаточно.


Изменено: bananovsv, 21.11.2017 - 13:23


#17 miltonmors

miltonmors
  • Забаненый
  • 91 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Николаев

Опубликовано 21.11.2017 - 15:06

А есть более простой способ поставить время оплаты? У меня только в этом задача.

 

В callback разных методов оплату фиксируется факт оплаты в строке
$simpla->orders->update_order(intval($order->id), array('paid'=>1));
Меняйте на
$simpla->orders->update_order(intval($order->id), array('paid'=>1, 'payment_date'=date('Y-m-d H:i:s')));

 

P. S. Можете мне прям указать, где в этой функции что-то связанное с количеством товара? Не понимаю, почему она не выполнится, если товара недостаточно.

 

В функции function pay($order_id) есть строки
if(!$this->close($order->id))
{
return false;
}


А в функции function close($order_id) есть фрагмент
foreach($variants_amounts as $id=>$amount)
{
$variant = $this->variants->get_variant($id);
if(empty($variant) || ($variant->stock<$amount))
return false;
}

Поэтому, если сработает условие в этом фрагменте, то функция close вернет false, это прервет выполнение функции pay ДО вызова запроса.


Изменено: miltonmors, 21.11.2017 - 15:06


#18 bananovsv

bananovsv
  • Пользователь
  • 114 сообщений

Опубликовано 21.11.2017 - 21:04

В callback разных методов оплату фиксируется факт оплаты в строке
$simpla->orders->update_order(intval($order->id), array('paid'=>1));
Меняйте на
$simpla->orders->update_order(intval($order->id), array('paid'=>1, 'payment_date'=date('Y-m-d H:i:s')));

 

 

В функции function pay($order_id) есть строки
if(!$this->close($order->id))
{
return false;
}


А в функции function close($order_id) есть фрагмент
foreach($variants_amounts as $id=>$amount)
{
$variant = $this->variants->get_variant($id);
if(empty($variant) || ($variant->stock<$amount))
return false;
}

Поэтому, если сработает условие в этом фрагменте, то функция close вернет false, это прервет выполнение функции pay ДО вызова запроса.

 

Спасибо!






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых