/**
  * Make prepaid credit card payloads for any payments
  * remaining in the list
  * @param Mage_Sales_Model_Order $order
  * @param IPaymentContainer      $paymentContainer
  * @param SplObjectStorage       $processedPayments
  */
 public function addPaymentsToPayload(Mage_Sales_Model_Order $order, IPaymentContainer $paymentContainer, SplObjectStorage $processedPayments)
 {
     foreach ($order->getAllPayments() as $payment) {
         if ($this->_shouldIgnorePayment($payment, $processedPayments)) {
             continue;
         }
         $iterable = $paymentContainer->getPayments();
         $payload = $iterable->getEmptyCreditCardPayment();
         $additionalInfo = new Varien_Object($payment->getAdditionalInformation());
         $payload->setOrderId($order->getIncrementId())->setTenderType($additionalInfo->getTenderType())->setAccountUniqueId($this->_getAccountUniqueId($payment))->setPanIsToken($additionalInfo->getPanIsToken())->setPaymentRequestId($additionalInfo->getRequestId())->setCreateTimestamp($this->_getAsDateTime($payment->getCreatedAt()))->setAmount($payment->getAmountAuthorized())->setBankAuthorizationCode($additionalInfo->getBankAuthorizationCode())->setResponseCode($additionalInfo->getResponseCode())->setCVV2ResponseCode($additionalInfo->getCvv2ResponseCode())->setAVSResponseCode($additionalInfo->getAvsResponseCode())->setPhoneResponseCode($additionalInfo->getPhoneResponseCode())->setNameResponseCode($additionalInfo->getNameResponseCode())->setEmailResponseCode($additionalInfo->getEmailResponseCode())->setAmountAuthorized($additionalInfo->getAmountAuthorized())->setExpirationDate($this->_getExpirationDateTime($payment))->setExtendedAuthDescription($additionalInfo->getExtendedAuthDescription())->setExtendedAuthReasonCode($additionalInfo->getExtendedAuthReasonCode())->setIssueNumber($additionalInfo->getIssueNumber())->setAuthenticationAvailable($additionalInfo->getAuthenticationAvailable())->setAuthenticationStatus($additionalInfo->getAuthenticationStatus())->setCavvUcaf($additionalInfo->getCavvUcaf())->setTransactionId($additionalInfo->getTransactionId())->setECI($additionalInfo->getECI())->setPayerAuthenticationResponse($additionalInfo->getPayerAuthenticationResponse())->setPurchasePlanCode($additionalInfo->getPurchasePlanCode())->setPurchasePlanDescription($additionalInfo->getPurchasePlanDescription());
         if ($additionalInfo->getStartDate()) {
             // prevent death by type error if getStartDate returns null
             $payload->setStartDate($this->_getAsDateTime($additionalInfo->getStartDate()));
         }
         // add the new payload
         $iterable->OffsetSet($payload, $payload);
         // put the payment in the processed payments set
         $processedPayments->attach($payment);
     }
 }
 protected function _prepareDates(Varien_Object $request)
 {
     if (null !== $request->getStartDate()) {
         $request->setStartDate(Mage::getSingleton('core/date')->gmtDate(null, $request->getStartDate()));
     }
     if (null !== $request->getEndDate()) {
         $request->setEndDate(Mage::getSingleton('core/date')->gmtDate(null, $request->getEndDate()));
     }
     return $this;
 }
Example #3
0
 /**
  * @param $product
  * @param $quoteItem
  * @param $source
  * @param $startDate
  * @param $endDate
  *
  * @return array
  */
 public static function getTurnoverFromQuoteItemOrBuyRequest($product, $quoteItemOrBuyRequest = null, $startDate = null, $endDate = null, $type = 'date')
 {
     $shippingMethod = null;
     $postcode = null;
     $buyRequest = new Varien_Object();
     if (!is_null($quoteItemOrBuyRequest)) {
         if (is_object($quoteItemOrBuyRequest) && is_object($quoteItemOrBuyRequest->getShippingAddress())) {
             if ($quoteItemOrBuyRequest->getShippingAddress()->getShippingMethod()) {
                 $shippingMethod = $quoteItemOrBuyRequest->getShippingAddress()->getShippingMethod();
             }
             if ($quoteItemOrBuyRequest->getShippingAddress()->getPostcode()) {
                 $postcode = $quoteItemOrBuyRequest->getShippingAddress()->getPostcode();
             }
         } else {
             if (is_array($quoteItemOrBuyRequest)) {
                 $option = $quoteItemOrBuyRequest;
                 $buyRequest = new Varien_Object($option);
             } else {
                 if (is_object($quoteItemOrBuyRequest) && is_object($quoteItemOrBuyRequest->getOptionByCode('info_buyRequest'))) {
                     $option = $quoteItemOrBuyRequest->getOptionByCode('info_buyRequest');
                     $buyRequest = new Varien_Object(unserialize($option->getValue()));
                 } else {
                     $option = $quoteItemOrBuyRequest->getProductOptions();
                     $buyRequest = new Varien_Object($option['info_buyRequest']);
                 }
             }
         }
     }
     if (is_null($startDate)) {
         if ($buyRequest->getStartDate()) {
             $startDate = $buyRequest->getStartDate();
         }
     }
     if (is_null($endDate)) {
         if ($buyRequest->getEndDate()) {
             $endDate = $buyRequest->getEndDate();
         }
     }
     if (is_object($product)) {
         $productId = $product->getId();
     } else {
         $productId = $product;
     }
     if ($buyRequest->getShippingMethod()) {
         $shippingMethod = $buyRequest->getShippingMethod();
     } else {
         if (is_object($quoteItemOrBuyRequest) && is_object($quoteItemOrBuyRequest->getQuote()) && is_object($quoteItemOrBuyRequest->getQuote()->getShippingAddress()) && $quoteItemOrBuyRequest->getQuote()->getShippingAddress()->getShippingMethod()) {
             $shippingMethod = $quoteItemOrBuyRequest->getQuote()->getShippingAddress()->getShippingMethod();
         } else {
             if (Mage::app()->getRequest()->getParam('shipping_method')) {
                 $shippingMethod = Mage::app()->getRequest()->getParam('shipping_method');
             }
         }
     }
     if ($buyRequest->getZipCode()) {
         $postcode = $buyRequest->getZipCode();
     } else {
         if (is_object($quoteItemOrBuyRequest) && is_object($quoteItemOrBuyRequest->getQuote()) && is_object($quoteItemOrBuyRequest->getQuote()->getShippingAddress()) && $quoteItemOrBuyRequest->getQuote()->getShippingAddress()->getPostcode()) {
             $postcode = $quoteItemOrBuyRequest->getQuote()->getShippingAddress()->getPostcode();
         } else {
             if (Mage::app()->getRequest()->getParam('zip_code')) {
                 $postcode = Mage::app()->getRequest()->getParam('zip_code');
             }
         }
     }
     $endOrderDateTimestamp = strtotime($endDate);
     $startOrderDateTimestamp = strtotime($startDate);
     if (date('H:i:s', $endOrderDateTimestamp) == '00:00:00' && !Mage::helper('payperrentals/config')->isHotelMode(Mage::app()->getStore()->getId())) {
         $endOrderDateTimestamp = strtotime(date('Y-m-d', $endOrderDateTimestamp) . ' 23:59:00');
     } else {
         $endOrderDateTimestamp -= 60;
     }
     $turnoverTimeBefore = Mage::helper('payperrentals/config')->getTurnoverTimeBefore($productId);
     $turnoverTimeAfter = Mage::helper('payperrentals/config')->getTurnoverTimeAfter($productId);
     Mage::dispatchEvent('ppr_get_turnover_dates_for_order_item', array('turnover_time_before' => &$turnoverTimeBefore, 'turnover_time_after' => &$turnoverTimeAfter, 'order_item_before_turnover_timestamp' => &$startOrderDateTimestamp, 'order_item_after_turnover_timestamp' => &$endOrderDateTimestamp, 'product' => $productId, 'shipping_method' => $shippingMethod, 'postcode' => $postcode));
     $collectionExcludedTurnover = ITwebexperts_Payperrentals_Helper_Data::getCollectionExcludedTurnoverDates();
     if (Mage::helper('payperrentals/config')->excludeDisabledDaysOfWeekFromTurnover()) {
         $turnoverTimeBeforeCurr = $turnoverTimeBefore;
         if (!$startOrderDateTimestamp) {
             $startOrderDateTimestamp = Mage::getSingleton('core/date')->timestamp(date('Y-m-d'));
         }
         $startOrderDateTimestampCurr = $startOrderDateTimestamp - $turnoverTimeBeforeCurr;
         $endOrderDateTimestampCurr = $startOrderDateTimestamp;
         $disabledDays = self::getDisabledDays(null, true, false, true);
         while ($startOrderDateTimestampCurr <= $endOrderDateTimestampCurr) {
             $currDateofWeek = date('w', $startOrderDateTimestampCurr);
             $currDate = date('Y-m-d', $startOrderDateTimestampCurr);
             if (in_array($currDateofWeek, $disabledDays) || in_array($currDate, $collectionExcludedTurnover)) {
                 $turnoverTimeBefore += 86400;
             }
             $startOrderDateTimestampCurr += 86400;
         }
         $turnoverTimeAfterCurr = $turnoverTimeAfter;
         if ($endOrderDateTimestamp) {
             $endOrderDateTimestampCurr = $endOrderDateTimestamp + $turnoverTimeAfterCurr;
             $startOrderDateTimestampCurr = $endOrderDateTimestamp;
             $disabledDays = self::getDisabledDays(null, true, false, true);
             while ($startOrderDateTimestampCurr <= $endOrderDateTimestampCurr) {
                 $currDateofWeek = date('w', $startOrderDateTimestampCurr);
                 $currDate = date('Y-m-d', $startOrderDateTimestampCurr);
                 if (in_array($currDateofWeek, $disabledDays) || in_array($currDate, $collectionExcludedTurnover)) {
                     $turnoverTimeAfter += 86400;
                 }
                 $startOrderDateTimestampCurr += 86400;
             }
         }
     }
     if ($type == 'date') {
         $orderBeforeTurnoverTimestamp = $startOrderDateTimestamp - $turnoverTimeBefore;
         $orderAfterTurnoverTimestamp = $endOrderDateTimestamp + $turnoverTimeAfter;
         return array('before' => date('Y-m-d H:i:s', $orderBeforeTurnoverTimestamp), 'after' => date('Y-m-d H:i:s', $orderAfterTurnoverTimestamp));
     } elseif ($type == 'days') {
         return array('before' => intval($turnoverTimeBefore / 86400), 'after' => intval($turnoverTimeAfter / 86400));
     }
 }