示例#1
0
 /**
  * @param Mage_Sales_Model_Quote_Address $address
  * @return Mage_Sales_Model_Quote_Address_Total_Abstract
  */
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     $quote = $address->getQuote();
     $payment = $quote->getPayment();
     if ($address->getAddressType() === 'billing') {
         return $this;
     }
     $configId = $payment->getPayoneConfigPaymentMethodId();
     if (empty($configId)) {
         return $this;
     }
     $config = $this->helperConfig()->getConfigPaymentMethodById($configId, $quote->getStoreId());
     if (empty($config)) {
         return $this;
     }
     $feeConfig = $config->getFeeConfigForQuote($quote);
     if (!is_array($feeConfig) or !array_key_exists('fee_config', $feeConfig)) {
         return $this;
     }
     $paymentFee = $feeConfig['fee_config'];
     $oldShippingAmount = $address->getBaseShippingAmount();
     $newShippingAmount = $oldShippingAmount + $paymentFee;
     $address->setBaseShippingAmount($newShippingAmount);
     $address->setShippingAmount($quote->getStore()->convertPrice($newShippingAmount, false));
     return parent::collect($address);
 }
示例#2
0
 /**
  * Prepare Data to Storage for Order
  * 
  * @param Mage_Sales_Model_Quote_Address $address
  * @return Magestore_Webpos_Model_Total_Quote_Cash
  */
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     $quote = $address->getQuote();
     $cashin = Mage::getSingleton('webpos/session')->getWebposCash();
     if ($cashin && $cashin <= 0) {
         return $this;
     }
     $baseCashin = $cashin / $quote->getStore()->convertPrice(1);
     $quote->setWebposCash($cashin);
     $quote->setWebposBaseCash($baseCashin);
     if (!$quote->isVirtual() && $address->getAddressType() == 'billing') {
         return $this;
     }
     $address->setWebposCash($quote->getWebposCash())->setWebposBaseCash($quote->getWebposBaseCash());
     /*
      $address->setTotalPaid($quote->getWebposCash())
      ->setBaseTotalPaid($quote->getWebposBaseCash());
     */
     if ($quote->getWebposCash() >= $address->getGrandTotal()) {
         /*
          $address->setTotalRefunded($quote->getWebposCash() - $address->getGrandTotal())
          ->setBaseTotalRefunded($quote->getWebposBaseCash() - $address->getBaseGrandTotal());
          if ($payment = $quote->getPayment()) {
          if ($method = $payment->getMethodInstance()) {
          $address->setTotalPaid($address->getTotalRefunded())
          ->setBaseTotalPaid($address->getBaseTotalRefunded());
          }
          }
         */
     } else {
         //$address->setGrandTotal($address->getGrandTotal() - $quote->getWebposCash()  );
         //$address->setBaseGrandTotal($address->getBaseGrandTotal() - $quote->getWebposBaseCash());
     }
     return $this;
 }
示例#3
0
 /**
  * Collect the order total
  *
  * @param object $address The address instance to collect from
  *
  * @return Sisow_Model_Quote_TaxTotal
  */
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     $quote = $address->getQuote();
     if ($quote->getId() == null || $address->getAddressType() != "shipping") {
         return $this;
     }
     $payment = $quote->getPayment();
     if (substr($payment->getMethod(), 0, 6) != 'sisow_' && (!count($quote->getPaymentsCollection()) || !$payment->hasMethodInstance())) {
         return $this;
     }
     $methodInstance = $payment->getMethodInstance();
     if (substr($methodInstance->getCode(), 0, 6) != 'sisow_') {
         return $this;
     }
     $helper = Mage::helper('sisow/paymentfee');
     $fee = $helper->getPaymentFeeArray($methodInstance->getCode(), $quote);
     if (!is_array($fee)) {
         return $this;
     }
     $address->setTaxAmount($address->getTaxAmount() + $fee['taxamount']);
     $address->setBaseTaxAmount($address->getBaseTaxAmount() + $fee['base_taxamount']);
     $address->setInvoiceTaxAmount($fee['taxamount']);
     $address->setBaseInvoiceTaxAmount($fee['base_taxamount']);
     return $this;
 }
 /**
  * Set correct values on subscription address based on given subscription and order address
  *
  * @param Adyen_Subscription_Model_Subscription $subscription
  * @param Mage_Sales_Model_Order_Address|Mage_Sales_Model_Quote_Address $address
  * @return $this
  */
 public function initAddress(Adyen_Subscription_Model_Subscription $subscription, $address)
 {
     $this->setSubscriptionId($subscription->getId());
     // Reset (possible) original values
     $this->setOrderAddressId(null)->setCustomerAddressId(null)->setQuoteAddressId(null);
     if ($address->getAddressType() == Mage_Sales_Model_Order_Address::TYPE_BILLING) {
         $this->setType(self::ADDRESS_TYPE_BILLING);
     } else {
         $this->setType(self::ADDRESS_TYPE_SHIPPING);
     }
     // Note: Only use customer address if 'save_in_address_book' or 'same_as_billing'
     // is also checked at the address, because it's not enough to rely solely on the
     // customer address ID, because an address can be changed when creating an order
     // in the backend, but this ID still remains when a quote is converted to an order
     if ($address->getCustomerAddressId() && $address->getData('save_in_address_book')) {
         // Create customer address
         $this->setSource(self::ADDRESS_SOURCE_CUSTOMER)->setCustomerAddressId($address->getCustomerAddressId());
     } elseif ($address instanceof Mage_Sales_Model_Quote_Address) {
         // Create quote address
         $this->setSource(self::ADDRESS_SOURCE_QUOTE)->setQuoteAddressId($address->getId());
     } else {
         // Create order address
         $this->setSource(self::ADDRESS_SOURCE_ORDER)->setOrderAddressId($address->getId());
     }
     return $this;
 }
示例#5
0
 /**
  * Prepare Data to Storage for Order
  * 
  * @param Mage_Sales_Model_Quote_Address $address
  * @return Magestore_Webpos_Model_Total_Quote_Cash
  */
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     $quote = $address->getQuote();
     //Mage::getSingleton('webpos/session')->setWebposCash(null);
     $cashin = Mage::getSingleton('webpos/session')->getWebposCash();
     $baseCashin = $cashin / $quote->getStore()->convertPrice(1);
     $quote->setWebposCash($cashin);
     $quote->setWebposBaseCash($baseCashin);
     if (!$quote->isVirtual() && $address->getAddressType() == 'billing') {
         return $this;
     }
     if ($quote->getWebposCash() < 0.0001) {
         return $this;
     }
     // Order Cash
     $address->setWebposCash($quote->getWebposCash())->setWebposBaseCash($quote->getWebposBaseCash());
     // Update total Paid and Refund
     $address->setTotalPaid($quote->getWebposCash())->setBaseTotalPaid($quote->getWebposBaseCash());
     if ($quote->getWebposCash() >= $address->getGrandTotal()) {
         $address->setTotalRefunded($quote->getWebposCash() - $address->getGrandTotal())->setBaseTotalRefunded($quote->getWebposBaseCash() - $address->getBaseGrandTotal());
         if ($payment = $quote->getPayment()) {
             if ($method = $payment->getMethodInstance()) {
                 if ($method->getCode() == 'cashforpos') {
                     // prepair for cashin invoice
                     $address->setTotalPaid($address->getTotalRefunded())->setBaseTotalPaid($address->getBaseTotalRefunded());
                 }
             }
         }
     }
     return $this;
 }
示例#6
0
 /**
  * Convert quote address to order address
  *
  * @param   Mage_Sales_Model_Quote_Address $address
  * @return  Mage_Sales_Model_Order_Address
  */
 public function addressToOrderAddress(Mage_Sales_Model_Quote_Address $address)
 {
     $orderAddress = Mage::getModel('Mage_Sales_Model_Order_Address')->setStoreId($address->getStoreId())->setAddressType($address->getAddressType())->setCustomerId($address->getCustomerId())->setCustomerAddressId($address->getCustomerAddressId());
     Mage::helper('Mage_Core_Helper_Data')->copyFieldset('sales_convert_quote_address', 'to_order_address', $address, $orderAddress);
     Mage::dispatchEvent('sales_convert_quote_address_to_order_address', array('address' => $address, 'order_address' => $orderAddress));
     return $orderAddress;
 }
示例#7
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) {
         return $this;
     }
     $address->addTotal(array('code' => $this->getCode(), 'title' => Mage::helper('sales')->__('Points Earned')));
     return $this;
 }
示例#8
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     // Only display for the shipping address quote
     if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_BILLING) {
         return true;
     }
     $address->addTotal(array('code' => $this->getCode(), 'title' => Mage::helper('sales')->__('Points Earned')));
     return $this;
 }
示例#9
0
 /**
  * Triggers AFTER collection methods, only when Magento is trying to show the total amount.
  * @see Mage_Sales_Model_Quote_Address_Total_Abstract::fetch()
  */
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) {
         return $this;
     }
     if ($this->discount_amt != 0) {
         $address->addTotal(array('code' => $this->getCode(), 'title' => Mage::helper('sales')->__('Item Discounts'), 'value' => $this->discount_amt));
     }
     return $this;
 }
示例#10
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == 'billing') {
         return $this;
     }
     if (Mage::helper('customfee')->canApply()) {
         $amount = $this->getFeeAmount($address->getSubtotal());
         $address->addTotal(array('code' => $this->getCode(), 'title' => $this->getLabel(), 'value' => $amount));
     }
     return $this;
 }
示例#11
0
 /**
  * Collect address subtotal
  *
  * @param   Mage_Sales_Model_Quote_Address $address
  * @return  Mage_Sales_Model_Quote_Address_Total_Subtotal
  */
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == 'billing') {
         return $this;
     }
     $juros = Mage::getSingleton('checkout/session')->getJuros();
     $address->setBaseJurosAmount($juros);
     $address->setJurosAmount($juros);
     $address->setBaseTotalAmount($this->getCode(), $juros);
     $address->setTotalAmount($this->getCode(), $juros);
     return $this;
 }
示例#12
0
 /**
  * Collect the Buckaroo fee for the given address.
  *
  * @param Mage_Sales_Model_Quote_Address $address
  *
  * @return $this
  */
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     /**
      * We can only add the fee to the shipping address.
      */
     if ($address->getAddressType() != 'shipping') {
         return $this;
     }
     $quote = $address->getQuote();
     $store = $quote->getStore();
     if (!$quote->getId()) {
         return $this;
     }
     $items = $address->getAllItems();
     if (!count($items)) {
         return $this;
     }
     /**
      * First, reset the fee amounts to 0 for this address and the quote.
      */
     $address->setBuckarooFee(0)->setBaseBuckarooFee(0);
     $quote->setBuckarooFee(0)->setBaseBuckarooFee(0);
     /**
      * Check if the order was placed using Buckaroo
      */
     $paymentMethod = $quote->getPayment()->getMethod();
     if (strpos($paymentMethod, 'buckaroo') === false) {
         return $this;
     }
     /**
      * Get the fee amount.
      */
     $baseFee = $this->_getPaymentFee($quote, $paymentMethod);
     if ($baseFee <= 0) {
         return $this;
     }
     /**
      * Convert the fee to the base fee amount.
      */
     $fee = $store->convertPrice($baseFee);
     /**
      * Set the fee for the address and quote.
      */
     $address->setBuckarooFee($fee)->setBaseBuckarooFee($baseFee);
     $quote->setBuckarooFee($fee)->setBaseBuckarooFee($baseFee);
     /**
      * Update the address' grand total amounts.
      */
     $address->setBaseGrandTotal($address->getBaseGrandTotal() + $baseFee);
     $address->setGrandTotal($address->getGrandTotal() + $fee);
     return $this;
 }
示例#13
0
文件: Total.php 项目: ext/magento
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() != "shipping") {
         return $this;
     }
     $incl = $address->getInvoiceFee();
     $data = Mage::helper("billmateinvoice");
     if ($incl == 0) {
         return $this;
     }
     $address->addTotal(array('code' => $this->getCode(), 'title' => Mage::helper('payment')->__('Billmate Invoice Fee'), 'value' => $incl));
     return $this;
 }
 /**
  * Add giftcard totals information to address object
  *
  * @param Mage_Sales_Model_Quote_Address $address
  */
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == 'billing') {
         //$amount = $address->getReferralrewardAmount();
         $helper = Mage::helper('referralreward');
         $points = (int) Mage::getSingleton('core/session')->getPointsDiscount();
         $amount = -1 * $helper->convertPoints($points);
         if ($amount != 0) {
             $address->addTotal(array('code' => $this->getCode(), 'title' => $this->getLabel(), 'value' => $amount));
         }
     }
     return $this;
 }
示例#15
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     //file_put_contents('test1.log', file_get_contents('test1.log') . '->'.$address->getAmount());
     $amount = $address->getAmount();
     if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_BILLING) {
         return;
     }
     if ($amount > 0) {
         $title = Mage::helper('vc_giftwrap')->__('Gift Wrap');
         $address->addTotal(array('code' => $this->getCode(), 'title' => $title, 'value' => $amount));
     }
     return $this;
 }
示例#16
0
 /**
  * Add giftcard totals information to address object
  *
  * @param   Mage_Sales_Model_Quote_Address $address
  */
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if (Mage::getStoreConfig('deals/general/enabled')) {
         $amount = $this->getAmount();
         if ($amount > 0) {
             if ($address->getAddressType() == 'billing') {
                 if ($amount != 0) {
                     $address->addTotal(array('code' => $this->getCode(), 'title' => $this->getLabel(), 'value' => -$amount));
                 }
             }
             return $this;
         }
     }
 }
示例#17
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == 'shipping' && $address->getQuote()->getIsActive()) {
         $paymentMethod = $address->getQuote()->getPayment()->getMethod();
         if (isset($paymentMethod) && $this->getHelper()->isBillpayRatPayment($paymentMethod)) {
             $quote = $address->getQuote();
             $baseAmount = $this->getCalculation()->getCalculationBaseAmount($quote);
             $baseAmount = $this->getHelper()->currencyToSmallerUnit($baseAmount);
             if ($this->getSession()->validateRateOptions($baseAmount)) {
                 $address->addTotal(array('area' => 'footer', 'code' => $this->getCode(), 'title' => Mage::helper('billpay')->__('billpay_rate_calculation_partial_price'), 'value' => $this->getSession()->getTotalPaymentAmount()));
             } else {
                 $this->getSession()->clearCurrentRateOptions();
             }
         }
     }
     return $this;
 }
示例#18
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == 'shipping' && $address->getQuote()->getIsActive()) {
         $paymentMethod = $address->getQuote()->getPayment()->getMethod();
         if (isset($paymentMethod) && $this->getHelper()->isBillpayRatPayment($paymentMethod)) {
             $quote = $address->getQuote();
             $baseAmount = $this->getCalculation()->getCalculationBaseAmount($quote);
             $baseAmount = $this->getHelper()->currencyToSmallerUnit($baseAmount);
             if ($this->getSession()->validateRateOptions($baseAmount)) {
                 $interestFormula = $this->getCalculation()->getRateSurchargeFormula($this->format($this->getCalculation()->getCalculationBaseAmount($quote)), $this->getSession()->getInterestRate(), $this->getSession()->getBillpayRates());
                 $address->addTotal(array('area' => 'footer', 'code' => $this->getCode(), 'title' => Mage::helper('billpay')->__('billpay_rate_calculation_interest_add') . ' ' . Mage::helper('billpay')->__('billpay_rate_for_text') . ' ' . $this->getSession()->getBillpayRates() . ' ' . Mage::helper('billpay')->__('billpay_rate_rate_text') . '<br />' . $interestFormula, 'value' => $this->getSession()->getSurchargeAmount()));
             } else {
                 $this->getSession()->clearCurrentRateOptions();
             }
         }
     }
     return $this;
 }
示例#19
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == 'shipping' && $address->getQuote()->getIsActive()) {
         $paymentMethod = $address->getQuote()->getPayment()->getMethod();
         if (isset($paymentMethod) && $this->getHelper()->isBillpayRatPayment($paymentMethod)) {
             $quote = $address->getQuote();
             if ($this->getSession()->getTransationFee() > 0) {
                 $title = $this->getHelper()->__('billpay_rate_transaction_fee');
                 $feeTaxAmount = $this->getSession()->getTransationFee() - $this->getSession()->getTransationFeeNet();
                 if ($feeTaxAmount > 0) {
                     $title .= '<br >(' . $this->getHelper()->__('billpay_rate_included_tax') . ': ' . $this->format($feeTaxAmount) . ')';
                 }
                 $address->addTotal(array('area' => 'footer', 'code' => $this->getCode(), 'title' => $title, 'value' => $this->getSession()->getTransationFee()));
             }
         }
     }
     return $this;
 }
 /**
  * Set correct values on subscription address based on given subscription and order address
  *
  * @param Adyen_Subscription_Model_Subscription $subscription
  * @param Mage_Sales_Model_Order_Address|Mage_Sales_Model_Quote_Address $address
  * @return $this
  */
 public function initAddress(Adyen_Subscription_Model_Subscription $subscription, $address)
 {
     $this->setSubscriptionId($subscription->getId());
     // Reset (possible) original values
     $this->setOrderAddressId(null)->setCustomerAddressId(null)->setQuoteAddressId(null);
     if ($address->getAddressType() == Mage_Sales_Model_Order_Address::TYPE_BILLING) {
         $this->setType(self::ADDRESS_TYPE_BILLING);
     } else {
         $this->setType(self::ADDRESS_TYPE_SHIPPING);
     }
     if ($address instanceof Mage_Sales_Model_Quote_Address) {
         // Create quote address
         $this->setSource(self::ADDRESS_SOURCE_QUOTE)->setQuoteAddressId($address->getId());
     } else {
         // Create order address
         $this->setSource(self::ADDRESS_SOURCE_ORDER)->setOrderAddressId($address->getId());
     }
     return $this;
 }
示例#21
0
 /**
  * @param Mage_Sales_Model_Quote_Address $address
  * @return Mage_Sales_Model_Quote_Address_Total_Abstract
  */
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     $quote = $address->getQuote();
     $payment = $quote->getPayment();
     if ($address->getAddressType() === 'billing') {
         return $this;
     }
     $configId = $payment->getPayoneConfigPaymentMethodId();
     if (empty($configId)) {
         return $this;
     }
     $config = $this->helperConfig()->getConfigPaymentMethodById($configId, $quote->getStoreId());
     if (empty($config)) {
         return $this;
     }
     $feeConfig = $config->getFeeConfigForQuote($quote);
     if (!is_array($feeConfig) or !array_key_exists('fee_config', $feeConfig)) {
         return $this;
     }
     if ($payment && $payment->getId() && $payment->hasMethodInstance() && !$payment->getMethodInstance() instanceof Payone_Core_Model_Payment_Method_Abstract) {
         $this->_setNewPayonePaymentAmount($quote, $address, 0);
         return parent::collect($address);
     }
     /*
      * This does not work here:
      * $quote->getSubtotal();
      * $quote->getGrandTotal();
      * 
      * because this method is called during the calculation process of those methods and thus the value is not available then
      */
     $aTotals = $quote->getTotals();
     $dSubTotal = 0;
     if (isset($aTotals['subtotal'])) {
         $dSubTotal = $aTotals['subtotal']->getValue();
     }
     $paymentFee = $feeConfig['fee_config'];
     if (isset($feeConfig['fee_type'][0]) && $feeConfig['fee_type'][0] == 'percent') {
         $paymentFee = $dSubTotal * $paymentFee / 100;
     }
     $this->_setNewPayonePaymentAmount($quote, $address, $paymentFee);
     return parent::collect($address);
 }
示例#22
0
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     // Changed By Adam 28/07/2014
     if (!Mage::helper('affiliateplus')->isAffiliateModuleEnabled()) {
         return $this;
     }
     if (!$this->_getConfigHelper()->getPaymentConfig('store_credit')) {
         return $this;
     }
     if (!$address->getQuote()->isVirtual() && $address->getAddressType() == 'billing') {
         return $this;
     }
     $discount = 0;
     $session = Mage::getSingleton('checkout/session');
     $helper = Mage::helper('affiliateplus/account');
     if ($session->getUseAffiliateCredit() && $helper->isLoggedIn() && !$helper->disableStoreCredit() && $helper->isEnoughBalance()) {
         $balance = $helper->getAccount()->getBalance();
         $discount = floatval($session->getAffiliateCredit());
         if ($discount > $balance) {
             $discount = $balance;
         }
         if ($discount > $address->getGrandTotal()) {
             $discount = $address->getGrandTotal();
         }
         if ($discount < 0) {
             $discount = 0;
         }
         $session->setAffiliateCredit($discount);
     } else {
         $session->setUseAffiliateCredit('');
     }
     if ($discount) {
         $baseDiscount = $discount / Mage::app()->getStore()->convertPrice(1);
         $address->setBaseAffiliateCredit(-$baseDiscount);
         $address->setAffiliateCredit(-$discount);
         $address->setBaseGrandTotal($address->getBaseGrandTotal() - $baseDiscount);
         $address->setGrandTotal($address->getGrandTotal() - $discount);
     }
     return $this;
 }
示例#23
0
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     if (!Mage::getSingleton('checkout/session')->getQuoteId()) {
         return $this;
     }
     $_helper = Mage::helper('msp_cashondelivery');
     $_model = Mage::getModel('msp_cashondelivery/cashondelivery');
     $_subtotal = $address->getSubtotal();
     $quote = $address->getQuote();
     $baseAmount = $_model->getBaseExtraFee($_subtotal);
     $amount = $_model->getExtraFee($_subtotal);
     $codTax = $_helper->getTaxAmount($amount);
     $codBaseTax = $_helper->getTaxAmount($baseAmount);
     if ($quote->getPayment()->getMethod() == $_model->getCode() && $address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) {
         $address->setTaxAmount($address->getTaxAmount() + $codTax);
         $address->setBaseTaxAmount($address->getBaseTaxAmount() + $codBaseTax);
         $this->_saveAppliedTaxes($address, $_helper->getAppliedRates(), $codTax, $codBaseTax, $_helper->getRate());
         $address->setGrandTotal($address->getGrandTotal() + $codTax);
         $address->setBaseGrandTotal($address->getBaseGrandTotal() + $codBaseTax);
     }
     return $this;
 }
示例#24
0
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     $quote = $address->getQuote();
     $session = Mage::getSingleton('checkout/session');
     if ($address->getAddressType() == 'billing' && !$quote->isVirtual()) {
         return $this;
     }
     if ($codes = $session->getGiftCodes()) {
         $codesArray = array_unique(explode(',', $codes));
         $store = $quote->getStore();
         if ($address->getAllBaseTotalAmounts()) {
             $baseTotal = array_sum($address->getAllBaseTotalAmounts());
         } else {
             $baseTotal = $address->getBaseGrandTotal();
         }
         $baseTotalDiscount = 0;
         $totalDiscount = 0;
         $codesBaseDiscount = array();
         $codesDiscount = array();
         $baseSessionAmountUsed = explode(',', $session->getBaseAmountUsed());
         $baseAmountUsed = array_combine($codesArray, $baseSessionAmountUsed);
         $amountUsed = $baseAmountUsed;
         foreach ($codesArray as $code) {
             $model = Mage::getModel('giftvoucher/giftvoucher')->loadByCode($code);
             if ($baseTotal == 0 || $model->getStatus() != Magestore_Giftvoucher_Model_Status::STATUS_ACTIVE || $model->getBalance() == 0 || $model->getBaseBalance() <= $baseAmountUsed[$code]) {
                 $codesBaseDiscount[] = 0;
                 $codesDiscount[] = 0;
             } else {
                 $baseBalance = $model->getBaseBalance() - $baseAmountUsed[$code];
                 $baseDiscount = min($baseBalance, $baseTotal);
                 $discount = $store->convertPrice($baseDiscount);
                 $baseAmountUsed[$code] += $baseDiscount;
                 $amountUsed[$code] = $store->convertPrice($baseAmountUsed[$code]);
                 $baseTotal -= $baseDiscount;
                 $baseTotalDiscount += $baseDiscount;
                 $totalDiscount += $discount;
                 $codesBaseDiscount[] = $baseDiscount;
                 $codesDiscount[] = $discount;
             }
         }
         $codesBaseDiscountString = implode(',', $codesBaseDiscount);
         $codesDiscountString = implode(',', $codesDiscount);
         //update session
         $session->setBaseAmountUsed(implode(',', $baseAmountUsed));
         $session->setBaseGiftVoucherDiscount($session->getBaseGiftVoucherDiscount() + $baseTotalDiscount);
         $session->setGiftVoucherDiscount($session->getGiftVoucherDiscount() + $totalDiscount);
         $session->setCodesBaseDiscount($session->getBaseAmountUsed());
         $session->setCodesDiscount(implode(',', $amountUsed));
         //update address
         $address->setBaseGrandTotal($baseTotal);
         $address->setGrandTotal($store->convertPrice($baseTotal));
         $address->setBaseGiftVoucherDiscount($baseTotalDiscount);
         $address->setGiftVoucherDiscount($totalDiscount);
         $address->setGiftCodes($codes);
         $address->setCodesBaseDiscount($codesBaseDiscountString);
         $address->setCodesDiscount($codesDiscountString);
         //update quote
         $quote->setBaseGiftVoucherDiscount($session->getBaseGiftVoucherDiscount());
         $quote->setGiftVoucherDiscount($session->getGiftVoucherDiscount());
         $quote->setGiftCodes($codes);
         $quote->setCodesBaseDiscount($session->getCodesBaseDiscount());
         $quote->setCodesDiscount($session->getCodesDiscount());
     }
     return $this;
 }
示例#25
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     $store_id = Mage::app()->getStore()->getId();
     if ((int) Mage::helper('rewardpoints')->getRedeemPointsOnTax($store_id) == MW_RewardPoints_Model_Redeemtax::BEFORE && in_array(Mage::getStoreConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_BASED_ON, $store_id), array('shipping', 'billing')) && $address->getAddressType() == Mage::getStoreConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_BASED_ON, $store_id)) {
         if (Mage::app()->getRequest()->getControllerName() == "multishipping" && Mage::app()->getRequest()->getActionName() == "overview") {
             $addresss = Mage::getSingleton('checkout/session')->getQuote()->getAllShippingAddresses();
         } else {
             $store_id = Mage::app()->getStore()->getId();
             $point = Mage::getSingleton('core/session')->getMwRewardpointAfterDrop();
             $point_show = Mage::helper('rewardpoints')->formatPoints($point, $store_id);
             $amount = Mage::helper('core')->currency(Mage::helper('rewardpoints')->exchangePointsToMoneys($point), false, false);
             if ($amount != 0) {
                 $title = Mage::helper('rewardpoints')->__('You Redeem (%s)', $point_show);
                 if (Mage::app()->getStore()->isAdmin()) {
                     $title = Mage::helper('rewardpoints')->__('You Redeem (%s points)', $point);
                 }
                 $address->addTotal(array('code' => $this->getCode(), 'title' => $title, 'value' => -$amount, 'strong' => false));
             }
         }
     }
     return $this;
 }
示例#26
0
 /**
  * Add invoice fee total information to address
  *
  * @param object $address The address instance
  *
  * @return Sisow_Model_Quote_Total
  */
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() != "shipping") {
         return $this;
     }
     $excl = $address->getInvoiceFeeExcludedVat();
     $incl = $address->getInvoiceFee();
     //$lang = Mage::helper('klarnaPaymentModule/lang');
     $country = $address->getCountry();
     $storeId = Mage::app()->getStore()->getId();
     $isOSCEnabled = Mage::getStoreConfig('onestepcheckout/general/rewrite_checkout_links', $storeId);
     if ($isOSCEnabled) {
         $OSCDisplayAmountsInclTax = Mage::getStoreConfig('onestepcheckout/general/display_tax_included', $storeId);
         $value = $OSCDisplayAmountsInclTax ? $incl : $excl;
     } else {
         $value = $incl;
     }
     if ($value != 0) {
         $address->addTotal(array('code' => $this->getCode(), 'title' => Mage::getStoreConfig('payment/' . $this->payment->getMethodInstance()->getCode() . '/payment_fee_label'), 'value' => $value));
     }
     return $this;
 }
 /**
  * Determine if the address is a valid destination.
  *
  * @return bool
  */
 protected function _validateAddressIsDestination()
 {
     return $this->_address->getAddressType() === Mage_Sales_Model_Quote_Address::TYPE_BILLING || $this->_validateAddressIsShipGroup();
 }
示例#28
0
 /**
  * Add giftcard totals information to address object
  *
  * @param   Mage_Sales_Model_Quote_Address $address
  */
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == 'billing') {
         $amount = number_format($address->getQuote()->getGiftCardValue(), 2);
         if ($amount != 0) {
             $address->addTotal(array('code' => $this->getCode(), 'title' => $this->getLabel(), 'value' => -$amount));
         }
     }
     return $this;
 }
示例#29
0
 /**
  * collect reward points total
  * 
  * @param Mage_Sales_Model_Quote_Address $address
  * @return Magestore_RewardPoints_Model_Total_Quote_Point
  */
 public function collect(Mage_Sales_Model_Quote_Address $address)
 {
     $quote = $address->getQuote();
     $applyTaxAfterDiscount = (bool) Mage::getStoreConfig('rewardpoints/spending/discount_before_tax', $quote->getStoreId());
     if ($applyTaxAfterDiscount) {
         return $this;
     }
     if (!Mage::helper('rewardpoints')->isEnable($quote->getStoreId())) {
         return $this;
     }
     if ($quote->isVirtual() && $address->getAddressType() == 'shipping') {
         return $this;
     }
     if (!$quote->isVirtual() && $address->getAddressType() == 'billing') {
         return $this;
     }
     $session = Mage::getSingleton('checkout/session');
     if (!$session->getData('use_point')) {
         return $this;
     }
     $rewardSalesRules = $session->getRewardSalesRules();
     $rewardCheckedRules = $session->getRewardCheckedRules();
     if (!$rewardSalesRules && !$rewardCheckedRules) {
         return $this;
     }
     /** @var $helper Magestore_RewardPoints_Helper_Calculation_Spending */
     $helper = Mage::helper('rewardpoints/calculation_spending');
     $baseTotal = $helper->getQuoteBaseTotal($quote, $address);
     $maxPoints = Mage::helper('rewardpoints/customer')->getBalance();
     if ($maxPointsPerOrder = $helper->getMaxPointsPerOrder($quote->getStoreId())) {
         $maxPoints = min($maxPointsPerOrder, $maxPoints);
     }
     $maxPoints -= $helper->getPointItemSpent();
     if ($maxPoints <= 0) {
         return $this;
     }
     $baseDiscount = 0;
     $pointUsed = 0;
     // Checked Rules Discount First
     if (is_array($rewardCheckedRules)) {
         $newRewardCheckedRules = array();
         foreach ($rewardCheckedRules as $ruleData) {
             if ($baseTotal < 0.0001) {
                 break;
             }
             $rule = $helper->getQuoteRule($ruleData['rule_id']);
             if (!$rule || !$rule->getId() || $rule->getSimpleAction() != 'fixed') {
                 continue;
             }
             if ($maxPoints < $rule->getPointsSpended()) {
                 $session->addNotice($helper->__('Not enough points to spend'));
                 continue;
             }
             $points = $rule->getPointsSpended();
             $ruleDiscount = $helper->getQuoteRuleDiscount($quote, $rule, $points);
             if ($ruleDiscount < 0.0001) {
                 continue;
             }
             $baseTotal -= $ruleDiscount;
             $maxPoints -= $points;
             $baseDiscount += $ruleDiscount;
             $pointUsed += $points;
             $newRewardCheckedRules[$rule->getId()] = array('rule_id' => $rule->getId(), 'use_point' => $points, 'base_discount' => $ruleDiscount);
             if ($rule->getStopRulesProcessing()) {
                 break;
             }
         }
         $session->setRewardCheckedRules($newRewardCheckedRules);
     }
     // Sales Rule (slider) discount Last
     if (is_array($rewardSalesRules)) {
         $newRewardSalesRules = array();
         if ($baseTotal > 0.0 && isset($rewardSalesRules['rule_id'])) {
             $rule = $helper->getQuoteRule($rewardSalesRules['rule_id']);
             if ($rule && $rule->getId() && $rule->getSimpleAction() == 'by_price') {
                 $points = min($rewardSalesRules['use_point'], $maxPoints);
                 $ruleDiscount = $helper->getQuoteRuleDiscount($quote, $rule, $points);
                 if ($ruleDiscount > 0.0) {
                     $baseTotal -= $ruleDiscount;
                     $maxPoints -= $points;
                     $baseDiscount += $ruleDiscount;
                     $pointUsed += $points;
                     $newRewardSalesRules = array('rule_id' => $rule->getId(), 'use_point' => $points, 'base_discount' => $ruleDiscount);
                 }
             }
         }
         $session->setRewardSalesRules($newRewardSalesRules);
     }
     // verify quote total data
     if ($baseTotal < 0.0001) {
         $baseTotal = 0.0;
         $baseDiscount = $helper->getQuoteBaseTotal($quote, $address);
     }
     if ($baseDiscount) {
         // Prepare reward points discount and point spent for each item
         $this->_prepareDiscountForTaxAmount($address, $baseDiscount, $pointUsed);
         $discount = Mage::app()->getStore()->convertPrice($baseDiscount);
         $address->setBaseGrandTotal($address->getBaseGrandTotal() - $baseDiscount);
         $address->setGrandTotal($address->getGrandTotal() - $discount);
         $address->setRewardpointsSpent($address->getRewardpointsSpent() + $pointUsed);
         $address->setRewardpointsBaseDiscount($address->getRewardpointsBaseDiscount() + $baseDiscount);
         $address->setRewardpointsDiscount($address->getRewardpointsDiscount() + $discount);
         $quote->setRewardpointsBaseDiscount($address->getRewardpointsBaseDiscount());
         $quote->setRewardpointsDiscount($address->getRewardpointsDiscount());
         $address->setMagestoreBaseDiscount($address->getMagestoreBaseDiscount() + $baseDiscount);
     }
     return $this;
 }
示例#30
0
 public function fetch(Mage_Sales_Model_Quote_Address $address)
 {
     if ($address->getAddressType() == 'shipping') {
         $paymentMethod = $this->getPaymentMethod($address);
         if ($paymentMethod && $this->getHelper()->isBillpayPayment($paymentMethod)) {
             $quote = $address->getQuote();
             if ($this->getHelper()->getConfigData('fee/display_incl_tax_frontend', $quote->getStoreId())) {
                 $feeCharged = $address->getQuote()->getBillpayChargedFee();
             } else {
                 $feeCharged = $address->getQuote()->getBillpayChargedFeeNet();
             }
             if (isset($feeCharged) && $feeCharged > 0) {
                 $address->addTotal(array('code' => $this->getCode(), 'title' => Mage::helper('billpay')->__($paymentMethod . '_step_fee_text'), 'value' => $feeCharged));
             }
         }
     }
     return $this;
 }