Статусы Заказов

[quote name='a_tsvetkov' timestamp='1436804468' post='222755']

Рискну поднять тему

Что-то изменится со статусами и оплатой, или настройку оплачен-не оплачен все же делать?

[/quote]



А что должно измениться со статусами и оплатой?



Платёжные системы, в своём большинстве, возвращают два варианта:

  1. Оплачен → Статус P (обработан)
  2. Не оплачен → Статус F (отменён)





    Дальше, Вы можете создать необходимые вам статусы в панели администратора.



    Какие то статусы создаются модулями.



    Что точно стоит добавить, это настройку с выбором статусов которые считаются оплаченными, потому что сейчас, они закостылены как:
$paid_statuses = array('P', 'C');

[quote][color=#282828][font=arial, verdana, tahoma, sans-serif]А что должно измениться со статусами и оплатой?[/font][/color][/quote]

Было столько шума. Может эта настройка уже в очереди на добавление в базовый функционал?

[quote name=‘a_tsvetkov’ timestamp=‘1436857670’ post=‘222799’]

Было столько шума. Может эта настройка уже в очереди на добавление в базовый функционал?

[/quote]



Я не рассматриваю шумные предложения, точнее в шуме нет предложений, есть только шум. Могу объяснить почему, если интересно. Кратко: “осуждая - предлагай”.



Никто так и не дал ответа на два вопроса:

  1. Проблема.
  2. Решение.

[quote][color=#282828][font=arial, verdana, tahoma, sans-serif]Я не рассматриваю шумные предложения, точнее в шуме нет предложений, есть только шум. Могу объяснить почему, если интересно. Кратко: “осуждая - предлагай”. [/font][/color]



[color=#282828][font=arial, verdana, tahoma, sans-serif]Никто так и не дал ответа на два вопроса:[/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif]1. Проблема.[/font][/color]



[color=#282828][font=arial, verdana, tahoma, sans-serif]2. Решение. [/font][/color][/quote]

Да тут все просто.



Проблема: некоторые специфические статусы должны иметь определенный статус оплачено-не оплачено. Например, статус “вручен покупателю” у меня должен быть оплачен.



Решение: checkbox “Считать оплаченным” в настройках статуса. Для “обработан” и “выполнен” по умолчанию checked.



По моему этого достаточно для большинства.

[quote name='dbazhenov' timestamp='1436858150' post='222800']

Никто так и не дал ответа на два вопроса:

  1. Проблема.
  2. Решение.

    [/quote]



    Странно, вроде на трех страницах описывается проблема и предлагается логичное ее решение…


  3. Проблема: из-за того, что нет отдельного учета оплаченных заказов, приходится извращаться и создавать дубли статусов с пометкой “оплачен”, что приводит к большому списку статусов. А то, что статусы еще и нельзя сортировать/упорядочить - делает этот список мозаикой, используя которую, менеджер легко может ошибиться в выборе правильного статуса.


  4. Решение: разделить статусы исполнения заказа и статус его оплаты (пример картинку выкладывал на первой странице топика). Статус оплаты имеет всего два вида: оплачен/не оплачен. К статусам оплаты привязать ответы платежных систем. Подарочные сертификаты так же привязать именно к статусам оплаты. Тогда не будет путаницы, которую описывал kaavain.



    Ну и сделать возможность сортировать статусы исполнения.



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

[quote name='MrMaster' timestamp='1436863052' post='222812']

2. Решение: разделить статусы исполнения заказа и статус его оплаты (пример картинку выкладывал на первой странице топика). Статус оплаты имеет всего два вида: оплачен/не оплачен. К статусам оплаты привязать ответы платежных систем. Подарочные сертификаты так же привязать именно к статусам оплаты. Тогда не будет путаницы, которую описывал kaavain.

[/quote]



Два типа статусов приведут к ещё большей путанице, не забывайте:

  1. Письма и уведомления.
  2. Списание товаров со склада.
  3. Переписать все платёжки, так как они должны будут менять два статуса, а не один.
  4. Сложности с обратной совместимостью люди используют систему много лет (проблем не всплывало), им нужно будет перестраиваться.
  5. Большинству вообще не втопталось 15 статусов и комбинаций статусов, хватает и 5 .



    Оптимальное решение предложено в:

[quote]Решение: checkbox “Считать оплаченным” в настройках статуса. Для “обработан” и “выполнен” по умолчанию checked[/quote]



Легко внедряется, ничего не ломает.



Что касается модификации.



Совершенно верно, мы модифицируем:

  1. Дизайн
  2. Каталог
  3. Фишки и функции



    А бизнес логика (которая у каждого своя) должна быть стандартной



    Всё пришло к настройке.



    Такая задача есть в “Запросах” на разработку. Когда будет реализована не понятно.

[quote][color=#282828][font=arial, verdana, tahoma, sans-serif]Такая задача есть в “Запросах” на разработку. Когда будет реализована не понятно. [/font][/color][/quote]



Ну а пока можно как-то модулем решить?



Добавить настройку по аналогии с товаром - это понятно.

В файле fn.cart.php

<br /> if ($get_totals == true) {<br /> $paid_statuses = array(&#39;P&#39;, &#39;C&#39;);<br /> fn_set_hook(&#39;get_orders_totals&#39;, $paid_statuses, $join, $condition, $group);<br />



вот здесь я думаю нужно получить все статусы и условием их отфильтровать на оплаченные

Это как-то можно модулем сделать?

[quote name='a_tsvetkov' timestamp='1436864805' post='222825']

Ну а пока можно как-то модулем решить?



Добавить настройку по аналогии с товаром - это понятно.

В файле fn.cart.php

<br /> if ($get_totals == true) {<br /> $paid_statuses = array(&#39;P&#39;, &#39;C&#39;);<br /> fn_set_hook(&#39;get_orders_totals&#39;, $paid_statuses, $join, $condition, $group);<br />



вот здесь я думаю нужно получить все статусы и условием их отфильтровать на оплаченные

Это как-то можно модулем сделать?

[/quote]



У Вас же прямо хук, который позволяет изменить массив с оплаченными статусами :)

[quote name='a_tsvetkov' timestamp='1436864805' post='222825']

Ну а пока можно как-то модулем решить?



Добавить настройку по аналогии с товаром - это понятно.

В файле fn.cart.php

<br /> if ($get_totals == true) {<br /> $paid_statuses = array(&#39;P&#39;, &#39;C&#39;);<br /> fn_set_hook(&#39;get_orders_totals&#39;, $paid_statuses, $join, $condition, $group);<br />



вот здесь я думаю нужно получить все статусы и условием их отфильтровать на оплаченные

Это как-то можно модулем сделать?

[/quote]



Примером новой настройки для статусов например может добавлять модуль “Подарочные сертификаты”

[quote][color=#282828][font=arial, verdana, tahoma, sans-serif]У Вас же прямо хук, который позволяет изменить массив с оплаченными статусами[/font][/color][/quote]


[quote][color=#282828][font=arial, verdana, tahoma, sans-serif]Примером новой настройки для статусов например может добавлять модуль “Подарочные сертификаты” [/font][/color][/quote]



Попробую.

[quote name='a_tsvetkov' timestamp='1436866544' post='222837']

Попробую.

[/quote]



Попробуйте, если что спрашивайте.

[quote][color=#282828][font=arial, verdana, tahoma, sans-serif]Попробуйте, если что спрашивайте. [/font][/color][/quote]



Модуль готов, мне тему здесь создать?

[quote name=‘a_tsvetkov’ timestamp=‘1437229389’ post=‘223445’]

Модуль готов, мне тему здесь создать?

[/quote]



Да. Каждому модулю своя тема

Готовый модуль здесь:

http://forum.cs-cart.com/topic/41128-модуль-оплаченных-статусов-заказа/

Здравствуйте.
Произведены тестовые настройки платежной системы Яндекс.Касса.
Способ оплаты Яндекс.Деньги назначает заказу системный статус "Р".
Способ оплаты Банковская карта назначает заказу пользовательский статус "А".
Является ли назначение статуса "А" корректным в данном случае? Ожидалось, что и при оплате Банковской картой будет получен "Р".

Здравствуйте.
Произведены тестовые настройки платежной системы Яндекс.Касса.
Способ оплаты Яндекс.Деньги назначает заказу системный статус "Р".
Способ оплаты Банковская карта назначает заказу пользовательский статус "А".
Является ли назначение статуса "А" корректным в данном случае? Ожидалось, что и при оплате Банковской картой будет получен "Р".

Отбой. Моя невнимательность. Удалил бы сообщение, была бы возможность.

Здравствуйте, уважаемые разработчики!

Внимательно прочитал всю ветку, но все же не понял, как отделять "мух от котлет".
Я склонен согласиться с теми, кто предлагает отделять статус оплаты от статуса заказа. На мой взгляд, это очевидно: любой заказ на любом его этапе может быть оплачен или не оплачен. И система должна четко понимать это.
Например, в любой учетной системе, скажем в 1С:Предприятии, логика ясна: создается заказ (резерв товара на складе), затем он может быть согласован с клиентом, заказан товар у поставщика (при необходимости), товар отправляется клиенту или в пункт самовывоза, оформляется реализация товара (со списанием остатка на складе), товар может быть возвращен на склад, и т.д.
При этом оплата заказа может быть привязана к нему в любой момент: либо сразу после создания, либо перед заказом поставщику, либо перед отгрузкой, либо даже после отгрузки. И, например, в случае безнала, это вообще делает бухгалтер при разборе банковских выписок.
А еще бывает возврат оплаты...

Следуя логике, заложенной в CS-CART по умолчанию, в 1С:Предприятии должно быть так: перевод заявки клиента в какой-то непредвиденный статус, лишает его факта оплаты... Думаю, контрагенты и бухгалтерия будут не очень-то рады постоянно сверять взаиморасчеты из-за того, что кладовщик ошибся кнопочкой.

Теперь вернемся к CS-CART. Рассмотрим несколько ситуаций:
1. Клиент оформил заказ на сайте и сразу оплатил его онлайн. Выбран способ доставки - в пункт самовывоза. CS-CART проставил статус "Обработан" по факту получения заказа. Заказ скомплектован и поступил в пункт самовывоза. В админке проставляем статус "В пункте самовыовоза" (такой статус есть "из коробки"). При этом в графе "Итого оплачено" сумма уменьшается на сумму заказа (!).

scr1.PNG
scr2.PNG

Клиент посмотрел, ему товар по каким-то причинам не понравился и он от него отказался. Товар вернулся в магазин, клиент требует вернуть деньги. Вопрос: как понять, что заказ был оплачен клиентом?

2. Та же ситуация, что и в предыдущем случае, с той лишь разницей, что клиент выбрал "оплату при получении". На этапе "В пункте самовывоза" никак не отличить этот заказ от оплаченного выше.

3. Клиент покупает и оплачивает заказ по "безналу". Сразу после оплаты счета, он отправляет нам платежку, что для нас является достаточным для запуска заказа в "работу", но не дает право отдать товар клиенту, пока деньги не придут. Деньги могут прийти в любой момент, независимо от статуса заказа. Что должен сделать бухгалтер? Как проставить признак (и сумму) оплаты, не вмешиваясь в процесс формирования и сборки заказа?

4. Клиент произвел оплату заказа онлайн, выбрав доставку "почтой". Система рассчитала стоимость доставки автоматически и включила в сумму заказа. Затем, после разговора с оператором, клиент решил изменить способ доставки (не важно, на более дешевую или более дорогую). При этом возникает разница между оплаченной суммой и суммой к оплате, но как это понять, опять же неизвестно.

Мне видится самым верным решением - добавить к заказу еще одно поле с суммой оплаты. Онлайн оплата автоматически проставляет сумму в поле "Оплачено", бухгалтер - вручную по факту прихода денег. Это также решит вопросы с переплатой/недоплатой и причитающейся суммой возврата.

2 лайка

Здравствуйте, уважаемые разработчики!

Мне видится самым верным решением - добавить к заказу еще одно поле с суммой оплаты. Онлайн оплата автоматически проставляет сумму в поле "Оплачено", бухгалтер - вручную по факту прихода денег. Это также решит вопросы с переплатой/недоплатой и причитающейся суммой возврата.

Спасибо. Обязательно передам разработчикам.

Здравствуйте, как удалить ненужные статусы заказов?

Есть возможность добавить новый и редактировать старый.

Здравствуйте, как удалить ненужные статусы заказов?

Есть возможность добавить новый и редактировать старый.

Только непосредственно из базы, из таблиц ?:statuses, ?:status_data, ?:status_descriptions. Статусы, которые относятся к ордерам, имеют тип O