Results 1 to 9 of 9
  1. #1
    Join Date
    Jan 2013
    Posts
    811
    Plugin Contributions
    0

    Default Adding Total Insured Value to fedex shipping module

    how do i add in total insured value to this nonsoap fedex module
    Code:
    <?php
    
    /**
     * Ceon Advanced Shipper Fedex Calculation class. 
     *
     * @package     ceon_advanced_shipper
     * @author      Waqas Hussain <waqas20######################>
     * @author      Conor Kerr <[email protected]>
     * @copyright   Copyright 2010-2012 Waqas Hussain
     * @copyright   Copyright 2007-2012 Ceon
     * @copyright   Portions Copyright 2003-2006 Zen Cart Development Team
     * @copyright   Portions Copyright 2003 osCommerce
     * @link        http://dev.ceon.net/web/zen-cart/advanced-shipper
     * @license     http://www.gnu.org/copyleft/gpl.html   GNU Public License V2.0
     * @version     $Id: class.AdvancedShipperFedExCalculator.php 981 2012-03-27 16:28:46Z conor $
     */
    
    // {{{ AdvancedShipperFedExCalculator
    
    /**
     * Connects to FedEx online calculator and gets quotes for the shipping methods enabled in the
     * configuration.
     *
     * @author      Waqas Hussain <waqas20######################>
     * @author      Conor Kerr <[email protected]>
     * @copyright   Copyright 2010-2012 Waqas Hussain
     * @copyright   Copyright 2007-2012 Ceon
     * @copyright   Portions Copyright 2003-2006 Zen Cart Development Team
     * @copyright   Portions Copyright 2003 osCommerce
     * @license     http://www.gnu.org/copyleft/gpl.html   GNU Public License V2.0
     */
    class AdvancedShipperFedExCalculator
    {
    	// {{{ properties
    	
    	/**
    	 * The configuration settings for this instance.
    	 *
    	 * @var     array
    	 * @access  public
    	 */
    	var $_config = null;
    	
    	// }}}
    	
    	
    	// {{{ Class Constructor
    	
    	/**
    	 * Create a new instance of the AdvancedShipperFedExCalculator class
    	 *
    	 * @param   array     $fedex_config   An associative array with the configuration settings for
    	 *                                    this instance.
    	 */
    	function AdvancedShipperFedExCalculator($fedex_config)
    	{
    		$this->_config = $fedex_config;
    	}
    	
    	// }}}
    	
    	
    	// {{{ quote()
    
    	/**
    	 * Contacts Fedex and gets a quote for the specified weight and configuration settings.
    	 *
    	 * @access  public
    	 * @param   float     $weight    The weight of the package to be shipped.
    	 * @param   float     $price     The total price of the items in package to be shipped.
    	 * @param   array     $min_max   Any minimum/maximum limits which should be applied to the final
    	 *                               rate calculated.
    	 * @return  none
    	 */
    	function quote($weight, $price, $min_max)
    	{
    		global $order;
    		
    		if ($weight < 0.1) {
    			$weight = 0.1;
    		}
    		
    		$rate_info = $this->_getQuote($weight, $min_max);
    		
    		return $rate_info;
    	}
    	
    	// }}}
    	
    	
    	// {{{ _getQuote()
    	
    	/**
    	 * Contacts FedEx, gets a quote, parses the response and builds the list of quotes.
    	 *
    	 * @access  protected
    	 * @return  array|boolean   Array of results or boolean false if no results.
    	 */
    	function _getQuote($weight, $min_max)
    	{
    		global $db, $order, $currencies;
    		
    		if (strtolower($this->_config['server']) == 'p') {
    			$fedex_url = 'https://gateway.fedex.com:443/xml';
    		} else {
    			$fedex_url = 'https://gatewaybeta.fedex.com:443/xml';
    		}
    		
    		$fedex_key = $this->_config['fedex_key'];
    		$fedex_password = $this->_config['fedex_password'];
    		$fedex_account = $this->_config['fedex_account'];
    		$fedex_meter = $this->_config['fedex_meter'];
    		
    		$shipper_country_sql = "
    			SELECT
    				countries_iso_code_2
                FROM
    				" . TABLE_COUNTRIES . "
                WHERE
    				countries_id = '" . (int) $this->_config['source_country'] . "';";
    		
            $shipper_country_result = $db->Execute($shipper_country_sql);
    		
    		if (!$shipper_country_result->EOF) {
    			$shipper_country = strtoupper($shipper_country_result->fields['countries_iso_code_2']);
    		}
    		
    		$shipper_postcode = $this->_config['source_postcode'];
    		$recipient_country = $order->delivery['country']['iso_code_2'];
    		$recipient_postcode = $order->delivery['postcode'];
    		$timestamp = gmdate('c');//'2010-08-06T21:48:17+06:00'
    		$saturday_delivery = ($this->_config['shipping_saturday'] != 0);
    		
    		//BOF Residential Company Name Check
            $residential = ($order->delivery['company'] != '' ? 'false' : 'true');
            //EOF Residential Company Name Check
    		
    		$drop_off_type = strtoupper($this->_config['drop_off_type']);
    		
    		$packaging_type = strtoupper($this->_config['packaging_type']);
    		
    		$get_account_rates = ($this->_config['rate_request_types'] == 1 ||
    			$this->_config['rate_request_types'] == 3 ? true: false);
    		
    		$get_list_rates = ($this->_config['rate_request_types'] == 2 ||
    			$this->_config['rate_request_types'] == 3 ? true: false);
    		
    		$weight_units = strtoupper($this->_config['weight_units']);		
    		
    		$request = "
    <RateRequest xmlns='http://fedex.com/ws/rate/v16'>
    	<WebAuthenticationDetail>
    		<UserCredential>
    			<Key>$fedex_key</Key>
    			<Password>$fedex_password</Password>
    		</UserCredential>
    	</WebAuthenticationDetail>
    	<ClientDetail>
    		<AccountNumber>$fedex_account</AccountNumber>
    		<MeterNumber>$fedex_meter</MeterNumber>
    	</ClientDetail>
    	<TransactionDetail>
    		<CustomerTransactionId>ACTIVESHIPPING</CustomerTransactionId>
    	</TransactionDetail>
    	
    	<Version>
    		<ServiceId>crs</ServiceId>
    		<Major>16</Major>
    		<Intermediate>0</Intermediate>
    		<Minor>0</Minor>
    	</Version>
    	
    	<ReturnTransitAndCommit>true</ReturnTransitAndCommit>
    	" . ($saturday_delivery ? '<VariableOptions>SATURDAY_DELIVERY</VariableOptions>' : '') . "
    	
    	<RequestedShipment>
    		<ShipTimestamp>$timestamp</ShipTimestamp>
    		<DropoffType>$drop_off_type</DropoffType>
    		<PackagingType>$packaging_type</PackagingType>
    		
    		<Shipper>
    			<Address>
    				<PostalCode>$shipper_postcode</PostalCode>
    				<CountryCode>$shipper_country</CountryCode>
    			</Address>
    		</Shipper>
    		<Recipient>
    			<Address>
    			    <StreetLines>$recipient_street_address</StreetLines>
    				<City>$recipient_city</City>
    				<StateOrProvinceCode>$recipient_state</StateOrProvinceCode>
    				<PostalCode>$recipient_postcode</PostalCode>
    				<CountryCode>$recipient_country</CountryCode>	
    			    <Residential>".$residential."</Residential>
    			</Address>
    		</Recipient>
    		<ShippingChargesPayment>
    <PaymentType>SENDER</PaymentType>
    <Payor>
    <AssociatedAccounts>
    <AccountNumber></AccountNumber>
    </AssociatedAccounts>
    </Payor>
    </ShippingChargesPayment>
    		" . ($get_account_rates ? '<RateRequestTypes>NONE</RateRequestTypes>' : '') . "
    		" . ($get_list_rates ? '<RateRequestTypes>LIST</RateRequestTypes>' : '') . "
    		
    		<CustomerSelectedActualRateType>PAYOR_LIST_PACKAGE</CustomerSelectedActualRateType>
    		<PackageCount>1</PackageCount>
    		<RequestedPackageLineItems>
    		<SequenceNumber>1</SequenceNumber>
            <GroupPackageCount>1</GroupPackageCount>
    			<Weight>
    				<Units>$weight_units</Units>
    				<Value>$weight</Value>
    			</Weight>
    			<Dimensions>
    				<Length>1</Length>
    				<Width>1</Width>
    				<Height>1</Height>
    				<Units>IN</Units>
    			</Dimensions>
    		</RequestedPackageLineItems>
    	</RequestedShipment>
    </RateRequest>";
    		
    		advshipper::debug("Data being sent to FedEx: <br />\n<br />\n" .
    			nl2br(htmlentities($request)) . "<br />\n<br />\n", true);
    		
    		$body = $this->_post($fedex_url, $request);
    		
    		if (!$body) {
    			advshipper::debug('Failed to connect to FedEx' . "\n\n");
    			
    			return array('error' => 'Failed to connect to FedEx');
    		}
    		
    		// Strip namespace prefixes
    		$body =
    			preg_replace(array('/<[a-zA-Z0-9]+:/', '/<\/[a-zA-Z0-9]+:/'), array('<', '</'), $body); 
    		
    		advshipper::debug("Data received from FedEx (with namespaces removed): <br />\n<br />\n" .
    			nl2br(htmlentities($body)) . "<br />\n<br />\n", true);
    		
    		$xml = @simplexml_load_string($body);
    		
    		if (!$xml) {
    			advshipper::debug('Unable to parse XML returned from FedEx' . "<br />\n<br />\n");
    			
    			return array(
    				'error' => 'Invalid response from FedEx: '. $body
    				);
    		}
    		
    		if (strtolower($xml->getName()) == 'fault') {
    			$error_code = $xml->detail->fault->errorCode;
    			$reason = $xml->detail->fault->reason;
    			
    			return array(
    				'error' => 'FedEx: ' . $error_code . ': ' . $reason
    				);
    		}
    		
    		$severity = $xml->HighestSeverity;
    		$message = $xml->Notifications->Message;
    		
    		// Check for problem with postcode
    		if ($severity == 'ERROR' &&
    				strpos($message, 'Destination postal code missing or invalid') !== false) {
    			return array(
    				'error' => MODULE_ADVANCED_SHIPPER_ERROR_INVALID_POSTCODE
    				);
    		}
    		
    		if ($severity != 'SUCCESS' && $severity != 'NOTE' && $severity != 'WARNING') {
    			advshipper::debug('Error occured when attempting to get response from FedEx. Severity' .
    				' was ' . $severity . "<br />\n<br />\n");
    			
    			return array(
    				'error' => "FedEx: $message"
    				);
    		}
    		
    		$rate_info = array();
    		
    		foreach ($xml->RateReplyDetails as $child) {
    			$service_type = trim(strtolower((string) $child->ServiceType));
    			
    			$service_name = constant('MODULE_ADVANCED_SHIPPER_TEXT_FEDEX_' .
    				str_replace('FEDEX_', '', strtoupper($service_type)));
    			
    			if ($this->_config['shipping_service_' . $service_type] == 0) {
    				advshipper::debug('FedEx ' . $service_name . ' service not to be offered as it is' .
    					" not enabled in the FedEx configuration for the region.<br />\n<br />\n",
    					true);
    				
    				continue;
    			}
    			
    			if ($child->AppliedOptions == 'SATURDAY_DELIVERY') {
    				$service_name .= MODULE_ADVANCED_SHIPPER_TEXT_FEDEX_SATURDAY_DELIVERY;
    			}
    			
    			$rate = (string) $child->RatedShipmentDetails->ShipmentRateDetail->TotalNetCharge->
    				Amount;
    			
    			//If the method is configured to use list rates find the payor_list_package rate otherwise use account rates - RB
    			if ($get_list_rates == '1') {
    				foreach ($child->RatedShipmentDetails as $ratedetail) {
    					$ratetype =	$ratedetail->ShipmentRateDetail->RateType;
    					if ($ratetype == 'PAYOR_LIST_PACKAGE') {
    					$rate = (string) $ratedetail->ShipmentRateDetail->TotalNetCharge->Amount;
    					}
    				}
    			}
    			//End of account rate change
    			
    			// Rate is always returned in currency of account holder. Must convert to currency in
    			// use
    			$rate_currency = strtoupper((string) $child->RatedShipmentDetails->ShipmentRateDetail->
    				TotalNetCharge->Currency);
    			
    			// Get the current currency in which the customer is viewing prices
    			$current_display_currency = strtoupper($_SESSION['currency']);
    			
    			if ($rate_currency != $current_display_currency) {
    				// Must convert from FedEx currency to base currency
    				$rate_currency_conv_rate = $currencies->get_value($rate_currency);
    				
    				if (is_null($rate_currency_conv_rate) || !is_numeric($rate_currency_conv_rate)) {
    					// FedEx currency doesn't have a conversion value, can't proceed!
    					return array(
    						'error' => sprintf(
    							MODULE_ADVANCED_SHIPPER_ERROR_FEDEX_CURRENCY_CONV_VALUE_MISSING,
    							$rate_currency)
    						);
    				} else if ($rate_currency_conv_rate <= 0) {
    					return array(
    						'error' => sprintf(
    							MODULE_ADVANCED_SHIPPER_ERROR_FEDEX_CURRENCY_CONV_VALUE_INVALID,
    							$rate_currency)
    						);
    				}
    				
    				$rate_base_conv_rate = 1 / $currencies->get_value($rate_currency);
    				
    				$rate = number_format($rate * $rate_base_conv_rate, 2, '.', '');
    			}
    			
    			if ($min_max != false) {
    				// Apply the limit(s) to the rate
    				$rate_limited = advshipper::calcMinMaxValue($rate, $min_max['min'],
    					$min_max['max']);
    				
    				if ($rate_limited != $rate) {
    					$rate = $rate_limited;
    				}
    			}
    			
    			$rate_info[] = array(
    				'rate' => $rate,
    				'rate_components_info' => array(
    					array(
    						'value_band_total' => $rate,
    						'individual_value' => null,
    						'num_individual_values' => $weight,
    						'additional_charge' => null,
    						'calc_method' => ADVSHIPPER_CALC_METHOD_FEDEX
    						)
    					),
    				'rate_extra_title' => MODULE_ADVANCED_SHIPPER_TEXT_FEDEX_TITLE_PREFIX .
    					$service_name
    				);
    		}
    		
    		if (count($rate_info) == 0) {
    			// No quotes
    			return false;
    		}
    		
    		return $rate_info;
    	}
    	
    	// }}}
    	
    	
    	// {{{ _post()
    	
    	/**
    	 * Do an HTTP POST call on a URL with given data.
    	 *
    	 * @access  protected
    	 * @param   string    $url   The URL to send the request to.
    	 * @param   string    $data  The data to send in the request.
    	 * @return  string    Data or false on error
    	 */
    	function _post($url, $data)
    	{
    		$ch = curl_init($url) or die('Failed to load curl');
    		
    		curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    		//curl_set_opt($ch, CURLOPT_HEADER, FALSE);
    		curl_setopt($ch, CURLOPT_POST, TRUE);
    		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    		
    		$data = curl_exec($ch);
    		curl_close($ch);
    		
    		return $data;
    	}
    	
    	// }}}
    }
    
    // }}}
    
    ?>

  2. #2
    Join Date
    Jan 2013
    Posts
    811
    Plugin Contributions
    0

    Default Re: Adding Total Insured Value to fedex shipping module

    FedEx Lost Packages Totaling $400.00 + and only writes a check for $100.00 for reimbursement. Because i didnt have a total insured Value, so id like to add every package gets insured

  3. #3
    Join Date
    Jan 2013
    Posts
    811
    Plugin Contributions
    0

    Default Re: Adding Total Insured Value to fedex shipping module

    ive tried this, Noted in Red below
    Code:
    <?php
    
    /**
     * Ceon Advanced Shipper Fedex Calculation class. 
     *
     * @package     ceon_advanced_shipper
     * @author      Waqas Hussain <waqas20######################>
     * @author      Conor Kerr <[email protected]>
     * @copyright   Copyright 2010-2012 Waqas Hussain
     * @copyright   Copyright 2007-2012 Ceon
     * @copyright   Portions Copyright 2003-2006 Zen Cart Development Team
     * @copyright   Portions Copyright 2003 osCommerce
     * @link        http://dev.ceon.net/web/zen-cart/advanced-shipper
     * @license     http://www.gnu.org/copyleft/gpl.html   GNU Public License V2.0
     * @version     $Id: class.AdvancedShipperFedExCalculator.php 981 2012-03-27 16:28:46Z conor $
     */
    
    // {{{ AdvancedShipperFedExCalculator
    
    /**
     * Connects to FedEx online calculator and gets quotes for the shipping methods enabled in the
     * configuration.
     *
     * @author      Waqas Hussain <waqas20######################>
     * @author      Conor Kerr <[email protected]>
     * @copyright   Copyright 2010-2012 Waqas Hussain
     * @copyright   Copyright 2007-2012 Ceon
     * @copyright   Portions Copyright 2003-2006 Zen Cart Development Team
     * @copyright   Portions Copyright 2003 osCommerce
     * @license     http://www.gnu.org/copyleft/gpl.html   GNU Public License V2.0
     */
    class AdvancedShipperFedExCalculator
    {
    	// {{{ properties
    	
    	/**
    	 * The configuration settings for this instance.
    	 *
    	 * @var     array
    	 * @access  public
    	 */
    	var $_config = null;
    	
    	// }}}
    	
    	
    	// {{{ Class Constructor
    	
    	/**
    	 * Create a new instance of the AdvancedShipperFedExCalculator class
    	 *
    	 * @param   array     $fedex_config   An associative array with the configuration settings for
    	 *                                    this instance.
    	 */
    	function AdvancedShipperFedExCalculator($fedex_config)
    	{
    		$this->_config = $fedex_config;
    	}
    	
    	// }}}
    	
    	
    	// {{{ quote()
    
    	/**
    	 * Contacts Fedex and gets a quote for the specified weight and configuration settings.
    	 *
    	 * @access  public
    	 * @param   float     $weight    The weight of the package to be shipped.
    	 * @param   float     $price     The total price of the items in package to be shipped.
    	 * @param   array     $min_max   Any minimum/maximum limits which should be applied to the final
    	 *                               rate calculated.
    	 * @return  none
    	 */
    	function quote($weight, $price, $min_max)
    	{
    		global $order;
    		
    		if ($weight < 0.1) {
    			$weight = 0.1;
    		}
    		
    		$rate_info = $this->_getQuote($weight, $min_max);
    		
    		return $rate_info;
    	}
    	
    	// }}}
    	
    	
    	// {{{ _getQuote()
    	
    	/**
    	 * Contacts FedEx, gets a quote, parses the response and builds the list of quotes.
    	 *
    	 * @access  protected
    	 * @return  array|boolean   Array of results or boolean false if no results.
    	 */
    	function _getQuote($weight, $min_max)
    	{
    		global $db, $order, $currencies;
    		
    		if (strtolower($this->_config['server']) == 'p') {
    			$fedex_url = 'https://gateway.fedex.com:443/xml';
    		} else {
    			$fedex_url = 'https://gatewaybeta.fedex.com:443/xml';
    		}
    		
    		$fedex_key = $this->_config['fedex_key'];
    		$fedex_password = $this->_config['fedex_password'];
    		$fedex_account = $this->_config['fedex_account'];
    		$fedex_meter = $this->_config['fedex_meter'];
    		
    		$shipper_country_sql = "
    			SELECT
    				countries_iso_code_2
                FROM
    				" . TABLE_COUNTRIES . "
                WHERE
    				countries_id = '" . (int) $this->_config['source_country'] . "';";
    		
            $shipper_country_result = $db->Execute($shipper_country_sql);
    		
    		if (!$shipper_country_result->EOF) {
    			$shipper_country = strtoupper($shipper_country_result->fields['countries_iso_code_2']);
    		}
    		
    		$shipper_postcode = $this->_config['source_postcode'];
    		$recipient_country = $order->delivery['country']['iso_code_2'];
    		$recipient_postcode = $order->delivery['postcode'];
    		$timestamp = gmdate('c');//'2010-08-06T21:48:17+06:00'
    		$saturday_delivery = ($this->_config['shipping_saturday'] != 0);
    		
    		//BOF Residential Company Name Check
            $residential = ($order->delivery['company'] != '' ? 'false' : 'true');
            //EOF Residential Company Name Check
    		
    		$drop_off_type = strtoupper($this->_config['drop_off_type']);
    		
    		$packaging_type = strtoupper($this->_config['packaging_type']);
    		
    		$get_account_rates = ($this->_config['rate_request_types'] == 1 ||
    			$this->_config['rate_request_types'] == 3 ? true: false);
    		
    		$get_list_rates = ($this->_config['rate_request_types'] == 2 ||
    			$this->_config['rate_request_types'] == 3 ? true: false);
    		
    		$weight_units = strtoupper($this->_config['weight_units']);	
    
            $totals = $_SESSION['cart']->show_total();
            $this->_setInsuranceValue($totals);		
    		
    		$request = "
    <RateRequest xmlns='http://fedex.com/ws/rate/v16'>
    	<WebAuthenticationDetail>
    		<UserCredential>
    			<Key>$fedex_key</Key>
    			<Password>$fedex_password</Password>
    		</UserCredential>
    	</WebAuthenticationDetail>
    	<ClientDetail>
    		<AccountNumber>$fedex_account</AccountNumber>
    		<MeterNumber>$fedex_meter</MeterNumber>
    	</ClientDetail>
    	<TransactionDetail>
    		<CustomerTransactionId>ACTIVESHIPPING</CustomerTransactionId>
    	</TransactionDetail>
    	
    	<Version>
    		<ServiceId>crs</ServiceId>
    		<Major>16</Major>
    		<Intermediate>0</Intermediate>
    		<Minor>0</Minor>
    	</Version>
    	
    	<ReturnTransitAndCommit>true</ReturnTransitAndCommit>
    	" . ($saturday_delivery ? '<VariableOptions>SATURDAY_DELIVERY</VariableOptions>' : '') . "
    	
    	<RequestedShipment>
    		<ShipTimestamp>$timestamp</ShipTimestamp>
    		<DropoffType>$drop_off_type</DropoffType>
    		<PackagingType>$packaging_type</PackagingType>
    		<TotalInsuredValue>$totals</TotalInsuredValue>
    		
    		<Shipper>
    			<Address>
    				<PostalCode>$shipper_postcode</PostalCode>
    				<CountryCode>$shipper_country</CountryCode>
    			</Address>
    		</Shipper>
    		<Recipient>
    			<Address>
    			    <StreetLines>$recipient_street_address</StreetLines>
    				<City>$recipient_city</City>
    				<StateOrProvinceCode>$recipient_state</StateOrProvinceCode>
    				<PostalCode>$recipient_postcode</PostalCode>
    				<CountryCode>$recipient_country</CountryCode>	
    			    <Residential>".$residential."</Residential>
    			</Address>
    		</Recipient>
    		<ShippingChargesPayment>
    <PaymentType>SENDER</PaymentType>
    <Payor>
    <AssociatedAccounts>
    <AccountNumber></AccountNumber>
    </AssociatedAccounts>
    </Payor>
    </ShippingChargesPayment>
    		" . ($get_account_rates ? '<RateRequestTypes>NONE</RateRequestTypes>' : '') . "
    		" . ($get_list_rates ? '<RateRequestTypes>LIST</RateRequestTypes>' : '') . "
    		
    		<CustomerSelectedActualRateType>PAYOR_LIST_PACKAGE</CustomerSelectedActualRateType>
    		<PackageCount>1</PackageCount>
    		<RequestedPackageLineItems>
    		<SequenceNumber>1</SequenceNumber>
            <GroupPackageCount>1</GroupPackageCount>
    			<Weight>
    				<Units>$weight_units</Units>
    				<Value>$weight</Value>
    			</Weight>
    			<Dimensions>
    				<Length>1</Length>
    				<Width>1</Width>
    				<Height>1</Height>
    				<Units>IN</Units>
    			</Dimensions>
    		</RequestedPackageLineItems>
    	</RequestedShipment>
    </RateRequest>";
    		
    		advshipper::debug("Data being sent to FedEx: <br />\n<br />\n" .
    			nl2br(htmlentities($request)) . "<br />\n<br />\n", true);
    		
    		$body = $this->_post($fedex_url, $request);
    		
    		if (!$body) {
    			advshipper::debug('Failed to connect to FedEx' . "\n\n");
    			
    			return array('error' => 'Failed to connect to FedEx');
    		}
    		
    		// Strip namespace prefixes
    		$body =
    			preg_replace(array('/<[a-zA-Z0-9]+:/', '/<\/[a-zA-Z0-9]+:/'), array('<', '</'), $body); 
    		
    		advshipper::debug("Data received from FedEx (with namespaces removed): <br />\n<br />\n" .
    			nl2br(htmlentities($body)) . "<br />\n<br />\n", true);
    		
    		$xml = @simplexml_load_string($body);
    		
    		if (!$xml) {
    			advshipper::debug('Unable to parse XML returned from FedEx' . "<br />\n<br />\n");
    			
    			return array(
    				'error' => 'Invalid response from FedEx: '. $body
    				);
    		}
    		
    		if (strtolower($xml->getName()) == 'fault') {
    			$error_code = $xml->detail->fault->errorCode;
    			$reason = $xml->detail->fault->reason;
    			
    			return array(
    				'error' => 'FedEx: ' . $error_code . ': ' . $reason
    				);
    		}
    		
    		$severity = $xml->HighestSeverity;
    		$message = $xml->Notifications->Message;
    		
    		// Check for problem with postcode
    		if ($severity == 'ERROR' &&
    				strpos($message, 'Destination postal code missing or invalid') !== false) {
    			return array(
    				'error' => MODULE_ADVANCED_SHIPPER_ERROR_INVALID_POSTCODE
    				);
    		}
    		
    		if ($severity != 'SUCCESS' && $severity != 'NOTE' && $severity != 'WARNING') {
    			advshipper::debug('Error occured when attempting to get response from FedEx. Severity' .
    				' was ' . $severity . "<br />\n<br />\n");
    			
    			return array(
    				'error' => "FedEx: $message"
    				);
    		}
    		
    		$rate_info = array();
    		
    		foreach ($xml->RateReplyDetails as $child) {
    			$service_type = trim(strtolower((string) $child->ServiceType));
    			
    			$service_name = constant('MODULE_ADVANCED_SHIPPER_TEXT_FEDEX_' .
    				str_replace('FEDEX_', '', strtoupper($service_type)));
    			
    			if ($this->_config['shipping_service_' . $service_type] == 0) {
    				advshipper::debug('FedEx ' . $service_name . ' service not to be offered as it is' .
    					" not enabled in the FedEx configuration for the region.<br />\n<br />\n",
    					true);
    				
    				continue;
    			}
    			
    			if ($child->AppliedOptions == 'SATURDAY_DELIVERY') {
    				$service_name .= MODULE_ADVANCED_SHIPPER_TEXT_FEDEX_SATURDAY_DELIVERY;
    			}
    			
    			$rate = (string) $child->RatedShipmentDetails->ShipmentRateDetail->TotalNetCharge->
    				Amount;
    			
    			//If the method is configured to use list rates find the payor_list_package rate otherwise use account rates - RB
    			if ($get_list_rates == '1') {
    				foreach ($child->RatedShipmentDetails as $ratedetail) {
    					$ratetype =	$ratedetail->ShipmentRateDetail->RateType;
    					if ($ratetype == 'PAYOR_LIST_PACKAGE') {
    					$rate = (string) $ratedetail->ShipmentRateDetail->TotalNetCharge->Amount;
    					}
    				}
    			}
    			//End of account rate change
    			
    			// Rate is always returned in currency of account holder. Must convert to currency in
    			// use
    			$rate_currency = strtoupper((string) $child->RatedShipmentDetails->ShipmentRateDetail->
    				TotalNetCharge->Currency);
    			
    			// Get the current currency in which the customer is viewing prices
    			$current_display_currency = strtoupper($_SESSION['currency']);
    			
    			if ($rate_currency != $current_display_currency) {
    				// Must convert from FedEx currency to base currency
    				$rate_currency_conv_rate = $currencies->get_value($rate_currency);
    				
    				if (is_null($rate_currency_conv_rate) || !is_numeric($rate_currency_conv_rate)) {
    					// FedEx currency doesn't have a conversion value, can't proceed!
    					return array(
    						'error' => sprintf(
    							MODULE_ADVANCED_SHIPPER_ERROR_FEDEX_CURRENCY_CONV_VALUE_MISSING,
    							$rate_currency)
    						);
    				} else if ($rate_currency_conv_rate <= 0) {
    					return array(
    						'error' => sprintf(
    							MODULE_ADVANCED_SHIPPER_ERROR_FEDEX_CURRENCY_CONV_VALUE_INVALID,
    							$rate_currency)
    						);
    				}
    				
    				$rate_base_conv_rate = 1 / $currencies->get_value($rate_currency);
    				
    				$rate = number_format($rate * $rate_base_conv_rate, 2, '.', '');
    			}
    			
    			if ($min_max != false) {
    				// Apply the limit(s) to the rate
    				$rate_limited = advshipper::calcMinMaxValue($rate, $min_max['min'],
    					$min_max['max']);
    				
    				if ($rate_limited != $rate) {
    					$rate = $rate_limited;
    				}
    			}
    			
    			$rate_info[] = array(
    				'rate' => $rate,
    				'rate_components_info' => array(
    					array(
    						'value_band_total' => $rate,
    						'individual_value' => null,
    						'num_individual_values' => $weight,
    						'additional_charge' => null,
    						'calc_method' => ADVSHIPPER_CALC_METHOD_FEDEX
    						)
    					),
    				'rate_extra_title' => MODULE_ADVANCED_SHIPPER_TEXT_FEDEX_TITLE_PREFIX .
    					$service_name
    				);
    		}
    		
    		if (count($rate_info) == 0) {
    			// No quotes
    			return false;
    		}
    		
    		return $rate_info;
    	}
    	
    	// }}}
    	
    	
    	// {{{ _post()
    	
    	/**
    	 * Do an HTTP POST call on a URL with given data.
    	 *
    	 * @access  protected
    	 * @param   string    $url   The URL to send the request to.
    	 * @param   string    $data  The data to send in the request.
    	 * @return  string    Data or false on error
    	 */
    	function _post($url, $data)
    	{
    		$ch = curl_init($url) or die('Failed to load curl');
    		
    		curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    		//curl_set_opt($ch, CURLOPT_HEADER, FALSE);
    		curl_setopt($ch, CURLOPT_POST, TRUE);
    		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    		
    		$data = curl_exec($ch);
    		curl_close($ch);
    		
    		return $data;
    	}
    	
    	// }}}
    }
    
    // }}}
    
    ?>
    But getting this error
    Call to undefined method AdvancedShipperFedExCalculator::_setInsuranceValue()

  4. #4
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    69,402
    Plugin Contributions
    6

    Default Re: Adding Total Insured Value to fedex shipping module

    You have this line in the code:
    Code:
    $this->_setInsuranceValue($totals);
    it expects there to be a function _setInsuranceValue and you do not have one ...

    try commenting out that line as you seem to be using the line above it:
    Code:
    $totals = $_SESSION['cart']->show_total();
    Linda McGrath
    If you have to think ... you haven't been zenned ...

    Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!

    Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...
    Signup for our Announcements Forums to stay up to date on important changes and updates!

  5. #5
    Join Date
    Jan 2013
    Posts
    811
    Plugin Contributions
    0

    Default Re: Adding Total Insured Value to fedex shipping module

    commented out and fedex stops working no error

  6. #6
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    69,402
    Plugin Contributions
    6

    Default Re: Adding Total Insured Value to fedex shipping module

    You commented out this one, right?
    Code:
    $this->_setInsuranceValue($totals);
    Linda McGrath
    If you have to think ... you haven't been zenned ...

    Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!

    Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...
    Signup for our Announcements Forums to stay up to date on important changes and updates!

  7. #7
    Join Date
    Jan 2013
    Posts
    811
    Plugin Contributions
    0

    Default Re: Adding Total Insured Value to fedex shipping module

    yes, i copied those from numinix fedex webservices

  8. #8
    Join Date
    Sep 2003
    Location
    Ohio
    Posts
    69,402
    Plugin Contributions
    6

    Default Re: Adding Total Insured Value to fedex shipping module

    You might want to look further at the fedex module from numinix as I believe there is more information to pass on the insurance like the currency ...

    I do not use the Advanced Shipper so I could be wrong ... but I would look closer at the code on the fedexwebservices.php ...
    Linda McGrath
    If you have to think ... you haven't been zenned ...

    Did YOU buy the Zen Cart Team a cup of coffee and a donut today? Just click here to support the Zen Cart Team!!

    Are you using the latest? Perhaps you've a problem that's fixed in the latest version: [Upgrade today: v1.5.5]
    Officially PayPal-Certified! Just click here

    Try our Zen Cart Recommended Services - Hosting, Payment and more ...
    Signup for our Announcements Forums to stay up to date on important changes and updates!

  9. #9
    Join Date
    Jan 2013
    Posts
    811
    Plugin Contributions
    0

    Default Re: Adding Total Insured Value to fedex shipping module

    $request['RequestedShipment']['TotalInsuredValue']=array('Amount'=> $this->insurance, 'Currency' => $_SESSION['currency']);
    This is what else he has in place of mine
    His is soap mine is nonsoap
    need to convert his to nonsoap

 

 

Similar Threads

  1. v150 built in Shipping Module not adding shipping to total
    By jeffreydesign in forum Built-in Shipping and Payment Modules
    Replies: 2
    Last Post: 3 Jul 2012, 02:15 PM
  2. Shipping rates by total value?
    By GoneFroggin in forum Built-in Shipping and Payment Modules
    Replies: 1
    Last Post: 20 Feb 2011, 12:54 PM
  3. disable shipping module if total is greater than some $ value
    By vandiermen in forum Built-in Shipping and Payment Modules
    Replies: 3
    Last Post: 3 Aug 2009, 09:57 PM
  4. Complex shipping issue - domestic? international? insured? not insured? registered?
    By Joseph M in forum Built-in Shipping and Payment Modules
    Replies: 0
    Last Post: 5 May 2008, 06:33 AM
  5. Adding products as a %age of total order with minimum value
    By gaekwad in forum Setting Up Categories, Products, Attributes
    Replies: 0
    Last Post: 9 Jul 2007, 10:06 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg
Zen-Cart, Internet Selling Services, Klamath Falls, OR