⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 order_total.php

📁 Easy_Buy是一个在线销售系统
💻 PHP
字号:
<?php
/**
 * File contains the order-totals-processing class ("order-total")
 *
 * @package classes
 * @copyright Copyright 2003-2006 Zen Cart Development Team
 * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
 * @version $Id: order_total.php 3039 2006-02-15 00:29:28Z wilt $
 */
/**
 * order-total class
 *
 * Handles all order-total processing functions
 * 
 * @package classes
 */
if (!defined('IS_ADMIN_FLAG')) {
  die('Illegal Access');
}
class order_total extends base {
  var $modules;

  // class constructor
  function order_total() {

    if (defined('MODULE_ORDER_TOTAL_INSTALLED') && zen_not_null(MODULE_ORDER_TOTAL_INSTALLED)) {
      $this->modules = explode(';', MODULE_ORDER_TOTAL_INSTALLED);

      reset($this->modules);
      while (list(, $value) = each($this->modules)) {
        //          include(DIR_WS_LANGUAGES . $_SESSION['language'] . '/modules/order_total/' . $value);
        include(zen_get_file_directory(DIR_WS_LANGUAGES . $_SESSION['language'] . '/modules/order_total/', $value, 'false'));
        include(DIR_WS_MODULES . 'order_total/' . $value);

        $class = substr($value, 0, strrpos($value, '.'));
        $GLOBALS[$class] = new $class;
      }
    }
  }

  function process() {
    global $order;
    $order_total_array = array();
    if (is_array($this->modules)) {
      reset($this->modules);
      while (list(, $value) = each($this->modules)) {
        $class = substr($value, 0, strrpos($value, '.'));
        $GLOBALS[$class]->process();
        for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) {
          if (zen_not_null($GLOBALS[$class]->output[$i]['title']) && zen_not_null($GLOBALS[$class]->output[$i]['text'])) {
            $order_total_array[] = array('code' => $GLOBALS[$class]->code,
            'title' => $GLOBALS[$class]->output[$i]['title'],
            'text' => $GLOBALS[$class]->output[$i]['text'],
            'value' => $GLOBALS[$class]->output[$i]['value'],
            'sort_order' => $GLOBALS[$class]->sort_order);
          }
        }
      }
    }

    return $order_total_array;
  }

  function output($return_html=false) {
    global $template;
    $output_string = '';
    if (is_array($this->modules)) {
      reset($this->modules);
      while (list(, $value) = each($this->modules)) {
        $class = substr($value, 0, strrpos($value, '.'));
        $size = sizeof($GLOBALS[$class]->output);

        // ideally, the first part of this IF statement should be dropped, and the ELSE portion is all that should be kept
        if ($return_html == true) {
          for ($i=0; $i<$size; $i++) {
            $output_string .= '              <tr>' . "\n" .
            '                <td align="right" class="' . str_replace('_', '-', $GLOBALS[$class]->code) . '-Text">' . $GLOBALS[$class]->output[$i]['title'] . '</td>' . "\n" .
            '                <td align="right" class="' . str_replace('_', '-', $GLOBALS[$class]->code) . '-Amount">' . $GLOBALS[$class]->output[$i]['text'] . '</td>' . "\n" .
            '              </tr>';
          }
        } else {
          // use a template file for output instead of hard-coded HTML
          require($template->get_template_dir('tpl_modules_order_totals.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_order_totals.php');
        }
      }
    }
    return $output_string;
  }
  //
  // This function is called in checkout payment after display of payment methods. It actually calls
  // two credit class functions.
  //
  // use_credit_amount() is normally a checkbox used to decide whether the credit amount should be applied to reduce
  // the order total. Whether this is a Gift Voucher, or discount coupon or reward points etc.
  //
  // The second function called is credit_selection(). This in the credit classes already made is usually a redeem box.
  // for entering a Gift Voucher number. Note credit classes can decide whether this part is displayed depending on
  // E.g. a setting in the admin section.
  //
  function credit_selection() {
    $selection_array = array();
    if (is_array($this->modules)) {
      reset($this->modules);
      while (list(, $value) = each($this->modules)) {
        $class = substr($value, 0, strrpos($value, '.'));
        if ($GLOBALS[$class]->credit_class ) {
          $selection = $GLOBALS[$class]->credit_selection();
          if (is_array($selection)) $selection_array[] = $selection;
        }
      }
    }
    return $selection_array;
  }


  // update_credit_account is called in checkout process on a per product basis. It's purpose
  // is to decide whether each product in the cart should add something to a credit account.
  // e.g. for the Gift Voucher it checks whether the product is a Gift voucher and then adds the amount
  // to the Gift Voucher account.
  // Another use would be to check if the product would give reward points and add these to the points/reward account.
  //
  function update_credit_account($i) {
    if (MODULE_ORDER_TOTAL_INSTALLED) {
      reset($this->modules);
      while (list(, $value) = each($this->modules)) {
        $class = substr($value, 0, strrpos($value, '.'));
        if ( $GLOBALS[$class]->credit_class ) {
          $GLOBALS[$class]->update_credit_account($i);
        }
      }
    }
  }


  // This function is called in checkout confirmation.
  // It's main use is for credit classes that use the credit_selection() method. This is usually for
  // entering redeem codes(Gift Vouchers/Discount Coupons). This function is used to validate these codes.
  // If they are valid then the necessary actions are taken, if not valid we are returned to checkout payment
  // with an error

  function collect_posts() {
    if (MODULE_ORDER_TOTAL_INSTALLED) {
      reset($this->modules);
      while (list(, $value) = each($this->modules)) {
        $class = substr($value, 0, strrpos($value, '.'));
        if ( $GLOBALS[$class]->credit_class ) {
          $post_var = 'c' . $GLOBALS[$class]->code;
          if ($_POST[$post_var]) $_SESSION[$post_var] = $_POST[$post_var];
          $GLOBALS[$class]->collect_posts();
        }
      }
    }
  }
  // pre_confirmation_check is called on checkout confirmation. It's function is to decide whether the
  // credits available are greater than the order total. If they are then a variable (credit_covers) is set to
  // true. This is used to bypass the payment method. In other words if the Gift Voucher is more than the order
  // total, we don't want to go to paypal etc.
  //
  function pre_confirmation_check() {
    global $order, $credit_covers;
    if (MODULE_ORDER_TOTAL_INSTALLED) {
      $total_deductions  = 0;
      reset($this->modules);
      $order_total = $order->info['total'];
      while (list(, $value) = each($this->modules)) {
        $class = substr($value, 0, strrpos($value, '.'));
        if ( $GLOBALS[$class]->credit_class ) {
          $total_deductions = $total_deductions + $GLOBALS[$class]->pre_confirmation_check($order_total);
          //echo 'deduction' . $GLOBALS[$class]->pre_confirmation_check($order_total) . '#'.$order_total;
          $order_total = $order_total - $GLOBALS[$class]->pre_confirmation_check($order_total);
        }
      }
      $difference = $order->info['total'] - $total_deductions;
      //die('here');
      if ( $difference <= 0.009 ) {
        $credit_covers = true;
      }
    }
  }
  // this function is called in checkout process. it tests whether a decision was made at checkout payment to use
  // the credit amount be applied aginst the order. If so some action is taken. E.g. for a Gift voucher the account
  // is reduced the order total amount.
  //
  function apply_credit() {
    if (MODULE_ORDER_TOTAL_INSTALLED) {
      reset($this->modules);
      while (list(, $value) = each($this->modules)) {
        $class = substr($value, 0, strrpos($value, '.'));
        if ( $GLOBALS[$class]->credit_class) {
          $GLOBALS[$class]->apply_credit();
        }
      }
    }
  }

  // Called in checkout process to clear session variables created by each credit class module.
  //
  function clear_posts() {
    global $_POST;
    if (MODULE_ORDER_TOTAL_INSTALLED) {
      reset($this->modules);
      while (list(, $value) = each($this->modules)) {
        $class = substr($value, 0, strrpos($value, '.'));
        if ( $GLOBALS[$class]->credit_class ) {
          $_SESSION[$post_var] = 'c_' . $GLOBALS[$class]->code;
        }
      }
    }
  }
  // Called at various times. This function calulates the total value of the order that the
  // credit will be appled against. This varies depending on whether the credit class applies
  // to shipping & tax
  //
  function get_order_total_main($class, $order_total) {
    global $credit, $order;
    //      if ($GLOBALS[$class]->include_tax == 'false') $order_total=$order_total-$order->info['tax'];
    //      if ($GLOBALS[$class]->include_shipping == 'false') $order_total=$order_total-$order->info['shipping_cost'];
    return $order_total;
  }
}
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -