/**
  * update stock tack
  *
  * @param Product $product
  * @param number $stockOnPO
  * @param number $stockOnHand
  * @param number $stockInRMA
  * @param number $stockInParts
  * @param number $totalInPartsValue
  * @param number $totalOnHandValue
  *
  * @return Product
  */
 private function updateStocktack(Product $product, $stockOnPO = 0, $stockOnHand = 0, $stockInRMA = 0, $stockInParts = 0, $totalInPartsValue = 0, $totalOnHandValue = 0, $active = true, $comment = '')
 {
     try {
         Dao::beginTransaction();
         if (!empty($stockOnPO)) {
             $product->addLog('Product (ID=' . $product->getId() . ') now stockOnPO = ' . $stockOnPO, Log::TYPE_SYSTEM)->setStockOnPO($stockOnPO);
         }
         if (!empty($stockOnHand)) {
             $product->addLog('Product (ID=' . $product->getId() . ') now stockOnHand = ' . $stockOnHand, Log::TYPE_SYSTEM)->setStockOnHand($stockOnHand);
         }
         if (!empty($stockInRMA)) {
             $product->addLog('Product (ID=' . $product->getId() . ') now stockInRMA = ' . $stockInRMA, Log::TYPE_SYSTEM)->setStockInRMA($stockInRMA);
         }
         if (!empty($stockInParts)) {
             $product->addLog('Product (ID=' . $product->getId() . ') now stockInParts = ' . $stockInParts, Log::TYPE_SYSTEM)->setStockInParts($stockInParts);
         }
         if (!empty($totalInPartsValue)) {
             $product->addLog('Product (ID=' . $product->getId() . ') now totalInPartsValue = ' . $totalInPartsValue, Log::TYPE_SYSTEM)->setTotalInPartsValue($totalInPartsValue);
         }
         if (!empty($totalOnHandValue)) {
             $product->addLog('Product (ID=' . $product->getId() . ') now totalOnHandValue = ' . $totalOnHandValue, Log::TYPE_SYSTEM)->setTotalOnHandValue($totalOnHandValue);
         }
         $active = $active === 0 || $active === '0' || $active === false || $active === 'false' || $active === 'no' ? false : true;
         $product->addLog('Product (ID=' . $product->getId() . ') now active = ' . $active, Log::TYPE_SYSTEM)->setActive($active);
         $product->snapshotQty(null, ProductQtyLog::TYPE_STOCK_ADJ, empty($comment) ? 'Loaded via importer' : $comment)->save();
         Dao::commitTransaction();
         return $product;
     } catch (Exception $e) {
         Dao::rollbackTransaction();
         echo $e;
         exit;
     }
 }