Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Multi_Vendor_Shipping new thread


blucollarguy

Recommended Posts

Get 1 Free does not handle the Vendor ID since that's not a part of stock osCommerce. You need to modify it (probably in the Cart class) to add the Vendors ID for the free product to the database. There may be other changes as well. I've combined these two before, but it's been years and I don't remember the details.

 

Regards

Jim

See my profile for a list of my addons and ways to get support.

Link to comment
Share on other sites

Get 1 Free does not handle the Vendor ID since that's not a part of stock osCommerce. You need to modify it (probably in the Cart class) to add the Vendors ID for the free product to the database. There may be other changes as well. I've combined these two before, but it's been years and I don't remember the details.

 

Regards

Jim

Adding the Vendor_id and Vendor_name to the Get1Free array seemed to do the trick. Thanks for pointing me in the right direction!

Link to comment
Share on other sites

Hi all,

 

I have been looking for anything about integrate MZMT with MVS, and i didn't find anything, so i tried to do it by my self and I am getting errors like theese:

 


[20-Apr-2010 19:57:18] PHP Warning: constant() [<a href='function.constant'>function.constant</a>]: Couldn't find constant MODULE_SHIPPING_MZMT_GEOZONE__ICON_1 in /var/www/includes/modules/vendors_shipping/mzmt.php on line 188
[20-Apr-2010 19:57:18] PHP Warning: constant() [<a href='function.constant'>function.constant</a>]: Couldn't find constant MODULE_SHIPPING_MZMT_GEOZONE__TEXT_TITLE_1 in /var/www/includes/modules/vendors_shipping/mzmt.php on line 147
[20-Apr-2010 19:57:18] PHP Warning: constant() [<a href='function.constant'>function.constant</a>]: Couldn't find constant MODULE_SHIPPING_MZMT_GEOZONE__MODE_1 in /var/www/includes/modules/vendors_shipping/mzmt.php on line 150
[20-Apr-2010 19:57:18] PHP Warning: constant() [<a href='function.constant'>function.constant</a>]: Couldn't find constant MODULE_SHIPPING_MZMT_GEOZONE__TABLE_1_1 in /var/www/includes/modules/vendors_shipping/mzmt.php on line 168
[20-Apr-2010 19:57:18] PHP Warning: constant() [<a href='function.constant'>function.constant</a>]: Couldn't find constant MODULE_SHIPPING_MZMT_GEOZONE__ICON_1 in /var/www/includes/modules/vendors_shipping/mzmt.php on line 188
[/Code]

 

Here is what I had inserted into the database:

[Code]
INSERT INTO configuration
(configuration_title,configuration_key,configuration_value,configuration_description,configuration_group_id,sort_order,date_added)
VALUES
('MVS Number of Geo Zones for MultiZone MultiTable Module', 'MODULE_SHIPPING_MZMT_NUMBER_GEOZONES_MVS', '3', 'The number of shipping geo zones.',7, '0', now()),
('MVS Number of Tables per Geo Zone for MultiZone MultiTable Module', 'MODULE_SHIPPING_MZMT_NUMBER_TABLES_MVS', '3', 'The number of shipping tables per geo zone.',7, '0', now())
;
[/Code]

 

 

And Here is the code of de file catalog/includes/modules/vendors_shipping/mzmt.php

[Code]
<?php
/*
$Id: mzmt.php,v 1.100 2004-11-09 Josh Dechant Exp $

Copyright (c) 2004 Josh Dechant

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

Protions Copyright (c) 2003 osCommerce

Released under the GNU General Public License

Modificado para que pueda funcionar con MVS. Se han seguido las instrucciones del módulo MVS.

A parte de los comentarios puestos en el código, se cambio el nombre de algunas variales añadiéndole lo siguiente al final del nombre: _' . $vendors_id

*/

class mzmt {
var $code, $title, $description, $icon, $enabled, $num_zones, $num_tables, $delivery_geozone, $geozone_mode, $order_total, $vendors_id;

function mzmt() {
global $order, $vendors_id;

$this->code = 'mzmt';
$this->title = MODULE_SHIPPING_MZMT_TEXT_TITLE;
$this->description = MODULE_SHIPPING_MZMT_TEXT_DESCRIPTION;
$this->num_geozones = MODULE_SHIPPING_MZMT_NUMBER_GEOZONES_MVS;
$this->num_tables = MODULE_SHIPPING_MZMT_NUMBER_TABLES_MVS;

/*
Modificado para que funcione con MVS
Se comenta este código y se añade el código de abajo.

$this->sort_order = MODULE_SHIPPING_MZMT_SORT_ORDER;
$this->tax_class = MODULE_SHIPPING_MZMT_TAX_CLASS;
*/
$this->enabled = ((constant('MODULE_SHIPPING_MZMT_TAX_CLASS_' . $vendors_id) == 'True') ? true : false);

if ($this->enabled == true) {
$this->enabled = false;
for ($n=1; $n<=$this->num_geozones; $n++) {
if ( ((int)constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $n . '_ID_' . $vendors_id) > 0) && ((int)constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $n . '_ID_' . $vendors_id) == $this->getGeoZoneID($order->delivery['country']['id'], $order->delivery['zone_id'])) ) {
$this->enabled = true;
$this->delivery_geozone = $n;
break;
} elseif ( ((int)constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $n . '_ID_' . $vendors_id) == 0) && ($n == (int)$this->num_geozones) ) {
$this->enabled = true;
$this->delivery_geozone = $n;
break;
}
}
}
}

//Empieza código añadido para MVS:

function sort_order($vendors_id='1') {
if (defined (@constant ('MODULE_SHIPPING_MZMT_SORT_ORDER_' . $vendors_id))) {
$this->sort_order = @constant('MODULE_SHIPPING_MZMT_SORT_ORDER_' . $vendors_id);
} else {
$this->sort_order = '0';
}
return $this->sort_order;
}

function tax_class($vendors_id='1') {
$this->tax_class = constant('MODULE_SHIPPING_MZMT_TAX_CLASS_' . $vendors_id);
return $this->tax_class;
}

function enabled($vendors_id='1') {
$this->enabled = false;
$status = @constant('MODULE_SHIPPING_MZMT_STATUS_' . $vendors_id);
if (isset ($status) && $status != '') {
$this->enabled = (($status == 'True') ? true : false);
}
return $this->enabled;
}
/*
function num_geozones($vendors_id='1') {
$this->num_geozones = constant('MODULE_SHIPPING_MZMT_NUMBER_GEOZONES_' . $vendors_id);
return $this->num_geozones;
}

function num_tables($vendors_id='1') {
$this->num_tables = constant('MODULE_SHIPPING_MZMT_NUMBER_TABLES_' . $vendors_id);
return $this->num_tables;
}
*/
function zones($vendors_id='1') {
if ( ($this->enabled == true) && ((int)constant('MODULE_SHIPPING_TABLE_ZONE_' . $vendors_id) > 0) ) {
$check_flag = false;
$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . (int)constant('MODULE_SHIPPING_TABLE_ZONE_' . $vendors_id) . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
while ($check = tep_db_fetch_array($check_query)) {
if ($check['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check['zone_id'] == $order->delivery['zone_id']) {
$check_flag = true;
break;
} //if
}//while

if ($check_flag == false) {
$this->enabled = false;
}//if
}//if
return $this->enabled;
}//function

//Fin de código añadido para MVS

// class methods
/* Comienzo de código modificado para MVS
Old Code:
function quote($method = '') {
*/
//New Code:
function quote($method = '', $module = '', $vendors_id = '1') {
// Fin modificacion para MVS
global $order, $shipping_weight, $shipping_num_boxes;
$combined_quote_weight = ($shipping_num_boxes * $shipping_weight);

//Strat MVS
$vendors_data_query = tep_db_query("select handling_charge,
handling_per_box,
vendor_country
from " . TABLE_VENDORS . "
where vendors_id = '" . (int)$vendors_id . "'"
);
$vendors_data = tep_db_fetch_array($vendors_data_query);
$country_name = tep_get_countries($vendors_data['vendor_country'], true);

$handling_charge = $vendors_data['handling_charge'];
$handling_per_box = $vendors_data['handling_per_box'];
if ($handling_charge > $handling_per_box*$shipping_num_boxes) {
$handling = $handling_charge;
} else {
$handling = $handling_per_box*$shipping_num_boxes;
}
// End MVS

$this->quotes = array('id' => $this->code,
'module' => constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_TEXT_TITLE_' . $vendors_id) . ' (' . $combined_quote_weight . ' lbs)',
'methods' => array());

$this->determineTableMethod(constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_MODE_' . $vendors_id));

if ($method) {
$j = substr($method, 5);

$shipping = $this->determineShipping(split("[:,]" , constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_TABLE_' . $j . '_' . $vendors_id)));

$this->quotes['methods'][] = array('id' => 'table' . $j,
'title' => constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_TABLE_' . $j . '_TEXT_WAY'),
/* Start MVS
Old Code:
'cost' => $shipping + constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_HANDLING'));
*/
//New Code:
'cost' => $shipping + $handling);
// End MVS
} else {
for ($j=1; $j<=$this->num_tables; $j++) {
if (!tep_not_null(constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_TABLE_' . $j . '_' . $vendors_id))) continue;

$shipping = $this->determineShipping(split("[:,]" , constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_TABLE_' . $j . '_' . $vendors_id)));

$this->quotes['methods'][] = array('id' => 'table' . $j,
'title' => constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_TABLE_' . $j . '_TEXT_WAY'),
/* Start MVS
Old Code:
'cost' => $shipping + constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_HANDLING'));
*/
//New Code:
'cost' => $shipping + $handling);
// End MVS
}
}

if ($this->tax_class > 0) {
$this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
}

if (tep_not_null(constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_ICON_' . $vendors_id))) $this->quotes['icon'] = tep_image(DIR_WS_ICONS . constant('MODULE_SHIPPING_MZMT_GEOZONE_' . $this->delivery_geozone . '_ICON_' . $vendors_id), $this->title);

return $this->quotes;
}

/*
Start MVS
Old Code:
function check() {
*/
//New Code:
function check($vendors_id='1') {
//End MVS
if (!isset($this->_check)) {
/*
Start MVS
Old Code:
$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_MZMT_STATUS'");
*/
//New Code:
$check_query = tep_db_query("select configuration_value from " . TABLE_VENDOR_CONFIGURATION . " where vendors_id = '". $vendors_id ."' and configuration_key = 'MODULE_SHIPPING_MZMT_STATUS_" . $vendors_id . "'");
//End MVS

$this->_check = mysql_num_rows($check_query);
}
return $this->_check;
}

/*
Start MVS
Old Code:
function install() {
*/
//New Code:
function install($vendors_id='1') {
//End MVS
tep_db_query("insert into " . TABLE_VENDOR_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added, vendors_id) VALUES ('Enable MultiRegion MultiTable Method', 'MODULE_SHIPPING_MZMT_STATUS_" . $vendors_id . "', 'True', 'Do you want to offer multi-region multi-table rate shipping?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now(), '" . $vendors_id . "')");
tep_db_query("insert into " . TABLE_VENDOR_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added, vendors_id) values ('Tax Class', 'MODULE_SHIPPING_MZMT_TAX_CLASS_" . $vendors_id . "', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now(), '" . $vendors_id . "')");
tep_db_query("insert into " . TABLE_VENDOR_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added, vendors_id) values ('Sort Order', 'MODULE_SHIPPING_MZMT_SORT_ORDER_" . $vendors_id . "', '0', 'Sort order of display.', '6', '0', now(), '" . $vendors_id . "')");

for ($n=1; $n<=$this->num_geozones; $n++) {
tep_db_query("insert into " . TABLE_VENDOR_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added, vendors_id) values ('<hr />Geo Zone $n', 'MODULE_SHIPPING_MZMT_GEOZONE_{$n}_ID_" . $vendors_id . "', '', 'Enable this for the following geo zone.', '6', '0', 'tep_get_zone_class_title', '_cfg_pull_down_geozones(', now(), '" . $vendors_id . "')");
tep_db_query("insert into " . TABLE_VENDOR_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added, vendors_id) values ('Geo Zone $n Table Method', 'MODULE_SHIPPING_MZMT_GEOZONE_{$n}_MODE_" . $vendors_id . "', 'weight', 'The shipping cost is based on the total weight, total price, or total count of the items ordered.', '6', '0', 'tep_cfg_select_option(array(\'weight\', \'price\', \'count\'), ', now(), '" . $vendors_id . "')");

for ($j=1; $j<=$this->num_tables; $j++) {
tep_db_query("insert into " . TABLE_VENDOR_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added, vendors_id) values ('Geo Zone $n Shipping Table $j', 'MODULE_SHIPPING_MZMT_GEOZONE_{$n}_TABLE_{$j}_" . $vendors_id . "', '', 'Shipping table $j for this geo zone', '6', '0', now(), '" . $vendors_id . "')");
}

tep_db_query("insert into " . TABLE_VENDOR_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added, vendors_id) values ('Geo Zone $n Handling Fee', 'MODULE_SHIPPING_MZMT_GEOZONE_{$n}_HANDLING_" . $vendors_id . "', '0', 'Handling Fee for this shipping geo zone', '6', '0', now(), '" . $vendors_id . "')");
}
}

/*
MVS Start
old code:
function remove() {
tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
*/
function remove($vendors_id) {
tep_db_query("delete from " . TABLE_VENDOR_CONFIGURATION . " where vendors_id = '". $vendors_id ."' and configuration_key in ('" . implode("', '", $this->keys($vendors_id)) . "')");
}

/*
MVS Start
old code:
function keys() {
*/
function keys($vendors_id) {
// End MVS
$keys = array('MODULE_SHIPPING_MZMT_STATUS_' . $vendors_id, 'MODULE_SHIPPING_MZMT_TAX_CLASS_' . $vendors_id, 'MODULE_SHIPPING_MZMT_SORT_ORDER_' . $vendors_id);

for ($n=1; $n<=$this->num_geozones; $n++) {
$keys[] = 'MODULE_SHIPPING_MZMT_GEOZONE_' . $n . '_ID_' . $vendors_id;
$keys[] = 'MODULE_SHIPPING_MZMT_GEOZONE_' . $n . '_MODE_' . $vendors_id;
$keys[] = 'MODULE_SHIPPING_MZMT_GEOZONE_' . $n . '_HANDLING_' . $vendors_id;

for ($j=1; $j<=$this->num_tables; $j++) {
$keys[] = 'MODULE_SHIPPING_MZMT_GEOZONE_' . $n . '_TABLE_' . $j . '_' . $vendors_id;
}
}

return $keys;
}

function determineTableMethod($geozone_mode) {
global $total_count, $shipping_weight;

$this->geozone_mode = $geozone_mode;

if ($this->geozone_mode == 'price') {
$this->order_total = $_SESSION['cart']->show_total();
} elseif ($this->geozone_mode == 'count') {
$this->order_total = $total_count;
} else {
$this->order_total = $shipping_weight;
}

return true;
}

function determineShipping($table_cost) {
global $shipping_num_boxes;

for ($i=0, $n=sizeof($table_cost); $i<$n; $i+=2) {
if ($this->order_total >= $table_cost[$i]) {
$shipping_factor = $table_cost[$i+1];
}
}

if (substr_count($shipping_factor, '%') > 0) {
$shipping = ((($this->order_total*10)/10)*((str_replace('%', '', $shipping_factor))/100));
} else {
$shipping = str_replace('$', '', $shipping_factor);
}

if ($this->geozone_mode == 'weight') {
$shipping = $shipping * $shipping_num_boxes;
}

return $shipping;
}

function getGeoZoneID($country_id, $zone_id) {
// First, check for a Geo Zone that explicity includes the country & specific zone (useful for splitting countries with zones up)
$zone_query = tep_db_query("select gz.geo_zone_id from " . TABLE_GEO_ZONES . " gz left join " . TABLE_ZONES_TO_GEO_ZONES . " ztgz on (gz.geo_zone_id = ztgz.geo_zone_id) where ztgz.zone_country_id = '" . (int)$country_id . "' and ztgz.zone_id = '" . (int)$zone_id . "' and LOWER(gz.geo_zone_name) like 'shp%'");

if (mysql_num_rows($zone_query)) {
$zone = mysql_fetch_assoc($zone_query);
return $zone['geo_zone_id'];
} else {
// No luck… Now check for a Geo Zone for the country and "All Zones" of the country.
$zone_query = tep_db_query("select gz.geo_zone_id from " . TABLE_GEO_ZONES . " gz left join " . TABLE_ZONES_TO_GEO_ZONES . " ztgz on (gz.geo_zone_id = ztgz.geo_zone_id) where ztgz.zone_country_id = '" . (int)$country_id . "' and (ztgz.zone_id = '0' or ztgz.zone_id is NULL) and LOWER(gz.geo_zone_name) like 'shp%'");

if (mysql_num_rows($zone_query)) {
$zone = mysql_fetch_assoc($zone_query);
return $zone['geo_zone_id'];
} else {
return false;
}
}
}

}

function _cfg_pull_down_geozones($zone_class_id, $key = '') {
$name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value');

$zone_class_array = array(array('id' => '0', 'text' => 'Rest of the World'));
$zone_class_query = tep_db_query("select geo_zone_id, geo_zone_name from " . TABLE_GEO_ZONES . " where LOWER(geo_zone_name) like 'shp%' order by geo_zone_name");

while ($zone_class = mysql_fetch_assoc($zone_class_query)) {
$zone_class_array[] = array('id' => $zone_class['geo_zone_id'],
'text' => $zone_class['geo_zone_name']);
}

return tep_draw_pull_down_menu($name, $zone_class_array, $zone_class_id);
}
?>
[/Code]

 

Any idea?

 

Tanks for your time!

 

Regards

Link to comment
Share on other sites

Most, if not all, of the constants listed in your error messages do not need to be modified to have the vendors_id added to the end. That modification is only needed for constants that may be different for a different vendor.

 

The constants that may be different need to be added to the lists in function install(), function remove(), and function keys().

 

Regards

Jim

See my profile for a list of my addons and ways to get support.

Link to comment
Share on other sites

Hi kymation,

 

I'm new to this formum and osCommerce but have worked for the last 2 months on building a webshop with osCommerce 2.2rca. This is truly a great product with many amazing contributions... Thank you and all the others for all your effort and support. :thumbsup:

 

Not being a programmmer and only just learning to read and modify php I am having real difficulties making MVS v1.2.3 work properly.

Long before discovering and installing MVS I had installed many other contributions, which seemed to work fine before installing MVS. Some of these contribs are:

  • order editor 5_0_9b
  • ManualOrderMaker v1.5.8a
  • seperate price per customer (SPPC) 4.2.2
  • Quantity Price Breaks Per Product for SPPC v2.0
  • Hide products (and categories) from customer groups for SPPC v2.0.3

 

I have read through the MVS forum quite a bit, and hoped to find a way to make the version of Order Editor / Order Maker I already have installed work with MVS, but cannot seem to get past even the smallest problems.

 

Have you or anyone else on this forum made this work? I would appreciate very much any help I could get... The most fantastic help would be some real code or files I could compare my code with.

 

As of now, the orders list in my admin is just empty after installing MVS. I have tried to debug and have come to the conclusion that the file admin/orders.php is not able to get anything from the mysql database due to the ORDERS_STATUS table being empty (if I'm right?).

 

For reference I post admin/orders.php here... I know this is just one file of several that need editing, but it is a start.

I have tried to insert test codes as below for arrays and variables like $orders_statuses and $orders_status_array (just after function vendors_email and before

 $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : ''); 

) but both are comming out empty.

 

// TEST CODE
print '<pre>';
print_r ('1');
print '</pre>';
// TEST CODE

 

I have also tried to compare the files from the Order Editor for MVS v2.6.4 contrib with mine... The changes are too comprehensive for me to change without files that are more similar using the file and folder structure as the latest Order Editor. I would really really appreciate anyone's reply...

 

Please help... :'(

 

 

<?php
/*
 $Id: orders.php 1739 2007-12-20 00:52:16Z hpdl $
 $Loc: /catalog/admin/ $
 $Mod: MVS V1.2 2009/02/28 JCK/CWG $

 adapted for Separate Pricing Per Customer v4 2005/12/10

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

 require('includes/application_top.php');

//MVS start
 function vendors_email ($vendors_id, $oID, $status, $vendor_order_sent) {
   $vendor_order_sent = false;
   $debug = 'no';
   $vendor_order_sent = 'no';
   $index2 = 0;
   //let's get the Vendors
   $vendor_data_query = tep_db_query ("select v.vendors_id, 
                                              v.vendors_name, 
                                              v.vendors_email, 
                                              v.vendors_contact, 
                                              v.vendor_add_info, 
                                              v.vendor_street, 
                                              v.vendor_city, 
                                              v.vendor_state, 
                                              v.vendors_zipcode, 
                                              v.vendor_country, 
                                              v.account_number, 
                                              v.vendors_status_send, 
                                              v.vendors_send_email,
                                              os.shipping_module, 
                                              os.shipping_method, 
                                              os.shipping_cost, 
                                              os.shipping_tax, 
                                              os.vendor_order_sent 
                                     from " . TABLE_VENDORS . " v,  
                                          " . TABLE_ORDERS_SHIPPING . " os 
                                     where v.vendors_id=os.vendors_id 
                                       and v.vendors_id='" . $vendors_id . "' 
                                       and os.orders_id='" . (int) $oID . "' 
                                       and v.vendors_status_send='" . $status . "'
                                       and v.vendors_send_email = '1'
                                  ");
   while ($vendor_order = tep_db_fetch_array($vendor_data_query)) {
     $vendor_products[$index2] = array (
       'Vid' => $vendor_order['vendors_id'],
       'Vname' => $vendor_order['vendors_name'],
       'Vemail' => $vendor_order['vendors_email'],
       'Vcontact' => $vendor_order['vendors_contact'],
       'Vaccount' => $vendor_order['account_number'],
       'Vstreet' => $vendor_order['vendor_street'],
       'Vcity' => $vendor_order['vendor_city'],
       'Vstate' => $vendor_order['vendor_state'],
       'Vzipcode' => $vendor_order['vendors_zipcode'],
       'Vcountry' => $vendor_order['vendor_country'],
       'Vaccount' => $vendor_order['account_number'],
       'Vinstructions' => $vendor_order['vendor_add_info'],
       'Vmodule' => $vendor_order['shipping_module'],
       'Vmethod' => $vendor_order['shipping_method']
     );
     if ($debug == 'yes') {
       echo 'The vendor query: ' . $vendor_order['vendors_id'] . '<br>';
     }
     $index = 0;
     $vendor_orders_products_query = tep_db_query("select o.orders_id, o.orders_products_id, o.products_model, o.products_id, o.products_quantity, o.products_name, p.vendors_id,  p.vendors_prod_comments, p.vendors_prod_id, p.vendors_product_price from " . TABLE_ORDERS_PRODUCTS . " o, " . TABLE_PRODUCTS . " p where p.vendors_id='" . (int) $vendor_order['vendors_id'] . "' and o.products_id=p.products_id and o.orders_id='" . $oID . "' order by o.products_name");
     while ($vendor_orders_products = tep_db_fetch_array($vendor_orders_products_query)) {
       $vendor_products[$index2]['vendor_orders_products'][$index] = array (
         'Pqty' => $vendor_orders_products['products_quantity'],
         'Pname' => $vendor_orders_products['products_name'],
         'Pmodel' => $vendor_orders_products['products_model'],
         'Pprice' => $vendor_orders_products['products_price'],
         'Pvendor_name' => $vendor_orders_products['vendors_name'],
         'Pcomments' => $vendor_orders_products['vendors_prod_comments'],
         'PVprod_id' => $vendor_orders_products['vendors_prod_id'],
         'PVprod_price' => $vendor_orders_products['vendors_product_price'],
         'spacer' => '-'
       );

       if ($debug == 'yes') {
         echo 'The products query: ' . $vendor_orders_products['products_name'] . '<br>';
       }
       $subindex = 0;
       $vendor_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) $oID . "' and orders_products_id = '" . (int) $vendor_orders_products['orders_products_id'] . "'");
       if (tep_db_num_rows($vendor_attributes_query)) {
         while ($vendor_attributes = tep_db_fetch_array($vendor_attributes_query)) {
           $vendor_products[$index2]['vendor_orders_products'][$index]['vendor_attributes'][$subindex] = array (
             'option' => $vendor_attributes['products_options'],
             'value' => $vendor_attributes['products_options_values'],
             'prefix' => $vendor_attributes['price_prefix'],
             'price' => $vendor_attributes['options_values_price']
           );

           $subindex++;
         }
       }
       $index++;
     }
     $index2++;
     // let's build the email
     // Get the delivery address
     $delivery_address_query = tep_db_query("select distinct delivery_company, delivery_name, delivery_street_address, delivery_city, delivery_state, delivery_postcode from " . TABLE_ORDERS . " where orders_id='" . $oID . "'");
     $vendor_delivery_address_list = tep_db_fetch_array($delivery_address_query);

     if ($debug == 'yes') {
       echo 'The number of vendors: ' . sizeof($vendor_products) . '<br>';
     }
     $email = '';
     for ($l = 0, $m = sizeof($vendor_products); $l < $m; $l++) {

       $vendor_country = tep_get_country_name($vendor_products[$l]['Vcountry']);
       $order_number = $oID;
       $vendors_id = $vendor_products[$l]['Vid'];
       $the_email = $vendor_products[$l]['Vemail'];
       $the_name = $vendor_products[$l]['Vname'];
       $the_contact = $vendor_products[$l]['Vcontact'];
       $email = '<b>To: ' . $the_contact . '  <br>' . $the_name . '<br>' . $the_email . '<br>' .
       $vendor_products[$l]['Vstreet'] . '<br>' .
       $vendor_products[$l]['Vcity'] . ', ' .
       $vendor_products[$l]['Vstate'] . '  ' .
       $vendor_products[$l]['Vzipcode'] . ' ' . $vendor_country . '<br>' . '<br>' . EMAIL_SEPARATOR . '<br>' . 'Special Comments or Instructions:  ' . $vendor_products[$l]['Vinstructions'] . '<br>' . '<br>' . EMAIL_SEPARATOR . '<br>' . 'From: ' . STORE_OWNER . '<br>' . STORE_NAME_ADDRESS . '<br>' . 'Accnt #: ' . $vendor_products[$l]['Vaccount'] . '<br>' . EMAIL_SEPARATOR . '<br>' . EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . '<br>' . EMAIL_SEPARATOR . '<br>' . '<br> Shipping Method: ' . $vendor_products[$l]['Vmodule'] . ' -- ' . $vendor_products[$l]['Vmethod'] . '<br>' . EMAIL_SEPARATOR . '<br>' . '<br>Dropship deliver to:<br>' .
       $vendor_delivery_address_list['delivery_company'] . '<br>' .
       $vendor_delivery_address_list['delivery_name'] . '<br>' .
       $vendor_delivery_address_list['delivery_street_address'] . '<br>' .
       $vendor_delivery_address_list['delivery_city'] . ', ' .
       $vendor_delivery_address_list['delivery_state'] . ' ' . $vendor_delivery_address_list['delivery_postcode'] . '<br><br>';
       $email = $email . '<table width="75%" border=1 cellspacing="0" cellpadding="3">
           <tr><td>Qty:</td><td>Product Name:</td><td>Item Code/Number:</td><td>Product Model:</td><td>Per Unit Price:</td><td>Item Comments: </td></tr>';
       for ($i = 0, $n = sizeof($vendor_products[$l]['vendor_orders_products']); $i < $n; $i++) {
         $product_attribs = '';
         if (isset ($vendor_products[$l]['vendor_orders_products'][$i]['vendor_attributes']) && (sizeof($vendor_products[$l]['vendor_orders_products'][$i]['vendor_attributes']) > 0)) {

           for ($j = 0, $k = sizeof($vendor_products[$l]['vendor_orders_products'][$i]['vendor_attributes']); $j < $k; $j++) {
             $product_attribs .= '  ' . $vendor_products[$l]['vendor_orders_products'][$i]['vendor_attributes'][$j]['option'] . ': ' . $vendor_products[$l]['vendor_orders_products'][$i]['vendor_attributes'][$j]['value'] . '<br>';
           }
         }
         $email = $email . '<tr><td> ' . $vendor_products[$l]['vendor_orders_products'][$i]['Pqty'] .
                           '</td><td> ' . $vendor_products[$l]['vendor_orders_products'][$i]['Pname'] . '<br>  <i>Option<br> ' . $product_attribs .
                           '</td><td> ' . $vendor_products[$l]['vendor_orders_products'][$i]['PVprod_id'] .
                           '</td><td> ' . $vendor_products[$l]['vendor_orders_products'][$i]['Pmodel'] .
                           '</td><td> ' . $vendor_products[$l]['vendor_orders_products'][$i]['PVprod_price'] . '</td><td>' .
         $vendor_products[$l]['vendor_orders_products'][$i]['Pcomments'] . '</b></td></tr>';

       }
     }
     $email = $email . '</table><br><HR><br>';

     tep_mail ($the_name, $the_email, EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID, $email . '<br>', STORE_NAME, STORE_OWNER_EMAIL_ADDRESS);
     $vendor_order_sent = true;

     if ($debug == 'yes') {
       echo 'The $email(including headers:<br>Vendor Email Addy' . $the_email . '<br>Vendor Name' . $the_name . '<br>Vendor Contact' . $the_contact . '<br>Body--<br>' . $email . '<br>';
     }

     if ($vendor_order_sent == true) {
       tep_db_query ("update " . TABLE_ORDERS_SHIPPING . " set vendor_order_sent = 'yes' where orders_id = '" . (int) $oID . "'");
     }
   }

   return true;
 }

//MVS end

 require(DIR_WS_CLASSES . 'currencies.php');
 $currencies = new currencies();

 $orders_statuses = array();
 $orders_status_array = array();
 $orders_status_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "'");
 while ($orders_status = tep_db_fetch_array($orders_status_query)) {
   $orders_statuses[] = array('id' => $orders_status['orders_status_id'],
                              'text' => $orders_status['orders_status_name']);
   $orders_status_array[$orders_status['orders_status_id']] = $orders_status['orders_status_name'];
 }

 $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');

 if (tep_not_null($action)) {
   switch ($action) {
     case 'update_order':
       $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);
       $status = tep_db_prepare_input($HTTP_POST_VARS['status']);
       $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);

       $order_updated = false;
       $check_status_query = tep_db_query("select customers_name, customers_email_address, orders_status, date_purchased from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");
       $check_status = tep_db_fetch_array($check_status_query);

       if ( ($check_status['orders_status'] != $status) || tep_not_null($comments)) {
         tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . tep_db_input($status) . "', last_modified = now() where orders_id = '" . (int)$oID . "'");

//MVS start
         if (SELECT_VENDOR_EMAIL_WHEN == 'Admin' || SELECT_VENDOR_EMAIL_WHEN == 'Both') {

           if (isset ($status)) {
             $order_sent_query = tep_db_query("select vendor_order_sent, vendors_id from " . TABLE_ORDERS_SHIPPING . " where orders_id = '" . $oID . "'");
             while ($order_sent_data = tep_db_fetch_array($order_sent_query)) {
               $order_sent_ckeck = $order_sent_data['vendor_order_sent'];
               $vendors_id = $order_sent_data['vendors_id'];
               if ($order_sent_ckeck == 'no') {
                 $vendor_order_sent = false;
                 vendors_email($vendors_id, $oID, $status, $vendor_order_sent);
               } //if
             } //while
           } //isset
         } 
//MVS end

         $customer_notified = '0';
         if (isset($HTTP_POST_VARS['notify']) && ($HTTP_POST_VARS['notify'] == 'on')) {
           $notify_comments = '';
           if (isset($HTTP_POST_VARS['notify_comments']) && ($HTTP_POST_VARS['notify_comments'] == 'on')) {
             $notify_comments = sprintf(EMAIL_TEXT_COMMENTS_UPDATE, $comments) . "\n\n";
           }

           $email = STORE_NAME . "\n" . EMAIL_SEPARATOR . "\n" . EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n" . EMAIL_TEXT_INVOICE_URL . ' ' . tep_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $oID, 'SSL') . "\n" . EMAIL_TEXT_DATE_ORDERED . ' ' . tep_date_long($check_status['date_purchased']) . "\n\n" . $notify_comments . sprintf(EMAIL_TEXT_STATUS_UPDATE, $orders_status_array[$status]);

           tep_mail($check_status['customers_name'], $check_status['customers_email_address'], EMAIL_TEXT_SUBJECT, $email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

           $customer_notified = '1';
         }

         tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments) values ('" . (int)$oID . "', '" . tep_db_input($status) . "', now(), '" . tep_db_input($customer_notified) . "', '" . tep_db_input($comments)  . "')");

// BOF Clear CC and CVV2 number from orders. (edited by Knut Nilsen with inspiration from MASK cc# contribution)
				if($HTTP_POST_VARS['clear_CC'] == 'on') {
					//calculate mask for cc number
					$cc_num_query = tep_db_query("select cc_number from " . TABLE_ORDERS . " where orders_id = '" . $oID . "'");
					$cc_num = tep_db_fetch_array($cc_num_query); 
					$len = (strlen($cc_num['cc_number']) - 4);
					$masked_cc_num = '';
					for($i = 0 ; $i < $len ; $i++) {
						$masked_cc_num .= 'x';
					}
					$masked_cc_num .= substr($cc_num['cc_number'], $len, 4); 
					$unmasked_cc_num .= substr($cc_num['cc_number'], 0, $len + 4); 
					if($unmasked_cc_num != $masked_cc_num){
						if($check_status['orders_status'] != 1){	// order_status = 1 equals to PENDING
							tep_db_query("update " . TABLE_ORDERS . " set cc_number = '" . $masked_cc_num . "' where orders_id = '" . tep_db_input($oID) . "'");
							$messageStack->add_session(MESSAGE_MASK_1 . $oID . '.', 'success');
						} else {	// Skip masking when in pending status
							$messageStack->add_session(MESSAGE_MASK_4 . '.', 'success');
						}
					}

					//calculate mask for cc expire date
					$cc_exp_query = tep_db_query("select cc_expires from " . TABLE_ORDERS . " where orders_id = '" . $oID . "'");
					$cc_exp = tep_db_fetch_array($cc_exp_query); 
					$len = (strlen($cc_exp['cc_expires']) - 2);
					$masked_cc_exp = '';
					for($i = 0 ; $i < $len ; $i++) {
						$masked_cc_exp .= 'x';
					}
					$masked_cc_exp .= substr($cc_exp['cc_expires'], $len, 2); 
					$unmasked_cc_exp .= substr($cc_exp['cc_expires'], 0, $len + 2); 
					if($unmasked_cc_exp != $masked_cc_exp){
						if($check_status['orders_status'] != 1){	// order_status = 1 equals to PENDING
							tep_db_query("update " . TABLE_ORDERS . " set cc_expires = '" . $masked_cc_exp . "' where orders_id = '" . tep_db_input($oID) . "'");
							$messageStack->add_session(MESSAGE_MASK_2 . $oID . '.', 'success');
						} else {	// Skip masking when in pending status
							$messageStack->add_session(MESSAGE_MASK_4 . '.', 'success');
						}
					}

				}
				if($HTTP_POST_VARS['clear_CC_CVV2'] == 'on') {
					//calculate mask for cc secutiry code
					$cc_cvv_query = tep_db_query("select cc_cvv2 from " . TABLE_ORDERS . " where orders_id = '" . $oID . "'");
					$cc_cvv = tep_db_fetch_array($cc_cvv_query); 
					$len = (strlen($cc_cvv['cc_cvv2']) - 1);
					$masked_cc_cvv = '';
					for($i = 0 ; $i < $len ; $i++) {
						$masked_cc_cvv .= 'x';
					}
					$masked_cc_cvv .= substr($cc_cvv['cc_cvv2'], $len, 1); 
					$unmasked_cc_cvv .= substr($cc_cvv['cc_cvv2'], 0, $len + 1); 
					if($unmasked_cc_cvv != $masked_cc_cvv){
						if($check_status['orders_status'] != 1){	// order_status = 1 equals to PENDING
							tep_db_query("update " . TABLE_ORDERS . " set cc_cvv2 = '" . $masked_cc_cvv . "' where orders_id = '" . tep_db_input($oID) . "'");
							$messageStack->add_session(MESSAGE_MASK_3 . $oID . '.', 'success');
						} else {	// Skip masking when in pending status
							$messageStack->add_session(MESSAGE_MASK_4 . '.', 'success');
						}
					}
				}
// EOF Clear CC and CVV2 number from orders.

         $order_updated = true;
       }

       if ($order_updated == true) {
        $messageStack->add_session(SUCCESS_ORDER_UPDATED, 'success');
       } else {
         $messageStack->add_session(WARNING_ORDER_NOT_UPDATED, 'warning');
       }

       tep_redirect(tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action')) . 'action=edit'));
       break;
     case 'deleteconfirm':
       $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

       tep_remove_order($oID, $HTTP_POST_VARS['restock']);

       tep_redirect(tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action'))));
       break;
   }
 }

 if (($action == 'edit') && isset($HTTP_GET_VARS['oID'])) {
   $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

   $orders_query = tep_db_query("select orders_id from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");
   $order_exists = true;
   if (!tep_db_num_rows($orders_query)) {
     $order_exists = false;
     $messageStack->add(sprintf(ERROR_ORDER_DOES_NOT_EXIST, $oID), 'error');
   }
 }

 include(DIR_WS_CLASSES . 'order.php');
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<link rel="stylesheet" type="text/css" href="mindsparx_admin/template/<?php  echo ADMIN_TEMPLATE?>/stylesheet.css">
<script language="javascript" src="includes/general.js"></script>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">
<!-- header //-->
<?php
 require(DIR_WS_INCLUDES . 'header.php');
?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="2" cellpadding="2">
 <tr>
   <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
   </table></td>
<!-- body_text //-->
   <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
<?php
 if (($action == 'edit') && ($order_exists == true)) {
   $order = new order($oID);
?>
     <tr>
       <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
<!-- BOF Purchase Without Account v2.1 //-->
<!-- BOF Order Maker: Adapted to work with Purchase Without Account contribution -->
           <td class="pageHeading"><?php echo HEADING_TITLE . (($order->customer['is_dummy_account'])? ' <b>no account!</b>':'') . '<a href="' . tep_href_link(FILENAME_CREATE_ORDER) . '"> Create order </a>'; ?></td>
<!-- EOF Order Maker -->
<!-- EOF Purchase Without Account v2.1 //-->
           <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>
<!-- // BOF: Order Editor -->
           <td class="pageHeading" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS_EDIT, 'oID=' . $_GET['oID']) . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $_GET['oID']) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $_GET['oID']) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a> '; ?></td>
<!-- // EOF: Order Editor -->
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table width="100%" border="0" cellspacing="0" cellpadding="2">
         <tr>
           <td colspan="3"><?php echo tep_draw_separator(); ?></td>
         </tr>
         <tr>
           <td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
             <tr>
               <td class="main" valign="top"><b><?php echo ENTRY_CUSTOMER; ?></b></td>
               <td class="main"><?php echo tep_address_format($order->customer['format_id'], $order->customer, 1, '', '<br>'); ?></td>
             </tr>
             <tr>
               <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '5'); ?></td>
             </tr>
             <tr>
               <td class="main"><b><?php echo ENTRY_TELEPHONE_NUMBER; ?></b></td>
               <td class="main"><?php echo $order->customer['telephone']; ?></td>
             </tr>
             <tr>
               <td class="main"><b><?php echo ENTRY_EMAIL_ADDRESS; ?></b></td>
               <td class="main"><?php echo '<a href="mailto:' . $order->customer['email_address'] . '"><u>' . $order->customer['email_address'] . '</u></a>'; ?></td>
             </tr>
<!-- // BOF Separate Pricing Per Customer -->
             <tr>
               <td class="main"><b><?php echo TABLE_HEADING_CUSTOMERS_GROUPS .":" ; ?></b></td>
               <td class="main"><?php echo $order->customer['customers_group_name']; ?></td>
             </tr>
<!-- // EOF Separate Pricing Per Customer -->
           </table></td>
           <td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
             <tr>
               <td class="main" valign="top"><b><?php echo ENTRY_SHIPPING_ADDRESS; ?></b></td>
               <td class="main"><?php echo tep_address_format($order->delivery['format_id'], $order->delivery, 1, '', '<br>'); ?></td>
             </tr>
           </table></td>
           <td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
             <tr>
               <td class="main" valign="top"><b><?php echo ENTRY_BILLING_ADDRESS; ?></b></td>
               <td class="main"><?php echo tep_address_format($order->billing['format_id'], $order->billing, 1, '', '<br>'); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" cellspacing="0" cellpadding="2">
         <tr>
           <td class="main"><b><?php echo ENTRY_PAYMENT_METHOD; ?></b></td>
           <td class="main"><?php echo $order->info['payment_method']; ?></td>
         </tr>
<?php
   if (tep_not_null($order->info['cc_type']) || tep_not_null($order->info['cc_owner']) || tep_not_null($order->info['cc_number'])) {
?>
         <tr>
           <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo ENTRY_CREDIT_CARD_TYPE; ?></td>
           <td class="main"><?php echo $order->info['cc_type']; ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo ENTRY_CREDIT_CARD_OWNER; ?></td>
           <td class="main"><?php echo $order->info['cc_owner']; ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo ENTRY_CREDIT_CARD_NUMBER; ?></td>
           <td class="main"><?php echo $order->info['cc_number']; ?></td>
         </tr>
         <tr>
           <td class="main"><?php echo ENTRY_CREDIT_CARD_EXPIRES; ?></td>
           <td class="main"><?php echo $order->info['cc_expires']; ?></td>
         </tr>

<!-- BOF contribution Credit Card with CVV2 Version v2 //-->
<?php if (MODULE_PAYMENT_CC_CVV2 == 'True') { 
?>
         <tr>
            <td class="main"><?php echo ENTRY_CREDIT_CARD_CVV2; ?></td>
            <td class="main"><?php echo $order->info['cc_cvv2']; ?></td>
         </tr>
<?php
    	}
		}
?>
<!-- EOF contribution Credit Card with CVV2 Version v2 //-->
<?php //MVS start ?>
   <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
<?php
   $orders_vendors_data_query = tep_db_query("select distinct ov.orders_id, 
                                                              ov.vendors_id, 
                                                              ov.vendor_order_sent, 
                                                              v.vendors_name 
                                              from " . TABLE_ORDERS_SHIPPING . " ov, 
                                                   " . TABLE_VENDORS . " v 
                                              where v.vendors_id=ov.vendors_id 
                                                and orders_id='" . (int) $oID . "' 
                                              group by vendors_id
                                           ");
   while ($orders_vendors_data = tep_db_fetch_array($orders_vendors_data_query)) {
     echo '<tr class="dataTableRow"><td class="dataTableContent" valign="top" align="left">Order Sent to ' . $orders_vendors_data['vendors_name'] . ':<b> ' . $orders_vendors_data['vendor_order_sent'] . '</b><br></td>';
   }
   echo '</tr>';
//MVS end
?>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
<?php
// MVS start
   //   echo '<br> the $order->orders_shipping_id : ' . $order->orders_shipping_id;
   if (tep_not_null($order->orders_shipping_id)) {
     require_once ('vendor_order_info.php');
   } else {
// MVS end
?>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr class="dataTableHeadingRow">
           <td class="dataTableHeadingContent" colspan="2"><?php echo TABLE_HEADING_PRODUCTS; ?></td>
           <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_PRODUCTS_MODEL; ?></td>
           <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_TAX; ?></td>
           <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_PRICE_EXCLUDING_TAX; ?></td>
           <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_PRICE_INCLUDING_TAX; ?></td>
           <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_TOTAL_EXCLUDING_TAX; ?></td>
           <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_TOTAL_INCLUDING_TAX; ?></td>
         </tr>
<?php
   for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
     echo '          <tr class="dataTableRow">' . "\n" .
          '            <td class="dataTableContent" valign="top" align="right">' . $order->products[$i]['qty'] . ' x</td>' . "\n" .
          '            <td class="dataTableContent" valign="top">' . $order->products[$i]['name'];

     if (isset($order->products[$i]['attributes']) && (sizeof($order->products[$i]['attributes']) > 0)) {
       for ($j = 0, $k = sizeof($order->products[$i]['attributes']); $j < $k; $j++) {
         echo '<br><nobr><small> <i> - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'];
         if ($order->products[$i]['attributes'][$j]['price'] != '0') echo ' (' . $order->products[$i]['attributes'][$j]['prefix'] . $currencies->format($order->products[$i]['attributes'][$j]['price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . ')';
         echo '</i></small></nobr>';
       }
     }

     echo '            </td>' . "\n" .
          '            <td class="dataTableContent" valign="top">' . $order->products[$i]['model'] . '</td>' . "\n" .
          '            <td class="dataTableContent" align="right" valign="top">' . tep_display_tax_value($order->products[$i]['tax']) . '%</td>' . "\n" .
          '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format($order->products[$i]['final_price'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
          '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true), true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
          '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format($order->products[$i]['final_price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .
          '            <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true) * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n";
     echo '          </tr>' . "\n";
   }
?>
         <tr>
           <td align="right" colspan="8"><table border="0" cellspacing="0" cellpadding="2">
<?php
// MVS
   }
   for ($i = 0, $n = sizeof($order->totals); $i < $n; $i++) {
     echo '              <tr>' . "\n" .
          '                <td align="right" class="smallText">' . $order->totals[$i]['title'] . '</td>' . "\n" .
          '                <td align="right" class="smallText">' . $order->totals[$i]['text'] . '</td>' . "\n" .
          '              </tr>' . "\n";
   }
?>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
       <td class="main"><table border="1" cellspacing="0" cellpadding="5">
         <tr>
           <td class="smallText" align="center"><b><?php echo TABLE_HEADING_DATE_ADDED; ?></b></td>
           <td class="smallText" align="center"><b><?php echo TABLE_HEADING_CUSTOMER_NOTIFIED; ?></b></td>
           <td class="smallText" align="center"><b><?php echo TABLE_HEADING_STATUS; ?></b></td>
           <td class="smallText" align="center"><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td>
         </tr>
<?php
   $orders_history_query = tep_db_query("select orders_status_id, date_added, customer_notified, comments from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '" . tep_db_input($oID) . "' order by date_added");
   if (tep_db_num_rows($orders_history_query)) {
     while ($orders_history = tep_db_fetch_array($orders_history_query)) {
       echo '          <tr>' . "\n" .
            '            <td class="smallText" align="center">' . tep_datetime_short($orders_history['date_added']) . '</td>' . "\n" .
            '            <td class="smallText" align="center">';
       if ($orders_history['customer_notified'] == '1') {
         echo tep_image(DIR_WS_ICONS . 'tick.gif', ICON_TICK) . "</td>\n";
       } else {
         echo tep_image(DIR_WS_ICONS . 'cross.gif', ICON_CROSS) . "</td>\n";
       }
       echo '            <td class="smallText">' . $orders_status_array[$orders_history['orders_status_id']] . '</td>' . "\n" .
            '            <td class="smallText">' . nl2br(tep_db_output($orders_history['comments'])) . ' </td>' . "\n" .
            '          </tr>' . "\n";
     }
   } else {
       echo '          <tr>' . "\n" .
            '            <td class="smallText" colspan="5">' . TEXT_NO_ORDER_HISTORY . '</td>' . "\n" .
            '          </tr>' . "\n";
   }
?>
       </table></td>
     </tr>
     <tr>
       <td class="main"><br><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '5'); ?></td>
     </tr>
     <tr><?php echo tep_draw_form('status', FILENAME_ORDERS, tep_get_all_get_params(array('action')) . 'action=update_order'); ?>
       <td class="main"><?php echo tep_draw_textarea_field('comments', 'soft', '60', '5'); ?></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" cellspacing="0" cellpadding="2">
         <tr>
           <td><table border="0" cellspacing="0" cellpadding="2">
             <tr>
               <td class="main"><b><?php echo ENTRY_STATUS; ?></b> <?php echo tep_draw_pull_down_menu('status', $orders_statuses, $order->info['orders_status']); ?></td>
             </tr>
             <tr>
<!-- // BOF Clear CC and CVV2 number from orders. -->
							<td class="main"><b><?php echo ENTRY_NOTIFY_CUSTOMER; ?></b> <?php echo tep_draw_checkbox_field('notify', '', false); ?></td>
							<td class="main"><b><?php echo ENTRY_NOTIFY_COMMENTS; ?></b> <?php echo tep_draw_checkbox_field('notify_comments', '', false); ?></td>
							</tr>
							<tr>
							<td class="main"><b><?php echo ENTRY_NOTIFY_CLEAR_CC; ?></b> <?php echo tep_draw_checkbox_field('clear_CC', '', true); ?></td>
							<td class="main"><b><?php echo ENTRY_NOTIFY_CLEAR_CC_CVV2; ?></b> <?php echo tep_draw_checkbox_field('clear_CC_CVV2', '', true); ?></td>
<!-- // EOF Clear CC and CVV2 number from orders. -->
             </tr>
           </table></td>
           <td valign="top"><?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?></td>
         </tr>
       </table></td>
     </form></tr>
     <tr>
<!-- // BOF: Order Editor -->
       <td colspan="2" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS_EDIT, 'oID=' . $_GET['oID']) . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $_GET['oID']) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $_GET['oID']) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a> '; ?></td>
<!-- // EOF: Order Editor -->
     </tr>
<?php
 } else {
?>
     <tr>
       <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
<!-- BOF Order Maker -->
           <td class="pageHeading"><?php echo HEADING_TITLE . '<a href="' . tep_href_link(FILENAME_CREATE_ORDER) . '"> Create order </a>'; ?></td>
           <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>
<!-- EOF Order Maker -->
           <td align="right"><table border="0" width="100%" cellspacing="0" cellpadding="0">
             <tr><?php echo tep_draw_form('orders', FILENAME_ORDERS, '', 'get'); ?>
               <td class="smallText" align="right"><?php echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('oID', '', 'size="12"') . tep_draw_hidden_field('action', 'edit'); ?></td>
             <?php echo tep_hide_session_id(); ?></form></tr>
             <tr><?php echo tep_draw_form('status', FILENAME_ORDERS, '', 'get'); ?>
               <td class="smallText" align="right"><?php echo HEADING_TITLE_STATUS . ' ' . tep_draw_pull_down_menu('status', array_merge(array(array('id' => '', 'text' => TEXT_ALL_ORDERS)), $orders_statuses), '', 'onChange="this.form.submit();"'); ?></td>
             <?php echo tep_hide_session_id(); ?></form></tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr class="dataTableHeadingRow">
               <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CUSTOMERS; ?></td>
							<!-- next td added for SPPC -->
							<td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CUSTOMERS_GROUPS; ?></td>
               <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ORDER_TOTAL; ?></td>
               <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_DATE_PURCHASED; ?></td>
               <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_STATUS; ?></td>
               <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?> </td>
             </tr>
<?php
   if (isset($HTTP_GET_VARS['cID'])) {
// BOF Separate Pricing Per Customer
     $cID = tep_db_prepare_input($HTTP_GET_VARS['cID']);
     $orders_query_raw = "select o.orders_id, o.customers_name, o.customers_id, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total, cg.customers_group_name from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id) left join " . TABLE_CUSTOMERS . " c on c.customers_id = o.customers_id left join " . TABLE_CUSTOMERS_GROUPS . " cg using(customers_group_id), " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$cID . "' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and ot.class = 'ot_total' order by orders_id DESC";
   } elseif (isset($HTTP_GET_VARS['status'])) {
     $status = tep_db_prepare_input($HTTP_GET_VARS['status']);
     $orders_query_raw = "select o.orders_id, o.customers_name, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total, cg.customers_group_name from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id) left join " . TABLE_CUSTOMERS . " c on c.customers_id = o.customers_id left join " . TABLE_CUSTOMERS_GROUPS . " cg using(customers_group_id), " . TABLE_ORDERS_STATUS . " s where o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and s.orders_status_id = '" . (int)$status . "' and ot.class = 'ot_total' order by o.orders_id DESC";
// EOF Separate Pricing Per Customer
   } else {

// ### BEGIN ORDER MAKER ### added customer_service_id
// BOF Separate Pricing Per Customer
     $orders_query_raw = "select o.orders_id, o.customers_name, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, o.customer_service_id, s.orders_status_name, ot.text as order_total, cg.customers_group_name from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id) left join " . TABLE_CUSTOMERS . " c on c.customers_id = o.customers_id left join " . TABLE_CUSTOMERS_GROUPS . " cg using(customers_group_id), " . TABLE_ORDERS_STATUS . " s where o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and ot.class = 'ot_total' order by o.orders_id DESC";
// EOF Separate Pricing Per Customer
// ### END ORDER MAKER ### added customer_service_id
   }
   $orders_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_query_raw, $orders_query_numrows);
   $orders_query = tep_db_query($orders_query_raw);
   while ($orders = tep_db_fetch_array($orders_query)) {
   if ((!isset($HTTP_GET_VARS['oID']) || (isset($HTTP_GET_VARS['oID']) && ($HTTP_GET_VARS['oID'] == $orders['orders_id']))) && !isset($oInfo)) {
       $oInfo = new objectInfo($orders);
     }

     if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {
       echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=edit') . '\'">' . "\n";
     } else {
       echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '\'">' . "\n";
     }
?>
               <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $orders['orders_id'] . '&action=edit') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a> ' . $orders['customers_name']; ?></td>
               <!-- next td added for SPPC -->						<td class="dataTableContent"><?php echo $orders['customers_group_name']; ?></td>
               <td class="dataTableContent" align="right"><?php echo strip_tags($orders['order_total']); ?></td>
               <td class="dataTableContent" align="center"><?php echo tep_datetime_short($orders['date_purchased']); ?></td>
               <td class="dataTableContent" align="right"><?php echo $orders['orders_status_name']; ?></td>
               <td class="dataTableContent" align="right"><?php if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
             </tr>
<?php
   }
?>
             <tr>
             	<!-- next colspan from 5 to 6 for SPPC -->
               <td colspan="6"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                 <tr>
                   <td class="smallText" valign="top"><?php echo $orders_split->display_count($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_ORDERS); ?></td>
                   <td class="smallText" align="right"><?php echo $orders_split->display_links($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page'], tep_get_all_get_params(array('page', 'oID', 'action'))); ?></td>
                 </tr>
               </table></td>
             </tr>
           </table></td>
<?php
 $heading = array();
 $contents = array();

 switch ($action) {
   case 'delete':
     $heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_DELETE_ORDER . '</b>');

     $contents = array('form' => tep_draw_form('orders', FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=deleteconfirm'));
     $contents[] = array('text' => TEXT_INFO_DELETE_INTRO . '<br><br><b>' . $cInfo->customers_firstname . ' ' . $cInfo->customers_lastname . '</b>');
     $contents[] = array('text' => '<br>' . tep_draw_checkbox_field('restock') . ' ' . TEXT_INFO_RESTOCK_PRODUCT_QUANTITY);
     $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
     break;
   default:
     if (isset($oInfo) && is_object($oInfo)) {
       $heading[] = array('text' => '<b>[' . $oInfo->orders_id . ']  ' . tep_datetime_short($oInfo->date_purchased) . '</b>');
// BOF: Order Editor, CHANGED: tep_image_button('button_edit.gif', IMAGE_EDIT)    TO:  tep_image_button('button_details.gif', IMAGE_DETAILS)
       $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=edit') . '">' . tep_image_button('button_details.gif', IMAGE_DETAILS) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=delete') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a>');
// BOF: Order Editor, ADDED:   <a href="' . tep_href_link(FILENAME_ORDERS_EDIT, 'oID=' . $oInfo->orders_id) . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a>
// BOF Order Maker
			$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $oInfo->orders_id) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $oInfo->orders_id) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a>');
			$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_ORDERS_EDIT, 'oID=' . $oInfo->orders_id) . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CREATE_ORDER) . '">' . tep_image_button('button_create_order.gif', IMAGE_CREATE_ORDER) . '</a>');
// EOF Order Maker
// EOF: Order Editor 
       $contents[] = array('text' => '<br>' . TEXT_DATE_ORDER_CREATED . ' ' . tep_date_short($oInfo->date_purchased));
       if (tep_not_null($oInfo->last_modified)) $contents[] = array('text' => TEXT_DATE_ORDER_LAST_MODIFIED . ' ' . tep_date_short($oInfo->last_modified));
       $contents[] = array('text' => '<br>' . TEXT_INFO_PAYMENT_METHOD . ' '  . $oInfo->payment_method);
// ### BEGIN ORDER MAKER ###
      $contents[] = array('text' => '<br>' . TEXT_INFO_CUSTOMER_SERVICE_ID . ' '  . $oInfo->customer_service_id);
// ### END ORDER MAKER ###
//MVS start
         $orders_vendors_data_query = tep_db_query("select distinct ov.orders_id, ov.vendors_id, ov.vendor_order_sent, v.vendors_name from " . TABLE_ORDERS_SHIPPING . " ov, " . TABLE_VENDORS . " v where v.vendors_id=ov.vendors_id and orders_id='" . $oInfo->orders_id . "' group by vendors_id");
         while ($orders_vendors_data = tep_db_fetch_array($orders_vendors_data_query)) {
           $contents[] = array ('text' => VENDOR_ORDER_SENT . '<b>' . $orders_vendors_data['vendors_name'] . '</b>:<b> ' . $orders_vendors_data['vendor_order_sent'] . '</b><br>');
         }
//MVS end
     }
     break;
 }

 if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
   echo '            <td width="25%" valign="top">' . "\n";

   $box = new box;
   echo $box->infoBox($heading, $contents);

   echo '            </td>' . "\n";
 }
?>
         </tr>
       </table></td>
     </tr>
<?php
 }
?>
   </table></td>
<!-- body_text_eof //-->
 </tr>
</table>
<!-- body_eof //-->

<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

Link to comment
Share on other sites

I can't help much as I've never combined Order Editor with MVS. It will need some work. MVS changes the structure in the shipping part extensively.

 

I would suggest that you set up a test shop with just MVS installed and look at your Admin files in operation. That should give you some hints of what to look for in the combined shop.

 

Regards

Jim

See my profile for a list of my addons and ways to get support.

Link to comment
Share on other sites

How do I charge tax for individual vendors or can I?

 

Example: California shopper buys from a California vendor they get charged California tax, but if the California buyer purchases from a Arizona vendor (or another state) they shouldn't get taxed.

 

I set my Taxes up correctly in OSCommerce, but the problem is the buyer from California always gets taxed whether buying from California or not.

 

surprised nobody asked this... i looked through the posts and read all the literature that came with the module and couldn't find my answer

 

basically taxes should only be paid if a buyer is in a vendor's state

Link to comment
Share on other sites

You should check with the tax authorities in the states involved. I have been told that a drop-shipper counts as a physical presence in the state the drop-shipper is located in. So, if you are in Oregon and your drop-shippers are in California and Michigan (for example), you would have to collect tax from buyers in all three states. It doesn't matter where the current shipment is coming from. This is how companies like Amazon work.

 

Regards

Jim

See my profile for a list of my addons and ways to get support.

Link to comment
Share on other sites

hoped to find a way to make the version of Order Editor / Order Maker

I have all installed and working.

1.Order Editor

2.Order editor for MVS

3.Manual Order Maker

 

For Order Editor for MVS I copied edit_orders.php as edit_orders_mvs.php inside /admin.

I also created a new class named as order_mvs.php inside /admin/includes/classes

with this code:

 /// Begin mods for Order Editor
// Return the tax description for a zone / class
// TABLES: tax_rates;
 function tep_get_tax_description($class_id, $country_id, $zone_id) {
   $tax_query = tep_db_query("select tax_description from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za on (tr.tax_zone_id = za.geo_zone_id) left join " . TABLE_GEO_ZONES . " tz on (tz.geo_zone_id = tr.tax_zone_id) where (za.zone_country_id is null or za.zone_country_id = '0' or za.zone_country_id = '" . (int)$country_id . "') and (za.zone_id is null or za.zone_id = '0' or za.zone_id = '" . (int)$zone_id . "') and tr.tax_class_id = '" . (int)$class_id . "' order by tr.tax_priority");
   if (tep_db_num_rows($tax_query)) {
     $tax_description = '';
     while ($tax = tep_db_fetch_array($tax_query)) {
       $tax_description .= $tax['tax_description'] . ' + ';
     }
     $tax_description = substr($tax_description, 0, -3);

     return $tax_description;
   } else {
     return ENTRY_TAX;
   }
 }

////

// Function    : tep_get_country_id
 // Arguments   : country_name		country name string
 // Return      : country_id
 // Description : Function to retrieve the country_id based on the country's name
 function tep_get_country_id($country_name) {
   $country_id_query = tep_db_query("select * from " . TABLE_COUNTRIES . " where countries_name = '" . $country_name . "'");
   if (!tep_db_num_rows($country_id_query)) {
     return 0;
   }
   else {
     $country_id_row = tep_db_fetch_array($country_id_query);
     return $country_id_row['countries_id'];
   }
 }

  // Function    : tep_get_zone_id
 // Arguments   : country_id		country id string    zone_name		state/province name
 // Return      : zone_id
 // Description : Function to retrieve the zone_id based on the zone's name
 function tep_get_zone_id($country_id, $zone_name) {
   $zone_id_query = tep_db_query("select * from " . TABLE_ZONES . " where zone_country_id = '" . $country_id . "' and zone_name = '" . $zone_name . "'");
   if (!tep_db_num_rows($zone_id_query)) {
     return 0;
   }
   else {
     $zone_id_row = tep_db_fetch_array($zone_id_query);
     return $zone_id_row['zone_id'];
   }
 }


// Function    : tep_html_quotes
 // Arguments   : string	any string
 // Return      : string with single quotes converted to html equivalent
 // Description : Function to change quotes to HTML equivalents for form inputs.
 function tep_html_quotes($string) {
   return str_replace("'", "'", $string);
 }

/////end Order Editor mods

 

 

Then in admin/orders.php I added:

require(DIR_WS_CLASSES . 'order_mvs.php');

 

For the admin panel I created a new button

[DETAILS] = orders.php

[MOFIFY] = edit_orders.php

[ORDER SUPPLIER] = edit_orders_mvs.php

 

 

Now im trying to create a button to delete the orders_shipping_id line to convert a partivular mvs-order in standard-order.

Edited by bhbilbao
Link to comment
Share on other sites

I would suggest that you set up a test shop with just MVS installed and look at your Admin files in operation. That should give you some hints of what to look for in the combined shop.

 

Regards

Jim

 

Thanks for your input and tips kymation... Unfortunately I don't know how to setup a test-shop running on my own computer... I have a website that I ftp any changes in code to check if it works. It would make my life much easier if I could set it up to run on my computer for test. Do you have any tips how to do that and what to put into the configuration files etc to make it work?

 

After working 2 months full time to add contributions and learn how things work I'm still very much a novice, and with the time and effort spent, I have wondered if it would be better and safer to use 10000 - 15000 Euro to buy a solution with the functionality I want... If I knew and still wanted to go for osCommerce, I would probably go for a full package contribution that has been tested and has all the most important and complicated mods already installed and then add more from that standpoint... But I have not seen such a contribution... Anyone know if this exists?

 

Thanks again for your input and your valuable time...

 

 

I have all installed and working.

1.Order Editor

2.Order editor for MVS

3.Manual Order Maker

 

WOW! that's wonderful to hear :thumbsup: You are obviously on top of things bhbilbao...

 

For Order Editor for MVS I copied edit_orders.php as edit_orders_mvs.php inside /admin.

 

Let me see if I understand correctly... You copied and used [/b]edit_orders.php and edit_orders_mvs.php[/b] from Order Editor for MVS v2.6.4 into /admin, meaning latest Order Editor 5_0_9b is not utilized? or do you mean that you copied edit_orders.php from Order Editor for MVS v2.6.4 and renamed it to edit_orders_mvs.php? Maybe it's just a typo or something that made me confused?

 

I have other contributions that have modifications in the order.php and edit_order.php files+++ how do I incorporate these in the OE for MVS v.2.6.4 when they look so fundamentally different from what I have?

Is there any chance you could email me some files to compare?

 

 

Then in admin/orders.php I added:

require(DIR_WS_CLASSES . 'order_mvs.php');

 

For the admin panel I created a new button

[DETAILS] = orders.php

[MOFIFY] = edit_orders.php

[ORDER SUPPLIER] = edit_orders_mvs.php

 

Sounds good... how exactly did you make these buttons and in which file? admin/orders.php? Sorry for my ignorance in programming...

 

Now im trying to create a button to delete the orders_shipping_id line to convert a partivular mvs-order in standard-order.

 

This sounds good. Please tell me when you have that up and running :thumbsup:

 

 

Thanks again to everyone for a superb forum and support..

 

regards,

Knut

Link to comment
Share on other sites

I use XAMPP to create a test server. It's not hard to install; just read the instructions, then follow the links under Security after you have it running.

 

The easiest way to set up a test install of osCommerce is to install a fresh copy under XAMPP. Once that is done, move the configure.php files to the local directory in both catalog and admin sides. You can then copy your modified site over the top of the installed files. Just remember to not copy the local directory to the live site when you update it.

 

The alternative is to create a second copy of osCommerce on your hosted server (and a second database to use with it.) This is slower, due to needing to upload everything via FTP, but it's better for debugging server issues.

 

There are several forks of osCommerce with somebody's idea of the essential Addons installed. They are all poorly supported, difficult to work with, and generally out of date. They are also much harder to add new mods to, since you don't know where the changes have already been made. Stick with what you are doing. At least you are learning the code as you go.

 

Regards

Jim

See my profile for a list of my addons and ways to get support.

Link to comment
Share on other sites

edit_orders.php from Order Editor for MVS v2.6.4 and renamed it to edit_orders_mvs.php?

Yes, thats right. Also add it to filenames.php and create a new language file or adding lines to the old one.

 

I cannot remove Order Editor 5.0.9 because i use it in conjunction with other contribs as google maps, resend order confirmation html, etc.

 

As I see the unique diference in Order Editor V.S Order Editor MVS is that the last one one separates the shippings when adding products.

In Order Editor 5.0.9 all items you added are in only one list.

In other hand the edit_orders_add_product.php is also diferent, for the last one there is not code input field, and no price in the item lists.

 

This is new for me, and I see extrange things.

If you delete a item from edit_orders.php(order editor 5.0.9) the shiping_id remains in the order. You could see 2 shippings_id for only one product!, for that I suggest to detete products from edit_order_mvs.php if the order is a type mvs.

 

Other extrage thing is the ot_subtotal_ex contribution. The base price is wrong calculated in both editors. Im working on it.

 

how exactly did you make these buttons and in which file? admin/orders.php?

// bof order list improved 
$test_string2 =   '';

if ( $has_pdf_invoice ) {
  // use the pdf invoice
  if ( CONFIG_ADMIN_PDF_INVOICE_PACKINGSLIP == 'PDF' or CONFIG_ADMIN_PDF_INVOICE_PACKINGSLIP == 'BOTH' ) {
     $test_string2 .=  '<a href="' . tep_href_link(FILENAME_PDF_INVOICE,     'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_invoice_pdf.gif', IMAGE_ORDERS_INVOICE) . '</a>  
  }

                        <a href="' . tep_href_link(FILENAME_PDF_PACKINGSLIP, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_packingslip_pdf.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a> ' ;
//CREAR NUMERO FACTURA
  if ($order->billing['invoice_number'] == 0) {
     $test_string2 .=  '<a href="' . tep_href_link(FILENAME_CREAR_NUM_FACTURA,  'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_creanumfact.gif', IMAGE_NUM_FACT) . '</a> ' ;   
  } 


  if ( CONFIG_ADMIN_PDF_INVOICE_PACKINGSLIP == 'HTML' or CONFIG_ADMIN_PDF_INVOICE_PACKINGSLIP == 'BOTH' ) {                      
     $test_string2 .=  '<a href="' . tep_href_link(FILENAME_ORDERS_INVOICE,     'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a>                                                         
                        <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a> ' ;          
  }
} else {

   $test_string2 .=  '<a href="' . tep_href_link(FILENAME_ORDERS_INVOICE,     'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a>                                                         
                      <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a> ' ;          
}                   

if ( $has_order_editor ) { 
  $test_string2 .=  '<a href="' . tep_href_link(FILENAME_ORDERS_EDIT,         'oID=' . $HTTP_GET_VARS['oID']) . '">'                 . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a>' ;          
}
if ( $has_order_editor ) { 
  $test_string2 .=  '<a href="' . tep_href_link(FILENAME_ORDERS_EDIT_MVS,         'oID=' . $HTTP_GET_VARS['oID']) . '">'                 . tep_image_button('button_edit_mvs.gif', IMAGE_EDIT_MVS) . '</a>' ;          
}
if ( $has_label_pdf ) { 
  $test_string2 .=  '<a href="' . tep_href_link(FILENAME_ORDERS_LABEL,       'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_label.gif', IMAGE_ORDERS_LABEL) . '</a>' ;          
}

if ( $google_map_directions ) { 
  $test_string2 .=  '<a href="' . tep_href_link(FILENAME_GOOGLE_MAP,         'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_google_directions.gif', IMAGE_GOOGLE_DIRECTIONS) . '</a>' ;          
}

$test_string2 .=  '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>';

?>
         <td class="pageHeading" align="center"><?php echo  $test_string2 ; ?></td>		   
<?php
       } // endif show buttons png

 

P.D: need help with the serials contribution. Anyone?

Edited by bhbilbao
Link to comment
Share on other sites

I use XAMPP to create a test server. It's not hard to install; just read the instructions, then follow the links under Security after you have it running.

 

The easiest way to set up a test install of osCommerce is to install a fresh copy under XAMPP. Once that is done, move the configure.php files to the local directory in both catalog and admin sides. You can then copy your modified site over the top of the installed files. Just remember to not copy the local directory to the live site when you update it.

 

Thanks a lot for your advice.. I will try this out...

 

Regards,

Knut

Link to comment
Share on other sites

This is new for me, and I see extrange things.

If you delete a item from edit_orders.php(order editor 5.0.9) the shiping_id remains in the order. You could see 2 shippings_id for only one product!, for that I suggest to detete products from edit_order_mvs.php if the order is a type mvs.

 

Other extrage thing is the ot_subtotal_ex contribution. The base price is wrong calculated in both editors. Im working on it.

 

Thanks again for your input... I will try your suggestions and see what I can make work...

 

Regards,

Knut

Link to comment
Share on other sites

if ( $has_order_editor ) { 
  $test_string2 .=  '<a href="' . tep_href_link(FILENAME_ORDERS_EDIT,         'oID=' . $HTTP_GET_VARS['oID']) . '">'                 . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a>' ;          
}
if ( $has_order_editor ) { 
  $test_string2 .=  '<a href="' . tep_href_link(FILENAME_ORDERS_EDIT_MVS,         'oID=' . $HTTP_GET_VARS['oID']) . '">'                 . tep_image_button('button_edit_mvs.gif', IMAGE_EDIT_MVS) . '</a>' ;          
}

 

Hi again bhbilbao,

 

You have added som parameters like $has_order_editor in the code... could you mention where and how this parameter is set? Thanks for your help again...

 

Regards,

Knut

Link to comment
Share on other sites

If you delete a item from edit_orders.php(order editor 5.0.9) the shiping_id remains in the order. You could see 2 shippings_id for only one product!, for that I suggest to detete products from edit_order_mvs.php if the order is a type mvs.

 

Sounds like a solution... but how do one check if an order is typ mvs?

 

Thanks...

Rgs,

Knut

Link to comment
Share on other sites

For Order Editor for MVS I copied edit_orders.php as edit_orders_mvs.php inside /admin.

I also created a new class named as order_mvs.php inside /admin/includes/classes

 

 

Ok, I have now tried to modify according to your tips.

The problem is that I still cannot see any orders in my orders list after installing MVS, so I cannot even see the changes in buttons etc that I have added in admin/orders.php

 

The reason for this is that none of the orders I have entered after installing MVS have generated any information in TABLE_ORDERS_STATUS (before installing MVS I had no orders in my database), thus the code jumps to the following in orders.php

 

    } else {
     $orders_query_raw = "select o.orders_id, o.customers_name, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, o.customer_service_id, s.orders_status_name, ot.text as order_total, cg.customers_group_name from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id) left join " . TABLE_CUSTOMERS . " c on c.customers_id = o.customers_id left join " . TABLE_CUSTOMERS_GROUPS . " cg using(customers_group_id), " . TABLE_ORDERS_STATUS . " s where o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and ot.class = 'ot_total' order by o.orders_id DESC";
   }
   $orders_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_query_raw, $orders_query_numrows);
   $orders_query = tep_db_query($orders_query_raw);
   while ($orders = tep_db_fetch_array($orders_query)) {
   if ((!isset($HTTP_GET_VARS['oID']) || (isset($HTTP_GET_VARS['oID']) && ($HTTP_GET_VARS['oID'] == $orders['orders_id']))) && !isset($oInfo)) {
       $oInfo = new objectInfo($orders);
     }

     if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {
       echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=edit') . '\'">' . "\n";
     } else {
       echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '\'">' . "\n";
     }
?>
       				<td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $orders['orders_id'] . '&action=edit') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a> ' . $orders['customers_name']; ?></td>
               <!-- next td added for SPPC -->						<td class="dataTableContent"><?php echo $orders['customers_group_name']; ?></td>
               <td class="dataTableContent" align="right"><?php echo strip_tags($orders['order_total']); ?></td>
               <td class="dataTableContent" align="center"><?php echo tep_datetime_short($orders['date_purchased']); ?></td>
               <td class="dataTableContent" align="right"><?php echo $orders['orders_status_name']; ?></td>
               <td class="dataTableContent" align="right"><?php if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
             </tr>
<?php
   }

 

As you can see, the above $orders_query_raw uses TABLE_ORDERS_STATUS, and because this table is empty ends up also returning nothing, which then results in code

while ($orders = tep_db_fetch_array($orders_query)) {

being skipped and no orders being listed.

 

Are there any changes that MVS installation does that result in TABLE_ORDERS_STATUS not being updated when inserting an order? Do anyone know where in the code during an order being registered the TABLE_ORDERS_STATUS is supposed to be set?

 

I don't understand the function of TABLE_ORDERS_STATUS either, because the TABLE_ORDERS in my sql database has a orders_status value, which is present for the orders I have put in... anyone know this?

 

Appreciate any input from you gurus :D

 

Regards,

Knut

Link to comment
Share on other sites

I don't understand the function of TABLE_ORDERS_STATUS either, because the TABLE_ORDERS in my sql database has a orders_status value, which is present for the orders I have put in... anyone know this?

 

 

Aaahhhhh.... >_< Now I get it... I went back to some older saved sql databases and studied the TABLE_ORDERS_STATUS and found that this lists the various possible statuses an order may go through... Somehow this table had been erased... I have now inserted the values again and can finally get some orders up. I will continue checking... pardon my ignorance. :P

 

Regards,

Knut

Link to comment
Share on other sites

Hi again bhbilbao,

 

sorry for bothering so much on this forum... Things are now progressing and I have the orders listed and new buttons showing and mostly working. Thanks for the good help.

 

As I see the unique diference in Order Editor V.S Order Editor MVS is that the last one one separates the shippings when adding products.

In Order Editor 5.0.9 all items you added are in only one list.

In other hand the edit_orders_add_product.php is also diferent, for the last one there is not code input field, and no price in the item lists.

 

This is another thing... I can see that doing the changes you describe will enable editing of both mvs orders and the old type of orders... But I still don't understand the implications of the difference between mvs and regular orders that you mention here. When an order is entered by a customer, will not all orders be MVS orders as long as the MVS function is turned on?

Neither can I see much of a difference in information in the forms when editing old order type or when editing mvs order type, so I don't really see the advantage of using MVS? Could anybody please explain this to me? I might be little think here :blush: but I could not find a good description of the functionality of MVS so I don't know...

 

 

Thanks again,

 

Rgs,

Knut

Link to comment
Share on other sites

will enable editing of both mvs orders and the old type of orders

No, when and order is placed, you can edit it as standard-order or mvs-order, not both.

Ref:

<?php
// MVS start
 if (tep_not_null($order->orders_shipping_id)) {
     require_once ('vendor_order_info.php');
   } else {
// MVS end
?>

 

I also use a modification in checkout process, I use the old checkout and the mvs checkout process. You can read of if in this thread weeks ago.

 

I still don't understand the implications of the difference between mvs and regular orders

Mvs orders are writing in the orders and orders_shipping tables.

The clasical orders of oscommerce are writing in the orders table only.

 

If you installed and working MVS, continue using it without problems, all of your orders will be MVS-orders.

 

see the advantage of using MVS

... advantage? .... should be ADVANTAGES!!

If you have vendors (shops), you can administrate the orders from your web shop to the diferent vendors.

or

if you have suppliers, also you can administrate the orders to the diferent suppliers.

 

Try to acomodate MVS acording your needs.

Edited by bhbilbao
Link to comment
Share on other sites

Hi,

 

I am trying to get Multi Vendor Shipping to work with Checkout Redux, but am having a few problems. I think everything now works, but I have one last problem...

 

When giving a vendor a handling fee, this fee is not being added onto checkout_confirmation and checkout_shipping with the checkout redux contribution.

 

Which bit of code in the Multi Vendor Shipping is the bit that deals with adding the shipping to the checkout process please?

 

I have to crack this because I need both contributions for my store!

 

Please, please, I hope someone can help!

 

Ali

Link to comment
Share on other sites

Need some help please.

 

I have installed Multi-Vendor Shipping and everything seems to work fine.

 

How do I know which shipper to use for an order?

 

The order only says combined shipping and I don't see any other place to find this information. The customer could have selected any type of FedEx or USPS shipping type for these 2 vendors since they both ship either way.

 

I don't even see this in the database anywhere.

 

The orders_shipping table is empty and in the orders table it just says combined shipping.

 

Reports does not show any orders for any vendors.

 

Thanks for any help.

Edited by tommieb
Link to comment
Share on other sites

The shipping selected is shown in the order for each customer. The data is stored in the orders_shipping table. If that table is empty, yo have an error in your installation of MVS, somewhere on the catalog side.

 

Regards

Jim

See my profile for a list of my addons and ways to get support.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...