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

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


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

В 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 не используется...

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

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

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

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

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

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

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

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

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

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

В функции есть сразу 2 ошибки, а не одна.

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

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

 

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

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

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

В функции есть сразу 2 ошибки, а не одна.

 

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

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

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

Ты повторяешь тоже что я и корс описали.

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

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

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

 

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

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

 

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

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

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

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

 

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

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

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

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

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

Я полностью согласен с этим.

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

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

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

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

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

В функции есть сразу 2 ошибки, а не одна.

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

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

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

 

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

 

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

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

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

 

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

 

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

 

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

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

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

 

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

В 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 ДО вызова запроса.

 

Спасибо!

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

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

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

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

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

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

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

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

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

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