/** * Log refund transaction to Warehouse Transaction * * @param Varien_Object $dataObject * @return \Magestore_Inventoryplus_Helper_Refund */ public function logTransaction($dataObject) { if (!Mage::helper('core')->isModuleEnabled('Magestore_Inventorywarehouse')) { return $this; } $creditmemo = $dataObject->getCreditmemoObject(); $order = $dataObject->getOrder(); $stockMovementData = $dataObject->getStockMovementData(); if (!count($stockMovementData)) { return $this; } $adminUser = Mage::helper('inventoryplus')->getCurrentUser(); foreach ($stockMovementData as $warehouseId => $moveProducts) { $totalProducts = 0; $transData = array(); foreach ($moveProducts as $productId => $qty) { $totalProducts += abs($qty); } if ($totalProducts == 0) { continue; } $transData['total_products'] = $totalProducts; $transData['warehouse_id_from'] = $warehouseId; $transData['warehouse_name_from'] = $this->_getWarehouse($warehouseId)->getWarehouseName(); $transData['warehouse_id_to'] = $warehouseId; $transData['warehouse_id_to'] = $order->getCustomerId(); $transData['warehouse_name_to'] = $order->getCustomerName(); $transData['created_at'] = now(); $transData['created_by'] = $adminUser; $transData['reason'] = Mage::helper('inventoryplus')->__('Return stock when customer refunds - Creditmemo #' . $creditmemo->getIncrementId()); $transData['type'] = Magestore_Inventorywarehouse_Model_Transaction::TYPE_REFUND_STOCK; /* create new transaction */ $transaction = Mage::getModel('inventorywarehouse/transaction')->setData($transData)->save(); $products = Mage::getResourceModel('catalog/product_collection')->addAttributeToSelect('name')->addFieldToFilter('entity_id', array('in' => array_keys($moveProducts))); /* log products in transaction */ foreach ($products as $product) { if ($moveProducts[$product->getId()] == 0) { continue; } Mage::getModel('inventorywarehouse/transaction_product')->setData('product_id', $product->getId())->setData('product_name', $product->getName())->setData('product_sku', $product->getSku())->setData('qty', $moveProducts[$product->getId()])->setData('warehouse_transaction_id', $transaction->getId())->save(); } } }