Вы здесь

Как группировать все товары после оформления заказа по 18 штук ?

0

Здравствуйте, у меня проблема, у меня не получается группировать товары по 18 штук после заказа, то что я смог сделать на данный момент :

запрос взят из вьюшки, только некоторые вещи сам поправил, добавил. на данный момент эта функция группирует товары, но не по 18 штук, нужно чтобы если больше 18 он делил, и передавал остаток дальше для следующей пачки, а если меньше чтобы ждал больше товаров, после того как собирается полная пачка, идет сообщение модератору, и меняется статус заказов.
я уже 3 4 дня сижу над этим, ничего не приходит на ум, прошу вашей помощи, буду благодарен за варианты :)

define('MAX_QTY_FOR_GOODS', 18);

function akfk_cron() {
$goods_in_cart = db_query("SELECT commerce_order.order_number
AS commerce_order_order_number, commerce_order.order_id
AS order_id, commerce_order.uid
AS commerce_order_uid, commerce_order.changed
AS commerce_order_changed, commerce_customer_profile_field_data_commerce_customer_billing.profile_id
AS commerce_customer_profile_field_data_commerce_customer_billi, users_commerce_order.name
AS users_commerce_order_name, users_commerce_order.uid
AS users_commerce_order_uid, commerce_order.status
AS commerce_order_status, 'commerce_customer_profile'
AS field_data_commerce_customer_address_commerce_customer_profi, 'commerce_order'
AS field_data_commerce_order_total_commerce_order_entity_type, quantity
AS quantity, commerce_order_total_amount
AS commerce_order_total_amount
FROM {commerce_order} commerce_order
LEFT JOIN {users} users_commerce_order
ON commerce_order.uid = users_commerce_order.uid
LEFT JOIN {field_data_commerce_order_total} field_data_commerce_order_total
ON commerce_order.order_id = field_data_commerce_order_total.entity_id
AND (field_data_commerce_order_total.entity_type = 'commerce_order'
AND field_data_commerce_order_total.deleted = '0')
LEFT JOIN {field_data_commerce_customer_billing} field_data_commerce_customer_billing
ON commerce_order.order_id = field_data_commerce_customer_billing.entity_id
AND (field_data_commerce_customer_billing.entity_type = 'commerce_order'
AND field_data_commerce_customer_billing.deleted = '0')
LEFT JOIN {commerce_customer_profile} commerce_customer_profile_field_data_commerce_customer_billing
ON field_data_commerce_customer_billing.commerce_customer_billing_profile_id = commerce_customer_profile_field_data_commerce_customer_billing.profile_id
JOIN {commerce_line_item} commerce_line_item_commerce_order
ON commerce_order.order_id = commerce_line_item_commerce_order.order_id
WHERE (( (commerce_order.status
NOT IN ('cart', 'checkout_checkout', 'checkout_review', 'checkout_payment', 'checkout_complete', 'completed', 'cancelled', 'processing')) ))
ORDER BY commerce_order_changed DESC
LIMIT 50 OFFSET 0
");

$full_list = array();
$goods_qty = 0;
while($goods_in_cart_item = $goods_in_cart->fetchObject()) {
    $full_list[] = $goods_in_cart_item;
    $goods_qty += $goods_in_cart_item->quantity;
}

if ($goods_qty >= MAX_QTY_FOR_GOODS) {

    $packid = uniqid('package_');
    $goods_qty_on_package = 0;
    $goods_index = 0;
    while($goods_qty_on_package < MAX_QTY_FOR_GOODS) {
        db_insert('packaged_products')->fields(
            array(
                'pkg_id' => $packid,
                'number' => $full_list[$goods_index]->commerce_order_order_number,
                'time' => $full_list[$goods_index]->commerce_order_changed,
                'uid' => $full_list[$goods_index]->commerce_order_uid,
                'quantity' => $full_list[$goods_index]->quantity,
                'total' => $full_list[$goods_index]->commerce_order_total_amount,
                'status' => 'processing',
            )
        )->execute();

        $goods_index++;
        $goods_qty_on_package += $full_list[$goods_index]->quantity;
    }
    mail("test@mail.ru", "New package", 'New package was grouped.',
        "From: test@mail.ru");
}

}

Версия Drupal: 
7.x
Связанные проекты: 
Drupal Commerce
Вопрос задан 14.02.2016 - 12:18

Что значит "группировать все товары"?

Комментарий оставлен 14.02.2016 - 12:58

то есть сделать пачки по 18 штук в виде таблицы.

Комментарий оставлен 14.02.2016 - 13:35

одна пачка будет содержать 18 товаров. Уведомления, и заказы модератору будут идти только когда образуется 18 товаров, т.е 1 пачка.

Комментарий оставлен 14.02.2016 - 13:57

Ответы

0

Ваш вопрос непонятен как вам, так и остальным посетителям сайта. Об этом говорит отсутствие ответов и присутствие вопросов к нему.

Вы уже сидите над ним три дня и при этом даёте портянки кода, чтобы ещё кто-то сидел три дня за вас, разбираясь в том, что вы написали.

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

Ответ дан 15.02.2016 - 09:04
Аватар пользователя shu
shu
169

спасибо за отклики, я задумывался над тем, что может не так объяснил свою задачу. Попробую ещё раз)

У меня сайт интернет-магазин, сайт на шаблоне друпала, в принципе там почти все готово, единственное что мне нужно сделать, это преподнести модератору определенное количество заказанных товаров(в моем случае 18)
когда заказанные товары доходят до количества 18 штук, посылать уведомление модератору, и отображать на какой нибудь странице эти товары по 18 штук. 18 товаров назовем как пачку. Как только собирается одна пачка, у них меняется статус с "pending" на "processing". Ну и далее модератор уже сам будет менять статус на "completed".

Надеюсь хоть как то объяснил. Я первый раз тут, и первый раз задаю вопрос, если что то непонятно, спросите пожалуйста.

Комментарий оставлен 15.02.2016 - 12:14

Не понятно для чего это нужно. Цель какая? Почему такое ограничение?

Комментарий оставлен 15.02.2016 - 14:14

я в курсе немного неправильно и нелогично, но это желание клиента. Чтобы они осуществляли заказы по определенному количеству, чтобы по одному не запрашивать с завода.

Комментарий оставлен 15.02.2016 - 16:26

По сути нужно сделать складчину? 18 человек закажут по одному и тому же товару и тогда эта пачка заказов пойдет уже в обработку?

Комментарий оставлен 15.02.2016 - 16:30

да, рад что вы поняли меня)) но было бы прекрасно если бы все заказывали по одному, сама проблема в том что они могут заказать и 12 и 19, тогда нужно будет делить заказ. это тоже глупо, но так хотят)

Комментарий оставлен 15.02.2016 - 18:16

и не важно каких товаров, любых товаров 18 штук.

Комментарий оставлен 15.02.2016 - 18:17
0

Если нужно, чтобы было минимум 18 товаров для заказа, то это делать можно через модуль rules.
Так же и максимум.

Ответ дан 15.02.2016 - 09:55

кажется тут rules не поможет, мне нужно после заказа их собирать.

Комментарий оставлен 15.02.2016 - 12:18