Перейти к содержанию
igarik

Удаление всех товаров из админки opencart 1.5

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

Здравствуйте, можно ли реализовать кнопку в админке, когда нажимаем его, то удаляются все товары в админке.
Нашел решение, через MySql,

Выполнить его можно будет, как вручную, так через phpmyadmin.
SQL-запрос для удаления товаров в Opencart

TRUNCATE TABLE oc_product;
    TRUNCATE TABLE oc_product_attribute;
    TRUNCATE TABLE oc_product_description;
    TRUNCATE TABLE oc_product_discount;
    TRUNCATE TABLE oc_product_image;
    TRUNCATE TABLE oc_product_option;
    TRUNCATE TABLE oc_product_option_value;
    TRUNCATE TABLE oc_product_related;
    TRUNCATE TABLE oc_product_related;
    TRUNCATE TABLE oc_product_reward;
    TRUNCATE TABLE oc_product_special;
    TRUNCATE TABLE oc_product_tag;
    TRUNCATE TABLE oc_product_to_category;
    TRUNCATE TABLE oc_product_to_download;
    TRUNCATE TABLE oc_product_to_layout;
    TRUNCATE TABLE oc_product_to_store;
    TRUNCATE TABLE oc_review;
    DELETE FROM oc_url_alias WHERE query LIKE 'product_id=%';
Если вы увидете ошибку, на подобе:
1
#1146 - Table 'p254341_smarket.oc_product_tag' doesn't exist 
То уберите эту строку в запросе.

но каждый раз лезть туда, как то не удобно, можно ли привязать данную функцию в админку.
Буду рад любому решению. Спасибо!
 

Поделиться сообщением


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

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

Поделиться сообщением


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

Есть в этом модуле https://opencartforu...н-акций-скидок/

 

Ага... шикарная штука - мгновенно ее отключил!

Поделиться сообщением


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

Не понимаю необходимость удаления товаров на уже работающем магазине

 

Ведь товары привязывается еще и к заказам.

Поделиться сообщением


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

Не понимаю необходимость удаления товаров на уже работающем магазине

 

Ведь товары привязывается еще и к заказам.

Не обманывайте людей.  :-)  Товары никак к заказу не привязываются.

В заказе создаётся копия всех нужных данных из товаров и опций.

Удаление самого товара никак не повлияет на заказ с этим товаром.

Поделиться сообщением


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

В истории заказов тоже копии создаются?

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

В истории заказов тоже копии создаются?

Вы про таблицу order_history?

Там сохраняется история изменения статусов заказа. К товарам никакого отношения не имеет.

 

Товары сохраняются в таблице order_product.

Опции сохраняются в таблице order_option.

 

Привязка опций в заказе идет по order_product_id.

В этих таблицах сохраняются имена и товаров и опций.

Если после заказа перименовать товар, то в заказе он будет под старым именем. Пока не будет внесено изменений в заказ (при изменении заказа он пересоздаётся на клиентской части и все данные обновляются).

Изменено пользователем mpn2005

Поделиться сообщением


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

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

тогда у вас неправильный подход к решению задачи. У товара есть статус "выключено", например.

Поделиться сообщением


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

Не обманывайте людей.  :-)  Товары никак к заказу не привязываются.

В заказе создаётся копия всех нужных данных из товаров и опций.

Удаление самого товара никак не повлияет на заказ с этим товаром.

 

Вы про таблицу order_history?

Там сохраняется история изменения статусов заказа. К товарам никакого отношения не имеет.

 

Товары сохраняются в таблице order_product.

Опции сохраняются в таблице order_option.

 

Привязка опций в заказе идет по order_product_id.

В этих таблицах сохраняются имена и товаров и опций.

Если после заказа перименовать товар, то в заказе он будет под старым именем. Пока не будет внесено изменений в заказ (при изменении заказа он пересоздаётся на клиентской части и все данные обновляются).

 

еще дополню:

если редактировать заказ, в котором есть удаленные из БД товары - при редактировании эти товары из заказа удалятся автоматически

Поделиться сообщением


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

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

 

т.е вы каждый раз при загрузке товаров заполняете их карточки (описание, картинки и тд) - а потом удаляете?

и через некоторое время, когда этот товар снова появляется - все по новой?

 

удалять товар имеет смысл лишь когда он 100% больше не появится

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

 

и даже это, с точки зрения ПС и продвижения - нехорошо.

лучше, если создадите дополнительный статус типа "временно недоступен" - так ваша страница будет индексирована поисковиками

грубо, больше страниц - больше вероятность получить посетителя, больше посещаемость, больше доверия со стороны ПС.

 

а вот регулярное выпадение страниц из индекса (при удалении товаров) - оказывает обратное действие

Поделиться сообщением


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

Не обманывайте людей.  :-)  Товары никак к заказу не привязываются.

В заказе создаётся копия всех нужных данных из товаров и опций.

Удаление самого товара никак не повлияет на заказ с этим товаром.

Печалько

 

 

CREATE TABLE `oc_order_product` (

  `order_product_id` int(11) NOT NULL AUTO_INCREMENT,

  `order_id` int(11) NOT NULL,

  `product_id` int(11) NOT NULL,

  `name` varchar(255) NOT NULL,

  `model` varchar(64) NOT NULL,

  `quantity` int(4) NOT NULL,

  `price` decimal(15,4) NOT NULL DEFAULT '0.0000',

  `total` decimal(15,4) NOT NULL DEFAULT '0.0000',

  `tax` decimal(15,4) NOT NULL DEFAULT '0.0000',

  `reward` int(8) NOT NULL,

  PRIMARY KEY (`order_product_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

 

Совсем нет связей!

Поделиться сообщением


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

Печалько

 

Совсем нет связей!

Этот product_id используется только для редактирования заказа, о чём было написано выше.

Пока заказ не редактируется он с товарами не связан. И ваше упорство этого никак не изменит.

 

Ознакомьтесь с кодом редактирования заказа в админке. Узнаете много нового.

Поделиться сообщением


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

Необходимость в несуществующем товаре.

 

Причем здесь мое упорство?

Если удалять товары - то удалять везде, где есть хоть какая-то ссылка.

 

Держать product_id на несуществующий - бессмысленно, хотя бы потому, что если вдруг, произойдет наложение product_id, то изменится истинная картина в заказах

И опять покажу код

CREATE TABLE `oc_order_product` (
  `order_product_id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `model` varchar(64) NOT NULL,
  `quantity` int(4) NOT NULL,
  `price` decimal(15,4) NOT NULL DEFAULT '0.0000',
  `total` decimal(15,4) NOT NULL DEFAULT '0.0000',
  `tax` decimal(15,4) NOT NULL DEFAULT '0.0000',
  `reward` int(8) NOT NULL,
  PRIMARY KEY (`order_product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

Где язык для name? в order

Где курс? там же

 

Где SKU - упс... нет! О каком учете может быть речь?

Поделиться сообщением


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

Необходимость в несуществующем товаре.

Причем здесь мое упорство?

Если удалять товары - то удалять везде, где есть хоть какая-то ссылка.

Держать product_id на несуществующий - бессмысленно, хотя бы потому, что если вдруг, произойдет наложение product_id, то изменится истинная картина в заказах

И опять покажу код

CREATE TABLE `oc_order_product` (  `order_product_id` int(11) NOT NULL AUTO_INCREMENT,  `order_id` int(11) NOT NULL,  `product_id` int(11) NOT NULL,  `name` varchar(255) NOT NULL,  `model` varchar(64) NOT NULL,  `quantity` int(4) NOT NULL,  `price` decimal(15,4) NOT NULL DEFAULT '0.0000',  `total` decimal(15,4) NOT NULL DEFAULT '0.0000',  `tax` decimal(15,4) NOT NULL DEFAULT '0.0000',  `reward` int(8) NOT NULL,  PRIMARY KEY (`order_product_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
Где язык для name? в order

Где курс? там же

Где SKU - упс... нет! О каком учете может быть речь?

Не продолжайте писать чушь.

Цена заказа берётся из total и ничего другое уже на цену заказа не влияет.

Язык-то в заказанном товаре зачем?

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

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

Потом удалите товары и в заказе всё будет на месте, пока вы его не попробуте изменить.

Что касается неактуального id товара, то не забываете про настройку срока редактирования заказов.

Т.к. если магазин например работает 10 лет, то не стоит товары которых никогда не будет держать всесь этот срок.

Изменено пользователем mpn2005

Поделиться сообщением


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

назовите мне хоть одну причину "не будет держать всесь этот срок."

 

Держать товар, да не имеет смысла. Держать инфу о товаре смысл имеет.

 

пока вы его не попробуте изменить.

 

Так товар удален, заказ изменен, статистика изменена. Учет изменен.

Поделиться сообщением


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

назовите мне хоть одну причину "не будет держать всесь этот срок."

 

Держать товар, да не имеет смысла. Держать инфу о товаре смысл имеет.

 

Так товар удален, заказ изменен, статистика изменена. Учет изменен.

Удаление товара не приведёт к порче заказов, если мы их не редактируем.

И данные о заказе и его товарах хранятся в одельных таблицах.

 

P.S.: И мы уже зря засоряем тему, которая в принципе не об этом.

Поделиться сообщением


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

Та все о том :) Об учете.

Товар удален - учета нет.

Поделиться сообщением


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

Та все о том :) Об учете.

Товар удален - учета нет.

 

да как нет?

система учета должна брать данные о товаре именно из заказов, а не из таблиц товаров

иначе если спустя месяц цена товара изменилась - уже весь учет ни к черту ;)

 

и данные даже о удаленных товарах в заказах хранятся безболезненно - потому как там хранятся данные о товаре на момент его заказа

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

 

механизм движка таков, что при редактировании заказа данные о товарах (на основе product_id из заказов) начинают браться из таблицы товаров

и если редактировать заказ, в котором товар стоил 100р, а сейчас он стоит 200р - при сохранении отредактированного заказа его стоимость будет 200р

 

и удаленные из БД товары из заказа выпадут вообще - по этой же причине

Поделиться сообщением


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

Вы ведете учет по model...

 

Продолжайте.

Поделиться сообщением


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

Вы ведете учет по model...

 

Продолжайте.

Учёт материя не однозначная. Всё зависит от множества факторов и типов товара.

 

А оформленный заказ это вполне определённая сущность.

Да он не универсален, и порой приходится делать доработки в сохранении заказа.

Т.к. там не все данные о товаре.

Но связывать заказ с товаром по id и не хранить копию - это архитектурно не очень хорошее решение.

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

Поделиться сообщением


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

Вы ведете учет по model...

 

Продолжайте.

 

неа, есть связанная таблица order_product ;)

post-688391-0-42204200-1452370830_thumb.png

 

как раз на скриншоте - в тестовый движок на локалке импортированы заказы с рабочего магазина

фактически товаров нет, но это не мешает составить отчет по продажам на основе данных из таблиц order и связанных с ней :-)

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.