Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Nahash

Archived
  • Posts

    8
  • Joined

  • Last visited

Posts posted by Nahash

  1. Wow i got the problem solved,

    but that is so strange...

    I got the error in vendor_order_data.php Line 11

    I only deleted the following outcommented lines at the beginning

    of vendor_order_data.php

     

    <!-- MVS

        $Id: vendor_order_data.php

    By Craig Garrison Sr. ([email protected]) for Multi-Vendor Shipping

          osCommerce, Open Source E-Commerce Solutions

      http://www.oscommerce.com

     

      Copyright © 2005 osCommerce

     

      Released under the GNU General Public License

                                    -->

     

    Then I got the error that there is something wrong

    in vendor_order_data.php Line 83

    which was only one of a few empty lines at the end of the page. So i deleted everything until the last

    ?>
    and now it works.

    Maybe you should change the html outcommenting way to php outcommenting in the next version.

     

    I am glad now, thanks a lot for all of your help :D ol? ol? ol?

    ~~Nahash

     

     

    Nahash: Your error statement says that the problem is occuring on line 11 of includes/vendor_order_data.php. In the version that we distributed this line is just the beginning of the code section. There shouldn't be anything there. If you have modified this file, please check your mods for errors. If you have not modified this file, I suggest that you replace it with a clean copy.

     

    There should not be any code anywhere in this file or in checkout_process.php that prints or echos anything. This includes the osCommerce functions that directly output data, such as tep_output_string_protected. If you find anything that does output directly, try commenting it out.

     

    Regards

    Jim

  2. Has anybody an idea about the error message after /checkout_process.php ?

    Thank you for your answer Craig,

    yes right the sql was mentioned in the readme. I just expected everything to be in the mvs.sql file and didn't read the read me so exactly :)

     

    I was checking everything again if a include or require appears twice but it does not. probably tomorrow i will try the mvs contribution on a new installed oscommerce shop and try to learn what could be the problem. I have several contributions that could be the reason of my trouble. It means a lot to me to get it to work. And i have no idea.

     

     

    Warning: Cannot modify header information - headers already sent by (output started at /home/htdocs/web7/html/includes/vendor_order_data.php:11) in /home/htdocs/web7/html/includes/functions/general.php on line 53

     

     

    The error shows up, even when i use your mvs original checkout_process.php

    your original vendor_data.php the functions/general.php also is okay.

    I don't know what else to check. I don't know what else it could be. Could it be that there is any other file that i haven`t thought of to be the reason? Or is there still some sql table entry missing? Or could it be some server setting?

     

    I appreciate your help

    ~~Nahash

     

     

     

     

    This only thing I can think that would cause this is an "includes" or "require" statement being repeated somewhere. Double check that at no point are including or requiring the same file more than once. Possible also is the redirect being called twice, but unlikely. Just in case, check for that as well.

    Towards the bottom of the "readme" in the last release is several lines of "sql" to be run for the email as well as other things. I will try to be more clear with the next update. Good luck with this "headers" issue, it should be working though. Let me know what you find, Craig :)

  3. I thank you Blucollarguy and Kymation, thank you so much for your help!

     

    The insert in the table configuration was missing. But how could i have known that? it was not mentioned anywhere, was it?

     

    So now the database works correct and the confirmation email is fine.

    But ...

    i am sorry for another but, i think it is only a small thing and hopefully the last

    ... after the checkout_process.php i get an error message

     

     

    Warning: Cannot modify header information - headers already sent by (output started at /home/htdocs/web7/html/includes/vendor_order_data.php:11) in /home/htdocs/web7/html/includes/functions/general.php on line 53

     

    The error always appears when the includes/vendor_order_data.php

    is used in the checkout_process.php

     

    I tryed it with your original checkout_process.php and your original includes/vendor_order_data.php file.

     

    Here is my

    functions/general.php on line 53

     

    ////

    // Redirect to another page or site

      function tep_redirect($url) {

        if ( (ENABLE_SSL == true) && (getenv('HTTPS') == 'on') ) { // We are loading an SSL page

          if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url

            $url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL

          }

        }

     

        header('Location: ' . $url);

     

        tep_exit();

      }

     

    I would be so glad if i get this thing finally to work. Do you have an idea - Please?

     

    Best regards

    ~~Nahash

     

     

     

    Possibility:

    Did you run the sql to add the configuration field "SELECT_VENDOR_EMAIL_OPTION"?

    it is:

    INSERT INTO `configuration` ( `configuration_id` , `configuration_title` , `configuration_key` , `configuration_value` , `configuration_description` , `configuration_group_id` , `sort_order` , `last_modified` , `date_added` , `use_function` , `set_function` ) ?VALUES (
    '326', 'Use Optional Confirmation Email', 'SELECT_VENDOR_EMAIL_OPTION', 'false', 'Use the email showing a seperated list of Vendor''s group of products-(true/false)', '7', '10', '2005-03-16 08:10:45', '2004-05-04 14:43:03', NULL , 'tep_cfg_select_option(array(''true'', ''false''),'
    );

    Then select it from Admin->Configuration->Shipping/Packaging.

    This could be the problem, but, if the sql were not there at all you should get an error, and if you did not select it, you should get a standard email anyway. This code you posted is correct as is, it is all caps because it is an osC defined constant, and the name is what it's supposed to be, "vendors_send_email" is the field to tell the script(from admin/orders.php) wether or not to send your Vendor emails for the order. Hope we can find it, Craig :)

  4. Could it be ...

    That in the file checkout_process.php ...

     

    //------insert customer choosen option eof ----
       $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
       $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
       $total_cost += $total_products_price;
        if (SELECT_VENDOR_EMAIL_OPTION == 'false') {
        $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
       }
       }
       if (SELECT_VENDOR_EMAIL_OPTION == 'true') {
      $order_id = $insert_id;
          require(DIR_WS_INCLUDES . 'vendor_order_data.php');
    
                 // require(DIR_WS_INCLUDES . 'vendor_order_info.php');
    
     }

     

    Has to be changed to ...

     

     

    //------insert customer choosen option eof ----
       $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
       $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
       $total_cost += $total_products_price;
        if (SELECT_vendors_send_email == 'false') {
        $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
       }
       }
       if (SELECT_vendors_send_email == 'true') {
      $order_id = $insert_id;
          require(DIR_WS_INCLUDES . 'vendor_order_data.php');
    
                 // require(DIR_WS_INCLUDES . 'vendor_order_info.php');
    
     }

     

    I mean the

    SELECT_VENDOR_EMAIL_OPTION

    to

    SELECT_vendors_send_email

     

    Is the EMAIL_OPTION a function defined anywhere or is it just the table field

    vendors_send_email in the database ?

     

    (Hopefully that was the mistake)

    ~~Nahash

     

     

     

    If you are only getting the price, something is breaking the call to include "vendor_order_data.php". The email is populated from the data base from this script only if vendor shipping is enabled, otherwise it will be a standard email. Since you are only getting the price, something is preventing "vendor_order_data" from doing it's job. The dot before the equals sign allows the data to be appended rather than replaced, so that is correct. Since the database is being populated properly, check the directory structure, "vendor_order_data.php" should be in the "catalog/includes" directory. Other than those things, I'm not sure what else could be breaking your code. Did you edit these files for installation? Or do a replace? If an edit, obviously, double and triple check your edits. The package as is, is functioning on all 4 test installations I have running, so I don't believe it is the package, may be an unknow bug though, always possible. Let us know what you end up with.

    Craig :)

  5. Craig, i thank you for your reply. The notice that you have it running and that it works helped me. I will find out.

    Thanks

    ~~Martin

     

    If you are only getting the price, something is breaking the call to include "vendor_order_data.php". The email is populated from the data base from this script only if vendor shipping is enabled, otherwise it will be a standard email. Since you are only getting the price, something is preventing "vendor_order_data" from doing it's job. The dot before the equals sign allows the data to be appended rather than replaced, so that is correct. Since the database is being populated properly, check the directory structure, "vendor_order_data.php" should be in the "catalog/includes" directory. Other than those things, I'm not sure what else could be breaking your code. Did you edit these files for installation? Or do a replace? If an edit, obviously, double and triple check your edits. The package as is, is functioning on all 4 test installations I have running, so I don't believe it is the package, may be an unknow bug though, always possible. Let us know what you end up with.

    Craig :)

  6. Kymation: I thank you for your answer.

     

    The Database and everything else works fine. Only the confirmation eMail doesn't show a list of the products. But it shows a complete Price which is correct.

     

    I did not change the

    vendor_order_data.php

    i left it as it was in the last contribution. I will post it below. There must be something wrong with it. Is that okay to write a dot before equal signs like in ...

     

    $products_ordered .= 'There will be at least ' . $package_num . ' packages shipped.' . "\n\t";

     

     

     

    <!-- MVS
        $Id: vendor_order_data.php
    By Craig Garrison Sr. ([email protected]) for Multi-Vendor Shipping
         osCommerce, Open Source E-Commerce Solutions
     http://www.oscommerce.com
    
     Copyright (c) 2005 osCommerce
    
     Released under the GNU General Public License
                                    -->
    <?php
    $index2 = 0;
                 //let's get the Vendors
                 $vendor_data_query = tep_db_query("select orders_shipping_id, orders_id, vendors_id, vendors_name, shipping_module, shipping_method, shipping_cost from " . TABLE_ORDERS_SHIPPING . " where orders_id = '" . (int)$order_id . "'");
                 while ($vendor_order = tep_db_fetch_array($vendor_data_query)) {
    
       $this->products[$index2] = array('Vid' => $vendor_order['vendors_id'],
                                           'Vname' => $vendor_order['vendors_name'],
                                               'Vmodule' => $vendor_order['shipping_module'],
                                               'Vmethod' => $vendor_order['shipping_method'],
                                               'Vcost' => $vendor_order['shipping_cost'],
                                               'Vnoname' => 'Shipper',
                                             'spacer' => '-');
    
                                      $index = 0;
       $orders_products_query = tep_db_query("select orders_products_id, products_name, products_model, products_price, products_tax, products_quantity, final_price, vendors_id from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "' and vendors_id = '" . (int)$vendor_order['vendors_id'] . "'");
    
         while ($orders_products = tep_db_fetch_array($orders_products_query)) {
         $this->products[$index2]['orders_products'][$index] = array('qty' => $orders_products['products_quantity'],
                    'name' => $orders_products['products_name'],
                                         'tax' => $orders_products['products_tax'],
                                         'model' => $orders_products['products_model'],
                                         'price' => $orders_products['products_price'],
                                         'vendor_name' => $orders_products['vendors_name'],
                                         'vendor_ship' => $orders_products['shipping_module'],
                                         'shipping_method' => $orders_products['shipping_method'],
                                         'shipping_cost' => $orders_products['shipping_cost'],
                                         'final_price' => $orders_products['final_price'],
                                         'spacer' => '-');
    
           $subindex = 0;
         $attributes_query = tep_db_query("select products_options, products_options_values, options_values_price, price_prefix from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . (int)$order_id . "' and orders_products_id = '" . (int)$orders_products['orders_products_id'] . "'");
           if (tep_db_num_rows($attributes_query)) {
             while ($attributes = tep_db_fetch_array($attributes_query)) {
             $this->products[$index2]['orders_products'][$index]['attributes'][$subindex] = array('option' => $attributes['products_options'],
                                                                        'value' => $attributes['products_options_values'],
                                                                        'prefix' => $attributes['price_prefix'],
                                                                        'price' => $attributes['options_values_price']);
    
               $subindex++;
             }
           }
           $index++;
         }
        $index2++;
       }
       // let's build the email confirmation without html
       $package_num = sizeof($this->products);
    $box_num = $l + 1;
    $products_ordered .= 'There will be at least ' . $package_num . ' packages shipped.' . "\n\t";
    for ($l=0, $m=sizeof($this->products); $l<$m; $l++) {
    $products_ordered .=
     "\n" . 'Shipment Number ' . $box_num++ . ' '  .
          $this->products[$l]['spacer'] . ' ' .
          $this->products[$l]['Vmodule'] . ' ' .
          $this->products[$l]['spacer'] . ' ' .
          $this->products[$l]['Vmethod'] . ' ' .
          $this->products[$l]['spacer'] . ' ' .
          $this->products[$l]['Vcost'] . "\n\t";
              for ($i=0, $n=sizeof($this->products[$l]['orders_products']); $i<$n; $i++) {
         $products_ordered .= "\n\t" .
              $this->products[$l]['orders_products'][$i]['qty'] . '  x  ' . ' ' .
              $this->products[$l]['orders_products'][$i]['name'] . ' ' .
              $this->products[$l]['spacer'] . ' ' .
              $this->products[$l]['orders_products'][$i]['model'] . "\n\t";
    
         if (isset($this->products[$l]['orders_products'][$i]['attributes']) && (sizeof($this->products[$l]['orders_products'][$i]['attributes']) > 0)) {
    
           for ($j = 0, $k = sizeof($this->products[$l]['orders_products'][$i]['attributes']); $j < $k; $j++) {
    
    	 $products_ordered .= "\n\t" . 'Options Selected - ' . $this->products[$l]['orders_products'][$i]['attributes'][$j]['option'] . ': ' . $this->products[$l]['orders_products'][$i]['attributes'][$j]['value'];
    
             if ($this->products[$l]['orders_products'][$i]['attributes'][$j]['price'] != '0')      $products_ordered .= ' (' . $this->products[$l]['orders_products'][$i]['attributes'][$j]['prefix'] . $currencies->format($this->products[$l]['orders_products'][$i]['attributes'][$j]['price'] * $this->products[$l]['orders_products'][$i]['qty'], true, $this->info['currency'], $this->info['currency_value']) . ')' . "\n\t";
           }
         }
         $products_ordered .= 'Tax ' . tep_display_tax_value($this->products[$l]['orders_products'][$i]['tax']) . '%  ' . "\n\t"  .
              'Price Per Item - '  . $currencies->format($this->products[$l]['orders_products'][$i]['final_price'], true, $this->info['currency'], $this->info['currency_value']) . "\n\t" .
              'Total Without Tax - '  . $currencies->format($this->products[$l]['orders_products'][$i]['final_price'] * $this->products[$l]['orders_products'][$i]['qty'], true, $this->info['currency'], $this->info['currency_value']) . "\n\t" .
              'Total Including Tax - '  . $currencies->format(tep_add_tax($this->products[$l]['orders_products'][$i]['final_price'], $this->products[$l]['orders_products'][$i]['tax']) * $this->products[$l]['orders_products'][$i]['qty'], true, $this->info['currency'], $this->info['currency_value']) . "\n\t";
    
       }
       }
       ?>

     

     

     

    I thank you for your help.

    Best regards

    ~~Nahash

     

     

    Nahash: The data in the email comes from includes/vendor_order_data.php, which gets its data from the Orders tables in the database. The price comes from the orders_products table. Check your database to see if the information is being properly stored. If it is not, look at the top of your checkout_process.php for errors, then trace the data back from there.

     

    BluesCat: We're still working on some obscure bugs. We're very close, but that last little bit can be very time-consuming to take care of. It will certainly be announced here, so watch this space....

     

    Regards

    Jim

  7. Hi all and thanks for a great contribution!

    There is only a small thing, i didn't get to work yet.

    Everything works but in the customers order confirmation EMAIL, no article shows up. It is just empty the price and the rest is correct.

     

    I have some other contributions as well.

    Below i will post my whole code of checkout_process.php

     

     

     

    But I think the mistake can be in that Part

     

     

    //------insert customer choosen option eof ----
       $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
       $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
       $total_cost += $total_products_price;
        if (SELECT_VENDOR_EMAIL_OPTION == 'false') {
        $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
       }
       }
       if (SELECT_VENDOR_EMAIL_OPTION == 'true') {
      $order_id = $insert_id;
          require(DIR_WS_INCLUDES . 'vendor_order_data.php');
    
                 // require(DIR_WS_INCLUDES . 'vendor_order_info.php');
    
     }
    
    
    
    
    // lets start with the email confirmation

     

    Below i will post my whole code of checkout_process.php

     

     

    <?php
    /*
     $Id: checkout_process.php,v 1.128 2003/05/28 18:00:29 hpdl Exp $
     Modified for MVS 2005/03/12 jck
    
     osCommerce, Open Source E-Commerce Solutions
     http://www.oscommerce.com
    
     Copyright (c) 2003 osCommerce
    
     Released under the GNU General Public License
    */
    
     include('includes/application_top.php');
    
    // if the customer is not logged on, redirect them to the login page
     if (!tep_session_is_registered('customer_id')) {
       $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
       tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
     }
    
     if (!tep_session_is_registered('sendto')) {
       tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
     }
    
     if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) {
       tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
    }
    
    // avoid hack attempts during the checkout procedure by checking the internal cartID
     if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
       if ($cart->cartID != $cartID) {
         tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
       }
     }
    
     include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS);
    
    // load selected payment module
     require(DIR_WS_CLASSES . 'payment.php');
     if ($credit_covers) $payment=''; //ICW added for CREDIT CLASS
     $payment_modules = new payment($payment);
    
    // load the selected shipping module
    //MVS
     if (SELECT_VENDOR_SHIPPING == 'true') {
       include(DIR_WS_CLASSES . 'vendor_shipping.php');
     } else {
       include(DIR_WS_CLASSES . 'shipping.php');
     }
     $shipping_modules = new shipping($shipping);
    //MVS End
    
     require(DIR_WS_CLASSES . 'order.php');
     $order = new order;
    
    // 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;
    
     $order_totals = $order_total_modules->process();
    
     $sql_data_array = array('customers_id' => $customer_id,
                             'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                             'customers_company' => $order->customer['company'],
                             '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'],
                             'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
                             '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'],
                             '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']);
     tep_db_perform(TABLE_ORDERS, $sql_data_array);
     $insert_id = tep_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']);
       tep_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']);
     tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
    
    //MVS - added insert for new orders_shipping table
    $shipping_array = $shipping['vendor'];
     foreach ($shipping_array as $vendors_id => $shipping_data) {
       $vendors_query = tep_db_query("select vendors_name
                                      from " . TABLE_VENDORS . "
                                      where vendors_id = '" . (int)$vendors_id . "'"
                                    );
       $vendors_name = 'Unknown';
       if ($vendors = tep_db_fetch_array($vendors_query)) {
         $vendors_name = $vendors['vendors_name'];
       }
     $shipping_method_array = explode ('_', $shipping_data['id']);
       $sql_data_array = array('orders_id' => $insert_id,
                               'vendors_id' => $vendors_id,
                               'shipping_module' => $shipping_method_array[0],
                               'shipping_method' => $shipping_data['title'],
                               'shipping_cost' => $shipping_data['cost'],
                               'vendors_name' => $vendors_name
                              );
       tep_db_perform(TABLE_ORDERS_SHIPPING, $sql_data_array);
     }
    //MVS End
    
    // initialized for the email confirmation
     $products_ordered = '';
     $subtotal = 0;
     $total_tax = 0;
    
     for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
    // Stock Update - Joao Correia
       if (STOCK_LIMITED == 'true') {
    //++++ QT Pro: Begin Changed code
           $products_attributes = $order->products[$i]['attributes'];
    //++++ QT Pro: End Changed Code
         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 = '" . tep_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
    //++++ QT Pro: Begin Changed code
    //      $products_attributes = $order->products[$i]['attributes'];
    //++++ QT Pro: End Changed Code
           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 = tep_db_query($stock_query_raw);
    //++++ QT Pro: Begin Changed code
               $actual_stock_bought = $order->products[$i]['qty'];
           } else {
               if (is_array($products_attributes)) {
                   $all_nonstocked = true;
                   $products_stock_attributes_array = array();
                   foreach ($products_attributes as $attribute) {
                       if ($attribute['track_stock'] == 1) {
                         $products_stock_attributes_array[] = $attribute['option_id'] . "-" . $attribute['value_id'];
                         $all_nonstocked = false;
                       }
                   } 
                   if ($all_nonstocked) {
                       $actual_stock_bought = $order->products[$i]['qty'];
                   }  else {
                     asort($products_stock_attributes_array, SORT_NUMERIC);
                     $products_stock_attributes = implode(",", $products_stock_attributes_array);
                     $attributes_stock_query = tep_db_query("select products_stock_quantity from " . TABLE_PRODUCTS_STOCK . " where products_stock_attributes = '$products_stock_attributes' AND products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
                     if (tep_db_num_rows($attributes_stock_query) > 0) {
                         $attributes_stock_values = tep_db_fetch_array($attributes_stock_query);
                         $attributes_stock_left = $attributes_stock_values['products_stock_quantity'] - $order->products[$i]['qty'];
                         tep_db_query("update " . TABLE_PRODUCTS_STOCK . " set products_stock_quantity = '" . $attributes_stock_left . "' where products_stock_attributes = '$products_stock_attributes' AND products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
                         $actual_stock_bought = ($attributes_stock_left < 1) ? $attributes_stock_values['products_stock_quantity'] : $order->products[$i]['qty'];
         } else {
                         $attributes_stock_left = 0 - $order->products[$i]['qty'];
                         tep_db_query("insert into " . TABLE_PRODUCTS_STOCK . " (products_id, products_stock_attributes, products_stock_quantity) values ('" . tep_get_prid($order->products[$i]['id']) . "', '" . $products_stock_attributes . "', '" . $attributes_stock_left . "')");
                         $actual_stock_bought = 0;
                     }
                   }
               } else {
                   $actual_stock_bought = $order->products[$i]['qty'];
               } 
    //++++ QT Pro: End Changed Code
           $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
         }
         if (tep_db_num_rows($stock_query) > 0) {
           $stock_values = tep_db_fetch_array($stock_query);
    // do not decrement quantities if products_attributes_filename exists
           if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
    //++++ QT Pro: Begin Changed code
                   $stock_left = $stock_values['products_quantity'] - $actual_stock_bought;
                   tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = products_quantity - '" . $actual_stock_bought . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
    //++++ QT Pro: End Changed Code
           if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
             tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
           }
         }
       }
    //++++ QT Pro: Begin Changed code
       }
    //++++ QT Pro: End Changed Code
    // Update products_ordered (for bestsellers list)
       tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
    
    //MVS - added 'vendors_id' => ...
       if (!isset($products_stock_attributes)) $products_stock_attributes=null;
       $sql_data_array = array('orders_id' => $insert_id,
                               'products_id' => tep_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_quantity' => $order->products[$i]['qty'],
                               'vendors_id' => $order->products[$i]['vendors_id'],
                               'products_stock_attributes' => $products_stock_attributes);
    
                          
       tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
       $order_products_id = tep_db_insert_id();
       $order_total_modules->update_credit_account($i);//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 = '" . $languages_id . "'
                                   and poval.language_id = '" . $languages_id . "'";
             $attributes = tep_db_query($attributes_query);
           } else {
             $attributes = tep_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 = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
           }
           $attributes_values = tep_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']);
           tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);
    
           if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_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']);
             tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
           }
           $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
         }
       }
    
       
    
    
    
    //------insert customer choosen option eof ----
       $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
       $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
       $total_cost += $total_products_price;
        if (SELECT_VENDOR_EMAIL_OPTION == 'false') {
        $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
       }
       }
       if (SELECT_VENDOR_EMAIL_OPTION == 'true') {
      $order_id = $insert_id;
          require(DIR_WS_INCLUDES . 'vendor_order_data.php');
    
                 // require(DIR_WS_INCLUDES . 'vendor_order_info.php');
    
     }
    
    
    
    
    // lets start with the email confirmation
     $email_order = STORE_NAME . "\n" .
                    EMAIL_SEPARATOR . "\n" .
                    EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .
                    EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" .
                    EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
     if ($order->info['comments']) {
       $email_order .= tep_db_output($order->info['comments']) . "\n\n";
     }
     $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
                     EMAIL_SEPARATOR . "\n" .
                     $products_ordered .
                     EMAIL_SEPARATOR . "\n";
    
     for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
       $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
     }
    
     if ($order->content_type != 'virtual') {
       $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
                       EMAIL_SEPARATOR . "\n" .
                       tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
     }
    
     $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
                     EMAIL_SEPARATOR . "\n" .
                     tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
     if (is_object($$payment)) {
       $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
                       EMAIL_SEPARATOR . "\n";
       $payment_class = $$payment;
       $email_order .= $payment_class->title . "\n\n";
       if ($payment_class->email_footer) {
         $email_order .= $payment_class->email_footer . "\n\n";
       }
     }
     tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
    
    // send emails to other people
     if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
       tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
     }
    
    // load the after_process function from the payment modules
     $payment_modules->after_process();
    
     $cart->reset(true);
    
    
    $order_total_modules->apply_credit();//ICW ADDED FOR CREDIT CLASS SYSTEM
    
    // unregister session variables used during checkout
     tep_session_unregister('sendto');
     tep_session_unregister('billto');
     tep_session_unregister('shipping');
     tep_session_unregister('payment');
     tep_session_unregister('comments');
    if(tep_session_is_registered('credit_covers')) tep_session_unregister('credit_covers');
     $order_total_modules->clear_posts();//ICW ADDED FOR CREDIT CLASS SYSTEM
    
     tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));
    
     require(DIR_WS_INCLUDES . 'application_bottom.php');
    
    
    
    ?>

     

     

    Thanks and best regards

    ~~Nahash

     

    I am planning on integrating MultiVendorShip in Vendors_Auto_Email and am open for input.  Has any one gotten the original Multi_Vendor_Shipping mod to work?  I have seen a few requests for help, but no replies.  I have just installed it and am going through the errors to see if I can get it working.  All input and suggestions are welcome and needed, this will be very valuable to me as well as many other folks I think.  What do you think?  :mellow:

     

    Code in development is located here

×
×
  • Create New...