Как наполнить 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

Далее требуются написать процедуры

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *