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;
 }