Example #1
0
 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;
 }
Example #2
0
 /**
  * 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);
 }
Example #3
0
 /**
  * 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();
 }
Example #4
0
 /**
  * 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;
 }