public function collect(Mage_Sales_Model_Quote_Address $address) { if (!$this->_getConfigHelper()->getGeneralConfig('enable', $address->getQuote()->getStoreId())) { return $this; } $customer = $address->getQuote()->getCustomer(); $baseGrandTotal = $address->getBaseGrandTotal(); if (!$customer || !$customer->getId() || $baseGrandTotal <= 0) { return $this; } $baseDiscount = 0; $luckyCodes = Mage::getModel('luckydraw/code')->getFailedCodes($customer->getId()); $useCodes = array(); foreach ($luckyCodes as $code) { $codeDiscount = $code->getData('credit_rate'); $useCodes[] = $code->getId(); if ($baseGrandTotal - $codeDiscount <= 0) { $baseGrandTotal = 0; $baseDiscount = $address->getBaseGrandTotal(); break; } $baseGrandTotal -= $codeDiscount; $baseDiscount += $codeDiscount; } if ($baseDiscount) { Mage::getSingleton('core/session')->setUseLuckydrawCodes($useCodes); $discount = Mage::app()->getStore()->convertPrice($baseDiscount); $address->setBaseLuckydrawDiscount(-$baseDiscount); $address->setLuckydrawDiscount(-$discount); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $baseDiscount); $address->setGrandTotal($address->getGrandTotal() - $discount); } return $this; }
/** * Collect giftcertificate totals for specified address * * @param Mage_Sales_Model_Quote_Address $address */ public function collect(Mage_Sales_Model_Quote_Address $address) { $this->_collectQuoteGiftCards($address->getQuote()); $baseAmountLeft = $address->getQuote()->getBaseGiftCardsAmount() - $address->getQuote()->getBaseGiftCardsAmountUsed(); $amountLeft = $address->getQuote()->getGiftCardsAmount() - $address->getQuote()->getGiftCardsAmountUsed(); $baseTotalUsed = $totalUsed = $baseUsed = $used = $skipped = $baseSaved = $saved = 0; if ($baseAmountLeft >= $address->getBaseGrandTotal()) { $baseUsed = $address->getBaseGrandTotal(); $used = $address->getGrandTotal(); $address->setBaseGrandTotal(0); $address->setGrandTotal(0); } else { $baseUsed = $baseAmountLeft; $used = $amountLeft; $address->setBaseGrandTotal($address->getBaseGrandTotal() - $baseAmountLeft); $address->setGrandTotal($address->getGrandTotal() - $amountLeft); } $addressCards = array(); $usedAddressCards = array(); if ($baseUsed) { $quoteCards = $this->_sortGiftCards(Mage::helper('enterprise_giftcardaccount')->getCards($address->getQuote())); foreach ($quoteCards as $quoteCard) { $card = $quoteCard; if ($quoteCard['ba'] + $skipped <= $address->getQuote()->getBaseGiftCardsAmountUsed()) { $baseThisCardUsedAmount = $thisCardUsedAmount = 0; } elseif ($quoteCard['ba'] + $baseSaved > $baseUsed) { $baseThisCardUsedAmount = min($quoteCard['ba'], $baseUsed - $baseSaved); $thisCardUsedAmount = min($quoteCard['a'], $used - $saved); $baseSaved += $baseThisCardUsedAmount; $saved += $thisCardUsedAmount; } elseif ($quoteCard['ba'] + $skipped + $baseSaved > $address->getQuote()->getBaseGiftCardsAmountUsed()) { $baseThisCardUsedAmount = min($quoteCard['ba'], $baseUsed); $thisCardUsedAmount = min($quoteCard['a'], $used); $baseSaved += $baseThisCardUsedAmount; $saved += $thisCardUsedAmount; } else { $baseThisCardUsedAmount = $thisCardUsedAmount = 0; } // avoid possible errors in future comparisons $card['ba'] = round($baseThisCardUsedAmount, 4); $card['a'] = round($thisCardUsedAmount, 4); $addressCards[] = $card; if ($baseThisCardUsedAmount) { $usedAddressCards[] = $card; } $skipped += $quoteCard['ba']; } } Mage::helper('enterprise_giftcardaccount')->setCards($address, $usedAddressCards); $address->setUsedGiftCards($address->getGiftCards()); Mage::helper('enterprise_giftcardaccount')->setCards($address, $addressCards); $baseTotalUsed = $address->getQuote()->getBaseGiftCardsAmountUsed() + $baseUsed; $totalUsed = $address->getQuote()->getGiftCardsAmountUsed() + $used; $address->getQuote()->setBaseGiftCardsAmountUsed($baseTotalUsed); $address->getQuote()->setGiftCardsAmountUsed($totalUsed); $address->setBaseGiftCardsAmount($baseUsed); $address->setGiftCardsAmount($used); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $quote = $address->getQuote(); $session = Mage::getSingleton('checkout/session'); if (is_null($session->getQuoteId())) { $session = Mage::getSingleton('adminhtml/session_quote'); } $isCustomerLoggedIn = (bool) $quote->getCustomer()->getId(); if ($session->getData('use_points') && $address->getBaseGrandTotal() && $isCustomerLoggedIn) { $customer = Mage::getModel('customer/customer')->load($quote->getCustomer()->getId()); $pointsAmountUsed = abs($session->getData('points_amount')); $pointsAmountAllowed = Mage::getModel('points/summary')->loadByCustomer($customer)->getPoints(); $storeId = $session->getQuote()->getStoreId(); $website = Mage::app()->getWebsite(Mage::app()->getStore($storeId)->getWebsiteId()); $baseSubtotalWithDiscount = $address->getData('base_subtotal') + $address->getData('base_discount_amount'); $subtotalWithDiscount = $address->getData('subtotal') + $address->getData('discount_amount'); $pointsSpendingCalculation = Mage::helper('points/config')->getPointsSpendingCalculation(); if ($pointsSpendingCalculation !== AW_Points_Helper_Config::BEFORE_TAX) { $baseSubtotalWithDiscount += $address->getData('base_tax_amount'); $subtotalWithDiscount += $address->getData('tax_amount'); } $limitedPoints = Mage::helper('points')->getLimitedPoints($baseSubtotalWithDiscount, $customer, $storeId); $pointsAmountUsed = min($pointsAmountUsed, $pointsAmountAllowed, $limitedPoints); $session->setData('points_amount', $pointsAmountUsed); $rate = Mage::getModel('points/rate')->setCurrentCustomer($customer)->setCurrentWebsite($website)->loadByDirection(AW_Points_Model_Rate::POINTS_TO_CURRENCY); if (!$rate->getId()) { return $this; } $moneyBaseCurrencyForPoints = $rate->exchange($pointsAmountUsed); $moneyCurrentCurrencyForPoints = Mage::app()->getStore()->convertPrice($moneyBaseCurrencyForPoints); /** * If points amount is more then needed to pay for subtotal with discount for order, * we need to set new points amount */ if ($moneyBaseCurrencyForPoints > $baseSubtotalWithDiscount) { $neededAmount = ceil($baseSubtotalWithDiscount * $rate->getPoints() / $rate->getMoney()); $neededAmountBaseCurrency = $rate->exchange($neededAmount); $neededAmountCurrentCurrency = Mage::app()->getStore()->convertPrice($neededAmountBaseCurrency); $session->setData('points_amount', $neededAmount); $address->setGrandTotal($address->getData('grand_total') - $subtotalWithDiscount); $address->setBaseGrandTotal($address->getData('base_grand_total') - $baseSubtotalWithDiscount); $address->setMoneyForPoints($neededAmountCurrentCurrency); $address->setBaseMoneyForPoints($neededAmountBaseCurrency); $quote->setMoneyForPoints($neededAmountCurrentCurrency); $quote->setBaseMoneyForPoints($neededAmountBaseCurrency); } else { $address->setGrandTotal($address->getGrandTotal() - $moneyCurrentCurrencyForPoints); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $moneyBaseCurrencyForPoints); $address->setMoneyForPoints($moneyCurrentCurrencyForPoints); $address->setBaseMoneyForPoints($moneyBaseCurrencyForPoints); $quote->setMoneyForPoints($moneyCurrentCurrencyForPoints); $quote->setBaseMoneyForPoints($moneyBaseCurrencyForPoints); } } return $this; }
/** * 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; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $address->setPaymentCharge(0); $address->setBasePaymentCharge(0); $items = $address->getAllItems(); if (!count($items)) { return $this; } $paymentMethod = $address->getQuote()->getPayment()->getMethod(); if (Mage::getStoreConfig('tax/calculation/price_includes_tax') != 1) { $tax = $address->getTaxAmount(); } if ($paymentMethod) { $amount1 = Mage::helper('paymentcharge')->getPaymentCharge($paymentMethod, $address->getQuote()); $amount = Mage::helper('directory')->currencyConvert($amount1, Mage::app()->getWebsite()->getConfig('currency/options/default'), Mage::app()->getStore()->getCurrentCurrencyCode()); // if(Mage::getStoreConfig('payment/paypal_payment_solutions/charge_type')!="percentage"){ $address->setPaymentCharge($amount); $address->setBasePaymentCharge($amount1); /* } else { $address->setPaymentCharge($amount); $subTotal = $address->getBaseSubtotal(); $amount12 = ($subTotal+ $tax) * floatval(Mage::getStoreConfig('payment/paypal_payment_solutions/charge_value')) / 100; $address->setBasePaymentCharge($amount12); }*/ } $address->setGrandTotal($address->getGrandTotal() + $tax + $address->getPaymentCharge()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBasePaymentCharge()); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $_helper = Mage::helper('webpos'); $active = $_helper->enableGiftWrap(); if (!$active) { return; } $session = Mage::getSingleton('checkout/session'); $giftwrap = $session->getData('webpos_giftwrap'); if (!$giftwrap) { return $this; } $items = $address->getAllItems(); if (!count($items)) { return $this; } $giftwrapType = $_helper->getGiftwrapType(); $giftwrapAmount = $_helper->getGiftwrapAmount(); $wrapTotal = 0; if ($giftwrapType == 1) { foreach ($items as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } $wrapTotal += $giftwrapAmount * $item->getQty(); } } else { $wrapTotal = $giftwrapAmount; } $session->setData('webpos_giftwrap_amount', $wrapTotal); $address->setWebposGiftwrapAmount($wrapTotal); $address->setGrandTotal($address->getGrandTotal() + $address->getWebposGiftwrapAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getWebposGiftwrapAmount()); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $active = Mage::helper('giftwrap')->enableGiftwrap(); if (!$active) { return; } if (Mage::app()->getStore()->isAdmin()) { return $this; } $items = $address->getAllItems(); if (!count($items)) { return $this; } $address_id = $address->getId(); /* * update of version 0.2.2 */ $giftwrapAmount = Mage::helper('giftwrap')->giftwrapAmount(null, $address_id); $address->setGiftwrapAmount($giftwrapAmount); $address->setBaseGiftwrapAmount(0); //var_dump($address->getData());die(); // if($giftwrapAmount>0){ // $taxAmount = 10; // $address->setTaxAmount($address->getTaxAmount() + $taxAmount); // $address->setBaseTaxAmount($address->getBaseTaxAmount() + $taxAmount); // } Mage::getModel('core/session')->setData('giftwrap_amount', $giftwrapAmount); $address->setGrandTotal($address->getGrandTotal() + $address->getGiftwrapAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getGiftwrapAmount()); //var_dump($address->getData());die(); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { if ($address->getData('address_type') == 'billing') { return $this; } // Fetch if "Store Credit" was applied by checking if "store_credit" session is not empty. $raw = (double) $this->_getSession()->getData('store_credit'); if (!$raw) { return $this; } /* START: Perform a re-check / validation in the credit's session. * This will ensure that session has * */ if (($customer_id = $this->_getSession()->getId()) > 0) { list($read, $write) = $this->_getResource(); $sql = "SELECT credit_remaining FROM storecredit WHERE customer_id='" . $customer_id . "'"; $credit_remaining = (double) $read->fetchOne($sql); if ($credit_remaining >= $raw) { /* $credit_remaining must be always greater or equal than $raw (credit to use). */ } else { return $this; } } /* END: Perform a re-check / validation in the credit's session. */ $discount = (double) Mage::app()->getStore()->convertPrice($raw); $address->setStoreCreditDiscount($discount); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $raw); $address->setGrandTotal($address->getGrandTotal() - $discount); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $address->setCustbalanceAmount(0); $address->setBaseCustbalanceAmount(0); $address->setGrandTotal($address->getGrandTotal() - $address->getCustbalanceAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $address->getBaseCustbalanceAmount()); return $this; }
/** * Convert quote address model to order * * @param Mage_Sales_Model_Quote $quote * @return Mage_Sales_Model_Order */ public function addressToOrder(Mage_Sales_Model_Quote_Address $address, $order = null) { if (!$order instanceof Mage_Sales_Model_Order) { $order = $this->toOrder($address->getQuote()); } $order->setWeight($address->getWeight())->setShippingMethod($address->getShippingMethod())->setShippingDescription($address->getShippingDescription())->setShippingRate($address->getShippingRate())->setSubtotal($address->getSubtotal())->setTaxAmount($address->getTaxAmount())->setDiscountAmount($address->getDiscountAmount())->setShippingAmount($address->getShippingAmount())->setGiftcertAmount($address->getGiftcertAmount())->setCustbalanceAmount($address->getCustbalanceAmount())->setGrandTotal($address->getGrandTotal())->setBaseSubtotal($address->getBaseSubtotal())->setBaseTaxAmount($address->getBaseTaxAmount())->setBaseDiscountAmount($address->getBaseDiscountAmount())->setBaseShippingAmount($address->getBaseShippingAmount())->setBaseGiftcertAmount($address->getBaseGiftcertAmount())->setBaseCustbalanceAmount($address->getBaseCustbalanceAmount())->setBaseGrandTotal($address->getBaseGrandTotal()); Mage::dispatchEvent('sales_convert_quote_address_to_order', array('address' => $address, 'order' => $order)); return $order; }
protected function setSubscriptionFee(Mage_Sales_Model_Quote_Address $address) { $fee = "0.01"; $currentAmount = $address->getSubscriptionFeeAmount(); $balance = $fee - $currentAmount; $address->setSubscriptionFeeAmount($address->getQuote()->getStore()->convertPrice($balance)); $address->setBaseSubscriptionFeeAmount($balance); $address->setGrandTotal($address->getGrandTotal() + $address->getSubscriptionFeeAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBaseSubscriptionFeeAmount()); }
/** * Collect grand total address amount * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Sales_Model_Quote_Address_Total_Grand */ public function collect(Mage_Sales_Model_Quote_Address $address) { $grandTotal = $address->getGrandTotal(); $baseGrandTotal = $address->getBaseGrandTotal(); $totals = array_sum($address->getAllTotalAmounts()); $baseTotals = array_sum($address->getAllBaseTotalAmounts()); $address->setGrandTotal($grandTotal + $totals); $address->setBaseGrandTotal($baseGrandTotal + $baseTotals); return $this; }
/** * Collect customer balance totals for specified address * * @param Mage_Sales_Model_Quote_Address $address * @return Enterprise_CustomerBalance_Model_Total_Quote_Customerbalance */ public function collect(Mage_Sales_Model_Quote_Address $address) { if (!Mage::helper('enterprise_customerbalance')->isEnabled()) { return $this; } $quote = $address->getQuote(); if (!$quote->getCustomerBalanceCollected()) { $quote->setBaseCustomerBalAmountUsed(0); $quote->setCustomerBalanceAmountUsed(0); $quote->setCustomerBalanceCollected(true); } $baseTotalUsed = $totalUsed = $baseUsed = $used = 0; $baseBalance = $balance = 0; if ($quote->getCustomer()->getId()) { if ($quote->getUseCustomerBalance()) { $store = Mage::app()->getStore($quote->getStoreId()); $baseBalance = Mage::getModel('enterprise_customerbalance/balance')->setCustomer($quote->getCustomer())->setCustomerId($quote->getCustomer()->getId())->setWebsiteId($store->getWebsiteId())->loadByCustomer()->getAmount(); $balance = $quote->getStore()->convertPrice($baseBalance); } } $baseAmountLeft = $baseBalance - $quote->getBaseCustomerBalAmountUsed(); $amountLeft = $balance - $quote->getCustomerBalanceAmountUsed(); if ($baseAmountLeft >= $address->getBaseGrandTotal()) { $baseUsed = $address->getBaseGrandTotal(); $used = $address->getGrandTotal(); $address->setBaseGrandTotal(0); $address->setGrandTotal(0); } else { $baseUsed = $baseAmountLeft; $used = $amountLeft; $address->setBaseGrandTotal($address->getBaseGrandTotal() - $baseAmountLeft); $address->setGrandTotal($address->getGrandTotal() - $amountLeft); } $baseTotalUsed = $quote->getBaseCustomerBalAmountUsed() + $baseUsed; $totalUsed = $quote->getCustomerBalanceAmountUsed() + $used; $quote->setBaseCustomerBalAmountUsed($baseTotalUsed); $quote->setCustomerBalanceAmountUsed($totalUsed); $address->setBaseCustomerBalanceAmount($baseUsed); $address->setCustomerBalanceAmount($used); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_BILLING) { return; } $quote = $address->getQuote(); $amount = $this->_giftWrapAmount(); $address->setAmount($amount); $address->setGrandTotal($address->getGrandTotal() + $amount); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $amount); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $quote = $address->getQuote(); $session = Mage::getSingleton('checkout/session'); $customer = Mage::getSingleton('customer/session')->getCustomer(); $params = Mage::app()->getRequest()->getParam('payment'); if ($params['use_point'] != null || $params['point_amount'] != null) { $session->setData('use_point', $params['use_point'])->setData('point_amount', $params['point_amount']); } if ($session->getData('use_point') && $address->getBaseGrandTotal() && $customer->getId()) { $pointAmount = $session->getData('point_amount'); $rate = Mage::getModel('customerreward/rate')->getPointToMoneyRate($customer->getWebsiteId(), $customer->getGroupId()); $moneyBase = $pointAmount * $rate; $currentMoney = Mage::app()->getStore()->convertPrice($moneyBase); $baseSubtotalWithDiscount = $address->getData('base_subtotal') + $address->getData('base_discount_amount'); $subtotalWithDiscount = $address->getData('subtotal') + $address->getData('discount_amount'); if ($moneyBase < $baseSubtotalWithDiscount) { $address->setBaseGrandTotal($address->getBaseGrandTotal() - $moneyBase); $address->setGrandTotal($address->getGrandTotal() - $currentMoney); $address->setMoneyBase($moneyBase); $address->setCurrentMoney($currentMoney); $quote->setMoneyBase($moneyBase); $quote->setCurrentMoney($currentMoney); } else { $pointUsed = ceil($baseSubtotalWithDiscount / $rate); $moneyBaseUsed = $pointUsed * $rate; $currentMoneyUsed = Mage::app()->getStore()->convertPrice($moneyBaseUsed); $session->setData('point_amount', $pointUsed); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $baseSubtotalWithDiscount); $address->setGrandTotal($address->getGrandTotal() - $subtotalWithDiscount); $address->setMoneyBase($moneyBaseUsed); $address->setCurrentMoney($currentMoneyUsed); $quote->setMoneyBase($moneyBaseUsed); $quote->setCurrentMoney($currentMoneyUsed); } } return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $address->setPaymentCharge(0); $address->setBasePaymentCharge(0); $storeId = Mage::app()->getStore()->getId(); $items = $address->getAllItems(); if (!count($items)) { return $this; } $paymentMethod = $address->getQuote()->getPayment()->getMethod(); $quote = $address->getQuote(); if ($paymentMethod && substr($paymentMethod, 0, 11) == 'pay_payment') { $baseAmount = Mage::helper('pay_payment')->getPaymentCharge($paymentMethod, $address->getQuote()); $amount = Mage::helper('directory')->currencyConvert($baseAmount, Mage::app()->getWebsite()->getConfig('currency/options/default'), Mage::app()->getStore()->getCurrentCurrencyCode()); $address->setPaymentCharge($amount); $address->setBasePaymentCharge($baseAmount); $taxClass = Mage::helper('pay_payment')->getPaymentChargeTaxClass($paymentMethod); $taxCalculationModel = Mage::getSingleton('tax/calculation'); $request = $taxCalculationModel->getRateRequest($quote->getShippingAddress(), $quote->getBillingAddress(), null, $storeId); $request->setStore(Mage::app()->getStore()); $rate = $taxCalculationModel->getRate($request->setProductClassId($taxClass)); //$rate = 21; if ($rate > 0) { // $includesTax = Mage::getStoreConfig('tax/calculation/price_includes_tax'); $baseChargeTax = round($address->getBasePaymentCharge() / (1 + $rate / 100) * ($rate / 100), 2); $chargeTax = round($address->getPaymentCharge() / (1 + $rate / 100) * ($rate / 100), 2); } else { $baseChargeTax = 0; $chargeTax = 0; } $rates = array(); $applied = false; foreach ($address->getAppliedTaxes() as $arrRate) { // maximaal 1 keer de btw voor de extra kosten toevoegen if ($arrRate['percent'] == $rate && !$applied) { $applied = true; $arrRate['amount'] = $arrRate['amount'] + $chargeTax; $arrRate['base_amount'] = $arrRate['base_amount'] + $baseChargeTax; } $rates[] = $arrRate; } $address->setAppliedTaxes($rates); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $baseChargeTax); $address->setTaxAmount($address->getTaxAmount() + $chargeTax); $address->setGrandTotal($address->getGrandTotal() + $address->getPaymentCharge()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBasePaymentCharge()); } return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $_helper = Mage::helper('onestepcheckout'); $active = $_helper->enableGiftWrap(); if (!$active) { return; } $session = Mage::getSingleton('checkout/session'); $giftwrap = $session->getData('onestepcheckout_giftwrap'); if (!$giftwrap) { return $this; } $items = $address->getAllItems(); if (!count($items)) { return $this; } $giftwrapType = $_helper->getGiftwrapType(); $giftwrapAmount = $_helper->getGiftwrapAmount(); $wrapTotal = 0; if ($giftwrapType == 1) { foreach ($items as $item) { if ($item->getProduct()->isVirtual() || $item->getParentItem()) { continue; } // if ($item->getHasChildren() && $item->isShipSeparately()) { // foreach ($item->getChildren() as $child) { // if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) { // $freeBoxes += $item->getQty() * $child->getQty(); // } // elseif ($item->getFreeShipping()) { // $freeBoxes += $item->getQty(); // } // } // } $wrapTotal += $giftwrapAmount * $item->getQty(); } } else { $wrapTotal = $giftwrapAmount; } // var_dump($wrapTotal); // $giftwrapAmount = Mage::helper('giftwrap')->giftwrapAmount(null,$address_id); $session->setData('onestepcheckout_giftwrap_amount', $wrapTotal); $address->setOnestepcheckoutGiftwrapAmount($wrapTotal); $address->setGrandTotal($address->getGrandTotal() + $address->getOnestepcheckoutGiftwrapAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getOnestepcheckoutGiftwrapAmount()); return $this; }
/** * Collect grand total address amount * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Sales_Model_Quote_Address_Total_Grand */ public function collect(Mage_Sales_Model_Quote_Address $address) { /** @var $helper Openstream_RappenRounding_Helper_Data */ $helper = Mage::helper('rappenrounding'); $grandTotal = $address->getGrandTotal(); $baseGrandTotal = $address->getBaseGrandTotal(); $totals = array_sum($address->getAllTotalAmounts()); $baseTotals = array_sum($address->getAllBaseTotalAmounts()); if ($helper->getScope() == 'totals' || $helper->getScope() == 'all') { $address->setGrandTotal($helper->_roundBase5($grandTotal + $totals)); $address->setBaseGrandTotal($helper->_roundBase5($baseGrandTotal + $baseTotals)); } else { $address->setGrandTotal($grandTotal + $totals); $address->setBaseGrandTotal($baseGrandTotal + $baseTotals); } return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $paymentMethod = Mage::app()->getFrontController()->getRequest()->getParam('payment'); $paymentMethod = Mage::app()->getStore()->isAdmin() && isset($paymentMethod['method']) ? $paymentMethod['method'] : null; if (!in_array($paymentMethod, self::$_allowed_methods) && (!count($address->getQuote()->getPaymentsCollection()) || !$address->getQuote()->getPayment()->hasMethodInstance())) { return $this; } $paymentMethod = $address->getQuote()->getPayment()->getMethodInstance(); if (!in_array($paymentMethod->getCode(), self::$_allowed_methods)) { return $this; } $items = $address->getAllItems(); if (!count($items)) { return $this; } $address->setBasePayexPaymentFee(0); $address->setBasePayexPaymentFeeTax(0); $address->setPayexPaymentFee(0); $address->setPayexPaymentFeeTax(0); // Get totals $address1 = clone $address; foreach ($address1->getTotalCollector()->getCollectors() as $model) { if ($model->getCode() !== $this->getCode()) { $model->collect($address1); } } // Address is the reference for grand total // Calculated total is $address1->getGrandTotal() $price = (double) $paymentMethod->getConfigData('paymentfee'); $tax_class = $paymentMethod->getConfigData('paymentfee_tax_class'); if (!$price) { return $this; } // Get Payment Fee $fee = Mage::helper('payex/fee')->getPaymentFeePrice($price, $tax_class); $baseTotal = $address->getBaseGrandTotal(); $baseTotal += $fee->getPaymentFeePrice() + $fee->getPaymentFeeTax(); $address->setBasePayexPaymentFee($fee->getPaymentFeePrice()); $address->setBasePayexPaymentFeeTax($fee->getPaymentFeeTax()); $address->setPayexPaymentFee($address->getQuote()->getStore()->convertPrice($fee->getPaymentFeePrice(), false)); $address->setPayexPaymentFeeTax($address->getQuote()->getStore()->convertPrice($fee->getPaymentFeeTax(), false)); // update totals $address->setBaseGrandTotal($baseTotal); $address->setGrandTotal($address->getQuote()->getStore()->convertPrice($baseTotal, false)); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $quote = $address->getQuote(); $credit = Mage::helper('credit')->exchangeCreditToMoney(Mage::getSingleton('checkout/session')->getCredit()); $subtotalWithDiscount = 0; $items = $address->getAllItems(); if (!count($items)) { return $this; } $address->setCreditDiscount($credit); $address->setSubtotalWithDiscount($subtotalWithDiscount - $credit); $address->setBaseCreditDiscount($credit); $address->setBaseSubtotalWithDiscount($subtotalWithDiscount - $credit); $address->setGrandTotal($address->getGrandTotal() - $address->getCreditDiscount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $address->getBaseCreditDiscount()); $address->setBaseDiscountAmount($address->getBaseDiscountAmount() - $address->getBaseCreditDiscount()); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $address->setPaymentCharge(0); $address->setBasePaymentCharge(0); $items = $address->getAllItems(); if (!count($items)) { return $this; } $paymentMethod = $address->getQuote()->getPayment()->getMethod(); if ($paymentMethod) { $amount = Mage::helper('paymentcharge')->getPaymentCharge($paymentMethod, $address->getQuote()); $address->setPaymentCharge($amount['amount']); $address->setBasePaymentCharge($amount['base_amount']); } $address->setGrandTotal($address->getGrandTotal() + $address->getPaymentCharge()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBasePaymentCharge()); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $session = Mage::getSingleton('checkout/session'); $discount = $session->getData('onestepcheckout_admin_discount'); if (!$discount) { return $this; } $items = $address->getAllItems(); if (!count($items)) { return $this; } $session->setData('onestepcheckout_admin_discount', $discount); $address->setOnestepcheckoutDiscountAmount($discount); $address->setData('onestepcheckout_discount_amount', $discount); $address->setGrandTotal($address->getGrandTotal() - $address->getOnestepcheckoutDiscountAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $address->getOnestepcheckoutDiscountAmount()); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $oldWeight = $address->getWeight(); $address->setWeight(0); $address->setShippingAmount(0); $method = $address->getShippingMethod(); $freeAddress = $address->getFreeShipping(); $address->setFreeMethodWeight(0); foreach ($address->getAllItems() as $item) { $item->calcRowWeight(); $address->setWeight($address->getWeight() + $item->getRowWeight()); if ($freeAddress || $item->getFreeShipping() === true) { $item->setRowWeight(0); } elseif (is_numeric($item->getFreeShipping())) { $origQty = $item->getQty(); if ($origQty > $item->getFreeShipping()) { $item->setQty($origQty - $item->getFreeShipping()); $item->calcRowWeight(); $item->setQty($origQty); } else { $item->setRowWeight(0); } } $address->setFreeMethodWeight($address->getFreeMethodWeight() + $item->getRowWeight()); } $address->collectShippingRates(); $address->setShippingAmount(0); $address->setBaseShippingAmount(0); $method = $address->getShippingMethod(); if ($method) { foreach ($address->getAllShippingRates() as $rate) { if ($rate->getCode() == $method) { $amountPrice = $address->getQuote()->getStore()->convertPrice($rate->getPrice(), false); $address->setShippingAmount($amountPrice); $address->setBaseShippingAmount($rate->getPrice()); $address->setShippingDescription($rate->getCarrierTitle() . ' - ' . $rate->getMethodDescription()); break; } } } $address->setGrandTotal($address->getGrandTotal() + $address->getShippingAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBaseShippingAmount()); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $quote = $address->getQuote(); $eventArgs = array('website_id' => Mage::app()->getStore($quote->getStoreId())->getWebsiteId(), 'customer_group_id' => $quote->getCustomerGroupId(), 'coupon_code' => $quote->getCouponCode()); $address->setFreeShipping(0); $totalDiscountAmount = 0; $subtotalWithDiscount = 0; $baseTotalDiscountAmount = 0; $baseSubtotalWithDiscount = 0; $hasDiscount = false; foreach ($address->getAllItems() as $item) { if ($item->getNoDiscount()) { $item->setDiscountAmount(0); $item->setBaseDiscountAmount(0); $item->setRowTotalWithDiscount($item->getRowTotal()); $item->setBaseRowTotalWithDiscount($item->getRowTotal()); $subtotalWithDiscount += $item->getRowTotal(); $baseSubtotalWithDiscount += $item->getBaseRowTotal(); } else { $eventArgs['item'] = $item; Mage::dispatchEvent('sales_quote_address_discount_item', $eventArgs); if ($item->getDiscountAmount()) { $hasDiscount = true; } $totalDiscountAmount += $item->getDiscountAmount(); $baseTotalDiscountAmount += $item->getBaseDiscountAmount(); $item->setRowTotalWithDiscount($item->getRowTotal() - $item->getDiscountAmount()); $item->setBaseRowTotalWithDiscount($item->getBaseRowTotal() - $item->getBaseDiscountAmount()); $subtotalWithDiscount += $item->getRowTotalWithDiscount(); $baseSubtotalWithDiscount += $item->getBaseRowTotalWithDiscount(); } } $address->setDiscountAmount($totalDiscountAmount); $address->setSubtotalWithDiscount($subtotalWithDiscount); $address->setBaseDiscountAmount($baseTotalDiscountAmount); $address->setBaseSubtotalWithDiscount($baseSubtotalWithDiscount); if (!$hasDiscount) { $quote->setCouponCode(null); } $address->setGrandTotal($address->getGrandTotal() - $address->getDiscountAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() - $address->getBaseDiscountAmount()); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $store = $address->getQuote()->getStore(); $address->setTaxAmount(0); $address->setBaseTaxAmount(0); $tax = Mage::getModel('tax/rate_data')->setCustomerClassId($address->getQuote()->getCustomerTaxClassId()); /* @var $tax Mage_Tax_Model_Rate_Data */ $taxAddress = $address; switch (Mage::getStoreConfig('sales/tax/based_on')) { case 'billing': $taxAddress = $address->getQuote()->getBillingAddress(); case 'shipping': $tax->setCountryId($taxAddress->getCountryId())->setRegionId($taxAddress->getRegionId())->setPostcode($taxAddress->getPostcode()); break; case 'origin': $tax->setCountryId(Mage::getStoreConfig('shipping/origin/country_id', $store))->setRegionId(Mage::getStoreConfig('shipping/origin/region_id', $store))->setPostcode(Mage::getStoreConfig('shipping/origin/postcode', $store)); break; } foreach ($address->getAllItems() as $item) { $tax->setProductClassId($item->getProduct()->getTaxClassId()); $rate = $tax->getRate(); $item->setTaxPercent($rate); $item->calcTaxAmount(); $address->setTaxAmount($address->getTaxAmount() + $item->getTaxAmount()); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $item->getBaseTaxAmount()); } $shippingTaxClass = Mage::getStoreConfig('sales/tax/shipping_tax_class', $store); if ($shippingTaxClass) { $tax->setProductClassId($shippingTaxClass); if ($rate = $tax->getRate()) { $shippingTax = $address->getShippingAmount() * $rate / 100; $shippingBaseTax = $address->getBaseShippingAmount() * $rate / 100; $shippingTax = $store->roundPrice($shippingTax); $shippingBaseTax = $store->roundPrice($shippingBaseTax); $address->setTaxAmount($address->getTaxAmount() + $shippingTax); $address->setBaseTaxAmount($address->getBaseTaxAmount() + $shippingBaseTax); } } $address->setGrandTotal($address->getGrandTotal() + $address->getTaxAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBaseTaxAmount()); return $this; }
/** * Collect totals information about shipping * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Sales_Model_Quote_Address_Total_Shipping */ public function collect(Mage_Sales_Model_Quote_Address $address) { $_code = 'customshippingrate'; $method = $address->getShippingMethod(); if ($method == $_code) { $amountPrice = $address->getQuote()->getStore()->convertPrice($address->getBaseShippingAmount(), false); if (Mage::helper('customshippingrate')->isMage13()) { $address->setShippingAmount($amountPrice); $address->setBaseShippingAmount($address->getBaseShippingAmount()); $address->setGrandTotal($address->getGrandTotal() + $address->getShippingAmount()); $address->setBaseGrandTotal($address->getBaseGrandTotal() + $address->getBaseShippingAmount()); } else { $this->_setAddress($address); $this->_setAmount($amountPrice); $this->_setBaseAmount($address->getBaseShippingAmount()); } return $this; } else { return parent::collect($address); } }
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; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $address->setBaseCodFee(0); $address->setCodFee(0); $address->setCodTaxAmount(0); $address->setBaseCodTaxAmount(0); $collection = $address->getQuote()->getPaymentsCollection(); if ($collection->count() <= 0 || $address->getQuote()->getPayment()->getMethod() == null) { return $this; } $paymentMethod = $address->getQuote()->getPayment()->getMethodInstance(); if ($paymentMethod->getCode() != 'cashondelivery') { return $this; } $items = $address->getAllItems(); //print_r($address->getAddressType()); //print_r(count($items)); if (!count($items)) { //return $this; } $baseTotal = $address->getBaseGrandTotal(); $baseCodFee = $paymentMethod->getAddressCodFee($address); if (!$baseCodFee > 0) { return $this; } // adress is the reference for grand total $quote = $address->getQuote(); $store = $quote->getStore(); $baseTotal += $baseCodFee; $address->setBaseCodFee($baseCodFee); $address->setCodFee($store->convertPrice($baseCodFee, false)); // update totals $address->setBaseGrandTotal($baseTotal); $address->setGrandTotal($store->convertPrice($baseTotal, false)); //Updating cod tax if it is already included into a COD fee $baseCodTaxAmount = $paymentMethod->getAddressCodTaxAmount($address); $address->setBaseCodTaxAmount($baseCodTaxAmount); $address->setCodTaxAmount($store->convertPrice($baseCodTaxAmount, false)); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $address->setBaseCodFee(0); $address->setCodFee(0); $address->setCodTaxAmount(0); $address->setBaseCodTaxAmount(0); $paymentMethod = Mage::app()->getFrontController()->getRequest()->getParam('payment'); $paymentMethod = Mage::app()->getStore()->isAdmin() && isset($paymentMethod['method']) ? $paymentMethod['method'] : null; if ($paymentMethod != 'cashondelivery' && (!count($address->getQuote()->getPaymentsCollection()) || !$address->getQuote()->getPayment()->hasMethodInstance())) { return $this; } $paymentMethod = $address->getQuote()->getPayment()->getMethodInstance(); if ($paymentMethod->getCode() != 'cashondelivery') { return $this; } $items = $address->getAllItems(); if (!count($items)) { return $this; } $baseTotal = $address->getBaseGrandTotal(); $baseCodFee = $paymentMethod->getAddressCodFee($address); if (!$baseCodFee > 0) { return $this; } // adress is the reference for grand total $quote = $address->getQuote(); $store = $quote->getStore(); $baseTotal += $baseCodFee; $address->setBaseCodFee($baseCodFee); $address->setCodFee($store->convertPrice($baseCodFee, false)); // update totals $address->setBaseGrandTotal($baseTotal); $address->setGrandTotal($store->convertPrice($baseTotal, false)); //Updating cod tax if it is already included into a COD fee $baseCodTaxAmount = $paymentMethod->getAddressCodTaxAmount($address); $address->setBaseCodTaxAmount($baseCodTaxAmount); $address->setCodTaxAmount($store->convertPrice($baseCodTaxAmount, false)); return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { $paymentMethod = Mage::app()->getFrontController()->getRequest()->getParam('payment'); $paymentMethod = Mage::app()->getStore()->isAdmin() && isset($paymentMethod['method']) ? $paymentMethod['method'] : null; if ($paymentMethod !== 'payexinvoice' && (!count($address->getQuote()->getPaymentsCollection()) || !$address->getQuote()->getPayment()->hasMethodInstance())) { return $this; } $paymentMethod = $address->getQuote()->getPayment()->getMethodInstance(); if ($paymentMethod->getCode() !== 'payexinvoice') { return $this; } $items = $address->getAllItems(); if (!count($items)) { return $this; } $address->setBasePayexinvoicePaymentFee(0); $address->setPayexinvoicePaymentFee(0); // Get totals $address1 = clone $address; foreach ($address1->getTotalCollector()->getCollectors() as $model) { if ($model->getCode() !== $this->getCode()) { $model->collect($address1); } } // Address is the reference for grand total // Calculated total is $address1->getGrandTotal() $fee = (double) Mage::getSingleton('payexinvoice/fee')->getPaymentFee($address1); if (!$fee) { return $this; } $baseTotal = $address->getBaseGrandTotal(); $baseTotal += $fee; $address->setBasePayexinvoicePaymentFee($fee); $address->setPayexinvoicePaymentFee($address->getQuote()->getStore()->convertPrice($fee, false)); // update totals $address->setBaseGrandTotal($baseTotal); $address->setGrandTotal($address->getQuote()->getStore()->convertPrice($baseTotal, false)); return $this; }