Post by DenisR » Mon Jun 02, 2014 4:59 pm

Здравствуйте!

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

По яндекс-метрике видим что заказ прошел. А в списке заказов его нет.
Из метрики (в вебвизоре) видим телефон покупателя - звоним. Юзер говорит что заказ оформился без ошибок и письмо о заказе на емаил ему пришло.

Если зайти в Продажи-Заказы - и сделать фильтр по потерянным заказам - то там есть этот заказ.

Вопрос - почему иногда "теряются" заказы?
Что такое вообще "потерянные заказы" ?

и это важно же - таких заказов достаточно много - ведь все время не делали фильтр заказов по "потерянным".
Может эти потерянные можно на странице списка заказов сразу выводить - чтобы все менеджеры сразу видели что есть потерянный заказ?

Но главное - почему получаются потерянные заказы?

Newbie

Posts

Joined
Mon Jun 02, 2014 4:54 pm

Post by Antoni4 » Fri Jul 04, 2014 4:39 am

1. Какая у вас версия Опен-Карта?
2. Стоят ли у вас какие-то модификации/плагины на сайте?

3. Заказы пропали?

Я сомневаюсь, что они у вас пропадают. (Только если идет атака хакеров на вашу базу, или кто-то случайно удалил рекорды из базы). Я думаю что они просто они не видимы из стороны Администратора через репорт "Продажи-Заказы".

а.

Нужно убедится что рекорды (записи) о заказах поступают в систему опен-карт (базу) изначально когда осуществляется заказ клиентом.
Заходим в базу, стол "oc_order". (В базу нужно заходить через сервер где хранится сама база сайта.)
Ищем утерянные заказы с помощью телефоного номера, имени или и-мейла.
Это поля (firstname, lastname, email, telephone).

б.

Если эти заказы в базе есть, а в админке опен-карта репорт "Продажи-Заказы" их не отображает, то скорее всего у этих заказов нет статуса.
То есть в рекорде самого заказа поле "order_status_id" содержит число 0.
Такого рода невидимые заказы можно найти в базе через запрос "SELECT * FROM `oc_order` WHERE order_status_id = 0".

Репорт "Продажи-Заказы" отфильтровывает (не покажет) все заказы со статусом order_status_id = 0.

в.

Как могут появляться заказы со статусом 0?

1. У моего клиента это происходило в течении часа после токого как переводятся часы (переход на летнее/зимнее время).

2. Возможно один из плагинов/модивикаций на сайте содержит баг, и периодически заказы поступают со статусом 0.

User avatar
New member

Posts

Joined
Sat Sep 29, 2012 7:03 am

Post by Antoni4 » Fri Jul 04, 2014 8:48 pm

Извиняюсь, я не учёл то, что в опен-карте в фильтре отчета "Продажи-Заказы" добавили новую опцию "потерянные заказы".
Если я не ошибаюсь то в старых версиях опен-карта, этой опции раньше не было, и приходилось эти так называемые "потерянные заказы" искать только в базе через запрос: "SELECT * FROM `oc_order` WHERE order_status_id = 0". Это в принципе тот же самый запрос который выполняет отчет "Продажи-Заказы" при выборе статуса "потерянные заказы" в фильтре.

Как я уже писал "потерянные заказы" это заказы без статуса. То есть их статус это 0.

Когда происходит подтверждение заказа клиентом (это когда клиент уже нажимает кнопку подтвердить заказ), система запускает скрипт controller/checkout/confirm.php.
Этот скрипт создаёт запись в базе на заказ клиента со статусом 0. (то-есть на данный момент у этого заказа нет статуса, но он уже содержит имя клиента, адрес, сумму, продукты итд...)

Затем запускается скрипт который отвечает за перевод денежных средств. Какой скрипт оплаты запустится системой опен-карт зависит от того какой тип оплаты был выбран клиентом при заказе. Эти скрипты хранятся в controller/payment/*.php. Когда скрипт получает сообщение о переводе денежных средств от системы оплаты (например PayPal или SagePay) то находит недавно созданную запись заказа в базе (без статуса) и даёт статус заказу в зависимости от полученного сообщения. Сообщение о переводе от системы оплаты может быть разное, например Отказано, Не удалось, в ожидании, Завершено, итд.

Вот так вот выглядит скрипт оплаты через PayPal.
script snip.PNG

PayPal payment script - script snip.PNG (42.69 KiB) Viewed 15019 times

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

Какую систему оплаты используют ваши клиенты? Нужно посмотреть, что скрипт делает в случае если он НЕ получает сообщение от системы оплаты.

"Может эти потерянные можно на странице списка заказов сразу выводить - чтобы все менеджеры сразу видели что есть потерянный заказ?"
- Да можно, но нужно модифицировать запрос который извлекает недавно поступившие заказы. На данный момент этот запрос отфильтровывает заказы со статусом 0.

User avatar
New member

Posts

Joined
Sat Sep 29, 2012 7:03 am
Who is online

Users browsing this forum: No registered users and 5 guests