public function afterSave($object) { if (is_object($this->_getProduct())) { $stockData = $this->_getProduct()->getStockData(); $stockData['qty'] = $this->_getProduct()->getPayperrentalsQuantity(); $stockData['is_in_stock'] = 1; $stockData['manage_stock'] = 0; $stockData['use_config_manage_stock'] = 0; $this->_getProduct()->setStockData($stockData); if (Mage::app()->getRequest()->getActionName() == 'duplicate') { $this->_getProduct()->setPayperrentalsUseSerials(ITwebexperts_Payperrentals_Model_Product_Useserials::STATUS_DISABLED); } if ($this->_getProduct()->getPayperrentalsUseSerials() == ITwebexperts_Payperrentals_Model_Product_Useserials::STATUS_ENABLED) { $sns = $object->getData($this->getAttribute()->getName()); if (is_null($sns)) { $sns = Mage::getModel('payperrentals/serialnumbers')->getCollection()->addEntityIdFilter($this->_getProduct()->getId())->getItems(); } // if ((!is_array($sns) || $this->_getProduct()->getPayperrentalsQuantity() != count($sns))) { //I need to check for broken status // Mage::getSingleton('adminhtml/session')->setData('ppr', Mage::app()->getRequest()->getParam('product')); // Mage::throwException('Number of items is different than number of serial numbers!'); // return $this; // } Mage::getResourceSingleton('payperrentals/serialnumbers')->deleteByEntityId($object->getId()); foreach ($sns as $k => $sn) { if (!is_numeric($k)) { continue; } $ex = Mage::getModel('payperrentals/serialnumbers')->setEntityId($this->_getProduct()->getId())->setSn($sn['sn'])->setStatus($sn['status'])->setDateAcquired(ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($sn['dateacquired']), true)->setWarehouseId($sn['warehouseid'])->save(); } } } return $this; }
public function indexAction() { $orderId = $this->getRequest()->getParam('order_id'); $newDate = ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($this->getRequest()->getParam('new_date'), true); /** @var $sourceOrder Mage_Sales_Model_Order */ $sourceOrder = Mage::getModel('sales/order')->load($orderId); $cart = Mage::getModel('checkout/cart'); $cart->init(); $cart->truncate(); $orderItems = $sourceOrder->getAllItems(); $configHelper = Mage::helper('payperrentals/config'); foreach ($orderItems as $item) { $timeIncrement = $configHelper->getTimeIncrement() * 60; if ($item->getParentItem()) { continue; } $originalEndDate = $item->getBuyRequest()->getEndDate(); //check timeIncrement and check if product has times enabled if (ITwebexperts_Payperrentals_Helper_Data::useTimes($item->getProduct()->getId()) == 0) { $timeIncrement = 24 * 60 * 60; } $originalEndDatePlusTimeIncrement = strtotime($originalEndDate) + $timeIncrement; $originalEndDatePlusTimeIncrement = date('Y-m-d H:i:s', $originalEndDatePlusTimeIncrement); $productOptions = $item->getProductOptions(); $buyRequestArray = $productOptions['info_buyRequest']; $buyRequestArray['start_date'] = $originalEndDatePlusTimeIncrement; $buyRequestArray['end_date'] = $newDate; $buyRequestArray['is_extended'] = true; if (count($item->getChildrenItems()) > 0) { foreach ($item->getChildrenItems() as $child) { $turnoverArr = ITwebexperts_Payperrentals_Helper_Data::getTurnoverFromQuoteItemOrBuyRequest($child->getProductId(), $child); $buyRequestArray['excluded_qty'][] = array('product_id' => $child->getProductId(), 'start_date' => $turnoverArr['before'], 'end_date' => $turnoverArr['after'], 'qty' => $productOptions['info_buyRequest']['qty']); } } else { $turnoverArr = ITwebexperts_Payperrentals_Helper_Data::getTurnoverFromQuoteItemOrBuyRequest($item->getProductId(), $item); $buyRequestArray['excluded_qty'][] = array('product_id' => $item->getProductId(), 'start_date' => $turnoverArr['before'], 'end_date' => $turnoverArr['after'], 'qty' => $productOptions['info_buyRequest']['qty']); } $buyRequest = new Varien_Object($buyRequestArray); $product = Mage::getModel('catalog/product')->load($item->getProductId()); try { $cart->addProduct($product, $buyRequest); } catch (Exception $e) { Mage::getSingleton('core/session')->addError($e->getMessage()); } } $cart->save(); Mage::getSingleton('checkout/session')->setIsExtendedQuote(true); Mage::getSingleton('checkout/session')->setCartWasUpdated(true); $this->_redirect('checkout/cart'); }
/** * @param Varien_Object $object * @return $this */ public function afterSave($object) { $generalStoreId = $object->getStoreId(); $periods = $object->getData($this->getAttribute()->getName()); Mage::getResourceSingleton('payperrentals/excludeddates')->deleteByProductId($object->getId(), $generalStoreId); if (is_null($periods)) { return $this; } if (is_array($periods)) { foreach ($periods as $k => $period) { if (!is_numeric($k)) { continue; } $storeId = @$period['use_default_value'] ? 0 : $object->getStoreId(); $ex = Mage::getModel('payperrentals/excludeddates')->setProductId($object->getId())->setStoreId($storeId)->setDisabledFrom(ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($period['excludefrom']))->setDisabledType($period['repeatperiod'])->setExcludeDatesFrom($period['excludedaysfrom'])->setDisabledTo(ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($period['excludeto']))->save(); } } return $this; }
public static function getExtensibleProductsFromOrder($orderId, $date = null) { $order = Mage::getModel('sales/order')->load($orderId); if (!is_null($date)) { $date = ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($date, true); } $productsArr = array(); foreach ($order->getAllItems() as $_item) { if (is_object($_item->getOrderItem())) { $item = $_item->getOrderItem(); } else { $item = $_item; } if ($item->getParentItem()) { continue; } if (is_null($date)) { if (Mage::helper('payperrentals/config')->hasExtendEnabled($_item->getId(), $_item->getChildren())) { $productsArr[] = array('name' => $_item->getProduct()->getName(), 'oId' => $_item->getId()); } } else { if ($options = $item->getProductOptions()) { if (isset($options['info_buyRequest'])) { if (isset($options['info_buyRequest'][ITwebexperts_Payperrentals_Model_Product_Type_Reservation::START_DATE_OPTION])) { $start_date = $options['info_buyRequest'][ITwebexperts_Payperrentals_Model_Product_Type_Reservation::START_DATE_OPTION]; $end_date = $options['info_buyRequest'][ITwebexperts_Payperrentals_Model_Product_Type_Reservation::END_DATE_OPTION]; $diffSeconds = ITwebexperts_Payperrentals_Helper_Date::getDifferenceInSeconds($start_date, $date); $maxLength = Mage::helper('payperrentals/config')->getMaximumExtensionLength(); $isExtendEnabled = Mage::helper('payperrentals/config')->hasExtendEnabled($_item->getProduct()->getId()); $isAvailable = ITwebexperts_Payperrentals_Helper_Inventory::getQuantityForAnyProductTypeFromOptions($_item->getProduct()->getId(), $end_date, $date, $options['info_buyRequest']) > 0; if ($diffSeconds < $maxLength && strtotime($end_date) < strtotime($date) && $isExtendEnabled && $isAvailable) { $productsArr[] = array('name' => $_item->getProduct()->getName(), 'oId' => $_item->getId()); } } } } } } return $productsArr; }
public function indexAction() { $orderId = $this->getRequest()->getParam('order_id'); $newDate = ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($this->getRequest()->getParam('new_date'), true); /** @var $sourceOrder Mage_Sales_Model_Order */ $sourceOrder = Mage::getModel('sales/order')->load($orderId); /** @var Mage_Adminhtml_Model_Session_Quote $orderSession */ $orderSession = Mage::getSingleton('adminhtml/session_quote'); $orderSession->clear(); $customer = Mage::getModel('customer/customer')->load($sourceOrder->getCustomerId()); $orderSession->setCustomer($customer); $orderSession->setCustomerId($sourceOrder->getCustomerId()); $orderSession->setStoreId($sourceOrder->getStoreId()); //$orderSession->setQuoteId($quote->getId()); /** @var $quote Mage_Sales_Model_Quote */ $quote = $orderSession->getQuote(); /** @var $converterOrder Mage_Sales_Model_Convert_Order */ $converterOrder = Mage::getModel('sales/convert_order'); $orderShippingAddress = $converterOrder->addressToQuoteAddress($sourceOrder->getShippingAddress()); $orderBillingAddress = $converterOrder->addressToQuoteAddress($sourceOrder->getBillingAddress()); // $orderPayment = $converterOrder->paymentToQuotePayment($sourceOrder->getPayment()); $quote->setShippingAddress($orderShippingAddress); $quote->setBillingAddress($orderBillingAddress); //$quote->setPayment($orderPayment); $orderItems = $sourceOrder->getAllItems(); $configHelper = Mage::helper('payperrentals/config'); foreach ($orderItems as $item) { $timeIncrement = $configHelper->getTimeIncrement() * 60; if ($item->getParentItem()) { continue; } $originalEndDate = $item->getBuyRequest()->getEndDate(); //check timeIncrement and check if product has times enabled if (ITwebexperts_Payperrentals_Helper_Data::useTimes($item->getProduct()->getId()) == 0) { $timeIncrement = 24 * 60 * 60; } $originalEndDatePlusTimeIncrement = strtotime($originalEndDate) + $timeIncrement; $originalEndDatePlusTimeIncrement = date('Y-m-d H:i:s', $originalEndDatePlusTimeIncrement); $productOptions = $item->getProductOptions(); $buyRequestArray = $productOptions['info_buyRequest']; $buyRequestArray['start_date'] = $originalEndDatePlusTimeIncrement; $buyRequestArray['end_date'] = $newDate; $buyRequestArray['is_extended'] = true; if (count($item->getChildrenItems()) > 0) { foreach ($item->getChildrenItems() as $child) { $turnoverArr = ITwebexperts_Payperrentals_Helper_Data::getTurnoverFromQuoteItemOrBuyRequest($child->getProductId(), $child); $buyRequestArray['excluded_qty'][] = array('product_id' => $child->getProductId(), 'start_date' => $turnoverArr['before'], 'end_date' => $turnoverArr['after'], 'qty' => $productOptions['info_buyRequest']['qty']); } } else { $turnoverArr = ITwebexperts_Payperrentals_Helper_Data::getTurnoverFromQuoteItemOrBuyRequest($item->getProductId(), $item); $buyRequestArray['excluded_qty'][] = array('product_id' => $item->getProductId(), 'start_date' => $turnoverArr['before'], 'end_date' => $turnoverArr['after'], 'qty' => $productOptions['info_buyRequest']['qty']); } $buyRequest = new Varien_Object($buyRequestArray); $product = Mage::getModel('catalog/product')->load($item->getProductId()); $itemNew = $quote->addProduct($product, $buyRequest); $itemNew->calcRowTotal(); $quote->collectTotals(); } $quote->save(); $orderSession->setIsExtendedQuote(true); $this->_redirect('adminhtml/sales_order_create/index'); }
public function getProductGridDates() { $dates = array(); $request = base64_decode(Mage::app()->getRequest()->getParam('product_filter')); parse_str($request, $request_values); if (empty($request_values)) { $dates['start_date'] = date('Y-m-d'); } elseif (!empty($request_values['payperrental_custgrid_startdate'])) { $dates['start_date'] = ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($request_values['payperrental_custgrid_startdate'], true); } elseif (Mage::getSingleton('core/session')->getProductGridStart()) { $dates['start_date'] = Mage::getSingleton('core/session')->getProductGridStart(); } else { $dates['start_date'] = date('Y-m-d'); } Mage::getSingleton('core/session')->setProductGridStart($dates['start_date']); if (empty($request_values)) { $dates['end_date'] = date('Y-m-d'); } elseif (!empty($request_values['payperrental_custgrid_enddate'])) { $dates['end_date'] = ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($request_values['payperrental_custgrid_enddate'], true); } elseif (Mage::getSingleton('core/session')->getProductGridEnd()) { $dates['end_date'] = Mage::getSingleton('core/session')->getProductGridEnd(); } else { $dates['end_date'] = date('Y-m-d'); } Mage::getSingleton('core/session')->setProductGridEnd($dates['end_date']); return $dates; }
/** * Returns an array of excluded dates (holidays) for a product * from either the global or by product setting * * @param $product * @return array */ public static function getDisabledDates($product = null, $isPrice = false) { if (Mage::app()->getStore()->isAdmin()) { return array(); } $collectionExcluded = self::getCollectionExcludedDates($product); $blockedDates = array(); foreach ($collectionExcluded as $item) { if ($item->getDisabledFrom() != '' && $item->getDisabledTo() != '') { $startDate = ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($item->getDisabledFrom(), true); $endDate = ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($item->getDisabledTo(), true); $excludeFrom = $item->getExcludeDatesFrom(); if ($isPrice && $excludeFrom == ITwebexperts_Payperrentals_Model_Source_Excludedaysfrom::CALENDAR) { continue; } if ($excludeFrom == ITwebexperts_Payperrentals_Model_Source_Excludedaysfrom::CALENDAR || $excludeFrom == ITwebexperts_Payperrentals_Model_Source_Excludedaysfrom::BOTH || $isPrice) { //list($startDate, $endDate) = ITwebexperts_Payperrentals_Helper_Date::convertDatepickerToDbFormat($startDate, $endDate); $startTimePadding = strtotime(date('Y-m-d', strtotime($startDate))); $endTimePadding = strtotime(date('Y-m-d', strtotime($endDate))); while ($startTimePadding <= $endTimePadding) { $dateFormatted = date('Y-m-d', $startTimePadding); $blockedDates[] = $dateFormatted; switch ($item->getDisabledType()) { case 'dayweek': //for this case end_date should be =start_date $currentDayOfWeek = date('l', $startTimePadding); $nrWeeks = ITwebexperts_Payperrentals_Helper_Data::CALCULATE_DAYS_AFTER / 7; $recurringStartDate = $startTimePadding; for ($i = 0; $i < $nrWeeks; $i++) { $recurringStartDate = strtotime('next ' . $currentDayOfWeek, $recurringStartDate); $dateFormatted = date('Y-m-d', $recurringStartDate); $blockedDates[] = $dateFormatted; } break; case 'monthly': $nrMonths = ITwebexperts_Payperrentals_Helper_Data::CALCULATE_DAYS_AFTER / 30; $recurringStartDate = $startTimePadding; for ($i = 0; $i < $nrMonths; $i++) { $recurringStartDate = strtotime('+1 month', $recurringStartDate); $dateFormatted = date('Y-m-d', $recurringStartDate); $blockedDates[] = $dateFormatted; } break; case 'yearly': $nrYears = ITwebexperts_Payperrentals_Helper_Data::CALCULATE_DAYS_AFTER / 360; $recurringStartDate = $startTimePadding; for ($i = 0; $i < $nrYears; $i++) { $recurringStartDate = strtotime('+1 year', $recurringStartDate); $dateFormatted = date('Y-m-d', $recurringStartDate); $blockedDates[] = $dateFormatted; } break; } $startTimePadding += 60 * 60 * 24; } } } } return $blockedDates; }
public function indexAction() { $orderid = $this->getRequest()->getParam('orderid'); if ($this->getRequest()->getParam('late_date')) { $lateReturnDate = ITwebexperts_Payperrentals_Helper_Date::toMysqlDate($this->getRequest()->getParam('late_date'), true); } else { $lateReturnDate = date('Y-m-d H:i:s'); } //if($this->getRequest()->getParam('custom_price') && $this->getRequest()->getParam('custom_price') != '') { // $customPrice = $this->getRequest()->getParam('custom_price'); //} /** @var $sourceOrder Mage_Sales_Model_Order */ $sourceOrder = Mage::getModel('sales/order')->load($orderid); /** @var Mage_Adminhtml_Model_Session_Quote $orderSession */ $orderSession = Mage::getSingleton('adminhtml/session_quote'); $orderSession->clear(); $customer = Mage::getModel('customer/customer')->load($sourceOrder->getCustomerId()); $orderSession->setCustomer($customer); $orderSession->setCustomerId($sourceOrder->getCustomerId()); $orderSession->setStoreId($sourceOrder->getStoreId()); //$orderSession->setQuoteId($quote->getId()); /** @var $quote Mage_Sales_Model_Quote */ $quote = $orderSession->getQuote(); /** @var $converterOrder Mage_Sales_Model_Convert_Order */ $converterOrder = Mage::getModel('sales/convert_order'); /** @var $quote Mage_Sales_Model_Quote */ //$quoteNew = $converterOrder->toQuote($sourceOrder); $orderShippingAddress = $converterOrder->addressToQuoteAddress($sourceOrder->getShippingAddress()); $orderBillingAddress = $converterOrder->addressToQuoteAddress($sourceOrder->getBillingAddress()); //$orderPayment = $converterOrder->paymentToQuotePayment($sourceOrder->getPayment()); $quote->setShippingAddress($orderShippingAddress); $quote->setBillingAddress($orderBillingAddress); //$quote->setPayment($orderPayment); $orderItems = $sourceOrder->getAllItems(); $configHelper = Mage::helper('payperrentals/config'); foreach ($orderItems as $item) { $timeIncrement = $configHelper->getTimeIncrement() * 60; if ($item->getParentItem()) { continue; } $originalEndDate = $item->getBuyRequest()->getEndDate(); if (strtotime($originalEndDate) > strtotime($lateReturnDate)) { continue; } //check timeIncrement and check if product has times enabled $useTimes = ITwebexperts_Payperrentals_Helper_Data::useTimes($item->getProduct()->getId()); if ($useTimes == 0) { $timeIncrement = 24 * 60 * 60; } $originalEndDatePlusTimeIncrement = strtotime($originalEndDate) + $timeIncrement; $originalEndDatePlusTimeIncrement = date('Y-m-d H:i:s', $originalEndDatePlusTimeIncrement); $productOptions = $item->getProductOptions(); $buyRequestArray = $productOptions['info_buyRequest']; $buyRequestArray['start_date'] = $originalEndDatePlusTimeIncrement; $buyRequestArray['end_date'] = $useTimes == 0 ? date('Y-m-d', strtotime($lateReturnDate)) . ' 00:00:00' : $lateReturnDate; $buyRequestArray['is_extended'] = true; if (!isset($customPrice)) { $lateFee = ITwebexperts_Payperrentals_Helper_LateFeesandReturns::calculateLateFee($item->getProduct(), $item->getQtyOrdered(), $item->getBuyRequest()->getStartDate(), $originalEndDate, $lateReturnDate, $buyRequestArray); } else { $lateFee = $customPrice; } $buyRequest = new Varien_Object(); $buyRequest->setData($buyRequestArray); $product = Mage::getModel('catalog/product')->load($item->getProductId()); $additionalOptions[] = array('label' => 'Type', 'value' => 'Late Fee'); $product->addCustomOption('additional_options', serialize($additionalOptions)); $itemNew = $quote->addProduct($product, $buyRequest); //$itemNew = $quote->getItembyProduct($product); $itemNew->setCustomPrice($lateFee); $itemNew->calcRowTotal(); $quote->collectTotals(); } $quote->save(); $orderSession->setIsExtendedQuote(true); $this->_redirect('adminhtml/sales_order_create/index'); }