#1 (permalink)  
Alt 31.03.2006, 11:15
 
Registriert seit: 15.12.2005
Beiträge: 300
Standard

ich versuche gerade ein osc-modul f?r prozentualen mengenrabatt umzubauen.
leider h?ngt das ding noch wegen der unterschiedlichen datenbankstruktur.
kann mir da mal jemad auf die spr?nge helfen?
Code:
<?php
/*
<<<<<<< ot_lev_discount.php
 $Id: ot_lev_discount.php,v 1.0 2002/04/08 01:13:43 hpdl Exp $
=======
 $Id: ot_lev_discount.php,v 1.3 2002/09/04 22:49:11 wilt Exp $
 $Id: ot_lev_discount.php,v 2.4 2006/02/28 12:10:01 maniac101 Exp $
modified to calc discount correctly when tax is included in discount
>>>>>>> 2.4

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2002 osCommerce

 Released under the GNU General Public License
*/
////
 class ot_lev {
  var $title, $output;

  function ot_lev() {
   $this->code = 'ot_lev';
   $this->title = MODULE_ORDER_TOTAL_LEV_TITLE;
   $this->description = MODULE_ORDER_TOTAL_LEV_DESCRIPTION;
   $this->enabled = MODULE_ORDER_TOTAL_LEV_STATUS;
   $this->sort_order = MODULE_ORDER_TOTAL_LEV_SORT_ORDER;
   $this->include_shipping = MODULE_ORDER_TOTAL_ORDER_TOTAL_LEV_INC_SHIPPING;
   $this->include_tax = MODULE_LEV_INC_TAX;
   $this->calculate_tax = MODULE_ORDER_TOTAL_LEV_CALC_TAX;
   $this->table = MODULE_ORDER_TOTAL_LEV_TABLE;
   $this->credit_class = false;
   $this->output = array();
  }
///////
  function process() {
   global $order, $subtotal, $currencies;
   $od_amount = $this->calculate_credit($this->get_order_total());
   if ($od_amount>0) {
   $this->deduction = $od_amount;
   $this->output[] = array('title' => $this->title . ':',
               'text' => '<b>' . $currencies->format($od_amount) . '</b>',
               'value' => $od_amount);
  $order->info['total'] = $order->info['total'] - $od_amount;
  if ($this->sort_order < $subtotal->sort_order) {
   $order->info['subtotal'] = $order->info['subtotal'] - $od_amount;
  }
}
  }
   
  
 function calculate_credit($amount) {
  global $order;
  $od_amount=0;
  $table_cost = split("[:,]" , MODULE_ORDER_TOTAL_LEV_TABLE);
  for ($i = 0; $i < count($table_cost); $i+=2) {
     if ($amount >= $table_cost[$i]) {
      $od_pc = $table_cost[$i+1];
     }
    }
// Calculate tax reduction if necessary
  if($this->calculate_tax == 'true') {
// Calculate main tax reduction
   $tod_amount = round($order->info['tax']*10)/10*$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 = round($value*10)/10*$od_pc/100;
    $order->info['tax_groups'][$key] = $order->info['tax_groups'][$key] - $god_amount;
   } 
  }
  $od_amount = round($amount*10)/10*$od_pc/100;
//  $od_amount = $od_amount + $tod_amount;
// maniac101 above line was adding tax back into discount incorrectly for me
  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 = xtc_get_prid($products[$i]['id']);
   $gv_query = xtc_db_query("select products_price, products_tax_class_id, products_model from " . TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'");
   $gv_result = xtc_db_fetch_array($gv_query);
   if (ereg('GIFT', addslashes($gv_result['products_model']))) { 
   $qty = $cart->get_quantity($t_prid);
    $products_tax = xtc_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'] + xtc_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 check() {
   if (!isset($this->check)) {
    $check_query = xtc_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_ORDER_TOTAL_LEV_STATUS'");
    $this->check = xtc_db_num_rows($check_query);
   }

   return $this->check;
  }
/////
  function keys() {
   return array('MODULE_ORDER_TOTAL_LEV_STATUS', 'MODULE_ORDER_TOTAL_LEV_SORT_ORDER','MODULE_ORDER_TOTAL_LEV_TABLE', 'MODULE_ORDER_TOTAL_LEV_INC_SHIPPING', 'MODULE_ORDER_TOTAL_LEV_INC_TAX','MODULE_ORDER_TOTAL_LEV_CALC_TAX');
  }
///////
  function install() {

	
   xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_ORDER_TOTAL_LEV_STATUS', 'true', '6', '1','xtc_cfg_select_option(array(\'true\', \'false\'), ', now())");
   xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_LEV_SORT_ORDER', '999', '6', '2', now())"); 
   xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function ,date_added) values ( 'MODULE_ORDER_TOTAL_LEV_INC_SHIPPING',
 'true', '6', '3', 'xtc_cfg_select_option(array(\'true\', \'false\'), ', now())");
   xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function ,date_added) values ('MODULE_ORDER_TOTAL_LEV_INC_TAX', 'true', '6', '4','xtc_cfg_select_option(array(\'true\', \'false\'), ', now())");
   xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function ,date_added) values ('MODULE_ORDER_TOTAL_LEV_CALC_TAX', 'false', '6', '5','xtc_cfg_select_option(array(\'true\', \'false\'), ', now())"); 
   xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_ORDER_TOTAL_LEV_TABLE', '', '6', '6', now())");
  }

  function remove() {
   xtc_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
  }
 }
?>
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
mengenrabatt

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.

Copyright © 2014 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand