Jump to content
scendent

Seperate Pricing Per Customer v3.5

Recommended Posts

Actually, it is not a bug - it is a feature :)

 

The length that is displayed is hardcoded in the admin/customers.php file (see around line 1218 - example for entry company):

 


// BOF customer_sort_admin_v1 adapted for Separate Pricing Per Customer ?>
               <td class="dataTableContent"><?php
               if (strlen($customers['entry_company']) > 16 ) {
            print ("<acronym title=\"".$customers['entry_company']."\">".substr($customers['entry_company'], 0, 16)." </acronym>");
            } else {
               echo $customers['entry_company']; } ?></td>
               <td class="dataTableContent"><?php

 

Hi Jan,

 

Thanks for that, I see it now, and it works as you say.

 

Great add-on, thanks.

 

If the length of the company name is larger than 16 characters it will show those 16 and the full name in a small popup when you hover over it with your mouse pointer (is implemented differently in different browsers, usually there is a small delay before popping-up the acronym text).

Share this post


Link to post
Share on other sites

Hello,

 

We are using SPPC 4.2.2 and EP 2.76i-MS2 on v2.2 RC2a succesfully and is working very well for all our Customer groups, we also want the ability to show the Retail price with the wholesale logged in customers.

 

I found the Contribution Show Price list for SPPC 4.1 v1.0 which is exactly what we need, but wondering if this will work with V4.2.2 ?

 

Thanks & Regards

Richard

Edited by droid70

Share this post


Link to post
Share on other sites

Hi Jan,

 

I am loving this contribution, and it is working well.

 

I just have a question: If I have something for sale with a retail price set and no wholesale price, when a wholesaler logs in they see the item for sale with the retail price. Is this the way it is designed to work, or do I have something set up incorrectly?

 

I would prefer that if a wholesaler logs in and there is nothing with a wholesale price then they see nothing for sale. Otherwise they have no way of easily telling if what they are seeing is the wholesale or retail price (other than logging out and browsing the shop without logging in).

 

Thanks.

Share this post


Link to post
Share on other sites

I just have a question: If I have something for sale with a retail price set and no wholesale price, when a wholesaler logs in they see the item for sale with the retail price. Is this the way it is designed to work, or do I have something set up incorrectly?

There must be something not setup correctly because every group should see it it's own special prices. If there is no group price it will default to a retail price but not for specials.

Share this post


Link to post
Share on other sites

Hello Jan,

 

Need some help please with QPBPP. All seems to be going well until product_listings.php. As soon as I add,

 

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_LISTING); (before)

 

$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

 

The site breaks?

 

Thanks JR

Share this post


Link to post
Share on other sites

As soon as I add,

 

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_LISTING); (before)

 

$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

 

The site breaks?

Can you find out what error message it gives?

 

Did you upload the file needed (e.g. includes/languages/english/product_listing.php for the English language)?

Share this post


Link to post
Share on other sites

Morning Jan,

 

Thank you for the reply. I will get the language directory.

 

JR

Share this post


Link to post
Share on other sites

Hey Jan,

 

Thanks so much. The includes/languages/english/product_listing.php was corrupt, replaced it and so far all seems to be working fine. Very nice contribution.

 

One question, actually a thought for the QPBPP for the Product Listing page. Currently if a search is done and the product is listed, under price it says "from" whatever price. And, if you proceed with Buy It Now, you are taken to the shopping cart, with no information on the discount structure, so the customer does not see the quantity pricing schedule. As a thought, I think it would be nice if a product in Product Lising has a quantity discount associated to it, the Buy It Now button takes you to the Product Info page so customer can see the discount structure, or in shopping cart for that particular product it shows the discount table shown in Product info.

 

Thanks again for a great contribution

 

JR

Share this post


Link to post
Share on other sites

Hello,

 

Are there any plans to make a version of this for 2.3.1?

 

As this is exactly what i have been looking for.

 

Thanks

Edited by AlistairMcCoy

Alistair McCoy

Owner and CEO at Ifusion Hosting

Share this post


Link to post
Share on other sites

Hello,

 

Are there any plans to make a version of this for 2.3.1?

 

As this is exactly what i have been looking for.

 

Thanks

 

hi any update on this

i am really looking for this

 

cheers !

Share this post


Link to post
Share on other sites

I've installed SPPC and merged it with the EU VAT intracom contribution http://addons.oscommerce.com/info/1848 .

 

Now each address book entry has its own VAT ID and a "VAT ID checked by admin" flag. Whenever the address is changed, the "VAT ID checked by admin" flag is set to false for this address and "Request Authorization" is set for the customer.

 

If a "not retail" customer want's to check out using a billing address with "VAT ID checked by admin" = false the customer should get a warning and the prices and tax should be recalculated according to customer group 0 / retail.

 

I got it managed to show a warning if the billing address is not validated, but I'm stuck in how to recalulate the prices and tax according to customer group 0.

 

How could I temporarily move the customer to group 0 / recalculate the order with the retail settings?

 

 

 

Hello,

 

Are there any plans to make a version of this for 2.3.1?

 

As this is exactly what i have been looking for.

 

Thanks

 

It's not that hard to implement the existing version of SPPC in 2.3.1. Most of the files can be editied like mentioned in the manual install process. Just a few files require more work, most complex are the menu boxes. I did this a few days ago. Due to the number of files and more than 40 other contributions (including MVS) already being installed in my store it took nearly two days to install SPPC.

Share this post


Link to post
Share on other sites

I've installed SPPC and merged it with the EU VAT intracom contribution http://addons.oscommerce.com/info/1848 .

 

Now each address book entry has its own VAT ID and a "VAT ID checked by admin" flag. Whenever the address is changed, the "VAT ID checked by admin" flag is set to false for this address and "Request Authorization" is set for the customer.

 

If a "not retail" customer want's to check out using a billing address with "VAT ID checked by admin" = false the customer should get a warning and the prices and tax should be recalculated according to customer group 0 / retail.

 

I got it managed to show a warning if the billing address is not validated, but I'm stuck in how to recalulate the prices and tax according to customer group 0.

 

How could I temporarily move the customer to group 0 / recalculate the order with the retail settings?

 

 

 

 

 

It's not that hard to implement the existing version of SPPC in 2.3.1. Most of the files can be editied like mentioned in the manual install process. Just a few files require more work, most complex are the menu boxes. I did this a few days ago. Due to the number of files and more than 40 other contributions (including MVS) already being installed in my store it took nearly two days to install SPPC.

 

chief i am a novice in this and if there is some specific guide you can give would really help

 

thanks

Share this post


Link to post
Share on other sites

It's not that hard to implement the existing version of SPPC in 2.3.1. Most of the files can be editied like mentioned in the manual install process. Just a few files require more work, most complex are the menu boxes. I did this a few days ago. Due to the number of files and more than 40 other contributions (including MVS) already being installed in my store it took nearly two days to install SPPC.

 

I will give it a go then. I am confident in my php so it should be fine.

 

Thanks


Alistair McCoy

Owner and CEO at Ifusion Hosting

Share this post


Link to post
Share on other sites

chief i am a novice in this and if there is some specific guide you can give would really help

 

Sorry, but I can't give you a guide for this. But I started with osCommerce, php, mysql and all that stuff about two months ago, so I'm still not that used to php, too.

 

I would recommend to copy your store to some kind of testing environment, maybe on the same server in a different subdirectory and a copy of your database. That's not difficult with a vanilla install, edit the configure.php files in catalog/includes and admin/includes and do a search on the downloaded .sql database file of your store to find and modify any records of the subdirectory you have taken the file from.

 

With this testing environment you can try to install SPPC according to the manual install process. Start with the .sql file, then edit includes/functions and includes/classes, check if the store is still ok, then continue to edit the catalog files, last edit the admin files.

 

I could send you the modified versions of the two menu boxes, all the other files I modified for SPPC include other contributions and would change the behavior of your store.

Share this post


Link to post
Share on other sites

If a "not retail" customer want's to check out using a billing address with "VAT ID checked by admin" = false the customer should get a warning and the prices and tax should be recalculated according to customer group 0 / retail.

 

How could I temporarily move the customer to group 0 / recalculate the order with the retail settings?

 

I found a way to do this:

If a non-retail customer wants to check out, the billing address is checked (tax_id_approved = 1?). If needed, the customers sppc session data is overwritten in checkout_payment.php by means of tep_session_unregister('...') and tep_session_register('...'). In that case this is done, too: tep_session_register('sppc_need_reset');

 

As soon as the filename is not checkout* and sppc_need_reset is set, the customers SPPC data is reloaded from the database. This is done in application_top.php.

 

The code in checkout_payment.php:

// -------- BOF Recalculation of prices and tax for non Retail customers depending on the choosen billing address being admin approved or not -------- //
define ('SPPC_DEBUG', 'true');
// get the customers customers_group_id from the database
     $customers_info_query = tep_db_query("select customers_group_id, customers_specific_taxes_exempt from " . TABLE_CUSTOMERS );
     $customer_info = tep_db_fetch_array($customers_info_query);
     $customer_group_id = $customer_info['customers_group_id'];

// $tax_id_approved is set to 0 if a customer who does not belong to group retail tries to use a unverified billing address
// if the customer is retail or the address is approved by the admin $tax_id_approved is set to 1
   if ($customer_group_id != '0') {
     $check_tax_approved_query = tep_db_query("select tax_id_approved from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'");
     $check_tax_approved = tep_db_fetch_array($check_tax_approved_query);
     $tax_id_approved = (int)$check_tax_approved['tax_id_approved'];
   }else{
     $tax_id_approved = '1';
   }

// Redefine the customer group - use retail if a non-retail customer wants to checkout using a non-approved billing address
   if ($tax_id_approved == '0') {
     $sppc_customer_group_id = '0';
     }else{
     $sppc_customer_group_id = (int)$customer_group_id;
     }
   if ($customer_group_id != $sppc_customer_group_id) {
     tep_session_unregister('sppc_customer_group_id');
     tep_session_register('sppc_customer_group_id');
       if (SPPC_DEBUG == 'true') {
       echo 'cg_id redefined!<br>';
       }

// get the tax settings for the customer group which has been selected before
     $check_customer_group_tax_query = tep_db_query("select customers_group_show_tax, customers_group_tax_exempt, group_specific_taxes_exempt from " . TABLE_CUSTOMERS_GROUPS . " where customers_group_id = '" . (int)$sppc_customer_group_id . "'");
     $customer_group_tax = tep_db_fetch_array($check_customer_group_tax_query);
     $sppc_customer_group_show_tax = (int)$customer_group_tax['customers_group_show_tax'];
     $sppc_customer_group_tax_exempt = (int)$customer_group_tax['customers_group_tax_exempt'];
     $group_specific_taxes_exempt = $customer_group_tax['group_specific_taxes_exempt'];
     $customers_specific_taxes_exempt = $customer_info['customers_specific_taxes_exempt'];
   if (tep_not_null($customers_specific_taxes_exempt)) {
     $sppc_customer_specific_taxes_exempt = $customers_specific_taxes_exempt;
   } elseif (tep_not_null($group_specific_taxes_exempt)) {
     $sppc_customer_specific_taxes_exempt = $group_specific_taxes_exempt;
   } else {
     $sppc_customer_specific_taxes_exempt = '';
   }

   if (tep_session_is_registered('sppc_customer_group_show_tax')) {
     tep_session_unregister('sppc_customer_group_show_tax');
     }
     tep_session_register('sppc_customer_group_show_tax');

   if (tep_session_is_registered('sppc_customer_group_tax_exempt')) {
     tep_session_unregister('sppc_customer_group_tax_exempt');
     }
     tep_session_register('sppc_customer_group_tax_exempt');

   if (tep_session_is_registered('sppc_customer_specific_taxes_exempt')) {
     tep_session_unregister('sppc_customer_specific_taxes_exempt');
     }
   if (tep_not_null($sppc_customer_specific_taxes_exempt))  {
     tep_session_register('sppc_customer_specific_taxes_exempt');
     }

// set session parameter to revert to the customers group settings when the customer leaves the checkout process
   if (!tep_session_is_registered('sppc_need_reset')) {
     $sppc_need_reset = '1';
     tep_session_register('sppc_need_reset');
       if (SPPC_DEBUG == 'true') {
       echo '<b>sppc_need_reset activated!</b><br>';
       }
     }
 }

if (SPPC_DEBUG == 'true') {
echo '<pre>';
// echo '<br>Session data:<br>'; print_r($_SESSION); echo '<br>';
echo 'address book id: ' . $billto;
echo '<br>address approved: ' . ($tax_id_approved == '1' ? 'Yes' : 'No');
echo '<br>customer group from database: ' . $customer_group_id;
echo '<br>customer group selected: ' . $sppc_customer_group_id;
echo '<br>customer group show tax: ' . $sppc_customer_group_show_tax;
echo '<br>customer group tax exempt: ' . $sppc_customer_group_tax_exempt;
echo '<br>sppc needs reset when entering catalog the next time: ' . ((tep_session_is_registered('sppc_need_reset')) ? 'Yes' : 'No');
echo '</pre>';
}

// -------- EOF Recalculation of prices and tax for non Retail customers depending on the choosen billing address being admin approved or not -------- //

 

application_top.php:

// -------- BOF Revert to customers SPPC group setting if this has been modified during checkout -------- //
 if (tep_session_is_registered('sppc_need_reset') && (substr(basename($PHP_SELF), 0, 8) != 'checkout')) {
define ('SPPC_DEBUG', 'true');
// get the customers customers_group_id from the database
     $customers_info_query = tep_db_query("select customers_group_id, customers_specific_taxes_exempt from " . TABLE_CUSTOMERS );
     $customer_info = tep_db_fetch_array($customers_info_query);
     $sppc_customer_group_id = (int)$customer_info['customers_group_id'];
     tep_session_unregister('sppc_customer_group_id');
     tep_session_register('sppc_customer_group_id');

// get the customers tax settings
     $check_customer_group_tax_query = tep_db_query("select customers_group_show_tax, customers_group_tax_exempt, group_specific_taxes_exempt from " . TABLE_CUSTOMERS_GROUPS . " where customers_group_id = '" . $sppc_customer_group_id . "'");
     $customer_group_tax = tep_db_fetch_array($check_customer_group_tax_query);
     $sppc_customer_group_show_tax = (int)$customer_group_tax['customers_group_show_tax'];
     $sppc_customer_group_tax_exempt = (int)$customer_group_tax['customers_group_tax_exempt'];
     $group_specific_taxes_exempt = $customer_group_tax['group_specific_taxes_exempt'];
     $customers_specific_taxes_exempt = $customer_info['customers_specific_taxes_exempt'];
   if (tep_not_null($customers_specific_taxes_exempt)) {
     $sppc_customer_specific_taxes_exempt = $customers_specific_taxes_exempt;
   } elseif (tep_not_null($group_specific_taxes_exempt)) {
     $sppc_customer_specific_taxes_exempt = $group_specific_taxes_exempt;
   } else {
     $sppc_customer_specific_taxes_exempt = '';
   }

   if (tep_session_is_registered('sppc_customer_group_show_tax')) {
     tep_session_unregister('sppc_customer_group_show_tax');
     }
     tep_session_register('sppc_customer_group_show_tax');

   if (tep_session_is_registered('sppc_customer_group_tax_exempt')) {
     tep_session_unregister('sppc_customer_group_tax_exempt');
     }
     tep_session_register('sppc_customer_group_tax_exempt');

   if (tep_session_is_registered('sppc_customer_specific_taxes_exempt')) {
     tep_session_unregister('sppc_customer_specific_taxes_exempt');
     }
   if (tep_not_null($sppc_customer_specific_taxes_exempt))  {
     tep_session_register('sppc_customer_specific_taxes_exempt');
     }

   tep_session_unregister('sppc_need_reset');

if (SPPC_DEBUG == 'true') {
echo '<pre>';
// echo '<br>Session data:<br>'; print_r($_SESSION); echo '<br>';
echo '<br>sppc_need_reset was active. sppc session data has been reloaded from database.';
echo '<br>customer group: ' . $sppc_customer_group_id;
echo '<br>customer group show tax: ' . $sppc_customer_group_show_tax;
echo '<br>customer group tax exempt: ' . $sppc_customer_group_tax_exempt;
echo '</pre>';
}
}
// -------- EOF Revert to customers SPPC group setting if setting has been modified during checkout -------- //

 

Could this cause any security issues or other problems?

 

 

(It's tested just with a few orders, so it still might contain a few bugs...)

Share this post


Link to post
Share on other sites

Hello,

 

Just noticed an issue, and I am using SPPC 4.2.2 and SPPC Price Break on RC2A. I have gone through the code and just can not point out where the issue may lie. On product_lising, if I do not have any quantity discounts set in the admin, and I am logged in as a dealer with discount rate, it only shows retail and not dealer pricing. As soon as I add quantity for discounting, it will show "As Low As" and correct pricing. Why is it not showing dealer pricing without quantities? Also not getting dealer pricing showing in specials and new products. Product_info works fine.

 

Thanks JR

Share this post


Link to post
Share on other sites

Hello,

 

I narrowed it down a little. For some reason the system is not ready (.$customer_group_id."' and customers_group_price != null");) correctly. Having an issue with "null"? When I revert back to original, site works fine? Any ideas?

 

Thanks JR

Share this post


Link to post
Share on other sites

I narrowed it down a little. For some reason the system is not ready (.$customer_group_id."' and customers_group_price != null");) correctly. Having an issue with "null"? When I revert back to original, site works fine? Any ideas?

I vaguely recall an issue with that. I think there were indeed issues with that and using IS NOT NULL instead of != null solved that. Not 100% sure though.

Share this post


Link to post
Share on other sites

Sorry,

 

Quick question, am I changing that "Null" in the corresponding code ( $customer_group_id . "' and customers_group_price != null");) or in the database?

 

Thanks JR

Share this post


Link to post
Share on other sites

Quick question, am I changing that "Null" in the corresponding code ( $customer_group_id . "' and customers_group_price != null");) or in the database?

I mean in the code:

( $customer_group_id . "' and customers_group_price IS NOT NULL");)

Share this post


Link to post
Share on other sites

Separate pricing per Customer require for v2.3.1

thanks in advance

 

 

Hello, i'm also searching a SPPC system for version 2.3.1

Did you find anything useable ?

 

Thanks in advance

Share this post


Link to post
Share on other sites

Hi I installed it (admin only for the moment) and have the following errord

 

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in C:\Documents and Settings\Tincube\Bureaublad\Dropbox\Tincube Gamestore\TestOmgeving\wamp\www\test\admin\categories.php on line 989

 

Warning: reset() [function.reset]: Passed variable is not an array or object in C:\Documents and Settings\Tincube\Bureaublad\Dropbox\Tincube Gamestore\TestOmgeving\wamp\www\test\admin\includes\classes\object_info.php on line 17

 

Warning: Variable passed to each() is not an array or object in C:\Documents and Settings\Tincube\Bureaublad\Dropbox\Tincube Gamestore\TestOmgeving\wamp\www\test\admin\includes\classes\object_info.php on line 18

 

Warning: implode() [function.implode]: Invalid arguments passed in C:\Documents and Settings\Tincube\Bureaublad\Dropbox\Tincube Gamestore\TestOmgeving\wamp\www\test\admin\includes\functions\general.php on line 72

 

 

any idea's

 

using php version 5.2.9

 

shop is RC2A

Share this post


Link to post
Share on other sites

ow i forgot to tell

 

I have downloade this version Version 2.0.3

 

SPPC 4.2.2 was already installed

 

I have created an test server with wamp on my pc

Edited by mbuist

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×