/**
  * 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();
     }
 }