Как наполнить opencart 2.3 fake-заказами
Подключиться к БД другого интернет-магазина и выкачать оттуда заказы с помощью запроса
INSERT INTO `obuffshop1`.`oc_order` (`invoice_no`, `invoice_prefix`, `store_id`, `store_name`, `store_url`, `customer_id`, `customer_group_id`, `firstname`, `lastname`, `email`, `telephone`, `fax`, `custom_field`, `payment_firstname`, `payment_lastname`, `payment_company`, `payment_address_1`, `payment_address_2`, `payment_city`, `payment_postcode`, `payment_country`, `payment_country_id`, `payment_zone`, `payment_zone_id`, `payment_address_format`, `payment_custom_field`, `payment_method`, `payment_code`, `shipping_firstname`, `shipping_lastname`, `shipping_company`, `shipping_address_1`, `shipping_address_2`, `shipping_city`, `shipping_postcode`, `shipping_country`, `shipping_country_id`, `shipping_zone`, `shipping_zone_id`, `shipping_address_format`, `shipping_custom_field`, `shipping_method`, `shipping_code`, `comment`, `total`, `order_status_id`, `affiliate_id`, `commission`, `marketing_id`, `tracking`, `language_id`, `currency_id`, `currency_code`, `currency_value`, `ip`, `forwarded_ip`, `user_agent`, `accept_language`, `date_added`, `date_modified`)
SELECT '0', 'INV-2013-00', '0', 'OBUFF.RU', 'https://obuff.ru/', '0', '1', `firstname`, `lastname`, `email`, `telephone`, `fax`, '[]', `payment_firstname`, `payment_lastname`, `payment_company`, `payment_address_1`, `payment_address_2`, `payment_city`, `payment_postcode`, `payment_country`, `payment_country_id`, `payment_zone`, `payment_zone_id`, `payment_address_format`, '[]', `payment_method`, `payment_code`, `shipping_firstname`, `shipping_lastname`, `shipping_company`, `shipping_address_1`, `shipping_address_2`, `shipping_city`, `shipping_postcode`, `shipping_country`, `shipping_country_id`, `shipping_zone`, `shipping_zone_id`, `shipping_address_format`, '[]', 'Фиксированная стоимость доставки', 'flat.flat', `comment`, `total`, '1', '0', '0.0000', '0', '', '1', '1', 'RUB', '1.00000000', `ip`, `forwarded_ip`, 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', `accept_language`, `date_added`, `date_modified`
FROM `tastycoffe_test2`.`order`;
С помощью хранимой процедуры актуализируем заказы, на одну дату по пять заказов
BEGIN
DECLARE idorder INT DEFAULT 0;
Declare done integer default 0;
DECLARE orcursor Cursor FOR
Select order_id from `obuffshop1`.`oc_order`;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
Open orcursor;
set @currentdate := '2017-01-02';
set @i := 1;
WHILE done = 0 DO
FETCH orcursor INTO idorder;
IF (@i % 5 = 0) THEN
update `obuffshop1`.`oc_order` set date_added = (@currentdate),date_modified=(@currentdate) where order_id=idorder;
update `obuffshop1`.`oc_order` set date_added = (@currentdate),date_modified=(@currentdate) where order_id=idorder+1;
update `obuffshop1`.`oc_order` set date_added = (@currentdate),date_modified=(@currentdate) where order_id=idorder+2;
update `obuffshop1`.`oc_order` set date_added = (@currentdate),date_modified=(@currentdate) where order_id=idorder+3;
update `obuffshop1`.`oc_order` set date_added = (@currentdate),date_modified=(@currentdate) where order_id=idorder+4;
set @currentdate := DATE_ADD(@currentdate, INTERVAL 1 DAY);
END IF;
set @i := @i + 1;
END WHILE;
Close orcursor;
END
Если получились заказы из будущего, то запросом delete удаляем лишнии, в условии пишим WHERE date_added > now()
Также с помощью другой хранимой процедуры можно сделать число заказов случайным каждый день
BEGIN
DECLARE idorder INT DEFAULT 0;
DECLARE rnumber FLOAT DEFAULT 0;
Declare done integer default 0;
DECLARE orcursor Cursor FOR
Select order_id from `obuffshop1`.`oc_order`;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
Open orcursor;
set @currentdate := '2017-01-02';
set @i := 1;
WHILE done = 0 DO
FETCH orcursor INTO idorder;
Select rand() INTO rnumber;
IF (@i % 3 = 0) THEN
set @currentdate := DATE_ADD(@currentdate, INTERVAL 1 DAY);
ELSE IF (rnumber < 0.5) THEN
DELETE FROM `obuffshop1`.`oc_order` WHERE order_id = idorder;
END IF;
END IF;
set @i := @i + 1;
END WHILE;
Close orcursor;
END
Берём ID добавленных заказов и копируем в другую таблицу order_history (столько раз выполняем этот запрос, чтобы число записей сравнялось с числом заказов).Лишнее удаляем запросом delete
INSERT INTO `obuffshop1`.`oc_order_history` (`order_id`, `order_status_id`, `notify`, `comment`, `date_added`)
SELECT `order_id`, '1', '0', '', `date_added`
FROM `obuffshop1`.`oc_order`;
Из таблицы product переносим записи в таблицу order_product
INSERT INTO `obuffshop1`.`oc_order_product` (`order_id`, `product_id`, `name`, `model`, `quantity`, `price`, `total`, `tax`, `reward`)
SELECT '111', `product_id`, 'nameNa', `model`, '1', `price`, `price`, '0.0000', '0'
FROM `obuffshop1`.`oc_product`
Синхронизируем order_id в обоих таблицах order и oc_order_product
с помощью хранимой процедуры
BEGIN
DECLARE idorder INT DEFAULT 0;
Declare done integer default 0;
DECLARE orcursor Cursor FOR
Select order_id from `obuffshop1`.`oc_order`;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
Open orcursor;
set @i := 1;
WHILE done = 0 DO
FETCH orcursor INTO idorder;
update `obuffshop1`.`oc_order_product` set order_id = idorder where order_product_id=@i;
set @i := @i+1;
END WHILE;
Close orcursor;
END
Тащим названия товаров из таблицы product_description в
oc_order_product
UPDATE obuffshop1
.oc_order_product
as pr SET name
= (SELECT name
FROM obuffshop1
.oc_product_description
WHERE product_id = pr.product_id)
Возьмём из таблицы order_product
цены и подставим в записи таблицы order в поле total
UPDATE `obuffshop1`.`oc_order` `ord` SET `total`=(SELECT price FROM `obuffshop1`.`oc_order_product` `pr` WHERE `pr`.order_id = `ord`.order_id)
В таблицу order_total вставляем для каждого заказа по одной записи
INSERT INTO obuffshop1.oc_order_total (order_id, code, title, value, sort_order)
SELECT order_id, 'total', 'Итого', total, '9'
FROM obuffshop1.oc_order
Далее требуются написать процедуры