public static function run() { try { Dao::beginTransaction(); $start = self::_logMsg("== START: processing Product Ageing ==", __CLASS__, __FUNCTION__); self::_emptyProductAgeingLog(); $productCount = 0; $products = self::_getProducts(); if (self::DEBUG === true) { self::_logMsg('ProductCount: ' . count($products), __CLASS__, __FUNCTION__); } foreach ($products as $product) { $productCount++; if (self::DEBUG === true) { self::_logMsg('ProductId: ' . $product->getId(), __CLASS__, __FUNCTION__); } $lastPurchase = self::_getLastPurchase($product); if ($lastPurchase instanceof ProductQtyLog) { self::_recordProductAgeingLog($lastPurchase); } } $end = new UDate(); self::_logMsg("== FINISHED: process product ageing, (productCount: " . $productCount . ", ProductAgeingLogCount: " . ProductAgeingLog::countByCriteria('active = 1') . ")", __CLASS__, __FUNCTION__); Dao::commitTransaction(); } catch (Exception $e) { Dao::rollbackTransaction(); echo "\n" . $e->getMessage() . "\n" . $e->getTraceAsString(); } }