Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Recommended Posts

Wholesale (SPPC lite)

 

Simplified SPPC module, easy modularized installation.

For Bootstrap and Standard osc 2.3.4.

See develop topic:

http://www.oscommerce.com/forums/topic/408481-sppc-lite/

 

Features:

  • Posibility to asign customers to the wholesaler group
  • Define individual wholesale prices to each product
  • Optional tax exempt wholesalers
  • Optional define individual wholesale prices to attributes
  • Optional define global wholesale percentage discount to all products and attribute prices
    The global wholesale discount will not apply to products and attributes which have individual wholesale prices defined
  • Optional setting to apply special price instead of wholesale price if the special price is lower than the wholesale price or discount.
  • Optional payment and shipping modules Exclusion lists for Wholesalers and Retailers.
  • Header text module to show different info text for guests, retailers and wholesalers. The texts are editable for each store language in the module settings.
    By default:
    Guests: no text
    Retailers: “Welcome to your Retailer Account.<br>Please <a class="btn btn-info btn-xs" role="button" href="contact_us.php">Contact Us</a> to apply for a Wholesaler Account. See <a class="btn btn-info btn-xs" role="button" href="conditions.php">Conditions</a>.”
    Wholesalers: “Welcome to your Wholesaler Account.<br>You can see your Wholesaler Prices on the Product Page and they will apply when you add the products of your choice to the Shopping Cart.”
  • Product Info Content module to show the wholesaler price in addition to the normal price on the Product Info Page
  • Only 2 Store file modifications. application_top.php one line added. Optional product_info.php attribute block modified to show wholesale attribute price.
  • 3 admin files modified, categories.php, customers.php and product_attributes.php.
  • Modified files for 2.3.4 standard, Bootstrap Gold and Bootstrap Edge included.
  • The wholesale prices will be automatic applied when adding a product to the Shopping Cart. This is done via shopping cart class extension, no file modification needed.
  • All database modifications and language definitions are integrated in the modules.
  • Optional database columns removal to keep existing entances when removing the module

NOTE: If you need more than one wholesaler group or other additional features, please consider to use the old, full version SPPC:
http://addons.oscommerce.com/info/716

 

Thanks

  • To @@greasemonkey for the initial idea, support, comments and testing
  • To @@burt for the initial guideline exposed in the forum and his database installation-removing code examples used in the store module
  • To @@wHiTeHaT for his help with the shopping cart class extension
  • To @@Tsimi, @@Gergely, @@John W and @@14steve14 for their support, comments and testing

Download:

http://addons.oscommerce.com/info/9416

Edited by raiwa
Link to comment
Share on other sites

  • 2 months later...

Hi @@raiwa

 

Just installed and testing, and really happy!! It works very well!!

Installation was very easy, and my only problems was "mixing" some few steps with other addons (querys, etc.)

 

Just a question. I see three categories of customers: guests, retailer and wholesaler, but in fact we only have two price level. Guests and retailer have the same price, and we have the possibilitie of put another price for wholesaler. It is right or did I miss something? And which is the ultility of having different consideration of guests and retailer, if they share the same price?

 

Many thanks for your job!

Shopowner, not coder, experienced copypaster  :D

Link to comment
Share on other sites

Hola Agustín @@TITO4,

 

It's just to be able to show them different messages in the header module, it has no influence on prices.

 

By default:

Guests: no message

Retailers: Welcome to your Retailer Account.............

Wholesalers: Welcome to your Wholesaler Account...............

 

un saludo

Rainer

Link to comment
Share on other sites

  • 3 weeks later...

Hi @@raiwa! Yes, me again... :D 

While I've been testing your excellent addon and thinking on its possibilities, I've realized that this could be used as part of a Membership Site. As you all probably now, it is like a club or something similar. It means, your customers (that one who want to join tothis "club") pay an ammount on a monthly (or yearly, quarterly, etc.) basis. Being members, they have special prices, exclusive contents, even free products or whatever you decide. 

With Wholesale installed, you just simply have to add this special customers to your wholesellers list, and this way they will get it with the benefits you decide. It usually is used for infoproducts, but also with physical products. Another idea could be a kind of "mystery box" with a bundle of special products. 

Perhaps you also could need something else for this, as a recursively payment or reminders, automatized status control, etc., for this group of customers. But anyway, and while your list is not made with thousands, is something you can control and manage manually, I think.

(Google is plenty of ideas on membership sites. I recommend to explore some of them to have an idea).

Saludos!

Shopowner, not coder, experienced copypaster  :D

Link to comment
Share on other sites

  • 4 months later...

This add-on is the best I've ever done, in terms of ease of install, documentation with CORRECT INFORMAITON and it works first go with no issues!

 

That NEVER happens with contributions.    If all contributions could be like this, our would would be a happier place! 

 

Unfortunitly the "Full" version of this SPPC, I haven't been able to get working on 2.3.4 RESPONSIVE Edge.   Hopefully someday I will be able to get the "Full" version working as I have no doubt it will be a great add-on also!

 

-TheChad

Edited by ThaChad
Link to comment
Share on other sites

Hello Cindy @@cpt0562,

 

Sorry for the late reply, forgot for this post o:)

 

You'll need to modify easypopulate adding the wholesale pricefield. Then you can import-export it just like all other fields.

 

regards

Rainer

Link to comment
Share on other sites

  • 2 weeks later...

When installing new files for OScommerce v2.3.4:

 

Shop:
[catalog ]/includes/modules/content/header/cm_header_wholesale.php
[catalog ]/includes/modules/content/header/templates/wholesale.php

 

There is already a file named "header" and because of this the folder /header/ cannot be created and does not exsist.

 

Please Advise?

 

Thanks,

 

-ThaChad
 

Edited by ThaChad
Link to comment
Share on other sites

Hello Chad @@ThaChad,

 

Sorry, I do not understand your problem.

You have to copy/upload these two files into the same directories.

There is no file called "header" in these directories.

 

rgds

Rainer

Link to comment
Share on other sites

Hello Chad @@ThaChad,

 

Sorry, I do not understand your problem.

You have to copy/upload these two files into the same directories.

There is no file called "header" in these directories.

 

rgds

Rainer

 

There is a file called header.  No extention on the file.   When I try to copy the file(s) I get an error from the file manager.

 

*shrug*

Link to comment
Share on other sites

Hello Chad @@ThaChad,

 

I'm sorry, but there is no file called "header" in my package. What you call "header" file without extension is a directory/folder, not a file.

If you are using the CPanel file manager to upload the files, enter first inside the "header "Directory, so you should see in the main window another folder called "templates" and several files beginning with "cm_header...".

Then click on "upload" and enter the "header" directory of my package and select the file "cm_header_wholesale.php" and upload it.

 

It would be much easier to upload the files with a ftp-client like FileZilla.

 

Please make sure to get clear about the difference between files and foders/directories and how to upload files and folders maintaining the respective directory structure.

 

rgds

Rainer

Edited by raiwa
Link to comment
Share on other sites

Sorry, forgot to mention: if you are using 2.3.4 standard you may need first to create the folder "header" with the filemanager as well as then the "template" folder before uploading the files.

Link to comment
Share on other sites

  • 2 weeks later...

Hello,

 

Can someone please help with this message

 

Everything is ok except this message

 

  • 1054 - Unknown column 'customers_group_id' in 'where clause'

    select specials_new_products_price from specials where products_id = '31' and status and customers_group_id = '0'

    [TEP STOP]
Link to comment
Share on other sites

Hello @@lrgayle25,

 

Did you install the module:

Admin > Modules > Store > Wholesale

 

rgds

Rainer

Link to comment
Share on other sites

products_new.php

 

<?php
  require('includes/application_top.php');
 
  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCTS_NEW);
  $current_page = FILENAME_PRODUCTS_NEW;
  $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_PRODUCTS_NEW));
 
  require(DIR_WS_INCLUDES . 'template_top.php');
?>
 
<h1 class="page-heading product-list"><span><?php echo HEADING_TITLE; ?></span></h1>
<div class="block-content">
  <?php
  $products_new_array = array();
 
  $products_new_query_raw = "select p.products_id, pd.products_name, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name, m.manufacturers_id from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name";
  $products_new_split = new splitPageResults($products_new_query_raw, MAX_DISPLAY_PRODUCTS_NEW);
if ($products_new_split->number_of_rows > 0) {
echo tep_gridlist_build();
}
  if (($products_new_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3'))) {
?>
  <div class="listing-panel top-panel top-view">
    <div class="row">
      <div class="col-xs-6 displayText"><?php echo $products_new_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS_NEW); ?></div>
      <div class="col-xs-6"><?php echo $products_new_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))) . '<span class="resultText">'. TEXT_RESULT_PAGE . '</span>'; ?></div>
    </div>
  </div>
  <?php
  }
?>
  <?php
  if ($products_new_split->number_of_rows > 0) {
?>
  <ul class="row product-listing">
    <?php
    $products_new_query = tep_db_query($products_new_split->sql_query);
$i=0;
    while ($products_new = tep_db_fetch_array($products_new_query)) {
$i++;
$product_query = tep_db_query("select products_description, products_id from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_new['products_id'] . "' and language_id = '" . (int)$languages_id . "'");
    $product = tep_db_fetch_array($product_query);
 
      if ($new_price = tep_get_products_special_price($products_new['products_id'])) {
        $products_price =  $currencies->display_price($products_new['products_price'], tep_get_tax_rate($products_new['products_tax_class_id']));
$products_price_new = $currencies->display_price($new_price, tep_get_tax_rate($products_new['products_tax_class_id']));
      } else {
        $products_price = $currencies->display_price($products_new['products_price'], tep_get_tax_rate($products_new['products_tax_class_id']));
$products_price_new ='';
      }
 
 if (strlen(strip_tags($product['products_description'])) > 0 && PRODUCT_LIST_DESCRIPTION_GRID > 0) {
 if (strlen(strip_tags($product['products_description'])) > PRODUCT_LIST_DESCRIPTION_GRID) {
$p_desc_grid =  '<div class="product-description description-grid">'.mb_substr(strip_tags($product['products_description']), 0, PRODUCT_LIST_DESCRIPTION_GRID, 'UTF-8').'...'.'</div>';
 }
 else {
$p_desc_grid =  '<div class="product-description description-grid">'.strip_tags($product['products_description']).'</div>';
 }
 } else {
$p_desc_grid ='';
 }
 if (strlen(strip_tags($product['products_description'])) > 0 && PRODUCT_LIST_DESCRIPTION_LIST > 0) {
 if (strlen(strip_tags($product['products_description'])) > PRODUCT_LIST_DESCRIPTION_LIST) {
$p_desc_list =  '<div class="product-description description-list">'.mb_substr(strip_tags($product['products_description']), 0, PRODUCT_LIST_DESCRIPTION_LIST, 'UTF-8').'...'.'</div>';
 }
 else {
$p_desc_list =  '<div class="product-description description-list">'.strip_tags($product['products_description']).'</div>';    
 }
 } else {
$p_desc_list  ='';
 }
 
$products_new_content .= tep_product_block_build(
  $productId = $products_new['products_id'],
$productImage = $products_new['products_image'], 
$productName = $products_new['products_name'],
$productAdded = $products_new['products_date_added'],
$productManufacturerId = $products_new['manufacturers_id'],
$productManufacturerName = $products_new['manufacturers_name'],
$productPrice = $products_price,
$productPriceNew = $products_price_new,
$productWeight = '', 
$productQuantity = '', 
$productModel = '',
$productDescription = $p_desc_list.$p_desc_grid,
$productButtons = true,
$pageComming = FILENAME_PRODUCTS_NEW,
$elCount =$i
);
    }
 
echo $products_new_content;
?>
  </ul>
  <?php
  } else {
?>
  <div class="alert alert-info"> <?php echo TEXT_NO_NEW_PRODUCTS; ?> </div>
  <?php
  }
 
  if (($products_new_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3'))) {
?>
  <div class="listing-panel bottom-panel">
    <div class="row">
      <div class="col-xs-6 displayText"><?php echo $products_new_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS_NEW); ?></div>
      <div class="col-xs-6"><?php echo $products_new_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))) . '<span class="resultText">'. TEXT_RESULT_PAGE . '</span>'; ?></div>
    </div>
  </div>
  <?php
  }
?>
</div>
<?php
  require(DIR_WS_INCLUDES . 'template_bottom.php');
  require(DIR_WS_INCLUDES . 'application_bottom.php');
?>
Link to comment
Share on other sites

@@lrgayle25,

 

If you mean uninstall the SPPC light add on, just uninstall all modules.

For the Store module set "Uninstall Removes Database entries" to "true" before removing.

Then revert all changes to the core files just oppposite you did for installation.

That's all.

 

rgds

Rainer

Link to comment
Share on other sites

No I mean the date added you know whenever you put up a new product it shows under whats new I don't want customer to see the date I put up new product. Because if I work on Sunday ETC it will show that and I don't like it so I would like to remove it its in products_new.php

Link to comment
Share on other sites

Oh,sorry I'm traveling and have no access to a stores admin right now to check. If I well remember there should be a configuration setting for this

. Please post this question in the general support forum. It has nothing to do with Sppc light. Rainer

Edited by raiwa
Link to comment
Share on other sites

  • 2 months later...

Well, astonishing, as usual.

 

Justa wanted to say publicly A BIG thank you!! So now you give us your PRO versión...

I only can say thank you.

 

(I didn't find instructions for update from Lite versión. Anyway it seems very easy to install, so I'll first uninstall, and then install this new one).
 

Shopowner, not coder, experienced copypaster  :D

Link to comment
Share on other sites

Hola Agustín @@TITO4,

 

Start Here/Updates.doc: Update to version 2.0

 

Saludos

Rainer

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