Changeset View
Changeset View
Standalone View
Standalone View
branches/5.2.x/units/orders/orders_event_handler.php
Show First 20 Lines • Show All 2776 Lines • ▼ Show 20 Line(s) | |||||
$affiliate_event->setEventParam('Order_PrefixSpecial', $object->getPrefixSpecial() ); | $affiliate_event->setEventParam('Order_PrefixSpecial', $object->getPrefixSpecial() ); | ||||
$this->Application->HandleEvent($affiliate_event); | $this->Application->HandleEvent($affiliate_event); | ||||
$table_prefix = $this->TablePrefix($event); | $table_prefix = $this->TablePrefix($event); | ||||
$order =& $object; | $order =& $object; | ||||
$ord_id = $order->GetId(); | $ord_id = $order->GetId(); | ||||
$shipping_option = $order->GetDBField('ShippingOption'); | $shipping_option = $order->GetDBField('ShippingOption'); | ||||
$backorder_select = $shipping_option == 0 ? '0' : 'oi.BackOrderFlag'; | $backorder_select = $shipping_option == 0 ? '0' : '%s.BackOrderFlag'; | ||||
// setting PackageNum to 0 for Non-tangible items, for tangibles first package num is always 1 | // setting PackageNum to 0 for Non-tangible items, for tangibles first package num is always 1 | ||||
$query = ' SELECT oi.OrderItemId | $query = ' SELECT oi.OrderItemId | ||||
FROM ' . $table_prefix . 'OrderItems oi | FROM ' . $table_prefix . 'OrderItems oi | ||||
LEFT JOIN ' . TABLE_PREFIX . 'Products p ON p.ProductId = oi.ProductId | LEFT JOIN ' . TABLE_PREFIX . 'Products p ON p.ProductId = oi.ProductId | ||||
WHERE p.Type > 1 AND oi.OrderId = ' . $ord_id; | WHERE p.Type > 1 AND oi.OrderId = ' . $ord_id; | ||||
$non_tangibles = $this->Conn->GetCol($query); | $non_tangibles = $this->Conn->GetCol($query); | ||||
if ($non_tangibles) { | if ($non_tangibles) { | ||||
$query = ' UPDATE ' . $table_prefix . 'OrderItems | $query = ' UPDATE ' . $table_prefix . 'OrderItems | ||||
SET PackageNum = 0 | SET PackageNum = 0 | ||||
WHERE OrderItemId IN (' . implode(',', $non_tangibles) . ')'; | WHERE OrderItemId IN (' . implode(',', $non_tangibles) . ')'; | ||||
$this->Conn->Query($query); | $this->Conn->Query($query); | ||||
} | } | ||||
// grouping_data: | // grouping_data: | ||||
// 0 => Product Type | // 0 => Product Type | ||||
// 1 => if NOT tangibale and NOT downloadable - OrderItemId, | // 1 => if NOT tangibale and NOT downloadable - OrderItemId, | ||||
// 2 => ProductId | // 2 => ProductId | ||||
// 3 => Shipping PackageNum | // 3 => Shipping PackageNum | ||||
$query = 'SELECT | $query = 'SELECT | ||||
'.$backorder_select.' AS BackOrderFlagCalc, | ' . sprintf($backorder_select, $table_prefix . 'OrderItems') . ' AS BackOrderFlagCalc, | ||||
PackageNum, | PackageNum, | ||||
ProductName, | ProductName, | ||||
ShippingTypeId, | ShippingTypeId, | ||||
CONCAT('.TABLE_PREFIX.'Products.Type, | CONCAT('.TABLE_PREFIX.'Products.Type, | ||||
"_", | "_", | ||||
IF ('.TABLE_PREFIX.'Products.Type NOT IN ('.PRODUCT_TYPE_DOWNLOADABLE.','.PRODUCT_TYPE_TANGIBLE.'), | IF ('.TABLE_PREFIX.'Products.Type NOT IN ('.PRODUCT_TYPE_DOWNLOADABLE.','.PRODUCT_TYPE_TANGIBLE.'), | ||||
CONCAT(OrderItemId, "_", '.TABLE_PREFIX.'Products.ProductId), | CONCAT(OrderItemId, "_", '.TABLE_PREFIX.'Products.ProductId), | ||||
""), | ""), | ||||
▲ Show 20 Lines • Show All 103 Lines • ▼ Show 20 Line(s) | |||||
$product_ids = Array(); | $product_ids = Array(); | ||||
foreach ($downl_products as $downl_product) { | foreach ($downl_products as $downl_product) { | ||||
$this->raiseProductEvent('Approve', $downl_product['ProductId'], $downl_product, $next_sub_number); | $this->raiseProductEvent('Approve', $downl_product['ProductId'], $downl_product, $next_sub_number); | ||||
$product_ids[] = $downl_product['ProductId']; | $product_ids[] = $downl_product['ProductId']; | ||||
} | } | ||||
break; | break; | ||||
case PRODUCT_TYPE_TANGIBLE: | case PRODUCT_TYPE_TANGIBLE: | ||||
$sql = 'SELECT '.$backorder_select.' AS BackOrderFlagCalc, oi.* | $sql = 'SELECT ' . sprintf($backorder_select, 'oi') . ' AS BackOrderFlagCalc, oi.* | ||||
FROM '.TABLE_PREFIX.'OrderItems oi | FROM ' . TABLE_PREFIX . 'OrderItems oi | ||||
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = oi.ProductId | LEFT JOIN ' . TABLE_PREFIX . 'Products p ON p.ProductId = oi.ProductId | ||||
WHERE (OrderId = %s) AND (p.Type = '.PRODUCT_TYPE_TANGIBLE.') | WHERE (OrderId = %s) AND (p.Type = ' . PRODUCT_TYPE_TANGIBLE . ') | ||||
HAVING BackOrderFlagCalc = 0'; | HAVING BackOrderFlagCalc = 0'; | ||||
$products = $this->Conn->Query( sprintf($sql, $ord_id) ); | $products = $this->Conn->Query( sprintf($sql, $ord_id) ); | ||||
foreach ($products as $product) { | foreach ($products as $product) { | ||||
$this->raiseProductEvent('Approve', $product['ProductId'], $product, $next_sub_number); | $this->raiseProductEvent('Approve', $product['ProductId'], $product, $next_sub_number); | ||||
} | } | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 1106 Lines • Show Last 20 Lines |