Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Multi_Vendor_Shipping new thread


blucollarguy

Recommended Posts

To both James', if you have the time, can you put your mods for the attributes weights con together as an optional add on? We need to be careful about building in too much with MVS as a standard install, but having as many optional addons as possible cannot be bad. Thanks guys, and keep it up, Craig

Gladly Craig!

 

Instructions:

 

Step 1. Add the "add-weight-to-product-attributes v0.2" mod as per instructions.

 

Step 2. In catalog/includes/classes/shipping_cart.php (starting at line 328 in stock MVS) make the 3 following changes marked by:

"//START: add-weight-to-product-attributes v0.2 into MVS"

 

        // Add/subtract attributes prices (if any)
       if (isset($this->contents[$products_id]['attributes'])) {
         reset($this->contents[$products_id]['attributes']);
         foreach ($this->contents[$products_id]['attributes'] as $option => $value) {         
           $attribute_price_query = tep_db_query("select options_values_price,
                                                 //START: add-weight-to-product-attributes v0.2 into MVS
                                                         price_prefix,
                                           options_values_weight 
                                                       //END: add-weight-to-product-attributes v0.2 into MVS
                         from " . TABLE_PRODUCTS_ATTRIBUTES . " 
                                                  where products_id = '" . (int)$products_id . "' 
                                                    and options_id = '" . (int)$option . "' 
                                                    and options_values_id = '" . (int)$value . "'"
                                                );
           $attribute_price = tep_db_fetch_array($attribute_price_query);
           if ($attribute_price['price_prefix'] == '+') {
           $this->vendor_shipping[$vendors_id]['cost'] += $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
            //START: add-weight-to-product-attributes v0.2 into MVS
      $this->vendor_shipping[$vendors_id]['weight'] += ($quantity * $attribute_price['options_values_weight']);
            //END: add-weight-to-product-attributes v0.2 into MVS
  	 } else {
     $this->vendor_shipping[$vendors_id]['cost'] -= $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
            //START: add-weight-to-product-attributes v0.2 into MVS
      $this->vendor_shipping[$vendors_id]['weight'] -= ($quantity * $attribute_price['options_values_weight']);
            //END: add-weight-to-product-attributes v0.2 into MVS
      }
  	 }
       }
     }

     return $this->vendor_shipping;
   }
//MVS End

Enjoy!

James

Edited by jsm
Link to comment
Share on other sites

Gladly Craig!

 

Instructions:

 

Step 1. Add the "add-weight-to-product-attributes v0.2" mod as per instructions.

 

Step 2. In catalog/includes/classes/shipping_cart.php (starting at line 328 in stock MVS) make the 3 following changes marked by:

"//START: add-weight-to-product-attributes v0.2 into MVS"

 

        // Add/subtract attributes prices (if any)
       if (isset($this->contents[$products_id]['attributes'])) {
         reset($this->contents[$products_id]['attributes']);
         foreach ($this->contents[$products_id]['attributes'] as $option => $value) {         
           $attribute_price_query = tep_db_query("select options_values_price,
                                                 //START: add-weight-to-product-attributes v0.2 into MVS
                                                         price_prefix,
                                           options_values_weight 
                                                       //END: add-weight-to-product-attributes v0.2 into MVS
                         from " . TABLE_PRODUCTS_ATTRIBUTES . " 
                                                  where products_id = '" . (int)$products_id . "' 
                                                    and options_id = '" . (int)$option . "' 
                                                    and options_values_id = '" . (int)$value . "'"
                                                );
           $attribute_price = tep_db_fetch_array($attribute_price_query);
           if ($attribute_price['price_prefix'] == '+') {
           $this->vendor_shipping[$vendors_id]['cost'] += $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
            //START: add-weight-to-product-attributes v0.2 into MVS
      $this->vendor_shipping[$vendors_id]['weight'] += ($quantity * $attribute_price['options_values_weight']);
            //END: add-weight-to-product-attributes v0.2 into MVS
  	 } else {
     $this->vendor_shipping[$vendors_id]['cost'] -= $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);
            //START: add-weight-to-product-attributes v0.2 into MVS
      $this->vendor_shipping[$vendors_id]['weight'] -= ($quantity * $attribute_price['options_values_weight']);
            //END: add-weight-to-product-attributes v0.2 into MVS
      }
  	 }
       }
     }

     return $this->vendor_shipping;
   }
//MVS End

Enjoy!

James

 

Thanks James, I'll pack it up and include it as an optional addon for MVS with the next package. I also got your FedEx file, thanks. My issues are not with the module iteself though, I have missed something else or have srewed up something with my many experimentations. Appreciate the help, back to it, Craig :)

Happy Coding!

Craig Garrison Sr

Anything worth having, is worth working for.

Multi Vendor Shipping V1.1 Demo Catalog

3 Vendors, each category, "buy" a product from each category to see how MVS works during checkout.

Multi Vendor Shipping V1.1 Demo Admin

login: [email protected]

pass: mvs_demo

MVS Thread:

Multi-Vendor Shipping

My contribs:

Download Multi Vendor Shipping V1.1

Vendor Email

Vendor Info in easypopulate

EZ Price Updater

And more to come!

Link to comment
Share on other sites

I have been looking into the tax issue and once again have been pulled away so no fix yet but this is what I know:

 

a:) in each of the MVS shipping modules the "tax_class" is not being collected properly, this will be an easy fix

 

b:) in catalog/includes/modules/order_total/ot_shipping.php - the taxes are calculated here and "$GLOBALS['shipping']['id']" is used to determine wether or not to do it. This global variable is not being populated through MVS, so this is the major concern. When I can get back to this I will work on it, if anyone has the time and inclination, go for it.

 

I also found my wierd issue with getting quotes, I had not populated all the fields in one of my test Vendors, Max box weight, Tare weight, zones and Percentage-based Tare Weight, this was breaking the shipping data calculations, and it ended up using 0 as the quantity to be shipped. I will look into this to see if we need some defaults or what. So I'll get back to this today hopefully and see what I can do.

Craig <_<

Happy Coding!

Craig Garrison Sr

Anything worth having, is worth working for.

Multi Vendor Shipping V1.1 Demo Catalog

3 Vendors, each category, "buy" a product from each category to see how MVS works during checkout.

Multi Vendor Shipping V1.1 Demo Admin

login: [email protected]

pass: mvs_demo

MVS Thread:

Multi-Vendor Shipping

My contribs:

Download Multi Vendor Shipping V1.1

Vendor Email

Vendor Info in easypopulate

EZ Price Updater

And more to come!

Link to comment
Share on other sites

I also found my wierd issue with getting quotes, I had not populated all the fields in one of my test Vendors, Max box weight, Tare weight, zones and Percentage-based Tare Weight, this was breaking the shipping data calculations, and it ended up using 0 as the quantity to be shipped. I will look into this to see if we need some defaults or what. So I'll get back to this today hopefully and see what I can do.
Craig,

 

I had to change the structure of some of the fields in the vendors table. The max_box_weight and tare_weight fields needed to alllow for larger weights so I changed mine to "dec 15,4". Meant to post this last week when I found it.

 

Thanks,

Rick Knight

Link to comment
Share on other sites

Larger weights? Those fields were specced to allow up to 10,000 pounds/kilos. What in the world are you shipping?
Jim,

 

The defaults (4,3) allowed a max weight of 9.999 Lbs. 15,4 is really big, but is in line with other OSC dec fields.

 

Thanks,

Rick Knight

Link to comment
Share on other sites

Bother. I've been reading that wrong for how long now? Shoulda read the manual.

 

It certainly doesn't hurt to allow a bigger number. osCommerce does seem to use the 15,4 spec a lot, so we'll probably stick with that.

 

Thanks for straightening me out.

 

Regards

Jim

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

Link to comment
Share on other sites

Bother. I've been reading that wrong for how long now? Shoulda read the manual.

 

It certainly doesn't hurt to allow a bigger number. osCommerce does seem to use the 15,4 spec a lot, so we'll probably stick with that.

 

Thanks for straightening me out.

 

Regards

Jim

I second this, I will include an update in the next release. DUH! :-"

 

Craig :)

Happy Coding!

Craig Garrison Sr

Anything worth having, is worth working for.

Multi Vendor Shipping V1.1 Demo Catalog

3 Vendors, each category, "buy" a product from each category to see how MVS works during checkout.

Multi Vendor Shipping V1.1 Demo Admin

login: [email protected]

pass: mvs_demo

MVS Thread:

Multi-Vendor Shipping

My contribs:

Download Multi Vendor Shipping V1.1

Vendor Email

Vendor Info in easypopulate

EZ Price Updater

And more to come!

Link to comment
Share on other sites

Jim, Craig,

 

Glad to be of help.

 

I've been trying to figure out why the Fedex module seems to be so unpredictable. Finally decided, the Fedex1 module s just too smart. I have one vendor on my live store configured with Fedex1 and it's working fine except for the tax issue. I'm getting all rates and they look accurate. I've duplicted the store on a test www server. Same vendors config and just about the same products, but no matter what I did, the Fedex1 module would only return a single rate, Home Delivery. I called Fedex and they said the rate system checks for a residential delivery address and if it decides it is residential, then only the Home Delivery rate is shown. So I made sure I had a business delivery address, my office in San Francisco, and tried the module again. Same result, Home Delivery only. Went back through everything and spotted a small difference between my two stores, the vendors suite number was wrong on my test store. I corrected that, not expecting any difference, but that solved the problem. So, I guess when Fedex can't resolve an address to a business, it makes it Home Delivery only.

 

Thanks,

Rick Knight

Link to comment
Share on other sites

Hi all and thanks for a great contribution!

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

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

 

I have some other contributions as well.

Below i will post my whole code of checkout_process.php

 

 

 

But I think the mistake can be in that Part

 

 

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

             // require(DIR_WS_INCLUDES . 'vendor_order_info.php');

 }




// lets start with the email confirmation

 

Below i will post my whole code of checkout_process.php

 

 

<?php
/*
 $Id: checkout_process.php,v 1.128 2003/05/28 18:00:29 hpdl Exp $
 Modified for MVS 2005/03/12 jck

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

 include('includes/application_top.php');

// if the customer is not logged on, redirect them to the login page
 if (!tep_session_is_registered('customer_id')) {
   $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
   tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
 }

 if (!tep_session_is_registered('sendto')) {
   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
 }

 if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) {
   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

// avoid hack attempts during the checkout procedure by checking the internal cartID
 if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
   if ($cart->cartID != $cartID) {
     tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
   }
 }

 include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
 require(DIR_WS_CLASSES . 'payment.php');
 if ($credit_covers) $payment=''; //ICW added for CREDIT CLASS
 $payment_modules = new payment($payment);

// load the selected shipping module
//MVS
 if (SELECT_VENDOR_SHIPPING == 'true') {
   include(DIR_WS_CLASSES . 'vendor_shipping.php');
 } else {
   include(DIR_WS_CLASSES . 'shipping.php');
 }
 $shipping_modules = new shipping($shipping);
//MVS End

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

// load the before_process function from the payment modules
 $payment_modules->before_process();

 require(DIR_WS_CLASSES . 'order_total.php');
 $order_total_modules = new order_total;

 $order_totals = $order_total_modules->process();

 $sql_data_array = array('customers_id' => $customer_id,
                         'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                         'customers_company' => $order->customer['company'],
                         'customers_street_address' => $order->customer['street_address'],
                         'customers_suburb' => $order->customer['suburb'],
                         'customers_city' => $order->customer['city'],
                         'customers_postcode' => $order->customer['postcode'],
                         'customers_state' => $order->customer['state'],
                         'customers_country' => $order->customer['country']['title'],
                         'customers_telephone' => $order->customer['telephone'],
                         'customers_email_address' => $order->customer['email_address'],
                         'customers_address_format_id' => $order->customer['format_id'],
                         'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
                         'delivery_company' => $order->delivery['company'],
                         'delivery_street_address' => $order->delivery['street_address'],
                         'delivery_suburb' => $order->delivery['suburb'],
                         'delivery_city' => $order->delivery['city'],
                         'delivery_postcode' => $order->delivery['postcode'],
                         'delivery_state' => $order->delivery['state'],
                         'delivery_country' => $order->delivery['country']['title'],
                         'delivery_address_format_id' => $order->delivery['format_id'],
                         'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
                         'billing_company' => $order->billing['company'],
                         'billing_street_address' => $order->billing['street_address'],
                         'billing_suburb' => $order->billing['suburb'],
                         'billing_city' => $order->billing['city'],
                         'billing_postcode' => $order->billing['postcode'],
                         'billing_state' => $order->billing['state'],
                         'billing_country' => $order->billing['country']['title'],
                         'billing_address_format_id' => $order->billing['format_id'],
                         'payment_method' => $order->info['payment_method'],
                         'cc_type' => $order->info['cc_type'],
                         'cc_owner' => $order->info['cc_owner'],
                         'cc_number' => $order->info['cc_number'],
                         'cc_expires' => $order->info['cc_expires'],
                         'date_purchased' => 'now()',
                         'orders_status' => $order->info['order_status'],
                         'currency' => $order->info['currency'],
                         'currency_value' => $order->info['currency_value']);
 tep_db_perform(TABLE_ORDERS, $sql_data_array);
 $insert_id = tep_db_insert_id();
 for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
   $sql_data_array = array('orders_id' => $insert_id,
                           'title' => $order_totals[$i]['title'],
                           'text' => $order_totals[$i]['text'],
                           'value' => $order_totals[$i]['value'],
                           'class' => $order_totals[$i]['code'],
                           'sort_order' => $order_totals[$i]['sort_order']);
   tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
 }

 $customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';
 $sql_data_array = array('orders_id' => $insert_id,
                         'orders_status_id' => $order->info['order_status'],
                         'date_added' => 'now()',
                         'customer_notified' => $customer_notification,
                         'comments' => $order->info['comments']);
 tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

//MVS - added insert for new orders_shipping table
$shipping_array = $shipping['vendor'];
 foreach ($shipping_array as $vendors_id => $shipping_data) {
   $vendors_query = tep_db_query("select vendors_name
                                  from " . TABLE_VENDORS . "
                                  where vendors_id = '" . (int)$vendors_id . "'"
                                );
   $vendors_name = 'Unknown';
   if ($vendors = tep_db_fetch_array($vendors_query)) {
     $vendors_name = $vendors['vendors_name'];
   }
 $shipping_method_array = explode ('_', $shipping_data['id']);
   $sql_data_array = array('orders_id' => $insert_id,
                           'vendors_id' => $vendors_id,
                           'shipping_module' => $shipping_method_array[0],
                           'shipping_method' => $shipping_data['title'],
                           'shipping_cost' => $shipping_data['cost'],
                           'vendors_name' => $vendors_name
                          );
   tep_db_perform(TABLE_ORDERS_SHIPPING, $sql_data_array);
 }
//MVS End

// initialized for the email confirmation
 $products_ordered = '';
 $subtotal = 0;
 $total_tax = 0;

 for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
// Stock Update - Joao Correia
   if (STOCK_LIMITED == 'true') {
//++++ QT Pro: Begin Changed code
       $products_attributes = $order->products[$i]['attributes'];
//++++ QT Pro: End Changed Code
     if (DOWNLOAD_ENABLED == 'true') {
       $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
                           FROM " . TABLE_PRODUCTS . " p
                           LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                            ON p.products_id=pa.products_id
                           LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
                            ON pa.products_attributes_id=pad.products_attributes_id
                           WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
// Will work with only one option for downloadable products
// otherwise, we have to build the query dynamically with a loop
//++++ QT Pro: Begin Changed code
//      $products_attributes = $order->products[$i]['attributes'];
//++++ QT Pro: End Changed Code
       if (is_array($products_attributes)) {
         $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
       }
       $stock_query = tep_db_query($stock_query_raw);
//++++ QT Pro: Begin Changed code
           $actual_stock_bought = $order->products[$i]['qty'];
       } else {
           if (is_array($products_attributes)) {
               $all_nonstocked = true;
               $products_stock_attributes_array = array();
               foreach ($products_attributes as $attribute) {
                   if ($attribute['track_stock'] == 1) {
                     $products_stock_attributes_array[] = $attribute['option_id'] . "-" . $attribute['value_id'];
                     $all_nonstocked = false;
                   }
               } 
               if ($all_nonstocked) {
                   $actual_stock_bought = $order->products[$i]['qty'];
               }  else {
                 asort($products_stock_attributes_array, SORT_NUMERIC);
                 $products_stock_attributes = implode(",", $products_stock_attributes_array);
                 $attributes_stock_query = tep_db_query("select products_stock_quantity from " . TABLE_PRODUCTS_STOCK . " where products_stock_attributes = '$products_stock_attributes' AND products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
                 if (tep_db_num_rows($attributes_stock_query) > 0) {
                     $attributes_stock_values = tep_db_fetch_array($attributes_stock_query);
                     $attributes_stock_left = $attributes_stock_values['products_stock_quantity'] - $order->products[$i]['qty'];
                     tep_db_query("update " . TABLE_PRODUCTS_STOCK . " set products_stock_quantity = '" . $attributes_stock_left . "' where products_stock_attributes = '$products_stock_attributes' AND products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
                     $actual_stock_bought = ($attributes_stock_left < 1) ? $attributes_stock_values['products_stock_quantity'] : $order->products[$i]['qty'];
     } else {
                     $attributes_stock_left = 0 - $order->products[$i]['qty'];
                     tep_db_query("insert into " . TABLE_PRODUCTS_STOCK . " (products_id, products_stock_attributes, products_stock_quantity) values ('" . tep_get_prid($order->products[$i]['id']) . "', '" . $products_stock_attributes . "', '" . $attributes_stock_left . "')");
                     $actual_stock_bought = 0;
                 }
               }
           } else {
               $actual_stock_bought = $order->products[$i]['qty'];
           } 
//++++ QT Pro: End Changed Code
       $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
     }
     if (tep_db_num_rows($stock_query) > 0) {
       $stock_values = tep_db_fetch_array($stock_query);
// do not decrement quantities if products_attributes_filename exists
       if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
//++++ QT Pro: Begin Changed code
               $stock_left = $stock_values['products_quantity'] - $actual_stock_bought;
               tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = products_quantity - '" . $actual_stock_bought . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
//++++ QT Pro: End Changed Code
       if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
         tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
       }
     }
   }
//++++ QT Pro: Begin Changed code
   }
//++++ QT Pro: End Changed Code
// Update products_ordered (for bestsellers list)
   tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

//MVS - added 'vendors_id' => ...
   if (!isset($products_stock_attributes)) $products_stock_attributes=null;
   $sql_data_array = array('orders_id' => $insert_id,
                           'products_id' => tep_get_prid($order->products[$i]['id']),
                           'products_model' => $order->products[$i]['model'],
                           'products_name' => $order->products[$i]['name'],
                           'products_price' => $order->products[$i]['price'],
                           'final_price' => $order->products[$i]['final_price'],
                           'products_tax' => $order->products[$i]['tax'],
                           'products_quantity' => $order->products[$i]['qty'],
                           'vendors_id' => $order->products[$i]['vendors_id'],
                           'products_stock_attributes' => $products_stock_attributes);

                      
   tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
   $order_products_id = tep_db_insert_id();
   $order_total_modules->update_credit_account($i);//ICW ADDED FOR CREDIT CLASS SYSTEM

//------insert customer choosen option to order--------
   $attributes_exist = '0';
   $products_ordered_attributes = '';
   if (isset($order->products[$i]['attributes'])) {
     $attributes_exist = '1';
     for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
       if (DOWNLOAD_ENABLED == 'true') {
         $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
                              from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                              left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
                               on pa.products_attributes_id=pad.products_attributes_id
                              where pa.products_id = '" . $order->products[$i]['id'] . "'
                               and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
                               and pa.options_id = popt.products_options_id
                               and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
                               and pa.options_values_id = poval.products_options_values_id
                               and popt.language_id = '" . $languages_id . "'
                               and poval.language_id = '" . $languages_id . "'";
         $attributes = tep_db_query($attributes_query);
       } else {
         $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
       }
       $attributes_values = tep_db_fetch_array($attributes);

       $sql_data_array = array('orders_id' => $insert_id,
                               'orders_products_id' => $order_products_id,
                               'products_options' => $attributes_values['products_options_name'],
                               'products_options_values' => $attributes_values['products_options_values_name'],
                               'options_values_price' => $attributes_values['options_values_price'],
                               'price_prefix' => $attributes_values['price_prefix']);
       tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

       if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
         $sql_data_array = array('orders_id' => $insert_id,
                                 'orders_products_id' => $order_products_id,
                                 'orders_products_filename' => $attributes_values['products_attributes_filename'],
                                 'download_maxdays' => $attributes_values['products_attributes_maxdays'],
                                 'download_count' => $attributes_values['products_attributes_maxcount']);
         tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
       }
       $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
     }
   }

   



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

             // require(DIR_WS_INCLUDES . 'vendor_order_info.php');

 }




// lets start with the email confirmation
 $email_order = STORE_NAME . "\n" .
                EMAIL_SEPARATOR . "\n" .
                EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .
                EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" .
                EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
 if ($order->info['comments']) {
   $email_order .= tep_db_output($order->info['comments']) . "\n\n";
 }
 $email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
                 EMAIL_SEPARATOR . "\n" .
                 $products_ordered .
                 EMAIL_SEPARATOR . "\n";

 for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
   $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
 }

 if ($order->content_type != 'virtual') {
   $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
                   EMAIL_SEPARATOR . "\n" .
                   tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
 }

 $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
                 EMAIL_SEPARATOR . "\n" .
                 tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
 if (is_object($$payment)) {
   $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
                   EMAIL_SEPARATOR . "\n";
   $payment_class = $$payment;
   $email_order .= $payment_class->title . "\n\n";
   if ($payment_class->email_footer) {
     $email_order .= $payment_class->email_footer . "\n\n";
   }
 }
 tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

// send emails to other people
 if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
   tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
 }

// load the after_process function from the payment modules
 $payment_modules->after_process();

 $cart->reset(true);


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

// unregister session variables used during checkout
 tep_session_unregister('sendto');
 tep_session_unregister('billto');
 tep_session_unregister('shipping');
 tep_session_unregister('payment');
 tep_session_unregister('comments');
if(tep_session_is_registered('credit_covers')) tep_session_unregister('credit_covers');
 $order_total_modules->clear_posts();//ICW ADDED FOR CREDIT CLASS SYSTEM

 tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));

 require(DIR_WS_INCLUDES . 'application_bottom.php');



?>

 

 

Thanks and best regards

~~Nahash

 

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

 

Code in development is located here

Link to comment
Share on other sites

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

 

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

 

Regards

Jim

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

Link to comment
Share on other sites

Another oops: If you have added this change to any shipping modules

      global $shipping_num_boxes, $cart, $order;

    $shipping_weight = $cart->vendor_shipping[$vendors_id]['weight'];

take that out and change it back to

      global $shipping_weight, $shipping_num_boxes, $cart, $order;

That is, get rid of the second line and add the $shipping_weight back into the globals. This problem was already solved in the vendor_shipping class; doing it again will just mess up the count. Don't know what I was thinking when I suggested that.

 

Regards

Jim

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

Link to comment
Share on other sites

I posted this in another thread about USPS too, but thought I'd stick it here as well as it may be something with the MVS version of it.. I dunno.

 

If it's from US-CA it shows only one rate, but some erroneous amount.. For example, a 30lb Giant Lava Lamp according to this module from US-CA has only one rate available (with no name) and is $106.00(CAD). If I go to the USPS Web site amd calculate postage for 30lbs to Canada, I get Airmail Parcel at $44.25(USD) and Economy (Surface) Parcel at $28.25(USD). Where the hell's it getting $106.00(CAD) from? Even GEGDS on their Web site's only $103.

 

If I try US-US with the module, I get the error "Could not get Service Commitment information, either a Zip is less than 5 characters or are not numeric, Message Codes: -11005". I checked my address too and there are 5 digits in the zipcode.

 

If I try US-Intl, it seems to give rates close to what their Web site says and actually returns the names of the shipping methods. I tried US-Autralia as a test, the module returned Airmail Parcel at $107.40(USD) and Economy (Surface) Parcel at $46.07(USD). The USPS Web site said Airmail Parcel at $130.10(USD) and Economy (Surface) Parcel at $54.10(USD).

 

Anyone have any ideas on this? I'm using the USPS module with MVS by the way. I still have the module enabled in my store as it is returning rates if ya wanna have a look, just over charging for US-CA and not working at all for US-US, US-Intl isn't enabled (only when I want to test it).

 

Almost forgot too, when I go into the manage shipping section for the US supplier I'm testing this on, I get the error "Warning: constant(): Couldn't find constant MODULE_SHIPPING_USPS_SORT_ORDER_2 in /.../store/includes/modules/vendors_shipping/usps.php on line 82", but it's in the table as I checked through phpMyAdmin and it's stored when I lok at the settings in the Admin Panel.

 

Thanks,

James

Edited by Majiks
Link to comment
Share on other sites

Forgot to mention too that I added a Shipping Zone drop-down selection to the FedEx admin area and had to change the code for the zones function slightly, also adding something to the enabled function in the shipping modules I'm using to get shipping zones to work properly. FedEx is now working just how I want it, except for the weight/quantity issue.. Any update on that? I'm just trying to get the USPS module to work right, then I'll be seeing what I can do with Canada Post as that will be my other main carrier. Then perhaps UPS if I feel i need another common carrier besides FedEx, probably not though. I'm opening brokerage accoutns with FedEx so will probably just use them and only offer ground for local international shipments (US-CA and CA-US) on orders over a certain amount since I have to shoulder the brokerage fees for ground shipments. I'll send you my most recent FedEx file for ya to look at if ya like, the changes made to it for the shipping zones are exactly the same for all of the modules.

 

~James

Edited by Majiks
Link to comment
Share on other sites

Kymation: I thank you for your answer.

 

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

 

I did not change the

vendor_order_data.php

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

 

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

 

 

 

<!-- MVS
    $Id: vendor_order_data.php
By Craig Garrison Sr. ([email protected]) for Multi-Vendor Shipping
     osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2005 osCommerce

 Released under the GNU General Public License
                                -->
<?php
$index2 = 0;
             //let's get the Vendors
             $vendor_data_query = tep_db_query("select orders_shipping_id, orders_id, vendors_id, vendors_name, shipping_module, shipping_method, shipping_cost from " . TABLE_ORDERS_SHIPPING . " where orders_id = '" . (int)$order_id . "'");
             while ($vendor_order = tep_db_fetch_array($vendor_data_query)) {

   $this->products[$index2] = array('Vid' => $vendor_order['vendors_id'],
                                       'Vname' => $vendor_order['vendors_name'],
                                           'Vmodule' => $vendor_order['shipping_module'],
                                           'Vmethod' => $vendor_order['shipping_method'],
                                           'Vcost' => $vendor_order['shipping_cost'],
                                           'Vnoname' => 'Shipper',
                                         'spacer' => '-');

                                  $index = 0;
   $orders_products_query = tep_db_query("select orders_products_id, products_name, products_model, products_price, products_tax, products_quantity, final_price, vendors_id from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "' and vendors_id = '" . (int)$vendor_order['vendors_id'] . "'");

     while ($orders_products = tep_db_fetch_array($orders_products_query)) {
     $this->products[$index2]['orders_products'][$index] = array('qty' => $orders_products['products_quantity'],
                'name' => $orders_products['products_name'],
                                     'tax' => $orders_products['products_tax'],
                                     'model' => $orders_products['products_model'],
                                     'price' => $orders_products['products_price'],
                                     'vendor_name' => $orders_products['vendors_name'],
                                     'vendor_ship' => $orders_products['shipping_module'],
                                     'shipping_method' => $orders_products['shipping_method'],
                                     'shipping_cost' => $orders_products['shipping_cost'],
                                     'final_price' => $orders_products['final_price'],
                                     'spacer' => '-');

       $subindex = 0;
     $attributes_query = tep_db_query("select products_options, products_options_values, options_values_price, price_prefix from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . (int)$order_id . "' and orders_products_id = '" . (int)$orders_products['orders_products_id'] . "'");
       if (tep_db_num_rows($attributes_query)) {
         while ($attributes = tep_db_fetch_array($attributes_query)) {
         $this->products[$index2]['orders_products'][$index]['attributes'][$subindex] = array('option' => $attributes['products_options'],
                                                                    'value' => $attributes['products_options_values'],
                                                                    'prefix' => $attributes['price_prefix'],
                                                                    'price' => $attributes['options_values_price']);

           $subindex++;
         }
       }
       $index++;
     }
    $index2++;
   }
   // let's build the email confirmation without html
   $package_num = sizeof($this->products);
$box_num = $l + 1;
$products_ordered .= 'There will be at least ' . $package_num . ' packages shipped.' . "\n\t";
for ($l=0, $m=sizeof($this->products); $l<$m; $l++) {
$products_ordered .=
 "\n" . 'Shipment Number ' . $box_num++ . ' '  .
      $this->products[$l]['spacer'] . ' ' .
      $this->products[$l]['Vmodule'] . ' ' .
      $this->products[$l]['spacer'] . ' ' .
      $this->products[$l]['Vmethod'] . ' ' .
      $this->products[$l]['spacer'] . ' ' .
      $this->products[$l]['Vcost'] . "\n\t";
          for ($i=0, $n=sizeof($this->products[$l]['orders_products']); $i<$n; $i++) {
     $products_ordered .= "\n\t" .
          $this->products[$l]['orders_products'][$i]['qty'] . '  x  ' . ' ' .
          $this->products[$l]['orders_products'][$i]['name'] . ' ' .
          $this->products[$l]['spacer'] . ' ' .
          $this->products[$l]['orders_products'][$i]['model'] . "\n\t";

     if (isset($this->products[$l]['orders_products'][$i]['attributes']) && (sizeof($this->products[$l]['orders_products'][$i]['attributes']) > 0)) {

       for ($j = 0, $k = sizeof($this->products[$l]['orders_products'][$i]['attributes']); $j < $k; $j++) {

	 $products_ordered .= "\n\t" . 'Options Selected - ' . $this->products[$l]['orders_products'][$i]['attributes'][$j]['option'] . ': ' . $this->products[$l]['orders_products'][$i]['attributes'][$j]['value'];

         if ($this->products[$l]['orders_products'][$i]['attributes'][$j]['price'] != '0')      $products_ordered .= ' (' . $this->products[$l]['orders_products'][$i]['attributes'][$j]['prefix'] . $currencies->format($this->products[$l]['orders_products'][$i]['attributes'][$j]['price'] * $this->products[$l]['orders_products'][$i]['qty'], true, $this->info['currency'], $this->info['currency_value']) . ')' . "\n\t";
       }
     }
     $products_ordered .= 'Tax ' . tep_display_tax_value($this->products[$l]['orders_products'][$i]['tax']) . '%  ' . "\n\t"  .
          'Price Per Item - '  . $currencies->format($this->products[$l]['orders_products'][$i]['final_price'], true, $this->info['currency'], $this->info['currency_value']) . "\n\t" .
          'Total Without Tax - '  . $currencies->format($this->products[$l]['orders_products'][$i]['final_price'] * $this->products[$l]['orders_products'][$i]['qty'], true, $this->info['currency'], $this->info['currency_value']) . "\n\t" .
          'Total Including Tax - '  . $currencies->format(tep_add_tax($this->products[$l]['orders_products'][$i]['final_price'], $this->products[$l]['orders_products'][$i]['tax']) * $this->products[$l]['orders_products'][$i]['qty'], true, $this->info['currency'], $this->info['currency_value']) . "\n\t";

   }
   }
   ?>

 

 

 

I thank you for your help.

Best regards

~~Nahash

 

 

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

 

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

 

Regards

Jim

Link to comment
Share on other sites

I just noticed as well that the tare weight I have set for each vendor isn't being added to the weight when shipping is calculated. I never noticed that before, but just did. I put two items in my basket totaling 1.16lbs and the shipping estimate was for 1.16lbs, nothing adding for packaging. None of the shipping modules seem to be taking tare weight into account.

 

~James

Link to comment
Share on other sites

Kymation: I thank you for your answer.

 

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

 

I did not change the

vendor_order_data.php

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

 

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

...........

I thank you for your help.

Best regards

~~Nahash

 

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

Craig :)

Edited by blucollarguy

Happy Coding!

Craig Garrison Sr

Anything worth having, is worth working for.

Multi Vendor Shipping V1.1 Demo Catalog

3 Vendors, each category, "buy" a product from each category to see how MVS works during checkout.

Multi Vendor Shipping V1.1 Demo Admin

login: [email protected]

pass: mvs_demo

MVS Thread:

Multi-Vendor Shipping

My contribs:

Download Multi Vendor Shipping V1.1

Vendor Email

Vendor Info in easypopulate

EZ Price Updater

And more to come!

Link to comment
Share on other sites

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

Thanks

~~Martin

 

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

Craig :)

Link to comment
Share on other sites

Could it be ...

That in the file checkout_process.php ...

 

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

             // require(DIR_WS_INCLUDES . 'vendor_order_info.php');

 }

 

Has to be changed to ...

 

 

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

             // require(DIR_WS_INCLUDES . 'vendor_order_info.php');

 }

 

I mean the

SELECT_VENDOR_EMAIL_OPTION

to

SELECT_vendors_send_email

 

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

vendors_send_email in the database ?

 

(Hopefully that was the mistake)

~~Nahash

 

 

 

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

Craig :)

Link to comment
Share on other sites

Could it be ...

That in the file checkout_process.php ...

 

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

             // require(DIR_WS_INCLUDES . 'vendor_order_info.php');

 }

 

Has to be changed to ...

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

             // require(DIR_WS_INCLUDES . 'vendor_order_info.php');

 }

 

I mean the

SELECT_VENDOR_EMAIL_OPTION

to

SELECT_vendors_send_email

 

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

vendors_send_email in the database ?

 

(Hopefully that was the mistake)

~~Nahash

Possibility:

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

it is:

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

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

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

Happy Coding!

Craig Garrison Sr

Anything worth having, is worth working for.

Multi Vendor Shipping V1.1 Demo Catalog

3 Vendors, each category, "buy" a product from each category to see how MVS works during checkout.

Multi Vendor Shipping V1.1 Demo Admin

login: [email protected]

pass: mvs_demo

MVS Thread:

Multi-Vendor Shipping

My contribs:

Download Multi Vendor Shipping V1.1

Vendor Email

Vendor Info in easypopulate

EZ Price Updater

And more to come!

Link to comment
Share on other sites

SELECT_VENDOR_EMAIL_OPTION is correct. That is a constant. The constant and its value are stored in the database, and can be set in Admin > Configuration > Shipping/Packaging > Enable Vendor Shipping. The value needs to be set to true.

 

Regards

Jim

 

Edit - Craig beat me to it. :-"

Edited by kymation

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

Link to comment
Share on other sites

For all of you testing this mod, there is an error in most copies of includes/classes/vendor_shipping.php. Please check the following code (line 65):

// Get a quote for one or many shipping methods, for a specific vendor
   function quote($method = '', $module = '', $vendors_id='1') {
     global $shipping_quoted, $cart, $shipping_num_boxes, $shipping_weight;

In the last line of that, check to see that $cart and $shipping_weight are included. Lack of these variables in the global declaration will cause weird errors in some of the shipping modules, particularly involving incorrect weights (and therefore incorrect quotes) on large shipments. I found this while debugging a UPS module, but it will affect every module that uses weight as a basis for quotes.

 

Regards

Jim

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

Link to comment
Share on other sites

For all of you testing this mod, there is an error in most copies of includes/classes/vendor_shipping.php. Please check the following code (line 65):

// Get a quote for one or many shipping methods, for a specific vendor
? ?function quote($method = '', $module = '', $vendors_id='1') {
? ? ?global $shipping_quoted, $cart, $shipping_num_boxes, $shipping_weight;

In the last line of that, check to see that $cart and $shipping_weight are included. Lack of these variables in the global declaration will cause weird errors in some of the shipping modules, particularly involving incorrect weights (and therefore incorrect quotes) on large shipments. I found this while debugging a UPS module, but it will affect every module that uses weight as a basis for quotes.

 

Regards

Jim

I made the change above and the percentage tare weight is now being calculated in the shipping weight (tare was previously being ignored). However, the cost of one set of items is still being affected by another depending on the quantity/weight of the other set. For example, if you were to go to my store and add any of the fishing reels then check the shipping cost for just it.. Then add say an e-scooter and again check the cost for the reel, you'd notice it's increased.. If you were to then change the quantity of the e-scooter in the cart to say 10, you'd notice another increase in the shipping cost for the reel even though it shouldn't have anything to do with the scooter as they ship from different locations.

 

Also, I'd changed max_box_weight to "decimal(6,3)" to allow for weights over 9.999.

ALTER TABLE `vendors` CHANGE `max_box_weight` `max_box_weight` DECIMAL( 6, 3 ) UNSIGNED NOT NULL DEFAULT '0.000'

Anyone have any idea what's up with my USPS quotes beign returned and the error showing for US-US shipments?

Edited by Majiks
Link to comment
Share on other sites

I made the change above and the percentage tare weight is now being calculated in the shipping weight (tare was previously being ignored).  However, the cost of one set of items is still being affected by another depending on the quantity/weight of the other set.  For example, if you were to go to my store and add any of the fishing reels then check the shipping cost for just it..  Then add say an e-scooter and again check the cost for the reel, you'd notice it's increased..  If you were to then change the quantity of the e-scooter in the cart to say 10, you'd notice another increase in the shipping cost for the reel even though it shouldn't have anything to do with the scooter as they ship from different locations.

 

Also, I'd changed max_box_weight to "decimal(6,3)" to allow for weights over 9.999.

ALTER TABLE `vendors` CHANGE `max_box_weight` `max_box_weight` DECIMAL( 6, 3 ) UNSIGNED NOT NULL DEFAULT '0.000'

Anyone have any idea what's up with my USPS quotes beign returned and the error showing for US-US shipments?

The decimal values will be updated with the next release(we will be bumping it up "15" to be in line with most other standard osC db entries), thanks for pointing it out, we had recently discovered this error as well, I think Rick had found it.

The calcualtions error, what calculation is messing up, the weight or the product price?

If it is the weight, look for

$shipping_weight = $cart->vendor_shipping[$vendors_id]['weight'];

in ANY of the shipping_modules. comment it out wherever you find it and see if that helps. I just finished going through many different purchase variations and I think I have all these bugs squashed for the next release. If not, let me know so we can hunt down yet another bug I didn't know of. BTW I have a fix for the tax issue but need clean things up a bit before I put it out. Might be able to get it done today, my area of the world is being rained on, so I may stay at it for a while.

Craig :)

Happy Coding!

Craig Garrison Sr

Anything worth having, is worth working for.

Multi Vendor Shipping V1.1 Demo Catalog

3 Vendors, each category, "buy" a product from each category to see how MVS works during checkout.

Multi Vendor Shipping V1.1 Demo Admin

login: [email protected]

pass: mvs_demo

MVS Thread:

Multi-Vendor Shipping

My contribs:

Download Multi Vendor Shipping V1.1

Vendor Email

Vendor Info in easypopulate

EZ Price Updater

And more to come!

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...