public function saveSurchargeXmlToSession($address, $surcharge_config) { $_xml = null; //Do nothing if no cards are configured for surcharge if ($surcharge_config && count($surcharge_config)) { $xml = new Varien_Simplexml_Element('<surcharges />'); $quote = $address->getQuote(); $store = $quote->getStore(); $shipping = $address->getShippingAmount(); foreach ($surcharge_config as $rule) { if ((string) $quote->getPayment()->getConfigData('trncurrency') == 'store') { $chargeAmountNoTax = $address->getSubtotal(); } else { $chargeAmountNoTax = $address->getBaseSubtotal(); } //Apply TAX if applies $taxClassId = (int) Mage::getStoreConfig('payment/sagepaysuite/surcharge_taxclass', $store); $tax_percent = 0; if ($taxClassId !== 0) { $trequest = Mage::getSingleton('tax/calculation')->getRateRequest($quote->getBillingAddress(), $quote->getShippingAddress(), FALSE, $store); $tax_percent = Mage::getSingleton('tax/calculation')->getRate($trequest->setProductClassId($taxClassId)); } if ($rule['chargetype'] == 'fixed') { $amount = $rule['amount']; } else { //Percent $amount = $rule['amount'] * ($chargeAmountNoTax + $shipping + $address->getTaxAmount()) / 100; } //Adding TAX if ($tax_percent) { $chargeTaxAmount = $tax_percent * $amount / 100; $amount = $amount + $chargeTaxAmount; } $amount = number_format($amount, 2, '.', ''); //force all to fixed amount $rule['chargetype'] = "fixed"; $nodi = $xml->addChild('surcharge', ''); $nodi->addChild('paymentType', $rule['creditcard']); $nodi->addChild($rule['chargetype'], $amount); } $_xml = str_replace("\n", "", trim($xml->asXml())); } Mage::getSingleton('sagepaysuite/session')->setSurchargeXml($_xml); }
/** * Generate sitemap xml * * @return string */ public function generateXml() { $storeId = $this->getStoreId(); $date = date('Y-m-d'); $simplexml = new Varien_Simplexml_Element('<?xml version="1.0" encoding="UTF-8"?><urlset></urlset>'); $simplexml->addAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9'); /** * Generate categories sitemap */ $changefreq = (string) Mage::getStoreConfig('sitemap/category/changefreq'); $priority = (string) Mage::getStoreConfig('sitemap/category/priority'); $categories = Mage::getModel('catalog/category')->setStoreId($storeId)->getCollection()->addAttributeToSelect('*')->load(); foreach ($categories as $category) { $category = Mage::getModel('catalog/category')->load($category->getId()); if (!$category->getIsActive()) { continue; } $url = $simplexml->addChild('url'); $url->addChild('loc', $category->getCategoryUrl()); $url->addChild('lastmod', $date); $url->addChild('changefreq', $changefreq); $url->addChild('priority', $priority); } /** * Generate products sitemap */ $changefreq = (string) Mage::getStoreConfig('sitemap/product/changefreq'); $priority = (string) Mage::getStoreConfig('sitemap/product/priority'); $products = Mage::getModel('catalog/product')->setStoreId($storeId)->getCollection()->addAttributeToSelect('*'); Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); $products->load(); foreach ($products as $product) { $product = Mage::getModel('catalog/product')->load($product->getId()); $url = $simplexml->addChild('url'); $url->addChild('loc', $product->getProductUrl()); $url->addChild('lastmod', $date); $url->addChild('changefreq', $changefreq); $url->addChild('priority', $priority); } /** * Generate CMS pages sitemap */ $changefreq = (string) Mage::getStoreConfig('sitemap/page/changefreq'); $priority = (string) Mage::getStoreConfig('sitemap/page/priority'); $pages = Mage::getModel('cms/page')->setStoreId($storeId)->getCollection(); foreach ($pages as $page) { $page = Mage::getModel('cms/page')->load($page->getId()); $url = $simplexml->addChild('url'); $url->addChild('loc', Mage::getBaseUrl() . $page->getIdentifier()); $url->addChild('lastmod', $date); $url->addChild('changefreq', $changefreq); $url->addChild('priority', $priority); } // record last generation time $this->setSitemapTime(now()); $this->save(); return $simplexml->asXml(); }