all we have requirement on PHP AND DRUPAL IF ANY BODY INTERESTED TO WORK ON THIS Send ur resume to : sanari9@xxxxxxxxx withregards sambasiv On 12/23/07, todmin_2000@xxxxxxxxx <todmin_2000@xxxxxxxxx> wrote: > > Posted this on the 19th and never got a singe reponse; is this too > difficult or complicated???? > > I need to implement free shipping on an ecommerce site but the current > mods don't support the free shipping and still have the other shipping > methods available.. > > The point is to have free ground shipping within the continental US for > orders over say $50 USD but have other shipping methods available for > faster shipping as paid options. > > I made some changes to the current fedex module which now shows free > shipping for order totals over $50 USD but it changes all of the fedex > returns to $0.00 instead of just ground and leaving the rest > of the quote returns as paid options. > > This is a CRE loaded version of OScommerce site. > > If you go to www.thescubageek.net and make a login then add an item over > $50 to your cart you will see the fedex returns, use a US address though > and what I mean about all being zero quotes now.. > > Any help on this would be immensely appreciated and thanks, > > Carlos > > here is the code for the module and I changed this starting at line 160: > > if (!$skip) { > $methods[] = array('id' => substr($type,0,2), > 'title' => $service_descr, > 'cost' => (SHIPPING_HANDLING + > MODULE_SHIPPING_FEDEX1_SURCHARGE + $this->surcharge + $cost) * > $shipping_num_boxes); > } > } > > To this: > > if (!$skip) { > > if ($order->info['total'] > 50) { > > $methods[] = array('id' => $this->code, > > 'title' => 'FREE GROUND SHIPPING ON > ORDERS OVER $50 USA LOWER 48 STATES ONLY', > > 'cost' => '0.00'); > > } else { > > $methods[] = array('id' => > substr($type,0,2), > > 'title' => $service_descr, > > 'cost' => (SHIPPING_HANDLING + > MODULE_SHIPPING_FEDEX1_SURCHARGE + $this->surcharge + $cost) * > $shipping_num_boxes); > > } > > } > > } > > here is the full file code; > > <?php > /* > Version 2.03 for MS2 and earlier > > osCommerce, Open Source E-Commerce Solutions > http://www.oscommerce.com > > Copyright (c) 2002, 2003 Steve Fatula of Fatula Consulting > compconsultant@xxxxxxxxx <compconsultant%40yahoo.com> > > Released under the GNU General Public License > */ > > class fedex1 { > var $code, $title, $description, $sort_order, $icon, $tax_class, > $enabled, $meter, $intl; > > // class constructor > function fedex1() { > $this->code = 'fedex1'; > $this->title = MODULE_SHIPPING_FEDEX1_TEXT_TITLE; > $this->description = MODULE_SHIPPING_FEDEX1_TEXT_DESCRIPTION; > $this->sort_order = MODULE_SHIPPING_FEDEX1_SORT_ORDER; > $this->icon = DIR_WS_ICONS . 'shipping_fedex.gif'; > $this->tax_class = MODULE_SHIPPING_FEDEX1_TAX_CLASS; > $this->enabled = ((MODULE_SHIPPING_FEDEX1_STATUS == 'True') ? true > : false); > $this->meter = MODULE_SHIPPING_FEDEX1_METER; > > // You can comment out any methods you do not wish to quote by placing a > // at the beginning of that line > // If you comment out 92 in either domestic or international, be > // sure and remove the trailing comma on the last non-commented line > /* > $this->domestic_types = array( > '01' => 'Priority (by 10:30AM, later for rural)', > '03' => '2 Day Air', > '05' => 'Standard Overnight (by 3PM, later for rural)', > '06' => 'First Overnight', > '20' => 'Express Saver (3 Day)', > '90' => 'Home Delivery', > '92' => 'Ground Service' > ); > > $this->international_types = array( > '01' => 'International Priority (1-3 Days)', > '03' => 'International Economy (4-5 Days)', > '06' => 'International First', > '90' => 'Home Delivery', > '92' => 'Ground Service' > ); > */ > > $this->domestic_types = array( > '01' => MODULE_SHIPPING_FEDEX1_DOMESTIC_TYPES_01, > '03' => MODULE_SHIPPING_FEDEX1_DOMESTIC_TYPES_03, > '05' => MODULE_SHIPPING_FEDEX1_DOMESTIC_TYPES_05, > '06' => MODULE_SHIPPING_FEDEX1_DOMESTIC_TYPES_06, > '20' => MODULE_SHIPPING_FEDEX1_DOMESTIC_TYPES_20, > '90' => MODULE_SHIPPING_FEDEX1_DOMESTIC_TYPES_90, > '92' => MODULE_SHIPPING_FEDEX1_DOMESTIC_TYPES_92 > ); > > $this->international_types = array( > '01' => MODULE_SHIPPING_FEDEX1_INTERNATIONAL_TYPES_01, > '03' => MODULE_SHIPPING_FEDEX1_INTERNATIONAL_TYPES_03, > '06' => MODULE_SHIPPING_FEDEX1_INTERNATIONAL_TYPES_06, > '90' => MODULE_SHIPPING_FEDEX1_INTERNATIONAL_TYPES_90, > '92' => MODULE_SHIPPING_FEDEX1_INTERNATIONAL_TYPES_92 > ); > > } > > // class methods > function quote($method = '') { > global $shipping_weight, $shipping_num_boxes, $cart, $order; > > if (tep_not_null($method)) { > $this->_setService($method); > } > > if (MODULE_SHIPPING_FEDEX1_ENVELOPE == 'True') { > if ( ($shipping_weight <= .5 && MODULE_SHIPPING_FEDEX1_WEIGHT == > 'LBS') || > ($shipping_weight <= .2 && MODULE_SHIPPING_FEDEX1_WEIGHT == > 'KGS')) { > $this->_setPackageType('06'); > } else { > $this->_setPackageType('01'); > } > } else { > $this->_setPackageType('01'); > } > > if ($this->packageType == '01' && $shipping_weight < 1) { > $this->_setWeight(1); > } else { > $this->_setWeight($shipping_weight); > } > > $totals = $cart->show_total(); > $this->_setInsuranceValue($totals / $shipping_num_boxes); > > if (defined("SHIPPING_ORIGIN_COUNTRY")) { > $countries_array = tep_get_countries(SHIPPING_ORIGIN_COUNTRY, true); > $this->country = $countries_array['countries_iso_code_2']; > } else { > $this->country = STORE_ORIGIN_COUNTRY; > } > > $fedexQuote = $this->_getQuote(); > > if (is_array($fedexQuote)) { > if (isset($fedexQuote['error'])) { > $this->quotes = array('module' => $this->title, > 'error' => $fedexQuote['error']); > } else { > $this->quotes = array('id' => $this->code, > 'module' => $this->title . ' (' . > $shipping_num_boxes . ' x ' . $shipping_weight . > strtolower(MODULE_SHIPPING_FEDEX1_WEIGHT) . ')'); > > $methods = array(); > foreach ($fedexQuote as $type => $cost) { > $skip = FALSE; > $this->surcharge = 0; > if ($this->intl === FALSE) { > if (strlen($type) > 2 && MODULE_SHIPPING_FEDEX1_TRANSIT == > 'True') { > $service_descr = > $this->domestic_types[substr($type,0,2)] . ' (' . substr($type,2,1) . ' > days)'; > } else { > $service_descr = $this->domestic_types[substr($type,0,2)]; > } > switch (substr($type,0,2)) { > case 90: > if ($order->delivery['company'] != '') { > $skip = TRUE; > } > break; > case 92: > if ($this->country == "CA") { > if ($order->delivery['company'] == '') { > $this->surcharge = MODULE_SHIPPING_FEDEX1_RESIDENTIAL; > } > } else { > if ($order->delivery['company'] == '') { > $skip = TRUE; > } > } > break; > default: > if ($this->country != "CA" && substr($type,0,2) < "90" > && $order->delivery['company'] == '') { > $this->surcharge = MODULE_SHIPPING_FEDEX1_RESIDENTIAL; > } > break; > } > } else { > if (strlen($type) > 2 && MODULE_SHIPPING_FEDEX1_TRANSIT == > 'True') { > $service_descr = > $this->international_types[substr($type,0,2)] . ' (' . substr($type,2,1) > . ' days)'; > } else { > $service_descr = > $this->international_types[substr($type,0,2)]; > } > } > if ($method) { > if (substr($type,0,2) != $method) $skip = TRUE; > } > if (!$skip) { > > if ($order->info['total'] > 50) { > > $methods[] = array('id' => $this->code, > > 'title' => 'FREE GROUND SHIPPING ON > ORDERS OVER $50 USA LOWER 48 STATES ONLY', > > 'cost' => '0.00'); > > } else { > > $methods[] = array('id' => > substr($type,0,2), > > 'title' => $service_descr, > > 'cost' => (SHIPPING_HANDLING + > MODULE_SHIPPING_FEDEX1_SURCHARGE + $this->surcharge + $cost) * > $shipping_num_boxes); > > } > > } > > } > > $this->quotes['methods'] = $methods; > > if ($this->tax_class > 0) { > $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, > $order->delivery['country']['id'], $order->delivery['zone_id']); > } > } > } else { > /* > $this->quotes = array('module' => $this->title, > 'error' => 'An error occured with the > fedex shipping calculations.<br>Fedex may not deliver to your country, > or your postal code may be wrong.'); > */ > > $this->quotes = array('module' => $this->title, > 'error' => MODULE_SHIPPING_FEDEX1_ERROR_1); > } > > if (tep_not_null($this->icon)) $this->quotes['icon'] = > tep_image($this->icon, $this->title); > > return $this->quotes; > } > > function check() { > if (!isset($this->_check)) { > $check_query = tep_db_query("select configuration_value from " . > TABLE_CONFIGURATION . " where configuration_key = > 'MODULE_SHIPPING_FEDEX1_STATUS'"); > $this->_check = tep_db_num_rows($check_query); > } > return $this->_check; > } > > function install() { > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > set_function, date_added) values ('Enable Fedex Shipping', > 'MODULE_SHIPPING_FEDEX1_STATUS', 'True', 'Do you want to offer Fedex > shipping?', '6', '10', 'tep_cfg_select_option(array(\'True\', > \'False\'), ', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > set_function, date_added) values ('Display Transit Times', > 'MODULE_SHIPPING_FEDEX1_TRANSIT', 'True', 'Do you want to show transit > times for ground or home delivery rates?', '6', '10', > 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Your Fedex Account Number', > 'MODULE_SHIPPING_FEDEX1_ACCOUNT', 'NONE', 'Enter the fedex Account > Number assigned to you, required', '6', '11', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Your Fedex Meter ID', > 'MODULE_SHIPPING_FEDEX1_METER', 'NONE', 'Enter the Fedex MeterID > assigned to you, set to NONE to obtain a new meter number', '6', '12', > now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('cURL Path', 'MODULE_SHIPPING_FEDEX1_CURL', 'NONE', > 'Enter the path to the cURL program, normally, leave this set to NONE to > execute cURL using PHP', '6', '12', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > set_function, date_added) values ('Debug Mode', > 'MODULE_SHIPPING_FEDEX1_DEBUG', 'False', 'Turn on Debug', '6', '19', > 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > set_function, date_added) values ('Weight Units', > 'MODULE_SHIPPING_FEDEX1_WEIGHT', 'LBS', 'Weight Units:', '6', '19', > 'tep_cfg_select_option(array(\'LBS\', \'KGS\'), ', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('First line of street address', > 'MODULE_SHIPPING_FEDEX1_ADDRESS_1', 'NONE', 'Enter the first line of > your ship from street address, required', '6', '13', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Second line of street address', > 'MODULE_SHIPPING_FEDEX1_ADDRESS_2', 'NONE', 'Enter the second line of > your ship from street address, leave set to NONE if you do not need to > specify a second line', '6', '14', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('City name', 'MODULE_SHIPPING_FEDEX1_CITY', 'NONE', > 'Enter the city name for the ship from street address, required', '6', > '15', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('State or Province name', > 'MODULE_SHIPPING_FEDEX1_STATE', 'NONE', 'Enter the 2 letter state or > province name for the ship from street address, required for Canada and > US', '6', '16', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Postal code', 'MODULE_SHIPPING_FEDEX1_POSTAL', > 'NONE', 'Enter the postal code for the ship from street address, > required', '6', '17', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Phone number', 'MODULE_SHIPPING_FEDEX1_PHONE', > 'NONE', 'Enter a contact phone number for your company, required', '6', > '18', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > set_function, date_added) values ('Which server to use', > 'MODULE_SHIPPING_FEDEX1_SERVER', 'production', 'You must have an account > with Fedex', '6', '19', 'tep_cfg_select_option(array(\'test\', > \'production\'), ', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Drop off type', 'MODULE_SHIPPING_FEDEX1_DROPOFF', > '1', 'Dropoff type (1 = Regular pickup, 2 = request courier, 3 = drop > box, 4 = drop at BSC, 5 = drop at station)?', '6', '20', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Fedex surcharge?', > 'MODULE_SHIPPING_FEDEX1_SURCHARGE', '0', 'Surcharge amount to add to > shipping charge?', '6', '21', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Residential surcharge?', > 'MODULE_SHIPPING_FEDEX1_RESIDENTIAL', '0', 'Residential Surcharge (in > addition to other surcharge) for Express packages within US, or ground > packages within Canada?', '6', '21', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Insurance?', 'MODULE_SHIPPING_FEDEX1_INSURE', > 'NONE', 'Insure packages over what dollar amount?', '6', '22', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > set_function, date_added) values ('Enable Envelope Rates?', > 'MODULE_SHIPPING_FEDEX1_ENVELOPE', 'False', 'Do you want to offer Fedex > Envelope rates? All items under 1/2 LB (.23KG) will quote using the > envelope rate if True.', '6', '10', > 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > set_function, date_added) values ('Sort rates: ', > 'MODULE_SHIPPING_FEDEX1_WEIGHT_SORT', 'High to Low', 'Sort rates top to > bottom: ', '6', '19', 'tep_cfg_select_option(array(\'High to Low\', > \'Low to High\'), ', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Timeout in Seconds', > 'MODULE_SHIPPING_FEDEX1_TIMEOUT', 'NONE', 'Enter the maximum time in > seconds you would wait for a rate request from Fedex? Leave NONE for > default timeout.', '6', '22', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > use_function, set_function, date_added) values ('Tax Class', > 'MODULE_SHIPPING_FEDEX1_TAX_CLASS', '0', 'Use the following tax class on > the shipping fee.', '6', '23', 'tep_get_tax_class_title', > 'tep_cfg_pull_down_tax_classes(', now())"); > tep_db_query("insert into " . TABLE_CONFIGURATION . " > (configuration_title, configuration_key, configuration_value, > configuration_description, configuration_group_id, sort_order, > date_added) values ('Sort Order', 'MODULE_SHIPPING_FEDEX1_SORT_ORDER', > '0', 'Sort order of display.', '6', '24', now())"); > } > > function remove() { > tep_db_query("delete from " . TABLE_CONFIGURATION . " where > configuration_key in ('" . implode("', '", $this->keys()) . "')"); > } > > function keys() { > return array('MODULE_SHIPPING_FEDEX1_STATUS', > 'MODULE_SHIPPING_FEDEX1_ACCOUNT', 'MODULE_SHIPPING_FEDEX1_METER', > 'MODULE_SHIPPING_FEDEX1_CURL', 'MODULE_SHIPPING_FEDEX1_DEBUG', > 'MODULE_SHIPPING_FEDEX1_WEIGHT', 'MODULE_SHIPPING_FEDEX1_SERVER', > 'MODULE_SHIPPING_FEDEX1_ADDRESS_1', 'MODULE_SHIPPING_FEDEX1_ADDRESS_2', > 'MODULE_SHIPPING_FEDEX1_CITY', 'MODULE_SHIPPING_FEDEX1_STATE', > 'MODULE_SHIPPING_FEDEX1_POSTAL', 'MODULE_SHIPPING_FEDEX1_PHONE', > 'MODULE_SHIPPING_FEDEX1_DROPOFF', 'MODULE_SHIPPING_FEDEX1_TRANSIT', > 'MODULE_SHIPPING_FEDEX1_SURCHARGE', 'MODULE_SHIPPING_FEDEX1_INSURE', > 'MODULE_SHIPPING_FEDEX1_RESIDENTIAL', 'MODULE_SHIPPING_FEDEX1_ENVELOPE', > 'MODULE_SHIPPING_FEDEX1_WEIGHT_SORT', 'MODULE_SHIPPING_FEDEX1_TIMEOUT', > 'MODULE_SHIPPING_FEDEX1_TAX_CLASS','MODULE_SHIPPING_FEDEX1_SORT_ORDER'); > } > > function _setService($service) { > $this->service = $service; > } > > function _setWeight($pounds) { > $this->pounds = sprintf("%01.1f", $pounds); > } > > function _setPackageType($type) { > $this->packageType = $type; > } > > function _setInsuranceValue($order_amount) { > if ($order_amount > MODULE_SHIPPING_FEDEX1_INSURE) { > $this->insurance = sprintf("%01.2f",$order_amount); > } else { > $this->insurance = 0; > } > } > > function _AccessFedex($data) { > > if (MODULE_SHIPPING_FEDEX1_SERVER == 'production') { > $this->server = 'gateway.fedex.com/GatewayDC'; > } else { > $this->server = 'gatewaybeta.fedex.com/GatewayDC'; > } > if (MODULE_SHIPPING_FEDEX1_CURL == "NONE") { > $ch = curl_init(); > curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); > curl_setopt($ch, CURLOPT_URL, 'https://' . $this->server); > if (MODULE_SHIPPING_FEDEX1_TIMEOUT != 'NONE') curl_setopt($ch, > CURLOPT_TIMEOUT, MODULE_SHIPPING_FEDEX1_TIMEOUT); > curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); > curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); > curl_setopt($ch, CURLOPT_HTTPHEADER, array("Referer: " . STORE_NAME, > "Host: " . $this->server, > "Accept: > image/gif,image/jpeg,image/pjpeg,text/plain,text/html,*/*", > "Pragma:", > > "Content-Type:image/gif")); > curl_setopt($ch, CURLOPT_POSTFIELDS, $data); > // added support for curl proxy > if (defined('CURL_PROXY_HOST') && defined('CURL_PROXY_PORT') && > CURL_PROXY_HOST != '' && CURL_PROXY_PORT != '') { > curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); > curl_setopt($ch, CURLOPT_PROXY, CURL_PROXY_HOST . ":" . > CURL_PROXY_PORT); > curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); > } > if (defined('CURL_PROXY_USER') && defined('CURL_PROXY_PASSWORD') > && CURL_PROXY_USER != '' && CURL_PROXY_PASSWORD != '') { > curl_setopt($ch, CURLOPT_PROXYUSERPWD, CURL_PROXY_USER . ':' . > CURL_PROXY_PASSWORD); > } > $reply = curl_exec($ch); > curl_close ($ch); > } else { > $this->command_line = MODULE_SHIPPING_FEDEX1_CURL . " " . > (MODULE_SHIPPING_FEDEX1_TIMEOUT == 'NONE' ? '' : '-m ' . > MODULE_SHIPPING_FEDEX1_TIMEOUT) . " -s -e '" . STORE_NAME . "' --url > https://" . $this->server . " -H 'Host: " . $this->server . "' -H > 'Accept: image/gif,image/jpeg,image/pjpeg,text/plain,text/html,*/*' -H > 'Pragma:' -H 'Content-Type:image/gif' -d '" . $data . "' 'https://" . > $this->server . "'"; > exec($this->command_line, $this->reply); > $reply = $this->reply[0]; > } > return $reply; > } > > function _getMeter() { > $data = '0,"211"'; // Transaction Code, required > $data .= '10,"' . MODULE_SHIPPING_FEDEX1_ACCOUNT . '"'; // Sender > Fedex account number > $data .= '4003,"' . STORE_OWNER . '"'; // Subscriber contact name > $data .= '4007,"' . STORE_NAME . '"'; // Subscriber company name > $data .= '4008,"' . MODULE_SHIPPING_FEDEX1_ADDRESS_1 . '"'; // > Subscriber Address line 1 > if (MODULE_SHIPPING_FEDEX1_ADDRESS_2 != 'NONE') { > $data .= '4009,"' . MODULE_SHIPPING_FEDEX1_ADDRESS_2 . '"'; // > Subscriber Address Line 2 > } > $data .= '4011,"' . MODULE_SHIPPING_FEDEX1_CITY . '"'; // > Subscriber City Name > if (MODULE_SHIPPING_FEDEX1_STATE != 'NONE') { > $data .= '4012,"' . MODULE_SHIPPING_FEDEX1_STATE . '"'; // > Subscriber State code > } > $data .= '4013,"' . MODULE_SHIPPING_FEDEX1_POSTAL . '"'; // > Subscriber Postal Code > $data .= '4014,"' . $this->country . '"'; // Subscriber Country Code > $data .= '4015,"' . MODULE_SHIPPING_FEDEX1_PHONE . '"'; // > Subscriber phone number > $data .= '99,""'; // End of Record, required > //if (MODULE_SHIPPING_FEDEX1_DEBUG == 'True') echo "Data sent to > Fedex for Meter: " . $data . "<br>"; > if (MODULE_SHIPPING_FEDEX1_DEBUG == 'True') echo > MODULE_SHIPPING_FEDEX1_MESSAGE_1 . $data . "<br>"; > $fedexData = $this->_AccessFedex($data); > //if (MODULE_SHIPPING_FEDEX1_DEBUG == 'True') echo "Data returned > from Fedex for Meter: " . $fedexData . "<br>"; > if (MODULE_SHIPPING_FEDEX1_DEBUG == 'True') echo > MODULE_SHIPPING_FEDEX1_MESSAGE_2 . $fedexData . "<br>"; > $meterStart = strpos($fedexData,'"498,"'); > > if ($meterStart === FALSE) { > if (strlen($fedexData) == 0) { > //$this->error_message = 'No response to CURL from Fedex > server, check CURL availability, or maybe timeout was set too low, or > maybe the Fedex site is down'; > $this->error_message = MODULE_SHIPPING_FEDEX1_MESSAGE_3; > } else { > $fedexData = $this->_ParseFedex($fedexData); > // $this->error_message = 'No meter number was obtained, check > configuration. Error ' . $fedexData['2'] . ' : ' . $fedexData['3']; > $this->error_message = MODULE_SHIPPING_FEDEX1_MESSAGE_4 . > $fedexData['2'] . ' : ' . $fedexData['3']; > } > return false; > } > > $meterStart += 6; > $meterEnd = strpos($fedexData, '"', $meterStart); > $this->meter = substr($fedexData, $meterStart, $meterEnd - > $meterStart); > $meter_sql = "UPDATE configuration SET configuration_value=\"" . > $this->meter . "\" where > configuration_key=\"MODULE_SHIPPING_FEDEX1_METER\""; > tep_db_query($meter_sql); > > return true; > } > > function _ParseFedex($data) { > $current = 0; > $length = strlen($data); > $resultArray = array(); > while ($current < $length) { > $endpos = strpos($data, ',', $current); > if ($endpos === FALSE) { break; } > $index = substr($data, $current, $endpos - $current); > $current = $endpos + 2; > $endpos = strpos($data, '"', $current); > $resultArray[$index] = substr($data, $current, $endpos - $current); > $current = $endpos + 1; > } > return $resultArray; > } > > function _getQuote() { > global $order, $customer_id, $sendto; > > if (MODULE_SHIPPING_FEDEX1_ACCOUNT == "NONE" || > strlen(MODULE_SHIPPING_FEDEX1_ACCOUNT) == 0) { > // return array('error' => 'You forgot to set up your Fedex > account number, this can be set up in Admin -> Modules -> Shipping'); > return array('error' => MODULE_SHIPPING_FEDEX1_MESSAGE_5); > } > if (MODULE_SHIPPING_FEDEX1_ADDRESS_1 == "NONE" || > strlen(MODULE_SHIPPING_FEDEX1_ADDRESS_1) == 0) { > // return array('error' => 'You forgot to set up your ship from > street address line 1, this can be set up in Admin -> Modules -> > Shipping'); > return array('error' => MODULE_SHIPPING_FEDEX1_MESSAGE_6); > } > if (MODULE_SHIPPING_FEDEX1_CITY == "NONE" || > strlen(MODULE_SHIPPING_FEDEX1_CITY) == 0) { > // return array('error' => 'You forgot to set up your ship from > City, this can be set up in Admin -> Modules -> Shipping'); > return array('error' => MODULE_SHIPPING_FEDEX1_MESSAGE_7); > } > if (MODULE_SHIPPING_FEDEX1_POSTAL == "NONE" || > strlen(MODULE_SHIPPING_FEDEX1_POSTAL) == 0) { > // return array('error' => 'You forgot to set up your ship from > postal code, this can be set up in Admin -> Modules -> Shipping'); > return array('error' => MODULE_SHIPPING_FEDEX1_MESSAGE_8); > } > if (MODULE_SHIPPING_FEDEX1_PHONE == "NONE" || > strlen(MODULE_SHIPPING_FEDEX1_PHONE) == 0) { > //return array('error' => 'You forgot to set up your ship from > phone number, this can be set up in Admin -> Modules -> Shipping'); > return array('error' => MODULE_SHIPPING_FEDEX1_MESSAGE_9); > } > if (MODULE_SHIPPING_FEDEX1_METER == "NONE") { > if ($this->_getMeter() === false) return array('error' => > $this->error_message); > } > > $data = '0,"25"'; // TransactionCode > $data .= '10,"' . MODULE_SHIPPING_FEDEX1_ACCOUNT . '"'; // Sender > fedex account number > $data .= '498,"' . $this->meter . '"'; // Meter number > $data .= '8,"' . MODULE_SHIPPING_FEDEX1_STATE . '"'; // Sender > state code > $orig_zip = str_replace(array(' ', '-'), '', > MODULE_SHIPPING_FEDEX1_POSTAL); > $data .= '9,"' . $orig_zip . '"'; // Origin postal code > $data .= '117,"' . $this->country . '"'; // Origin country > if ($order->delivery['country']['iso_code_2'] == "US" || > $order->delivery['country']['iso_code_2'] == "CA" || > $order->delivery['country']['iso_code_2'] == "PR") { > $dest_zip = str_replace(array(' ', '-'), '', > $order->delivery['postcode']); > $data .= '17,"' . $dest_zip . '"'; // Recipient zip code > $data .= '16,"' . > tep_get_zone_code($order->delivery['country']['id'], > $order->delivery['zone_id'], '') . '"'; // Recipient state > } > $data .= '50,"' . $order->delivery['country']['iso_code_2'] . '"'; > // Recipient country > $data .= '75,"' . MODULE_SHIPPING_FEDEX1_WEIGHT . '"'; // Weight units > if (MODULE_SHIPPING_FEDEX1_WEIGHT == "KGS") { > $data .= '1116,"C"'; // Dimension units > } else { > $data .= '1116,"I"'; // Dimension units > } > $data .= '1401,"' . $this->pounds . '"'; // Total weight > $data .= '1529,"1"'; // Quote discounted rates > if ($this->insurance > 0) { > $data .= '1415,"' . $this->insurance . '"'; // Insurance value > $data .= '68,"USD"'; // Insurance value currency > } > if ($order->delivery['company'] == '' && > MODULE_SHIPPING_FEDEX1_RESIDENTIAL == 0) { > $data .= '440,"Y"'; // Residential address > }else { > $data .= '440,"N"'; // Business address, use if adding a > residential surcharge > } > $data .= '1273,"' . $this->packageType . '"'; // Package type > $data .= '1333,"' . MODULE_SHIPPING_FEDEX1_DROPOFF . '"'; // Drop > of drop off or pickup > $data .= '99,""'; // End of record > // if (MODULE_SHIPPING_FEDEX1_DEBUG == 'True') echo "Data sent to > Fedex for Rating: " . $data . "<br>"; > if (MODULE_SHIPPING_FEDEX1_DEBUG == 'True') echo > MODULE_SHIPPING_FEDEX1_MESSAGE_10 . $data . "<br>"; > $fedexData = $this->_AccessFedex($data); > //if (MODULE_SHIPPING_FEDEX1_DEBUG == 'True') echo "Data returned > from Fedex for Rating: " . $fedexData . "<br>"; > if (MODULE_SHIPPING_FEDEX1_DEBUG == 'True') echo > MODULE_SHIPPING_FEDEX1_MESSAGE_11 . $fedexData . "<br>"; > if (strlen($fedexData) == 0) { > // $this->error_message = 'No data returned from Fedex, perhaps > the Fedex site is down'; > $this->error_message = MODULE_SHIPPING_FEDEX1_MESSAGE_12; > return array('error' => $this->error_message); > } > $fedexData = $this->_ParseFedex($fedexData); > $i = 1; > if ($this->country == $order->delivery['country']['iso_code_2']) { > $this->intl = FALSE; > } else { > $this->intl = TRUE; > } > $rates = NULL; > while (isset($fedexData['1274-' . $i])) { > if ($this->intl) { > if (isset($this->international_types[$fedexData['1274-' . $i]])) { > if (isset($fedexData['3058-' . $i])) { > $rates[$fedexData['1274-' . $i] . $fedexData['3058-' . > $i]] = $fedexData['1419-' . $i]; > } else { > $rates[$fedexData['1274-' . $i]] = $fedexData['1419-' . $i]; > } > } > } else { > if (isset($this->domestic_types[$fedexData['1274-' . $i]])) { > if (isset($fedexData['3058-' . $i])) { > $rates[$fedexData['1274-' . $i] . $fedexData['3058-' . > $i]] = $fedexData['1419-' . $i]; > } else { > $rates[$fedexData['1274-' . $i]] = $fedexData['1419-' . $i]; > } > } > } > $i++; > } > > if (is_array($rates)) { > if (MODULE_SHIPPING_FEDEX1_WEIGHT_SORT == 'Low to High') { > asort($rates); > } else { > arsort($rates); > } > } else { > // $this->error_message = 'No Rates Returned, ' . $fedexData['2'] > . ' : ' . $fedexData['3']; > $this->error_message = MODULE_SHIPPING_FEDEX1_MESSAGE_13 . > $fedexData['2'] . ' : ' . $fedexData['3']; > return array('error' => $this->error_message); > } > > return ((sizeof($rates) > 0) ? $rates : false); > } > } > ?> > > > -- Regards Yarram Setty Sambasiv Rao Sanari Software Solutions Pvt. Ltd., (Software Training, Development, Placements & NCFM Coaching) SRT-44, S.R.Nagar, Near Nagarjuna Jr. College, Hyderabad-500 038. Tel: 91-40-6457 3042 Mobile: 9949104388 email: sanari9@xxxxxxxxx [Non-text portions of this message have been removed]