Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Idefix_SIN

Pioneers
  • Posts

    19
  • Joined

  • Last visited

Profile Information

  • Real Name
    Eric

Idefix_SIN's Achievements

  1. Update: This has apparently been fixed in V2.30a. I have downloaded the 2.30a package and copied the "stats_recover_cart_sales.php" file to the sover overwriting the old one. Now it works. Update of the Update: Tested it again. The names shown in the stats page do not match the recover emails send......back to the drawing board :-(
  2. I have exactly the same problem. Any solution to this yet?? Thanks !
  3. Hi guys, I have the contribution running since quite some time now. All works perfectly. Now I need to make a slight alteration to the way the charges are calculated. I hope someone can point me in the right direction: 1. The shop prices are all in USD and USD is the default currency in osc 2. The shipping rates are charged in local currency by the postal service (e.g. AUD) Now the problem: In order to adjust the shipping rates to the changing USD currency in relation to the local currency automatically I would need a way for MGZMT to automatically multiply/divide the entered shipping rate by the in OSC set exchange rate (e.g. USD=1.0000, AUD=1.40000 so the shipping rate would need to be divided by 1.4 as set in OSC) Can someone recommend an easy solution? Thanks
  4. Hi Alex, I'm using version 2.3.3 of the module and have sporadic "Data does not match input character set or default encoding.For more information, please contact the merchant" errors with the module. I solved some of these initial issues by removing special characters from the product names. My first try of using the code below (posted here: http://www.ez-oscommerce.com/oscommerce-su...9917-2600.html) for an older version of the module helped a little. However once in a while I still get these errors. Concerning the encoding subject that has been discussed and the "You have entered unsupported characters for this field. Current available language character types are: European, Chinese, Korean, Japanese, and Thai. Please try again." error, i have found a working solution. It took me some time, lots of searching and testing but i finnaly found a solution for this problem (at least it works for me. STEP 1 in includes/functions/general.php add CODE function tsy_paypaltr($var) { // a single accentuated/special character matches a single non acc/spec character: $var = strtr($var, "ŠŽŸÀÁÂÃÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕØÙÚÛÝÞ", "SZYAAAAACEEEEIIIIDNOOOOOUUUYP"); $var = strtr($var, "šžÿàáâãåçèéêëìíîïðñòóôõøùúûýþµ", "szyaaaaaceeeeiiiidnooooouuuypu"); // a single accentuated/special character matches a couple of non acc/spec character: $var = str_replace("Œ", "OE", $var); $var = str_replace("Æ", "AE", $var); $var = str_replace("œ", "oe", $var); $var = str_replace("æ", "ae", $var); return $var; } feel free to add, remove or change the chars being replaced. STEP 2 in includes/modules/payment/paypal.php around line 481 change CODE while (list($key, $value) = each($parameters)) { echo tep_draw_hidden_field($key, $value); to CODE while (list($key, $value) = each($parameters)) { echo tep_draw_hidden_field($key, tsy_paypaltr($value)); And that's it, no more error. I hope this works for everyone else with the same problem. While scanning through the paypal_ipn.php file I found following code from you: } /******************************************************************************** ************* * Currently these are the supported charsets: * * big5, euc-jp, euc-kr, euc-tw, gb2312, hz-gb-2312, ibm-862, iso-2022-cn, iso-2022-jp, * * iso-2022-kr, iso-8859-1, iso-8859-2, iso-8859-3, iso-8859-4, iso-8859-5, iso-8859-6, * * iso-8859-7, iso-8859-8, iso-8859-9, iso-8859-13, iso-8859-15, ko18-r, shift_jis, * * utf-7, utf-8, utf-16, utf-16be, utf-16le, utf-16_platformendian, utf-16_oppositeendian, * * utf-32, utf-32be, utf-32le, utf-32_platformendian, utf-32_oppositeendian, usa-ascii, * * windows-1250, windows-1251, windows-1252, windows-1253, windows-1254, windows-1255, * * windows-1256, windows-1257, windows-1258, windows-874, windows-949, x-mac-greek, * * x-mac-turkish, x-mac-centraleurroman, x-mac-cyrillic, ebcdic-cp-us, ibm-1047 * ******************************************************************************** **************/ $parameters['charset'] = "utf-8"; // Modify this line if you have problems with the character set. // EOF parameters fix by AlexStudio Will it help if I change the charset here? What would be the best charset to use to also support european names including ', ` or - Thanks, Eric
  5. Does anyone have a solution to the issue Mike has brought up a few post above? - How to display the customers discount status in the customer data in the admin section Thanks !!
  6. I got an answer. In case someone else needs to do the same: includes\modules\order_total\ot_loyalty_discount.php Add the following on the top directly behind function ot_loyalty_discount() { // BOF Separate Pricing per Customer if (isset($_SESSION['sppc_customer_group_id']) && $_SESSION['sppc_customer_group_id'] != '0') { $this->cg_id = $_SESSION['sppc_customer_group_id']; } else { $this->cg_id = '0'; } // EOF Separate Pricing per Customer a few lines down, change $this->enabled = MODULE_LOYALTY_DISCOUNT_STATUS; to if ($this->cg_id == '0') { $this->enabled = MODULE_LOYALTY_DISCOUNT_STATUS; } else { $this->enabled = false; }
  7. Hello everyone, I have SPPC and Loyalty Discounts installed. Both work fine. Problem is now that I have to be able to switch of the Loyalty discount for all groups except the retail group (group_id = 0). I found a few posts and have been able to remove the loyalty discount info from all pages but the checkout page. I'm at a loss. I can't find a way to disable the module if the customer group id !=0. This is the loyalty discount module code: <?php /* ot_loyalty_discount.php $Id: ot_loyalty_discount.php,v 1.0 2003/06/09 22:49:11 sp Exp $ osCommerce, Open Source E-Commerce Solutions [url="http://www.oscommerce.com"]http://www.oscommerce.com[/url] Copyright © 2002 osCommerce Released under the GNU General Plic License */ class ot_loyalty_discount { var $title, $output; function ot_loyalty_discount() { $this->code = ot_loyalty_discount; $this->title = MODULE_LOYALTY_DISCOUNT_TITLE; $this->description = MODULE_LOYALTY_DISCOUNT_DESCRIPTION; $this->enabled = MODULE_LOYALTY_DISCOUNT_STATUS; $this->sort_order = MODULE_LOYALTY_DISCOUNT_SORT_ORDER; $this->include_shipping = MODULE_LOYALTY_DISCOUNT_INC_SHIPPING; $this->include_tax = MODULE_LOYALTY_DISCOUNT_INC_TAX; $this->calculate_tax = MODULE_LOYALTY_DISCOUNT_CALC_TAX; $this->table = MODULE_LOYALTY_DISCOUNT_TABLE; $this->loyalty_order_status = MODULE_LOYALTY_DISCOUNT_ORDER_STATUS; $this->cum_order_period = MODULE_LOYALTY_DISCOUNT_CUMORDER_PERIOD; $this->output = array(); } function process() { global $order, $ot_subtotal, $currencies; $od_amount = $this->calculate_credit($this->get_order_total(), $this->get_cum_order_total()); // round discount to nearest cent. Discount of less than .5 cent will not be deducted from amount payable. $od_amount = round($od_amount, 2); if ($od_amount>0) { // deduct discount from amount payable $this->deduction = $od_amount; $this->output[] = array('title' => $this->title . ':<br>' . MODULE_LOYALTY_DISCOUNT_SPENT . $currencies->format($this->cum_order_total) . $this->period_string . MODULE_LOYALTY_DISCOUNT_QUALIFY . $this->od_pc . '%:', 'text' => '<b>' . $currencies->format($od_amount) .'<b>' , 'value' => $od_amount); $order->info['total'] = $order->info['total'] - $od_amount; if ($this->sort_order < $ot_subtotal->sort_order) { $order->info['subtotal'] = $order->info['subtotal'] - $od_amount; } } } // end of function process() function calculate_credit($amount_order, $amount_cum_order) { global $order; $od_amount=0; $table_cost = split("[:,]" , MODULE_LOYALTY_DISCOUNT_TABLE); for ($i = 0; $i < count($table_cost); $i+=2) { if ($amount_cum_order >= $table_cost[$i]) { $od_pc = $table_cost[$i+1]; $this->od_pc = $od_pc; } } // Calculate tax reduction if necessary if($this->calculate_tax == 'true') { // Calculate main tax reduction $tod_amount = $order->info['tax']*$od_pc/100; $order->info['tax'] = $order->info['tax'] - $tod_amount; // Calculate tax group deductions reset($order->info['tax_groups']); while (list($key, $value) = each($order->info['tax_groups'])) { $god_amount = $value*$od_pc/100; $order->info['tax_groups'][$key] = $order->info['tax_groups'][$key] - $god_amount; } } $od_amount = $amount_order*$od_pc/100; $od_amount = $od_amount + $tod_amount; return $od_amount; } function get_order_total() { global $order, $cart; $order_total = $order->info['total']; // Check if gift voucher is in cart and adjust total $products = $cart->get_products(); for ($i=0; $i<sizeof($products); $i++) { $t_prid = tep_get_prid($products[$i]['id']); $gv_query = tep_db_query("select products_price, products_tax_class_id, products_model from " . TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'"); $gv_result = tep_db_fetch_array($gv_query); if (ereg('^GIFT', addslashes($gv_result['products_model']))) { $qty = $cart->get_quantity($t_prid); $products_tax = tep_get_tax_rate($gv_result['products_tax_class_id']); if ($this->include_tax =='false') { $gv_amount = $gv_result['products_price'] * $qty; } else { $gv_amount = ($gv_result['products_price'] + tep_calculate_tax($gv_result['products_price'],$products_tax)) * $qty; } $order_total=$order_total - $gv_amount; } } if ($this->include_tax == 'false') $order_total=$order_total-$order->info['tax']; if ($this->include_shipping == 'false') $order_total=$order_total-$order->info['shipping_cost']; return $order_total; } function get_cum_order_total() { global $order, $customer_id; $history_query_raw = "select o.date_purchased, ot.value as order_total from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id) where o.customers_id = '" . $customer_id . "' and o.customers_id != 0 and ot.class = 'ot_subtotal' and o.orders_status = '" . $this->loyalty_order_status . "' order by date_purchased DESC"; $history_query = tep_db_query($history_query_raw); if (tep_db_num_rows($history_query)) { $cum_order_total = 0; $cutoff_date = $this->get_cutoff_date(); while ($history = tep_db_fetch_array($history_query)) { if ($this->get_date_in_period($cutoff_date, $history['date_purchased']) == true){ $cum_order_total = $cum_order_total + $history['order_total']; } } $this->cum_order_total = $cum_order_total; return $cum_order_total; } else { $cum_order_total = 0; $this->cum_order_total = $cum_order_total; return $cum_order_total; } } function get_cutoff_date() { $rightnow = time(); switch ($this->cum_order_period) { case alltime: $this->period_string = MODULE_LOYALTY_DISCOUNT_WITHUS; $cutoff_date = 0; return $cutoff_date; break; case year: $this->period_string = MODULE_LOYALTY_DISCOUNT_LAST . MODULE_LOYALTY_DISCOUNT_YEAR; $cutoff_date = $rightnow - (60*60*24*365); return $cutoff_date; break; case quarter: $this->period_string = MODULE_LOYALTY_DISCOUNT_LAST . MODULE_LOYALTY_DISCOUNT_QUARTER; $cutoff_date = $rightnow - (60*60*24*92); return $cutoff_date; break; case month: $this->period_string = MODULE_LOYALTY_DISCOUNT_LAST . MODULE_LOYALTY_DISCOUNT_MONTH; $cutoff_date = $rightnow - (60*60*24*31); return $cutoff_date; break; default: $cutoff_date = $rightnow; return $cutoff_date; } } function get_date_in_period($cutoff_date, $raw_date) { if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false; $year = (int)substr($raw_date, 0, 4); $month = (int)substr($raw_date, 5, 2); $day = (int)substr($raw_date, 8, 2); $hour = (int)substr($raw_date, 11, 2); $minute = (int)substr($raw_date, 14, 2); $second = (int)substr($raw_date, 17, 2); $order_date_purchased = mktime($hour,$minute,$second,$month,$day,$year); if ($order_date_purchased >= $cutoff_date) {return true;} else {return false;} } function check() { if (!isset($this->check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_LOYALTY_DISCOUNT_STATUS'"); $this->check = tep_db_num_rows($check_query); } return $this->check; } function keys() { return array('MODULE_LOYALTY_DISCOUNT_STATUS', 'MODULE_LOYALTY_DISCOUNT_SORT_ORDER', 'MODULE_LOYALTY_DISCOUNT_CUMORDER_PERIOD', 'MODULE_LOYALTY_DISCOUNT_TABLE', 'MODULE_LOYALTY_DISCOUNT_INC_SHIPPING', 'MODULE_LOYALTY_DISCOUNT_INC_TAX', 'MODULE_LOYALTY_DISCOUNT_CALC_TAX', 'MODULE_LOYALTY_DISCOUNT_ORDER_STATUS'); } 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 ('Display Total', 'MODULE_LOYALTY_DISCOUNT_STATUS', 'true', 'Do you want to enable the Order Discount?', '6', '1','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 ('Sort Order', 'MODULE_LOYALTY_DISCOUNT_SORT_ORDER', '999', 'Sort order of display.', '6', '2', 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 ('Include Shipping', 'MODULE_LOYALTY_DISCOUNT_INC_SHIPPING', 'true', 'Include Shipping in calculation', '6', '3', '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 ('Include Tax', 'MODULE_LOYALTY_DISCOUNT_INC_TAX', 'true', 'Include Tax in calculation.', '6', '4','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 ('Calculate Tax', 'MODULE_LOYALTY_DISCOUNT_CALC_TAX', 'false', 'Re-calculate Tax on discounted amount.', '6', '5','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 ('Cumulative order total period', 'MODULE_LOYALTY_DISCOUNT_CUMORDER_PERIOD', 'year', 'Set the period over which to calculate cumulative order total.', '6', '6','tep_cfg_select_option(array(\'alltime\', \'year\', \'quarter\', \'month\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Discount Percentage', 'MODULE_LOYALTY_DISCOUNT_TABLE', '1000:5,1500:7.5,2000:10,3000:12.5,5000:15', 'Set the cumulative order total breaks per period set above, and discount percentages', '6', '7', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Order Status', 'MODULE_LOYALTY_DISCOUNT_ORDER_STATUS', '3', 'Set the minimum order status for an order to add it to the total amount ordered', '6', '8', now())"); } function remove() { $keys = ''; $keys_array = $this->keys(); for ($i=0; $i<sizeof($keys_array); $i++) { $keys .= "'" . $keys_array[$i] . "',"; } $keys = substr($keys, 0, -1); tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in (" . $keys . ")"); } } ?> Based on some previous posts adding the following at the beginning of the module will allow the customer_Group_id to be used in all funtions: if (isset($_SESSION['sppc_customer_group_id']) && $_SESSION['sppc_customer_group_id'] != '0') { $this->ccg_id = $_SESSION['sppc_customer_group_id']; } else { $this->cg_id = '0'; } I have added this here: <?php /* ot_loyalty_discount.php $Id: ot_loyalty_discount.php,v 1.0 2003/06/09 22:49:11 sp Exp $ osCommerce, Open Source E-Commerce Solutions [url="http://www.oscommerce.com"]http://www.oscommerce.com[/url] Copyright © 2002 osCommerce Released under the GNU General Plic License */ class ot_loyalty_discount { var $title, $output; function ot_loyalty_discount() { if (isset($_SESSION['sppc_customer_group_id']) && $_SESSION['sppc_customer_group_id'] != '0') { $this->ccg_id = $_SESSION['sppc_customer_group_id']; } else { $this->cg_id = '0'; } $this->code = ot_loyalty_discount; $this->title = MODULE_LOYALTY_DISCOUNT_TITLE; $this->description = MODULE_LOYALTY_DISCOUNT_DESCRIPTION; $this->enabled = MODULE_LOYALTY_DISCOUNT_STATUS; $this->sort_order = MODULE_LOYALTY_DISCOUNT_SORT_ORDER; $this->include_shipping = MODULE_LOYALTY_DISCOUNT_INC_SHIPPING; $this->include_tax = MODULE_LOYALTY_DISCOUNT_INC_TAX; $this->calculate_tax = MODULE_LOYALTY_DISCOUNT_CALC_TAX; $this->table = MODULE_LOYALTY_DISCOUNT_TABLE; $this->loyalty_order_status = MODULE_LOYALTY_DISCOUNT_ORDER_STATUS; $this->cum_order_period = MODULE_LOYALTY_DISCOUNT_CUMORDER_PERIOD; $this->output = array(); } function process() { global $order, $ot_subtotal, $currencies; $od_amount = $this->calculate_credit($this->get_order_total(), $this->get_cum_order_total()); // round discount to nearest cent. Discount of less than .5 cent will not be deducted from amount payable. $od_amount = round($od_amount, 2); if ($od_amount>0) { // deduct discount from amount payable $this->deduction = $od_amount; $this->output[] = array('title' => $this->title . ':<br>' . MODULE_LOYALTY_DISCOUNT_SPENT . $currencies->format($this->cum_order_total) . $this->period_string . MODULE_LOYALTY_DISCOUNT_QUALIFY . $this->od_pc . '%:', 'text' => '<b>' . $currencies->format($od_amount) .'<b>' , 'value' => $od_amount); $order->info['total'] = $order->info['total'] - $od_amount; if ($this->sort_order < $ot_subtotal->sort_order) { $order->info['subtotal'] = $order->info['subtotal'] - $od_amount; } } } // end of function process() Now comes my big question. Where do I disable this module??? Can someone give me a hint? Thanks, Eric
  8. I managed to switch of the Discount information in account.php by wrapping the complete Loyalty Discount addition into: if ($sppc_customer_group_id == 0) { //All the Loyalty Discount Code <?php ; } ?> This might not be the most elegant way but it works... Unfortunately I can not figure out how to disable the loyalty discount in the order confirmation in a similar way. :'( Can anyone help??
  9. I need some quick help. I have SPPC (separate price per customer) installed on my webpage and would like to disable the loyalty discount for all but 1 customer group. The info to which customer group the customer belongs is stored in the database table CUSTOMERS in the field customer_group_id. The module (including the account.php info box) should only be active if the customer_group_id = 0 and disabled for all other values. Can someone come up with a quick fix for this?
  10. Thanks a million for your great support !! It works now :lol: !!
  11. Thanks a lot. Login works now but unfortunately the prices do not change (the group selected for the user in the admin screen is used instead). Any idea where to look? Thanks
  12. Sorry guys in case this was asked before (I searched and searched): I have trouble getting the special admin login to work. The email address is entered in login.php. Once I login with the subscriber I get the new "Choose a customer group" window (https://mystore.com/dev_shop/login.php/action/process). When I click continue the url changes to: https://mystore.com/dev_shop/login.php/acti...ocess/skip/true and I see the same "Choose a customer group" window again. I compared the login.php files but can't find the problem Any idea?
  13. Please be aware that this contrib will open up your server to serious spam attacks. There are some serious security issues in the script allowing spammers to use your server to send thousands of emails.
  14. A piece of advice: Forget about it. I had the script installed and working fine. After fighting of the usual "once in a while" spam attempts the big spam hit one morning. The errors in the script were used to send out thousands of spam mails causing the server to overload. It took hours to clean up the mess.
×
×
  • Create New...