public function indexAction() { $data = Mage::getSingleton('adminhtml/session')->getFormData(true); $orders = $this->getRequest()->getParam('order_ids'); $orderId = $this->getRequest()->getParam('order_id'); if ($orderId) { $orders = array($orderId); } $customers = $this->getRequest()->getParam('customer'); $customerId = $this->getRequest()->getParam('customer_id'); if ($customerId) { $customers = array($customerId); } if (!$orders && !$customers && !$data) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('amemail')->__('Please select customers')); return $this->_redirect('customer/index'); } $template = new Varien_Object(); if (!empty($data)) { $template->setData($data); } else { $template->setTxt(Mage::getStoreConfig('amemail/general/txt')); if ($orders) { $template->setOrders(implode(',', $orders)); } elseif ($customers) { $template->setCustomers(implode(',', $customers)); } } Mage::register('amemail_template', $template); $this->loadLayout(); $this->_addContent($this->getLayout()->createBlock('amemail/adminhtml_template_edit')); $this->renderLayout(); return $this; }
/** * Called from payperrentals/inventory helper after_booked event of getBooked() * * Observer that adds maintenance quantity when using specific maintenance dates to * the serialized inventory field of the product * * @param Varien_Event_Observer $observer */ function addMaintenanceToSerialized(Varien_Event_Observer $observer) { $booked = $observer->getResult()->getBooked(); $reservedCollection = $observer->getReservedCollection(); /** @var $maintenanceColl ITwebexperts_Maintenance_Model_Mysql4_Items_Collection */ foreach ($booked as $productid => $booking) { $maintenanceColl = Mage::getModel('simaintenance/items')->getCollection(); $maintenanceColl->addFieldToFilter('product_id', $productid); foreach ($maintenanceColl as $maintenanceItem) { if (is_null($maintenanceItem->getStartDate()) || $maintenanceItem->getSpecificDates()) { continue; } $start = strtotime($maintenanceItem->getStartDate()); $end = strtotime($maintenanceItem->getEndDate()); $usetimes = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productid, 'payperrentals_use_times', Mage::app()->getStore()->getStoreId()); if (date('H:i:s', $start) != '00:00:00' || date('H:i:s', $end) != '23:59:00' && date('H:i:s', $end) != '23:58:59' || $usetimes == 1) { $configHelper = Mage::helper('payperrentals/config'); $timeIncrement = $configHelper->getTimeIncrement() * 60; } else { $timeIncrement = 3600 * 24; } while ($start < $end) { $dateFormatted = date('Y-m-d H:i', $start); if (!isset($booking[$dateFormatted])) { $vObject = new Varien_Object(); $vObject->setQty($maintenanceItem->getQuantity()); $vObject->setOrders(array('m')); $booking[$dateFormatted] = $vObject; } else { $vObject = $booking[$dateFormatted]; $vObject->setQty($vObject->getQty() + $maintenanceItem->getQuantity()); $orderArr = $vObject->getOrders(); $orderArr = array_merge($orderArr, array('m')); $vObject->setOrders($orderArr); } $booked[$productid][$dateFormatted] = $vObject; $start += $timeIncrement; } } } $observer->getResult()->setBooked($booked); }
/** * Function used to return the booked object in the required format check phpdoc on getAllBookedQtyForProduct * * @param $reservedCollection * @param $isOrder * @param null $booked * * @return array|null */ private static function getBooked($reservedCollection, $isOrder, $booked = null) { if (is_null($booked)) { $booked = array(); } $configHelper = Mage::helper('payperrentals/config'); foreach ($reservedCollection as $iReserved) { $start = strtotime($iReserved->getStartTurnoverBefore()); $end = strtotime($iReserved->getEndTurnoverAfter()); if (Mage::helper('payperrentals/config')->useReserveInventoryDropoffPickup()) { if ($iReserved->getDropoff()) { $start = strtotime($iReserved->getDropoff()); } if ($iReserved->getPickup()) { $end = strtotime($iReserved->getPickup()); } } if (Mage::helper('payperrentals/config')->useReserveInventorySendReturn()) { $sendReturnCollection = Mage::getModel('payperrentals/sendreturn')->getCollection(); $sendReturnCollection->addSelectFilter("resorder_id=" . $iReserved->getId()); $sendReturnCollection->addSelectFilter("return_date <= '" . ITwebexperts_Payperrentals_Helper_Date::toDbDate($end, true) . "' AND return_date <> '0000-00-00 00:00:00'"); $sendReturnCollection->getSelect()->order('main_table.return_date DESC'); } //a required option for bundle products is to have prices defined when times is enabled. //So use times and prices should be defined for all components of bundle products. $useTimes = ITwebexperts_Payperrentals_Helper_Data::useTimes($iReserved->getProductId()) == 2; if ($useTimes && (date('H:i:s', $start) != '00:00:00' || date('H:i:s', $end) != '23:59:00' && date('H:i:s', $end) != '23:58:59')) { $timeIncrement = $configHelper->getTimeIncrement() * 60; } else { $timeIncrement = 3600 * 24; } $returnsArray = array(); if (isset($sendReturnCollection)) { foreach ($sendReturnCollection as $sendReturnItem) { if ($timeIncrement !== 3600 * 24) { $dateReturn = date('Y-m-d H:i', strtotime($sendReturnItem->getReturnDate())); } else { $dateReturn = date('Y-m-d', strtotime($sendReturnItem->getReturnDate())) . ' 00:00'; } if (strtotime($dateReturn) < $start) { $dateReturn = date('Y-m-d', $start) . ' 00:00'; } if (!isset($returnsArray[$sendReturnItem->getProductId()][$dateReturn])) { $returnsArray[$sendReturnItem->getProductId()][$dateReturn] = $sendReturnItem->getQty(); } else { $returnsArray[$sendReturnItem->getProductId()][$dateReturn] += $sendReturnItem->getQty(); } } } $qtyReturnedArray = array(); while ($start < $end) { if ($timeIncrement !== 3600 * 24) { $dateFormatted = date('Y-m-d H:i', $start); } else { $dateFormatted = date('Y-m-d', $start) . ' 00:00'; } if (!isset($qtyReturnedArray[$iReserved->getProductId()])) { $qtyReturnedArray[$iReserved->getProductId()] = 0; } if (isset($returnsArray[$iReserved->getProductId()]) && array_key_exists($dateFormatted, $returnsArray[$iReserved->getProductId()]) !== false) { $qtyReturnedArray[$iReserved->getProductId()] = $returnsArray[$sendReturnItem->getProductId()][$dateFormatted]; } if (!isset($booked[$iReserved->getProductId()][$dateFormatted])) { $vObject = new Varien_Object(); $vObject->setQty($iReserved->getQty() - $qtyReturnedArray[$iReserved->getProductId()]); if ($isOrder) { $vObject->setOrders(array($iReserved->getOrderId())); } $booked[$iReserved->getProductId()][$dateFormatted] = $vObject; } else { $vObject = $booked[$iReserved->getProductId()][$dateFormatted]; $vObject->setQty($vObject->getQty() + $iReserved->getQty() - $qtyReturnedArray[$iReserved->getProductId()]); if ($isOrder) { $orderArr = $vObject->getOrders(); $orderArr = array_merge($orderArr, array($iReserved->getOrderId())); array_unique($orderArr); $vObject->setOrders($orderArr); } $booked[$iReserved->getProductId()][$dateFormatted] = $vObject; } $start += $timeIncrement; } } /** * Event used to complete the booked object with specific dates. Needed in case of maintenance module */ $resultObject = new Varien_Object(); $resultObject->setBooked($booked); Mage::dispatchEvent('after_booked', array('result' => $resultObject, 'reserved_collection' => $reservedCollection, 'is_order' => $isOrder)); return $resultObject->getBooked(); }
/** * Convert multidimensional array to object * @param $arr * * @return object */ public static function arrayToObject($arr) { $finalArrObj = array(); foreach ($arr as $arrDate => $arrObj) { $vObject = new Varien_Object(); if (isset($arrObj['q'])) { $vObject->setQty($arrObj['q']); } if (isset($arrObj['o'])) { $vObject->setOrders($arrObj['o']); } $finalArrObj[$arrDate] = $vObject; } return $finalArrObj; }