public function updatePaypalTotal($evt) { $cart = $evt->getPaypalCart(); $salesEntity = $cart->getSalesEntity(); try { if (!$salesEntity->getIsVirtual()) { $items = $salesEntity->getAllVisibleItems(); if (!count($items)) { return $this; } $result = false; if ($salesEntity instanceof Mage_Sales_Model_Order) { $quote = Mage::getModel('sales/quote')->load($salesEntity->getQuoteId()); if ($quote->getId()) { $address = $quote->getShippingAddress(); } else { throw new Exception('No qoute found'); } $currencyFrom = Mage::getModel('directory/currency')->load($salesEntity->getOrderCurrencyCode()); } else { $address = $salesEntity->getShippingAddress(); $currencyFrom = Mage::getModel('directory/currency')->load($salesEntity->getQuoteCurrencyCode()); } if (Dutycalculator_Charge_Model_Importdutytaxes::canApply($address)) { $result = Dutycalculator_Charge_Model_Importdutytaxes::getAmount($salesEntity); } if ($result) { if ($result['failed_calculation']) { $salesEntity->setDeliveryDutyType(Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDU); } else { if ($salesEntity->getDeliveryDutyUserChoice()) { $salesEntity->setDeliveryDutyType($salesEntity->getDeliveryDutyUserChoice()); } else { $salesEntity->setDeliveryDutyType(Mage::getStoreConfig('dc_charge_extension/dccharge/delivery-type') !== Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDU ? Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDP : Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDU); } // $salesEntity->setDeliveryDutyType(Mage::getStoreConfig('dc_charge_extension/dccharge/delivery-type')); } /* @var $helper Dutycalculator_Charge_Helper_Data */ $helper = Mage::helper('dccharge'); $currencyTo = $salesEntity->getStore()->getBaseCurrency(); $balance = $helper->convertPrice($currencyFrom, $currencyTo, $result['total']); if ($salesEntity->getDeliveryDutyType() == Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDP) { $cart->updateTotal(Mage_Paypal_Model_Cart::TOTAL_SHIPPING, $balance); } } } } catch (Exception $ex) { $salesEntity->setDeliveryDutyType(Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDU); } return $this; }
public function fetch(Mage_Sales_Model_Quote_Address $address) { if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) { if (Dutycalculator_Charge_Model_Importdutytaxes::canApply($address)) { $amt = $address->getImportDutyTax(); $title = $address->getQuote()->getDeliveryDutyType() == Dutycalculator_Charge_Helper_Data::DC_DELIVERY_TYPE_DDU ? $address->getQuote()->getFailedCalculation() ? 'Any import duty & taxes are paid upon delivery and are not included in the final price' : 'Estimated import duty & taxes (Not included in grand total, paid upon delivery)' : 'Import duty and taxes'; $address->addTotal(array('code' => $this->getCode(), 'title' => $title, 'value' => $amt)); } } return $this; }