Please show it to me Fajar, I am using the b2b version of cre in the latest build, I beta test for them... Thanks, Carlos Fajar Dhumadi wrote: > Hi Carlos, > > I have module for your need, build based CRE Loaded 6.2 Standard > Version with site free shipping feature integrated for it (Not free > shiping module) and for apply it need little modification on some > file. > > If you willing pay/donate for my effor to buid and testing the > module (Around 4 hours work). I will preparing the demo site for you > around next two days so you can see if it like your expect or not > because today and the next day I am go out side. > > If your CRE version is different, I though I can customize the > function for it to meet your need and expect. > > > Thanks, > > > Fajar Dhumadi > > --- In php-objects@xxxxxxxxxxxxxxx, todmin_2000@... wrote: > >> Thank you I will check it out, there are two free shipping mods >> > included > >> in CRE but the problem is that they both disable the other mods >> > and one > >> lacks the ability for minimum cart total settings. >> >> Changing the Fedex to have ground zero out and have the others >> selectable at their quoted price seemed to be an easier temporary >> > fix > >> until I could rework the more complicated free shipping mod >> > included > >> with the CRE >> >> Thanks again, >> >> Carlos >> >> >> caprecerevisi2005 wrote: >> >>> FWIW: >>> I "think" the free shipping options module included in Zen Cart >>> already does what you want. >>> If you are not too deep into your project or unless OSC offers >>> > some > >>> functionality you can't get elsewhere, it might be worth a look. >>> >>> At the very least, you could see how they implemented it in ZC >>> > and > >>> maybe port that to OSC instead of having to hack the OSC code. >>> >>> >From my experience with OSC, it's a headache waiting to happen. >>> >>> >>> --- In php-objects@xxxxxxxxxxxxxxx, todmin_2000@ 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@ >>>> >>>> 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_ADDRES >>> > S_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_ENVE >>> > LOPE', > >>> 'MODULE_SHIPPING_FEDEX1_WEIGHT_SORT', 'MODULE_SHIPPING_FEDEX1_TIME >>> > OUT', > >>> 'MODULE_SHIPPING_FEDEX1_TAX_CLASS','MODULE_SHIPPING_FEDEX1_SORT_OR >>> > DER'); > >>>> } >>>> >>>> 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); >>>> } >>>> } >>>> ?> >>>> >>>> >>>> >>> >>> >>> Are you looking for a PHP job? Join the PHP Professionals >>> > directory Now! > >>> http://www.phpclasses.org/professionals/ >>> Yahoo! Groups Links >>> >>> >>> >>> >>> >>> >> >> [Non-text portions of this message have been removed] >> >> > > > > > Are you looking for a PHP job? Join the PHP Professionals directory Now! > http://www.phpclasses.org/professionals/ > Yahoo! Groups Links > > > > > [Non-text portions of this message have been removed]