Nahash
-
Posts
8 -
Joined
-
Last visited
Posts posted by Nahash
-
-
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 :)
-
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 :)
-
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 :)
-
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 :)
-
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
-
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
Multi_Vendor_Shipping new thread
in Shipping Modules
Posted
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
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