/** * Updates the product quantity in the stock after the order confirmation. */ function updateProductsQuantity($products, $mult) { $_affected_products = array(); foreach ($products as $prodInfo) { //: the attribute is used by the id, it needs to be rewritten //check if the attribute of the QuantityInStock product is visible if (!modApiFunc("Catalog", "isProductAttributeVisible", $prodInfo['storeProductID'], 3)) { continue; } $prodObj = new CProductInfo($prodInfo['storeProductID']); if ($prodObj->_fProductIDIsIncorrect === false) { // , QuantityInStock $productQuantityInStock = $prodObj->getProductTagValue('QuantityInStock', PRODUCTINFO_NOT_LOCALIZED_DATA); if (!is_numeric($productQuantityInStock)) { /* , , , QuantityInStock, . . . . */ continue; } execQuery('UPDATE_PRODUCT_QUANTITY_ATTRIBUTE', array('mult' => $mult, 'qty' => $prodInfo['qty'], 'p_id' => $prodInfo['storeProductID'])); $_affected_products[] = $prodInfo['storeProductID']; $cats_ids = $prodObj->getCategoriesIDs(); foreach ($cats_ids as $category_id) { modAPIFunc('paginator', 'resetPaginator', "Catalog_ProdsList_" . $category_id); } } } modApiFunc('EventsManager', 'throwEvent', 'ProductQuantityChanged', $_affected_products); }
function OnProductsWasSold($list) { global $application; $tables = $this->getTables(); $ps_table = $tables['stat_products_sold']['columns']; foreach ($list as $product) { $product_id = $product['PRODUCT_ID']; $quantity = $product['PRODUCT_QUANTITY']; $prod_obj = new CProductInfo($product_id); $categories_ids = $prod_obj->getCategoriesIDs(); $query = new DB_Insert('stat_products_sold'); $query->addInsertValue($product_id, $ps_table['product_id']); $query->addInsertValue('|' . implode('|', $categories_ids) . '|', $ps_table['categories_ids']); $query->addInsertValue(time(), $ps_table['time']); $query->addInsertValue($quantity, $ps_table['quantity']); $application->db->PrepareSQL($query); $application->db->DB_Exec(); } }