Jump to content
xt:Commerce Community Forum

HILFE... checkout_process.php bleibt weiß!


djb-side

Recommended Posts

hallo zusammen,

shop version 3.0.3

der shop ist gerade umgezogen, habe bereits einige anpassungen wegen mySQL 5 vornehmen müssen!

Jetzt ist noch das Problem, das beim abschicken der Bestellung die "checkout_process.php" einfach weiß bleibt!

Im Adminbereicht erscheit die Bestellung, aber der Kunde bekommt keine Mail!

Wer kann mir weiter helfen?

Liegt das auch an SQL5?

Link to comment
Share on other sites

keiner eine Idee?

ich vermute mal der Fehler liegt in der order.php,

aber da er mir garkeine Fehler-Meldung bringt,

weiß ich nicht was ich machen kann!

hier mal meine order.php

 

<?php

/* -----------------------------------------------------------------------------------------

   $Id: order.php,v 1.11 2004/04/25 13:58:08 fanta2k Exp $   

   XT-Commerce - community made shopping

   [URL="http://www.xt-commerce.com/"]http://www.xt-commerce.com[/URL]

   Copyright (c) 2003 XT-Commerce

   -----------------------------------------------------------------------------------------

   based on: 

   (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)

   (c) 2002-2003 osCommerce(order.php,v 1.32 2003/02/26); [URL="http://www.oscommerce.com/"]www.oscommerce.com[/URL] 

   (c) 2003  nextcommerce (order.php,v 1.28 2003/08/18); [URL="http://www.nextcommerce.org/"]www.nextcommerce.org[/URL]

   Released under the GNU General Public License

   -----------------------------------------------------------------------------------------

   Third Party contribution:

   Credit Class/Gift Vouchers/Discount Coupons (Version 5.10)

   [URL]http://www.oscommerce.com/community/contributions,282[/URL]

   Copyright (c) Strider | [EMAIL="[email protected]"][email protected][/EMAIL]

   Copyright (c  Nick Stanko of UkiDev.com, [EMAIL="[email protected]"][email protected][/EMAIL]

   Copyright (c) Andre [EMAIL="[email protected]"][email protected][/EMAIL]

   Copyright (c) 2001,2002 Ian C Wilson [URL="http://www.phesis.org/"]http://www.phesis.org[/URL]

   credit card encryption functions for the catalog module

   BMC 2003 for the CC CVV Module


   Released under the GNU General Public License

   ---------------------------------------------------------------------------------------*/

  // include needed functions

  require_once(DIR_FS_INC . 'xtc_date_long.inc.php');

  require_once(DIR_FS_INC . 'xtc_address_format.inc.php');

  require_once(DIR_FS_INC . 'xtc_get_country_name.inc.php');

  require_once(DIR_FS_INC . 'xtc_get_countries.inc.php');

  require_once(DIR_FS_INC . 'xtc_get_zone_code.inc.php');

  require_once(DIR_FS_INC . 'xtc_get_tax_description.inc.php');


  class order {

    var $info, $totals, $products, $customer, $delivery, $content_type;

    function order($order_id = '',$Price) {

      $this->info = array();

      $this->totals = array();

      $this->products = array();

      $this->customer = array();

      $this->delivery = array();

      $this->Price=$Price;

      if (xtc_not_null($order_id)) {

        $this->query($order_id);

      } else {

        $this->cart();

      }

    }

    function query($order_id) {

      $order_id = xtc_db_prepare_input($order_id);

      $order_query = xtc_db_query("select

                                   customers_id,

                                   customers_cid,

                                   customers_name,

                                   customers_company,

                                   customers_street_address,

                                   customers_suburb,

                                   customers_city,

                                   customers_postcode,

                                   customers_state,

                                   customers_country,

                                   customers_telephone,

                                   customers_email_address,

                                   customers_address_format_id,

                                   delivery_name,

                                   delivery_company,

                                   delivery_street_address,

                                   delivery_suburb,

                                   delivery_city,

                                   delivery_postcode,

                                   delivery_state,

                                   delivery_country,

                                   delivery_address_format_id,

                                   billing_name,

                                   billing_company,

                                   billing_street_address,

                                   billing_suburb,

                                   billing_city,

                                   billing_postcode,

                                   billing_state,

                                   billing_country,

                                   billing_address_format_id,

                                   payment_method,

                                   cc_type,

                                   cc_owner,

                                   cc_number,

                                   cc_expires,

                                   cc_cvv,

                                   cc_start,

                                   cc_issue,

                                   currency,

                                   comments,

                                   currency_value,

                                   date_purchased,

                                   orders_status,

                                   last_modified

                                   from " . TABLE_ORDERS . " where

                                   orders_id = '" . xtc_db_input($order_id) . "'");

      $order = xtc_db_fetch_array($order_query);

      $totals_query = xtc_db_query("select title, text,value from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . xtc_db_input($order_id) . "' order by sort_order");

      while ($totals = xtc_db_fetch_array($totals_query)) {

        $this->totals[] = array('title' => $totals['title'],

                                'text' =>$totals['text'],

                                'value'=>$totals['value']);

      }

      $order_total_query = xtc_db_query("select text from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . $order_id . "' and class = 'ot_total'");

      $order_total = xtc_db_fetch_array($order_total_query);

      $shipping_method_query = xtc_db_query("select title from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . $order_id . "' and class = 'ot_shipping'");

      $shipping_method = xtc_db_fetch_array($shipping_method_query);

      $order_status_query = xtc_db_query("select orders_status_name from " . TABLE_ORDERS_STATUS . " where orders_status_id = '" . $order['orders_status'] . "' and language_id = '" . $_SESSION['languages_id'] . "'");

      $order_status = xtc_db_fetch_array($order_status_query);

      $this->info = array('currency' => $order['currency'],

                          'currency_value' => $order['currency_value'],

                          'payment_method' => $order['payment_method'],

                          'cc_type' => $order['cc_type'],

                          'cc_owner' => $order['cc_owner'],

                          'cc_number' => $order['cc_number'],

                          'cc_expires' => $order['cc_expires'],

// BMC CC Mod Start

                          'cc_start' => $order['cc_start'],

                          'cc_issue' => $order['cc_issue'],

                          'cc_cvv' => $order['cc_cvv'],

// BMC CC Mod End

                          'date_purchased' => $order['date_purchased'],

                          'orders_status' => $order_status['orders_status_name'],

                          'last_modified' => $order['last_modified'],

                          'total' => strip_tags($order_total['text']),

                          'shipping_method' => ((substr($shipping_method['title'], -1) == ':') ? substr(strip_tags($shipping_method['title']), 0, -1) : strip_tags($shipping_method['title'])),

                          'comments' => $order['comments']

                          );

      $this->customer = array('id' => $order['customers_id'],

                              'name' => $order['customers_name'],

                              'csID' => $order['customers_cid'],

                              'company' => $order['customers_company'],

                              'street_address' => $order['customers_street_address'],

                              'suburb' => $order['customers_suburb'],

                              'city' => $order['customers_city'],

                              'postcode' => $order['customers_postcode'],

                              'state' => $order['customers_state'],

                              'country' => $order['customers_country'],

                              'format_id' => $order['customers_address_format_id'],

                              'telephone' => $order['customers_telephone'],

                              'email_address' => $order['customers_email_address']);

      $this->delivery = array('name' => $order['delivery_name'],

                              'company' => $order['delivery_company'],

                              'street_address' => $order['delivery_street_address'],

                              'suburb' => $order['delivery_suburb'],

                              'city' => $order['delivery_city'],

                              'postcode' => $order['delivery_postcode'],

                              'state' => $order['delivery_state'],

                              'country' => $order['delivery_country'],

                              'format_id' => $order['delivery_address_format_id']);

      if (empty($this->delivery['name']) && empty($this->delivery['street_address'])) {

        $this->delivery = false;

      }

      $this->billing = array('name' => $order['billing_name'],

                             'company' => $order['billing_company'],

                             'street_address' => $order['billing_street_address'],

                             'suburb' => $order['billing_suburb'],

                             'city' => $order['billing_city'],

                             'postcode' => $order['billing_postcode'],

                             'state' => $order['billing_state'],

                             'country' => $order['billing_country'],

                             'format_id' => $order['billing_address_format_id']);

      $index = 0;

      $orders_products_query = xtc_db_query("select orders_products_id, products_id, products_name, products_model, products_price, products_tax, products_quantity, final_price from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . xtc_db_input($order_id) . "'");

      while ($orders_products = xtc_db_fetch_array($orders_products_query)) {

        $this->products[$index] = array('qty' => $orders_products['products_quantity'],

                                  'id' => $orders_products['products_id'],

                                        'name' => $orders_products['products_name'],

                                        'model' => $orders_products['products_model'],

                                        'tax' => $orders_products['products_tax'],

                         'price'=>$orders_products['products_price'],

                                        'final_price' => $orders_products['final_price']);

        $subindex = 0;

        $attributes_query = xtc_db_query("select products_options, products_options_values, options_values_price, price_prefix from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . xtc_db_input($order_id) . "' and orders_products_id = '" . $orders_products['orders_products_id'] . "'");

        if (xtc_db_num_rows($attributes_query)) {

          while ($attributes = xtc_db_fetch_array($attributes_query)) {

            $this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options'],

                                                                     'value' => $attributes['products_options_values'],

                                                                     'prefix' => $attributes['price_prefix'],

                                                                     'price' => $attributes['options_values_price']);

            $subindex++;

          }

        }

        $this->info['tax_groups']["{$this->products[$index]['tax']}"] = '1';

        $index++;

      }

    }

    function cart() {

      global $currencies;

      $this->content_type = $_SESSION['cart']->get_content_type();

      $customer_address_query = xtc_db_query("select c.customers_firstname,c.customers_cid, c.customers_gender,c.customers_lastname, c.customers_telephone, c.customers_email_address, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, co.countries_id, co.countries_name, co.countries_iso_code_2, co.countries_iso_code_3, co.address_format_id, ab.entry_state from " . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " co on (ab.entry_country_id = co.countries_id) where c.customers_id = '" . $_SESSION['customer_id'] . "' and ab.customers_id = '" . $_SESSION['customer_id'] . "' and c.customers_default_address_id = ab.address_book_id");

      $customer_address = xtc_db_fetch_array($customer_address_query);

      $shipping_address_query = xtc_db_query("select ab.entry_firstname, ab.entry_lastname, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . $_SESSION['customer_id'] . "' and ab.address_book_id = '" . $_SESSION['sendto'] . "'");

      $shipping_address = xtc_db_fetch_array($shipping_address_query);


      $billing_address_query = xtc_db_query("select ab.entry_firstname, ab.entry_lastname, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . $_SESSION['customer_id'] . "' and ab.address_book_id = '" . $_SESSION['billto'] . "'");

      $billing_address = xtc_db_fetch_array($billing_address_query);

      $tax_address_query = xtc_db_query("select ab.entry_country_id, ab.entry_zone_id from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) where ab.customers_id = '" . $_SESSION['customer_id'] . "' and ab.address_book_id = '" . ($this->content_type == 'virtual' ? $_SESSION['billto'] : $_SESSION['sendto']) . "'");

      $tax_address = xtc_db_fetch_array($tax_address_query);

      $this->info = array('order_status' => DEFAULT_ORDERS_STATUS_ID,

                          'currency' => $_SESSION['currency'],

                          'currency_value' => $currencies->currencies[$_SESSION['currency']]['value'],

                          'payment_method' => $_SESSION['payment'],

                          'cc_type' => $GLOBALS['cc_type'],

                          'cc_owner' => $GLOBALS['cc_owner'],

                          'cc_number' => $GLOBALS['cc_number'],

                          'cc_expires' => $GLOBALS['cc_expires'],

// BMC CC Mod Start

                          'cc_start' => (isset($GLOBALS['cc_start']) ? $GLOBALS['cc_start'] : ''),

                          'cc_issue' => (isset($GLOBALS['cc_issue']) ? $GLOBALS['cc_issue'] : ''),

                          'cc_cvv' => (isset($GLOBALS['cc_cvv']) ? $GLOBALS['cc_cvv'] : ''),

// BMC CC Mod End

                          'shipping_method' => $_SESSION['shipping']['title'],

                          'shipping_cost' => $_SESSION['shipping']['cost'],

                          'comments' => $_SESSION['comments'],

                          //'shipping_class'=>$_SESSION['shipping']['id'],

                          'shipping_class' =>  ( (strpos($shipping['id'],'_') > 0) ?  substr( strrev( strchr(strrev($shipping['id']),'_') ),0,-1) : $shipping['id'] ),

                          'payment_class' => $_SESSION['payment'],

                          );

      if (isset($_SESSION['payment']) && is_object($_SESSION['payment'])) {

        $this->info['payment_method'] = $_SESSION['payment']->title;

        $this->info['payment_class'] = $_SESSION['payment']->title;

        if ( isset($_SESSION['payment']->order_status) && is_numeric($_SESSION['payment']->order_status) && ($_SESSION['payment']->order_status > 0) ) {

          $this->info['order_status'] = $_SESSION['payment']->order_status;

        }

      }

      $this->customer = array('firstname' => $customer_address['customers_firstname'],

                              'lastname' => $customer_address['customers_lastname'],

                              'csID' => $customer_address['customers_cid'],

                              'gender' => $customer_address['customers_gender'],

                              'company' => $customer_address['entry_company'],

                              'street_address' => $customer_address['entry_street_address'],

                              'suburb' => $customer_address['entry_suburb'],

                              'city' => $customer_address['entry_city'],

                              'postcode' => $customer_address['entry_postcode'],

                              'state' => ((xtc_not_null($customer_address['entry_state'])) ? $customer_address['entry_state'] : $customer_address['zone_name']),

                              'zone_id' => $customer_address['entry_zone_id'],

                              'country' => array('id' => $customer_address['countries_id'], 'title' => $customer_address['countries_name'], 'iso_code_2' => $customer_address['countries_iso_code_2'], 'iso_code_3' => $customer_address['countries_iso_code_3']),

                              'format_id' => $customer_address['address_format_id'],

                              'telephone' => $customer_address['customers_telephone'],

                              'email_address' => $customer_address['customers_email_address']);

      $this->delivery = array('firstname' => $shipping_address['entry_firstname'],

                              'lastname' => $shipping_address['entry_lastname'],

                              'company' => $shipping_address['entry_company'],

                              'street_address' => $shipping_address['entry_street_address'],

                              'suburb' => $shipping_address['entry_suburb'],

                              'city' => $shipping_address['entry_city'],

                              'postcode' => $shipping_address['entry_postcode'],

                              'state' => ((xtc_not_null($shipping_address['entry_state'])) ? $shipping_address['entry_state'] : $shipping_address['zone_name']),

                              'zone_id' => $shipping_address['entry_zone_id'],

                              'country' => array('id' => $shipping_address['countries_id'], 'title' => $shipping_address['countries_name'], 'iso_code_2' => $shipping_address['countries_iso_code_2'], 'iso_code_3' => $shipping_address['countries_iso_code_3']),

                              'country_id' => $shipping_address['entry_country_id'],

                              'format_id' => $shipping_address['address_format_id']);

      $this->billing = array('firstname' => $billing_address['entry_firstname'],

                             'lastname' => $billing_address['entry_lastname'],

                             'company' => $billing_address['entry_company'],

                             'street_address' => $billing_address['entry_street_address'],

                             'suburb' => $billing_address['entry_suburb'],

                             'city' => $billing_address['entry_city'],

                             'postcode' => $billing_address['entry_postcode'],

                             'state' => ((xtc_not_null($billing_address['entry_state'])) ? $billing_address['entry_state'] : $billing_address['zone_name']),

                             'zone_id' => $billing_address['entry_zone_id'],

                             'country' => array('id' => $billing_address['countries_id'], 'title' => $billing_address['countries_name'], 'iso_code_2' => $billing_address['countries_iso_code_2'], 'iso_code_3' => $billing_address['countries_iso_code_3']),

                             'country_id' => $billing_address['entry_country_id'],

                             'format_id' => $billing_address['address_format_id']);

      $index = 0;

      $products = $_SESSION['cart']->get_products();

      for ($i=0, $n=sizeof($products); $i<$n; $i++) {

        $products_price=$this->Price->xtcGetPrice($products[$i]['id'],

                                        $format=false,

                                        $products[$i]['quantity'],

                                        $products[$i]['tax_class_id'],

                                        '')+$this->Price->xtcFormat($_SESSION['cart']->attributes_price($products[$i]['id']),false);

        $this->products[$index] = array('qty' => $products[$i]['quantity'],

                                        'name' => $products[$i]['name'],

                                        'model' => $products[$i]['model'],

                                        'tax_class_id'=> $products[$i]['tax_class_id'],

                                        'tax' => xtc_get_tax_rate($products[$i]['tax_class_id'], $tax_address['entry_country_id'], $tax_address['entry_zone_id']),

                                        'tax_description' => xtc_get_tax_description($products[$i]['tax_class_id'], $tax_address['entry_country_id'], $tax_address['entry_zone_id']),

                                        'price' =>  $products_price ,

                                  'final_price' => $products_price*$products[$i]['quantity'],

                         'weight' => $products[$i]['weight'],

                                        'id' => $products[$i]['id']);

        if ($products[$i]['attributes']) {

          $subindex = 0;

          reset($products[$i]['attributes']);

          while (list($option, $value) = each($products[$i]['attributes'])) {

            $attributes_query = xtc_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $products[$i]['id'] . "' and pa.options_id = '" . $option . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $value . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $_SESSION['languages_id'] . "' and poval.language_id = '" . $_SESSION['languages_id'] . "'");

            $attributes = xtc_db_fetch_array($attributes_query);

            $this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options_name'],

                                                                     'value' => $attributes['products_options_values_name'],

                                                                     'option_id' => $option,

                                                                     'value_id' => $value,

                                                                     'prefix' => $attributes['price_prefix'],

                                                                     'price' => $attributes['options_values_price']);

            $subindex++;

          }

        }

        $shown_price = $this->products[$index]['final_price'];

        $this->info['subtotal'] += $shown_price;

        if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1){

          $shown_price_tax = $shown_price-($shown_price/100 * $_SESSION['customers_status']['customers_status_ot_discount']);

        }

        $products_tax = $this->products[$index]['tax'];

        $products_tax_description = $this->products[$index]['tax_description'];

        if ($_SESSION['customers_status']['customers_status_show_price_tax'] == '1') {

          if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1) {

            $this->info['tax'] += $shown_price_tax - ($shown_price_tax / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));

            $this->info['tax_groups'][TAX_ADD_TAX."$products_tax_description"] += (($shown_price_tax /(100+$products_tax)) * $products_tax);

          } else {

            $this->info['tax'] += $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)));

            $this->info['tax_groups'][TAX_ADD_TAX . "$products_tax_description"] += (($shown_price /(100+$products_tax)) * $products_tax);

          }

        } else {

          if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == 1) {

            $this->info['tax'] += ($shown_price_tax/100) * ($products_tax);

            $this->info['tax_groups'][TAX_NO_TAX . "$products_tax_description"] += ($shown_price_tax/100) * ($products_tax);

          } else {

            $this->info['tax'] += ($shown_price/100) * ($products_tax);

            $this->info['tax_groups'][TAX_NO_TAX . "$products_tax_description"] += ($shown_price/100) * ($products_tax);

          }

        }

        $index++;

      }


      if ($_SESSION['customers_status']['customers_status_show_price_tax'] == '0') {

        $this->info['total'] = $this->info['subtotal']  + $this->Price->xtcFormat($this->info['shipping_cost'], false,0,true);

        if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == '1') {

          $this->info['total'] -= ($this->info['subtotal'] /100 * $_SESSION['customers_status']['customers_status_ot_discount']);

        }

      } else {

        $this->info['total'] = $this->info['subtotal']  + $this->Price->xtcFormat($this->info['shipping_cost'],false,0,true);

        if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == '1') {

          $this->info['total'] -= ($this->info['subtotal'] /100 * $_SESSION['customers_status']['customers_status_ot_discount']);

        }

      }

    }

  }

?>

und hier meine checkout_process.php:
 

<?php

/* -----------------------------------------------------------------------------------------

   $Id: checkout_process.php,v 1.10 2004/03/25 08:36:06 fanta2k Exp $   

   XT-Commerce - community made shopping

   [URL="http://www.xt-commerce.com/"]http://www.xt-commerce.com[/URL]

   Copyright (c) 2003 XT-Commerce

   -----------------------------------------------------------------------------------------

   based on:

   (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)

   (c) 2002-2003 osCommerce(checkout_process.php,v 1.128 2003/05/28); [URL="http://www.oscommerce.com/"]www.oscommerce.com[/URL]

   (c) 2003  nextcommerce (checkout_process.php,v 1.30 2003/08/24); [URL="http://www.nextcommerce.org/"]www.nextcommerce.org[/URL]

   Released under the GNU General Public License

    ----------------------------------------------------------------------------------------

   Third Party contribution:

   Customers Status v3.x  (c) 2002-2003 Copyright Elari [EMAIL="[email protected]"][email protected][/EMAIL] | [URL="http://www.unlockgsm.com/dload-osc/"]www.unlockgsm.com/dload-osc/[/URL] | CVS : [URL]http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/elari/?sortby=date#dirlist[/URL]

   Credit Class/Gift Vouchers/Discount Coupons (Version 5.10)

   [URL]http://www.oscommerce.com/community/contributions,282[/URL]

   Copyright (c) Strider | [EMAIL="[email protected]"][email protected][/EMAIL]

   Copyright (c  Nick Stanko of UkiDev.com, [EMAIL="[email protected]"][email protected][/EMAIL]

   Copyright (c) Andre [EMAIL="[email protected]"][email protected][/EMAIL]

   Copyright (c) 2001,2002 Ian C Wilson [URL="http://www.phesis.org/"]http://www.phesis.org[/URL]

   Released under the GNU General Public License

   ---------------------------------------------------------------------------------------*/

  include( 'includes/application_top.php');


  // include needed functions

  require_once(DIR_FS_INC . 'xtc_calculate_tax.inc.php');

  require_once(DIR_FS_INC . 'xtc_address_label.inc.php');

  require_once(DIR_FS_INC . 'changedatain.inc.php');


  // initialize smarty

  $smarty = new Smarty;

  // if the customer is not logged on, redirect them to the login page

  if (!isset($_SESSION['customer_id'])) {

    //$_SESSION['navigation']->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));

    xtc_redirect(xtc_href_link(FILENAME_LOGIN, '', 'SSL'));

  }

  if ($_SESSION['customers_status']['customers_status_show_price'] !='1'){

    xtc_redirect(xtc_href_link(FILENAME_DEFAULT, '', ''));

  }

  if (!isset($_SESSION['sendto'])) {

    xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

  }

  if ( (xtc_not_null(MODULE_PAYMENT_INSTALLED)) && (!isset($_SESSION['payment'])) ) {

    xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

 }

  // avoid hack attempts during the checkout procedure by checking the internal cartID

  if (isset($_SESSION['cart']->cartID) && isset($_SESSION['cartID'])) {

    if ($_SESSION['cart']->cartID != $_SESSION['cartID']) {

      xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));

    }

  }

  // load selected payment module

  require(DIR_WS_CLASSES . 'payment.php');

  if (isset($_SESSION['credit_covers'])) $_SESSION['payment']=''; //ICW added for CREDIT CLASS

  $payment_modules = new payment($_SESSION['payment']);

  // load the selected shipping module

  require(DIR_WS_CLASSES . 'shipping.php');

  $shipping_modules = new shipping($_SESSION['shipping']);

  require(DIR_WS_CLASSES . 'order.php');

  $order = new order('',&$xtPrice);

  // load the before_process function from the payment modules

  $payment_modules->before_process();

  require(DIR_WS_CLASSES . 'order_total.php');

  $order_total_modules = new order_total(&$xtPrice);

  $order_totals = $order_total_modules->process();

    // BMC CC Mod Start

  if ( strtolower(CC_ENC) == 'true' ) {

    $key = changeme;

    $plain_data = $order->info['cc_number'];

    $order->info['cc_number'] = changedatain($plain_data,$key);

  }

  // BMC CC Mod End

  if ($_SESSION['customers_status']['customers_status_ot_discount_flag']==1) {

  $discount=$_SESSION['customers_status']['customers_status_ot_discount'];

  } else {

  $discount='0.00';

  }


  if($_SERVER["HTTP_X_FORWARDED_FOR"]){

  $customers_ip=$_SERVER["HTTP_X_FORWARDED_FOR"];

 } else {

  $customers_ip=$_SERVER["REMOTE_ADDR"];

 }

  if ($_SESSION['credit_covers']!='1') {

  $sql_data_array = array('customers_id' => $_SESSION['customer_id'],

                          'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],

                          'customers_cid' => $order->customer['csID'],

                          'customers_vat_id' => $_SESSION['customer_vat_id'],

                          'customers_company' => $order->customer['company'],

                          'customers_status' => $_SESSION['customers_status']['customers_status_id'],

                          'customers_status_name' => $_SESSION['customers_status']['customers_status_name'],

                          'customers_status_image' => $_SESSION['customers_status']['customers_status_image'],

                          'customers_status_discount' => $discount,

                          'customers_street_address' => $order->customer['street_address'],

                          'customers_suburb' => $order->customer['suburb'],

                          'customers_city' => $order->customer['city'],

                          'customers_postcode' => $order->customer['postcode'],

                          'customers_state' => $order->customer['state'],

                          'customers_country' => $order->customer['country']['title'],

                          'customers_telephone' => $order->customer['telephone'],

                          'customers_email_address' => $order->customer['email_address'],

                          'customers_address_format_id' => $order->customer['format_id'],

                          'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],

                          'delivery_firstname' => $order->delivery['firstname'], //JAN 

                         'delivery_lastname' => $order->delivery['lastname'], //JAN

                          'delivery_company' => $order->delivery['company'],

                          'delivery_street_address' => $order->delivery['street_address'],

                          'delivery_suburb' => $order->delivery['suburb'],

                          'delivery_city' => $order->delivery['city'],

                          'delivery_postcode' => $order->delivery['postcode'],

                          'delivery_state' => $order->delivery['state'],

                          'delivery_country' => $order->delivery['country']['title'],

                          'delivery_country_iso_code_2' => $order->delivery['country']['iso_code_2'], //JAN

                          'delivery_address_format_id' => $order->delivery['format_id'],

                          'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],

                          'billing_firstname' => $order->billing['firstname'],  //JAN

                          'billing_lastname' => $order->billing['lastname'],   //JAN 

                          'billing_company' => $order->billing['company'],

                          'billing_street_address' => $order->billing['street_address'],

                          'billing_suburb' => $order->billing['suburb'],

                          'billing_city' => $order->billing['city'],

                          'billing_postcode' => $order->billing['postcode'],

                          'billing_state' => $order->billing['state'],

                          'billing_country' => $order->billing['country']['title'],

                          'billing_address_format_id' => $order->billing['format_id'],

                          'payment_method' => $order->info['payment_method'],

                          'payment_class' => $order->info['payment_class'],

                          'shipping_method' => $order->info['shipping_method'],

                          'shipping_class' => $order->info['shipping_class'],

                          'billing_country_iso_code_2' => $order->billing['country']['iso_code_2'], //JAN

                          'cc_type' => $order->info['cc_type'],

                          'cc_owner' => $order->info['cc_owner'],

                          'cc_number' => $order->info['cc_number'],

                          'cc_expires' => $order->info['cc_expires'],

 // BMC CC Mod Start

                          'cc_start' => $order->info['cc_start'],

                          'cc_cvv' => $order->info['cc_cvv'],

                          'cc_issue' => $order->info['cc_issue'],

// BMC CC Mod End

                          'date_purchased' => 'now()',

                          'orders_status' => $order->info['order_status'],

                          'currency' => $order->info['currency'],

                          'currency_value' => $order->info['currency_value'],

                          'customers_ip' =>  $customers_ip,

                          'language'=>$_SESSION['language'],

                          'comments' => $order->info['comments']);

   } else {

   // free gift , no paymentaddress

     $sql_data_array = array('customers_id' => $_SESSION['customer_id'],

                          'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],

                          'customers_cid' => $order->customer['csID'],

                          'customers_vat_id' => $_SESSION['customer_vat_id'],                            

                          'customers_company' => $order->customer['company'],

                          'customers_status' => $_SESSION['customers_status']['customers_status_id'],

                          'customers_status_name' => $_SESSION['customers_status']['customers_status_name'],

                          'customers_status_image' => $_SESSION['customers_status']['customers_status_image'],

                          'customers_status_discount' => $discount,

                          'customers_street_address' => $order->customer['street_address'],

                          'customers_suburb' => $order->customer['suburb'],

                          'customers_city' => $order->customer['city'],

                          'customers_postcode' => $order->customer['postcode'],

                          'customers_state' => $order->customer['state'],

                          'customers_country' => $order->customer['country']['title'],

                          'customers_telephone' => $order->customer['telephone'],

                          'customers_email_address' => $order->customer['email_address'],

                          'customers_address_format_id' => $order->customer['format_id'],

                          'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],

                          'delivery_company' => $order->delivery['company'],

                          'delivery_street_address' => $order->delivery['street_address'],

                          'delivery_suburb' => $order->delivery['suburb'],

                          'delivery_city' => $order->delivery['city'],

                          'delivery_postcode' => $order->delivery['postcode'],

                          'delivery_state' => $order->delivery['state'],

                          'delivery_country' => $order->delivery['country']['title'],

                          'delivery_address_format_id' => $order->delivery['format_id'],

                          'payment_method' => $order->info['payment_method'],

                          'payment_class' => $order->info['payment_class'],

                          'shipping_method' => $order->info['shipping_method'],

                          'shipping_class' => $order->info['shipping_class'],

                          'cc_type' => $order->info['cc_type'],

                          'cc_owner' => $order->info['cc_owner'],

                          'cc_number' => $order->info['cc_number'],

                          'cc_expires' => $order->info['cc_expires'],

                          'date_purchased' => 'now()',

                          'orders_status' => $order->info['order_status'],

                          'currency' => $order->info['currency'],

                          'currency_value' => $order->info['currency_value'],

                          'customers_ip' =>  $customers_ip,

                          'comments' => $order->info['comments']);

   }


  xtc_db_perform(TABLE_ORDERS, $sql_data_array);

  $insert_id = xtc_db_insert_id();

  for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {

    $sql_data_array = array('orders_id' => $insert_id,

                            'title' => $order_totals[$i]['title'],

                            'text' => $order_totals[$i]['text'],

                            'value' => $order_totals[$i]['value'],

                            'class' => $order_totals[$i]['code'],

                            'sort_order' => $order_totals[$i]['sort_order']);

    xtc_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);

  }

  $customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';

  $sql_data_array = array('orders_id' => $insert_id,

                          'orders_status_id' => $order->info['order_status'],

                          'date_added' => 'now()',

                          'customer_notified' => $customer_notification,

                          'comments' => $order->info['comments']);

  xtc_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

  // initialized for the email confirmation

  $products_ordered = '';

  $products_ordered_html = '';

  $subtotal = 0;

  $total_tax = 0;

  for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {

    // Stock Update - Joao Correia

    if (STOCK_LIMITED == 'true') {

      if (DOWNLOAD_ENABLED == 'true') {

        $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename

                            FROM " . TABLE_PRODUCTS . " p

                            LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa

                             ON p.products_id=pa.products_id

                            LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad

                             ON pa.products_attributes_id=pad.products_attributes_id

                            WHERE p.products_id = '" . xtc_get_prid($order->products[$i]['id']) . "'";

        // Will work with only one option for downloadable products

        // otherwise, we have to build the query dynamically with a loop

        $products_attributes = $order->products[$i]['attributes'];

        if (is_array($products_attributes)) {

          $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";

        }

        $stock_query = xtc_db_query($stock_query_raw);

      } else {

        $stock_query = xtc_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . xtc_get_prid($order->products[$i]['id']) . "'");

      }

      if (xtc_db_num_rows($stock_query) > 0) {

        $stock_values = xtc_db_fetch_array($stock_query);

        // do not decrement quantities if products_attributes_filename exists

        if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {

          $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];

        } else {

          $stock_left = $stock_values['products_quantity'];

        }

        xtc_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . xtc_get_prid($order->products[$i]['id']) . "'");

        if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {

          xtc_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . xtc_get_prid($order->products[$i]['id']) . "'");

        }

      }

    }

    // Update products_ordered (for bestsellers list)

    xtc_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . xtc_get_prid($order->products[$i]['id']) . "'");

    $sql_data_array = array('orders_id' => $insert_id,

                            'products_id' => xtc_get_prid($order->products[$i]['id']),

                            'products_model' => $order->products[$i]['model'],

                            'products_name' => $order->products[$i]['name'],

                            'products_price' => $order->products[$i]['price'],

                            'final_price' => $order->products[$i]['final_price'],

                   'products_tax' => $order->products[$i]['tax'],

                            'products_discount_made' => $order->$products[$i]['discount_allowed'],

                            'products_quantity' => $order->products[$i]['qty'],

                   'allow_tax' => $_SESSION['customers_status']['customers_status_show_price_tax']);


    xtc_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);

    $order_products_id = xtc_db_insert_id();

// �nderung Specials Quantity Anfang

    $specials_result = xtc_db_query("SELECT products_id, specials_quantity from " . TABLE_SPECIALS . " WHERE products_id = '" . xtc_get_prid($order->products[$i]['id']) . "' ");

    if (xtc_db_num_rows($specials_result)) {

    $spq = xtc_db_fetch_array($specials_result);

    $new_sp_quantity = ($spq['specials_quantity'] - $order->products[$i]['qty']);

    if ($new_sp_quantity >= 1){

    xtc_db_query("update " . TABLE_SPECIALS . " set specials_quantity = '" . $new_sp_quantity . "' where products_id = '" . xtc_get_prid($order->products[$i]['id']) . "' ");

    }else{

    xtc_db_query("update " . TABLE_SPECIALS . " set status = '0', specials_quantity = '" . $new_sp_quantity . "' where products_id = '" . xtc_get_prid($order->products[$i]['id']) . "' ");

    }

     }

// �nderung Ende


    $order_total_modules->update_credit_account($i);// GV Code ICW ADDED FOR CREDIT CLASS SYSTEM

    //------insert customer choosen option to order--------

    $attributes_exist = '0';

    $products_ordered_attributes = '';

    if (isset($order->products[$i]['attributes'])) {

      $attributes_exist = '1';

      for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {

        if (DOWNLOAD_ENABLED == 'true') {

          $attributes_query = "select popt.products_options_name,

                               poval.products_options_values_name,

                               pa.options_values_price,

                               pa.price_prefix,

                               pad.products_attributes_maxdays,

                               pad.products_attributes_maxcount,

                               pad.products_attributes_filename

                               from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa

                               left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad

                                on pa.products_attributes_id=pad.products_attributes_id

                               where pa.products_id = '" . $order->products[$i]['id'] . "'

                                and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'

                                and pa.options_id = popt.products_options_id

                                and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'

                                and pa.options_values_id = poval.products_options_values_id

                                and popt.language_id = '" . $_SESSION['languages_id'] . "'

                                and poval.language_id = '" . $_SESSION['languages_id'] . "'";

          $attributes = xtc_db_query($attributes_query);

        } else {

          $attributes = xtc_db_query("select popt.products_options_name,

                                             poval.products_options_values_name,

                                             pa.options_values_price,

                                             pa.price_prefix

                                             from " . TABLE_PRODUCTS_OPTIONS . " popt, " .

                                             TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " .

                                             TABLE_PRODUCTS_ATTRIBUTES . " pa

                                             where pa.products_id = '" . $order->products[$i]['id'] . "'

                                             and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'

                                             and pa.options_id = popt.products_options_id

                                             and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'

                                             and pa.options_values_id = poval.products_options_values_id

                                             and popt.language_id = '" . $_SESSION['languages_id'] . "'

                                             and poval.language_id = '" . $_SESSION['languages_id'] . "'");

        }

        // update attribute stock

        xtc_db_query("UPDATE ".TABLE_PRODUCTS_ATTRIBUTES." set

                               attributes_stock=attributes_stock - '".$order->products[$i]['qty']."'

                               where

                               products_id='".$order->products[$i]['id']."'

                               and options_values_id='".$order->products[$i]['attributes'][$j]['value_id']."'

                               and options_id='".$order->products[$i]['attributes'][$j]['option_id']."'

                               ");


        $attributes_values = xtc_db_fetch_array($attributes);

        $sql_data_array = array('orders_id' => $insert_id,

                                'orders_products_id' => $order_products_id,

                                'products_options' => $attributes_values['products_options_name'],

                                'products_options_values' => $attributes_values['products_options_values_name'],

                                'options_values_price' => $attributes_values['options_values_price'],

                                'price_prefix' => $attributes_values['price_prefix']);

        xtc_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

        if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && xtc_not_null($attributes_values['products_attributes_filename'])) {

          $sql_data_array = array('orders_id' => $insert_id,

                                  'orders_products_id' => $order_products_id,

                                  'orders_products_filename' => $attributes_values['products_attributes_filename'],

                                  'download_maxdays' => $attributes_values['products_attributes_maxdays'],

                                  'download_count' => $attributes_values['products_attributes_maxcount']);

          xtc_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);

        }

      }

    }

    //------insert customer choosen option eof ----

    $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);

    $total_tax += xtc_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];

    $total_cost += $total_products_price;

  }

// NEW EMAIL configuration !

$order_totals = $order_total_modules->apply_credit();

include('send_order.php');


  // load the after_process function from the payment modules

  $payment_modules->after_process();

  $_SESSION['cart']->reset(true);

  // unregister session variables used during checkout

  unset($_SESSION['sendto']);

  unset($_SESSION['billto']);

  unset($_SESSION['shipping']);

  unset($_SESSION['payment']);

  unset($_SESSION['comments']);

  unset($_SESSION['last_order']);

  $last_order = $insert_id;

  //GV Code Start

  if(isset($_SESSION['credit_covers'])) unset($_SESSION['credit_covers']);

  $order_total_modules->clear_posts();//ICW ADDED FOR CREDIT CLASS SYSTEM

  // GV Code End


  if (!isset($mail_error)) {

      xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));

  }

  else {

      echo $mail_error;

  }

  require(DIR_WS_INCLUDES . 'application_bottom.php');

?>

Link to comment
Share on other sites

  • 1 year later...
  • 4 months later...

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...