Здравствуйте, у меня проблема, у меня не получается группировать товары по 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");
}
}
Вопрос задан 14.02.2016 - 12:18
Аватар пользователя aki9001aki9001
0