Opencart пропавшие заказы как исправить

Кстати Да, если оплату НЕ нужно принимать на сайте, то лучше использовать метод оплаты «Банковский перевод», этот метод НЕ запускает скрипт «перехода к оплате».

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

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

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

Затем запускается скрипт который отвечает за перевод денежных средств.


Какой скрипт оплаты запустится системой ОС зависит от того какой тип оплаты был выбран клиентом при заказе. Эти скрипты хранятся в controller/payment/*.php.

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

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

Какую систему оплаты используют ваши клиенты? Нужно посмотреть, что скрипт делает в случае если он НЕ получает сообщение от системы оплаты.
https://forum.opencart.com/viewtopic.php?t=126001

Кстати Да, если оплату не нужно принимать на сайте, то лучше использовать метод оплаты «Банковский перевод», этот метод не запускает скрипт «перехода к оплате».

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

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

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

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

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

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

Какую систему оплаты используют ваши клиенты? Нужно посмотреть, что скрипт делает в случае если он НЕ получает сообщение от системы оплаты.
https://forum.opencart.com/viewtopic.php?t=126001

Периодически проскакивают номера заказов и теряются заказы — узнаем причину и как это поправить.

Очень часто ко мне обращаются мои клиенты с просьбой разобраться почему у них пропадают заказы. То есть клиенты звонят и говорят что заказ сделали но никто не перезванивает. И в админке номера заказов сбиваются. К примеру заказы были 13 434, 13 435 и следующий будет 13 437 то есть 13 436 пропал.

Такая ситуация случается часто, причина этому — не назначение статуса заказа.

Вылечить проблему можно следующим образом:

Заходим в файл admin/model/sale/order.php

Строку

$sql .= " WHERE o.order_status_id > '0'";

Заменяем на:

$sql .= " WHERE o.total";

Таким образом мы делаем выборку заказов в магазине без учета статуса и все заказы у нас не пропадают а высвечиваются в заказах.

Еще хочу заметить что в редактируемом файле таких строк 2 — все заменяем и будет все работать, но есть нюанс во второй замене нет приставки o.

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

Суть в следующем, на одном интернет-магазине на движке ocStore (Opencart) обнаружился такой баг — все заказы попадали в «потерянные». В админке они находились если перейти в Продажи > Заказы и установить фильтр Статус — «Потерянные заказы».

Потерянным заказ считается, если ему присвоен нулевой статус в базе данных, а это в свою очередь указывает на какой-то сбой в процессе формирования заказа. Сбой может давать один из модулей оплаты, доставки, либо просто косяк в установке, как и было конкретно в моем случае.

Как оказалось, читая форум по Opencart такая проблема имеет место быть, а вот советы по решению вызывают недоумение. Кто предлагает просто поправить шаблон чтобы вне зависимости от статуса все заказы отображались скопом, кто принудительно выставлять статус отличный от нулевого в базе данных. Я же считаю что правильнее будет искать проблему, а не выдумывать костыли, тем более в Opencart есть журнал ошибок, позволяющий отследить что же происходит внутри системы, правда многие о нём забывают.

Просмотрев логи Система > Журнал ошибок, выяснилось что по какой-то причине в базе данных интернет-магазина (ocStore) отсутствовала одна таблица `oc_customer_ip_blacklist`. Оставим это на совести косоруких вебмастеров которые спихнули в таком виде своё творение заказчикам. Проблема решилась добавлением недостающей таблицы из дистрибутива аналогичной версии ocStore. Я лишь хотел показать что даже сложные, на первый взгляд, проблемы, можно довольно просто выявить штатными средствами системы.

Подписывайтесь на канал

Яндекс.Дзен

и узнавайте первыми о новых материалах, опубликованных на сайте.

Если заказы в Opencart пропадают, то это может быть связано с разными причинами. Некоторые из них могут быть:

  1. В первую очередь проверьте не попадают ли ваши заказы в потерянные, потерянные заказы это заказы у которых в базе данных статус равен 0. Что бы их увидеть, сделайте следующие действия:
    • 1. Зайдите в административную панель
    • 2. Перейдите на страницу со списком заказов
    • 3. В фильтре по заказам, в поле «Статус» выберите пункт «Потерянные заказы» и нажмите кнопку «фильтр»
    • Если вы увидели там свои потерянные заказы, скорей всего либо заказ был недооформлен, либо произошла какая то ошибка в момент оплаты заказа.
  2. Проблемы с базой данных: если в базе данных возникли проблемы, то это может привести к пропаже заказов. Проверьте логи базы данных на наличие ошибок и попробуйте выполнить восстановление базы данных.
  3. Проблемы с файлами сайта: если в системных файлах сайта возникли ошибки, то это также может привести к пропаже заказов. Проверьте логи ошибок на наличие проблем.
  4. Неправильно настроенные модули оплаты и доставки: если модули оплаты и доставки настроены неправильно, то это может привести к пропаже заказов. Проверьте настройки модулей оплаты и доставки на наличие ошибок.
  5. Проблемы с сервером: если сервер, на котором размещен ваш сайт, работает неправильно, то это также может привести к пропаже заказов. Свяжитесь с хостинг-провайдером и попросите проверить работу сервера.
  6. Неправильные настройки Opencart: если в настройках Opencart указано удаление заказов после определенного срока, то это может привести к пропаже заказов. Проверьте настройки Opencart и убедитесь, что удаление заказов выключено.

Если вы не можете решить проблему самостоятельно, обратитесь к специалисту по Opencart или на форум сообщества Opencart за помощью.

Возможно вам будут интересны следующие статьи:

Популярные статьи:

Возможно вам будет это полезно:

Понравилась статья? Поделить с друзьями:
  • Как найти пароль безопасности
  • Как найти расценки на единицу
  • Как правильно составить нормативно правовой акт
  • Как только ты нашел свою половинку
  • Как найти грузы на грузовые машины