Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Seperate Pricing Per Customer v3.5


scendent

Recommended Posts

it work fine, but doesnt contain any of the SPPC group prices to edit(of course since its the stock contrib). I would like to be able to edit the SPPC groups as well as the regular retail group if possible.

 

The contrib is actually a nice contrib.....its like easypopulate except you change everything in the admin section instead of excel. I would imagine more SPPC users would find good use for the multiple price update contrib.

 

You're right- the way it is now is a bit cumbersome. I will look at it in the next few days, but I'm more of a hacker than a coder and I make no guarantees.

 

Stew

Do, or do not. There is no try.

 

Order Editor 5.0.6 "Ultra Violet" is now available!

For support or to post comments, suggestions, etc, please visit the Order Editor support thread.

Link to comment
Share on other sites

Hi,

Thanks to every one that worked on this contribution. I have it installed, had a couple of bugs, fixed. However, When I go to customers in admin and try to edit, or delete them I get the following error:

1054 - Unknown column 'c.customers_payment_allowed' in 'field list'

 

select c.customers_id, c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_dob, c.customers_email_address, a.entry_company, a.entry_company_tax_id, a.entry_street_address, a.entry_suburb, a.entry_postcode, a.entry_city, a.entry_state, a.entry_zone_id, a.entry_country_id, c.customers_telephone, c.customers_fax, c.customers_newsletter, c.customers_group_id, c.customers_group_ra, c.customers_payment_allowed, c.customers_shipment_allowed, c.customers_default_address_id from customers c left join address_book a on c.customers_default_address_id = a.address_book_id where a.customers_id = c.customers_id and c.customers_id = '32'

 

[TEP STOP]

 

I can't figure out why, Does anyone have any ideas?

Link to comment
Share on other sites

Hi,

Thanks to every one that worked on this contribution. I have it installed, had a couple of bugs, fixed. However, When I go to customers in admin and try to edit, or delete them I get the following error:

1054 - Unknown column 'c.customers_payment_allowed' in 'field list'

 

select c.customers_id, c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_dob, c.customers_email_address, a.entry_company, a.entry_company_tax_id, a.entry_street_address, a.entry_suburb, a.entry_postcode, a.entry_city, a.entry_state, a.entry_zone_id, a.entry_country_id, c.customers_telephone, c.customers_fax, c.customers_newsletter, c.customers_group_id, c.customers_group_ra, c.customers_payment_allowed, c.customers_shipment_allowed, c.customers_default_address_id from customers c left join address_book a on c.customers_default_address_id = a.address_book_id where a.customers_id = c.customers_id and c.customers_id = '32'

 

[TEP STOP]

 

I can't figure out why, Does anyone have any ideas?

 

I found where catalog/admin/customers.php calls this field

Starts at line 889 to 894 on my file and looks like this:

echo $customers_payment_allowed;

} else {

echo ENTRY_CUSTOMERS_PAYMENT_DEFAULT;

}

echo tep_draw_hidden_field('customers_payment_allowed'); ?></td>

</tr>

Do I need to add this field to my customer table, and if so, how? Or, can I just comment this line out completely?

Link to comment
Share on other sites

I found where catalog/admin/customers.php calls this field

Starts at line 889 to 894 on my file and looks like this:

echo $customers_payment_allowed;

} else {

echo ENTRY_CUSTOMERS_PAYMENT_DEFAULT;

}

echo tep_draw_hidden_field('customers_payment_allowed'); ?></td>

</tr>

Do I need to add this field to my customer table, and if so, how? Or, can I just comment this line out completely?

I see the whole php file calls to this field in many places. So, how do I get it to accept this field?

Link to comment
Share on other sites

I see the whole php file calls to this field in many places. So, how do I get it to accept this field?
With the latest package (version 4.1.1) there should have a file in "new_installations" called sppc_v41_install.sql. I guess you ran that or if you didn't nothing will work. The changes for table customers are:

ALTER TABLE customers
ADD customers_group_id smallint UNSIGNED NOT NULL default '0',
ADD customers_group_ra enum('0','1') NOT NULL,
ADD customers_payment_allowed varchar(255) NOT NULL default '',
ADD customers_shipment_allowed varchar(255) NOT NULL default '';

There are more though.

Link to comment
Share on other sites

Here goes nothing.

 

 

i have been looking at this contribution (Add Multiple Products to Cart, in columns, for SPPC)

http://www.oscommerce.com/community/contri...y,3/search,sppc

 

 

and i would very much like it integrated in this contribution (Product Listing view change)

http://www.oscommerce.com/community/contri...y,3/search,sppc

 

 

i like that fact that the customer is able to change the look af the listing

 

 

in my file i already have SPPC installed

so i only need the attributes listed and the qty field.

 

i hope that sone would be helpfull with this.

if anyone would like the file with SPPC integrated please speak up.

Link to comment
Share on other sites

With the latest package (version 4.1.1) there should have a file in "new_installations" called sppc_v41_install.sql. I guess you ran that or if you didn't nothing will work. The changes for table customers are:

ALTER TABLE customers
ADD customers_group_id smallint UNSIGNED NOT NULL default '0',
ADD customers_group_ra enum('0','1') NOT NULL,
ADD customers_payment_allowed varchar(255) NOT NULL default '',
ADD customers_shipment_allowed varchar(255) NOT NULL default '';

There are more though.

:thumbsup: Yhank you, I used the newinstall sql, but I did not see the 4.1 sql, I just added the missing fields, works, thank you very much.

Link to comment
Share on other sites

:blush: I just installed a fresh version of osCommerce on my new LunarPages website, then I downloaded the SPPC version 4.1.1 contribution because I need pricing for retail and wholesale customers. I ran the SQL script and all the tables have been modified and some of the screens have changed, but I can't seem to find any place to enter the company name or the company tax id number. Anyone have any suggestions as to what I've done wrong?

Link to comment
Share on other sites

I can't seem to find any place to enter the company name or the company tax id number.
Those are entered by the customer, when they open an account or change their information (like shipping address). You, as the shop owner, don't have to fill in your company tax id number anywhere if that is what you mean.

 

In the admin section you can see and change that information (after the client has registered) when you go to admin/customers. In the table view there, there is no room for that information but if you select a customer (click on the i button in the last column labeled Action, then click Edit in the box on the right side) you have a page where all that info can be seen and changed.

Edited by JanZ
Link to comment
Share on other sites

A little off topic.. but you guys all seem to be on the same track as my store..

 

Right now we are going to be doing manual credit card processing in house.. I can;t figure out how to show which types pf cards we accept (ie master/visa/amex only) as well I need to add in that dasterdly CVV2 code.. which mod is everyone using for that?? I see several.. some very complicated some overly simple looking..

 

thanks

 

Did you all pass me over??? I need to get the CVV MOD added in and would appreciate some feedback

 

thanks

Debbie D
Franklin County, VA "Moonshine Capitol of the World"
osCmax Mobile Template oscmaxtemplates.com

Link to comment
Share on other sites

OK I have a REAL dump noob-type question.. I have been SO invloved in making sure the NEW groups function properly, I neglated to double check the retail (defualt) group!

 

I see now that the light is ON when a retail person creates an account..

 

I see possibly 2 places where I might need to change to auto turn off the RA Light:

 

admin/customers.php

$old_customers_group_id = $_POST['old_customers_group_id'];
if ($old_customers_group_id <= 2 && $customers_group_id >= 3) {
$sql_data_array_cg_ra = array('customers_group_ra' => '0'); //trying to turn off RA light

 

createaccount.php

   $sql_data_array['customers_group_ra'] = '1';
  $company_tax_id = tep_db_prepare_input($HTTP_POST_VARS['company_tax_id']);
  if ($company_tax_id == '1') {
  $sql_data_array['customers_group_id'] = '1';
  $sppc_customer_group_id = '1';
 $sql_data_array['customers_group_ra'] = '0';
  } elseif ($company_tax_id == '2') {
  $sql_data_array['customers_group_id'] = '2';
  $sppc_customer_group_id = '2';
 $sql_data_array['customers_group_ra'] = '0'; //setting to 0 turns off light

 

Where do I auto turn off the light for the retail people also??

 

thanks

Debbie D
Franklin County, VA "Moonshine Capitol of the World"
osCmax Mobile Template oscmaxtemplates.com

Link to comment
Share on other sites

Jan,

 

Hey hey... hope all is well in your day!

 

If there is a product with an attribute left the Shopping Cart by a registered customer - and I then later delete (remove completely via admin) that product - there still remains a reference to it, (shows that there is still a product though not identified - similar to when I just make a product inactive) which can be seen by the customer whenever he/she logs in again.

 

However if there is a product without an attribute left in the Shopping Cart by a customer - and I then delete (remove completely via admin) that product - it is removed completely (as it should be).

 

The same exact behavior is experienced with the Wish List Contribution I use, which makes sense as it was modeled after the Shopping Cart.

 

Would you know off-hand if this is specific to my modified OSC Application only? Either way, any thoughts on what can be done about it...

 

Carlos

Link to comment
Share on other sites

Where do I auto turn off the light for the retail people also??
With:
if (**condition that will be true for a retail customer**) {
$sql_data_array['customers_group_ra'] = '0';
}

the light will be turned off. Put this after the code in create_account.php that you have shown above, because the first line of that switches the light on by default.

Link to comment
Share on other sites

Carlos,

If there is a product with an attribute left the Shopping Cart by a registered customer - and I then later delete (remove completely via admin) that product - there still remains a reference to it, (shows that there is still a product though not identified - similar to when I just make a product inactive) which can be seen by the customer whenever he/she logs in again.

 

However if there is a product without an attribute left in the Shopping Cart by a customer - and I then delete (remove completely via admin) that product - it is removed completely (as it should be).

 

The same exact behavior is experienced with the Wish List Contribution I use, which makes sense as it was modeled after the Shopping Cart.

 

Would you know off-hand if this is specific to my modified OSC Application only? Either way, any thoughts on what can be done about it...

I am pretty sure you stumbled on a bug and I think it would be good to file a bug report. Searching the bug reports I found this one:
http://www.oscommerce.com/community/bugs,691

 

deleted products wasn't removed from customer cart

 

If the store owner deletes a product while such product is still in customer's cart. the entry in the customers_basket table doens't get erased, causing the customer's cart to believe that the item still exists.

The link to the "fix" lead me to admin/functions/general.php where you can find the function tep_remove_product somewere around line 878. In it you will see:

	tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where products_id = '" . (int)$product_id . "'");
tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where products_id = '" . (int)$product_id . "'");

Now, this is obviously not going to work when a product has attributes because then the products_id will be e.g. 1{4}1{3}5. Sure, if you make an integer out of 1{4}1{3}5 it will give the products_id: 1 but the sql query will not do that. Good one...

Link to comment
Share on other sites

Carlos,

If there is a product with an attribute left the Shopping Cart by a registered customer - and I then later delete (remove completely via admin) that product - there still remains a reference to it, (shows that there is still a product though not identified - similar to when I just make a product inactive) which can be seen by the customer whenever he/she logs in again.
I think this should work as replacement for those two lines in tep_remove_product:

	tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" .  (int)$product_id . "{');");
tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" .  (int)$product_id . "{');");

That will look for product id's that are exactly alike and those that start with the correct product id (REGEXP ^ looks for strings that "start with"). Have tried this with a MySQL client, but not in the osC code so use caution.

Link to comment
Share on other sites

With:
if (**condition that will be true for a retail customer**) {
$sql_data_array['customers_group_ra'] = '0';
}

the light will be turned off. Put this after the code in create_account.php that you have shown above, because the first line of that switches the light on by default.

 

 

Jan.. I tried.. I swear I tried.. I just don't get it.. here is what I have now, but the light still stays on

 

	if ( ACCOUNT_COMPANY == 'true' && tep_not_null($company_tax_id)  ) {
  $sql_data_array['customers_group_ra'] = '1';
  $company_tax_id = tep_db_prepare_input($HTTP_POST_VARS['company_tax_id']);
  if ($company_tax_id == '1') {
  $sql_data_array['customers_group_id'] = '1';
  $sppc_customer_group_id = '1';
 $sql_data_array['customers_group_ra'] = '0';
  } elseif ($company_tax_id == '2') {
  $sql_data_array['customers_group_id'] = '2';
  $sppc_customer_group_id = '2';
 $sql_data_array['customers_group_ra'] = '0'; //setting to 0 turns off light
  }
if ($customers_group_id == '0') {
  $sql_data_array['customers_group_id'] = '0';
  $sppc_customer_group_id = '0';
 $sql_data_array['customers_group_ra'] = '0'; //setting to 0 turns off light
  }

Debbie D
Franklin County, VA "Moonshine Capitol of the World"
osCmax Mobile Template oscmaxtemplates.com

Link to comment
Share on other sites

Jan,

 

As always, thanks for being so generous with your time.

 

I have recently installed (with your help) SPPC & Price Break, as well when I found that the Wish List contribution I had already in, was not working well in a number of ways, with SPPC & Price Break, I got rid of it and installed a different version by (with the help of) Dennis Blake.

 

Anyhow, I wrote to both of you, asking about this problem (even though I suspected after looking through all the files again that none of the contributions caused it). He says the same as you did, that it is a problem with the core application. I'm sure you knew this, I just thought I'd let you know that someone else sees it as you do, too.

 

I have worked around it some by putting in checks modeled after the stock quantity availability checks, implemented throughout the files involved in the checkout process.

 

This way at least a customer faced with this situation cannot checkout (and has clear instructions on what to do next) until the product remnant is removed, and for products that have been only inactivated, and not removed completely, it works too, which is actually more important as these will still allow the price to be reflected in the cart should someone check out without first removing them.

 

I am elaborating some in case someone else wants to know, even a little something, about this.

 

When I become aware of a solution to this, I will let you know!

 

Regards,

 

Carlos

Link to comment
Share on other sites

Debbie,

Jan.. I tried.. I swear I tried.. I just don't get it.. here is what I have now, but the light still stays on

 

	if ( ACCOUNT_COMPANY == 'true' && tep_not_null($company_tax_id)  ) {
.
.
.
// the next part is still within the bracket started with 
// if ( ACCOUNT_COMPANY == 'true' && tep_not_null($company_tax_id)  )
// so it will never be "read" when a retail customer opens an account
if ($customers_group_id == '0') {
  $sql_data_array['customers_group_id'] = '0';
  $sppc_customer_group_id = '0';
 $sql_data_array['customers_group_ra'] = '0'; //setting to 0 turns off light
  }

A. See the comment in the code above.

B. There must be another place in the code where the "light" is switched on with a $sql_data_array['customers_group_ra'] = '1';

Perhaps try a $sql_data_array['customers_group_ra'] = '0'; above if ( ACCOUNT_COMPANY == 'true' && tep_not_null($company_tax_id) ) {

Link to comment
Share on other sites

Jan,

 

Here I am once again looking for some help with another contribution, which is affected by SPPC. And again, I have tried as best I can, before coming to you.

 

It is a Wish List Stats Admin Report. I'm pretty sure it has to do with query, but I can't figure out what to try and modify.

 

If there's a lot of modifying please disregard, as it's not really important, just some icing on the cake, so to speak.

 

What's happening is that it's not showing the Product Name at all, and showing 00.00 for the price.

 

Here's the file admin/stats_wishlist.php:

<table border="0" width="100%" cellspacing="0" cellpadding="2">
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
	  <tr>
		<td height="50" class="pageHeading">Wish List Report</td>
		<td class="pageHeading" align="right">
		<?php
		# Get specific list data
		if (isset($HTTP_GET_VARS['cid'])) { 
		$customers_query_raw = tep_db_query("select customers_firstname, customers_lastname from " .
		TABLE_CUSTOMERS . " where customers_id = '".$HTTP_GET_VARS['cid']."'");
		$customers = tep_db_fetch_array($customers_query_raw);
		# name
		echo $customers['customers_firstname'] . ' ' . $customers['customers_lastname'];
		}else{
		echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT);
		} ?></td>
	  </tr>
	</table></td>
  </tr>
  <?php if (isset($HTTP_GET_VARS['cid'])) { # Display wishlist data?>
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

	<tr>
		<td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
		  <tr class="dataTableHeadingRow">
			<td class="dataTableHeadingContent" align="center">Product</td>
			<td class="dataTableHeadingContent" align="center">Model</td>
			<td class="dataTableHeadingContent" align="center">Price</td>
		  </tr>
   <?php
   # show the contents
   $products_query_raw = tep_db_query("select * from customers_wishlist where customers_id = '".
   $HTTP_GET_VARS['cid']."'");
   while($products = tep_db_fetch_array($products_query_raw)) { 
   ?>
		  <tr class="dataTableRow">
			<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $products['products_name']; ?>
</td></tr>
</table>
			</td>
			<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $products['products_model']; ?>
</td></tr>
</table>
			</td>
			<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $currencies->format($products['products_price']); ?>
</td></tr>
</table>
			</td>
		  </tr>
		  <?php } #eof while?>
		</table></td>
	  </tr>
	<?php 
	}else{ # show the list of wishlist owners
	?>
	  <tr>
		<td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
		  <tr class="dataTableHeadingRow">
			<td class="dataTableHeadingContent">?</td>
			<td class="dataTableHeadingContent" align="center">Customer</td>
			<td class="dataTableHeadingContent" align="center">Products In Wish List</td>
		  </tr>
	 <?php
	   # Get list of owners
	   if (isset($HTTP_GET_VARS['page']) && ($HTTP_GET_VARS['page'] > 1)) 
	   $rows = $HTTP_GET_VARS['page'] * MAX_DISPLAY_SEARCH_RESULTS - MAX_DISPLAY_SEARCH_RESULTS;
	   $customers_query_raw = "select c.customers_firstname, c.customers_lastname, cw.customers_id, 
	   count(cw.products_id) as prodcount from " . TABLE_CUSTOMERS . " c, customers_wishlist cw WHERE
	   cw.customers_id = c.customers_id group by c.customers_firstname, c.customers_lastname order by
	   prodcount DESC";
	   $customers_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS,
	   $customers_query_raw, $customers_query_numrows);
	   $customers_query_numrows = tep_db_query("select customers_id from " . TABLE_ORDERS . " 
	   group by customers_id");
	   $customers_query_numrows = tep_db_num_rows($customers_query_numrows);

	   $rows = 0;
	   $customers_query = tep_db_query($customers_query_raw);
	   while ($customers = tep_db_fetch_array($customers_query)) {
	   $rows++;

	   if (strlen($rows) < 2) {
	   $rows = '0' . $rows;
	   }
	   ?>
		  <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href='<?php echo tep_href_link('stats_wishlist.php', 'cid=' . $customers['customers_id'], 'NONSSL'); ?>'">
			<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $rows; ?>
</td></tr>
</table>
			</td>
			<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo '<a href="' . tep_href_link('stats_wishlist.php', 'cid=' . $customers['customers_id'], 'NONSSL') . '">' . $customers['customers_firstname'] . ' ' . $customers['customers_lastname'] . '</a>'; ?>
</td></tr>
</table>
			</td>
			<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $customers['prodcount']; ?>
</td></tr>
</table>
			</td>
		  </tr>
   <?php
	   } # eof while
   } # eof if/else list or contents
   ?>
		</table></td>
	  </tr>
	  <tr>
		<td colspan="3"><table border="0" width="100%" cellspacing="0" cellpadding="2">
		  <tr>
			<td class="smallText" valign="top"><?php if (!isset($HTTP_GET_VARS['cid'])) echo $customers_split->display_count($customers_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_CUSTOMERS); ?></td>
			<td class="smallText" align="right"><?php  if (!isset($HTTP_GET_VARS['cid'])) echo $customers_split->display_links($customers_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page']); ?>?</td>
		  </tr>
		</table></td>
	  </tr>
	</table></td>
  </tr>
</table>

 

And in case you need to reference it, here is the original file that displays on the WebSite, which you coded to work with SPPC wishlist.php:

<?php

echo tep_draw_form('wishlist_form', tep_href_link(FILENAME_WISHLIST)); 

?>
<table border="0" width="100%" cellspacing="0" cellpadding="<?php echo CELLPADDING_SUB;?>">
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
	  <tr>
		<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
	  </tr>
	</table></td>
  </tr>

<?php
 if ($messageStack->size('wishlist_error') > 0) {
?>
	<tr>
	  <td align="center">
  <table border="0" cellspacing="0" cellpadding="0" width="100%" class="messageStackErrorBorderBackground">
	<tr>
	  <td align="center">
	<table border="0" cellspacing="0" cellpadding="0">
	<tr><td><br><?php echo $messageStack->output('wishlist_error'); ?><br></td></tr>
	</table>
	  </td>
	</tr>
  </table>
	  </td>
	</tr>
  <tr><td height="5"></td></tr>
<?php
}
 if ($messageStack->size('wishlist_success') > 0) {
?>
	<tr>
	  <td align="center">
  <table border="0" cellspacing="0" cellpadding="0" width="100%" class="messageStackSuccessBorderBackground">
	<tr>
	  <td align="center">
	<table border="0" cellspacing="0" cellpadding="0">
	<tr><td><br><?php echo $messageStack->output('wishlist_success'); ?><br></td></tr>
	</table>
	  </td>
	</tr>
  </table>
	  </td>
	</tr>
  <tr><td height="5"></td></tr>
<?php
 }

if (is_array($wishList->wishID) && !empty($wishList->wishID)) {
reset($wishList->wishID);

?>
  <tr>
	<td>
	<table border="0" width="100%" cellspacing="0" cellpadding="3" class="productListing">
	  <tr>
			<td width="15%" class="productListing-heading" align="center"><?php echo BOX_TEXT_SELECT; ?></td>
			<td width="25%" class="productListing-heading" align="center"><?php echo BOX_TEXT_IMAGE; ?></td>
			<td width="35%" class="productListing-heading" align="center"><?php echo BOX_TEXT_PRODUCT; ?></td>
			<td width="25%" class="productListing-heading" align="center">Price Information</td>
	  </tr>

<?php
$i = 0;
// <!-- SPPC -->
if(!tep_session_is_registered('sppc_customer_group_id')) { 
$customer_group_id = '0';
} else {
$customer_group_id = $sppc_customer_group_id;
}

while (list($wishlist_id, ) = each($wishList->wishID)) {
$list_of_prdct_ids[] = tep_get_prid($wishlist_id);
if (tep_not_null($list_of_prdct_ids)) { // implode will give an error when $list_of_prdct_ids is empty
$specials_query = tep_db_query("select products_id, specials_new_products_price from " . TABLE_SPECIALS . " where products_id in ('" . implode("','",$list_of_prdct_ids) . "') and status = '1' and customers_group_id = '" . $customer_group_id . "'");
while ($specials_array = tep_db_fetch_array($specials_query)) {
$special_prices[] = array ('products_id' => $specials_array['products_id'], 'specials_new_products_price' => $specials_array['specials_new_products_price'] , 'final_price' => $specials_array['specials_new_products_price']);
} // end while ($specials_array = tep_db_fetch_array($specials_query)) 
} // end if (tep_not_null($list_of_prdct_ids)) 
} // end while (list($wishlist_id, ) = each($wishList->wishID))
reset($wishList->wishID);
// <!-- /SPPC -->

while (list($wishlist_id, ) = each($wishList->wishID)) {

$product_id = tep_get_prid($wishlist_id);
// <!-- SPPC -->
if ($customer_group_id == '0') {
$products_query = tep_db_query("select pd.products_id, pd.products_name, pd.products_description, p.products_image, p.short_desc, p.products_status, p.manufacturers_id, p.products_price, p.products_tax_class_id, NULL as specials_new_products_price, p.products_price as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = '" . $product_id . "' and p.products_id = pd.products_id and pd.language_id = '" . $languages_id . "'");
} else {
$products_query = tep_db_query("select pd.products_id, pd.products_name, pd.products_description, p.products_image, p.short_desc, p.products_status, p.manufacturers_id, pg.customers_group_price as products_price, p.products_tax_class_id, NULL as specials_new_products_price, pg.customers_group_price as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_GROUPS . " pg using(products_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = '" . $product_id . "' and p.products_id = pd.products_id and pd.language_id = '" . $languages_id . "' and pg.customers_group_id = '" . $customer_group_id . "'"); 
} // end if/else ($customer_group_id == '0')

$products = tep_db_fetch_array($products_query);

// add special price if there is one, replace final price in that case too
if (tep_not_null($special_prices)) {
for ($i = 0; $i < count($special_prices); $i++) {
if( $products['products_id'] == $special_prices[$i]['products_id'] ) {
$products['specials_new_products_price'] = $special_prices[$i]['specials_new_products_price'];
$products['final_price'] = $special_prices[$i]['final_price'];
}
}
} // end if (tep_not_null($special_prices))
// <!-- /SPPC -->

if (($i/2) == floor($i/2)) {
$class = "productListing-even";
} else {
$class = "productListing-odd";
}
?>
			  <tr class="<?php echo $class; ?>">

<!-- Modification Check Box -->
<?php							if($products['products_status'] == 0) {
?>					<td width="15%" align="center" class="productListing-data"><?php echo tep_draw_checkbox_field('add_deleteprod[]',$wishlist_id); ?></td>
<?php			   } else {
?>					<td width="15%" align="center" class="productListing-data"><?php echo tep_draw_checkbox_field('add_wishprod[]',$wishlist_id); ?></td>
<?php			   }
?>
<!-- /Modification Check Box -->

				<td width="25%" class="productListing-data" align="center">

<!-- Modification Image -->
<?php if (!tep_not_null($products['products_id'])) { // <!-- Delete Product Notice (via products_id) Image -->
?>					<br><?php echo tep_image(DIR_WS_IMAGES . 'arrow_green_left.gif'); ?><b><font color="#FF0000"> Please Delete </font></b><br><br>
<?php } else { // <!-- Delete Product Notice (via products_id) Image -->

	if($products['products_status'] == 0) {
// <!-- Modification Pic/No Pic -->
				if (tep_not_null($products['products_image'])) {
					echo tep_image(DIR_WS_IMAGES . $products['products_image'], $products['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
				} else {
				  echo tep_image(DIR_WS_IMAGES . 'no_image.gif');
				}

// <!-- /Modification Pic/No Pic -->
	} else {
// <!-- Modification Pic/No Pic -->
				if (tep_not_null($products['products_image'])) {
?>					<script language="javascript"><!--
		  document.write('<?php echo '<a href="javascript:popupWindow(\\\'' . tep_href_link(FILENAME_POPUP_IMAGE, 'pID=' . $products['products_id']) . '\\\')">' . tep_image(DIR_WS_IMAGES . $products['products_image'], addslashes($products['products_name']), SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>'; ?>');
		  //--></script>
		  <noscript>
		  <?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $products['products_image']) . '" target="_blank">' . tep_image(DIR_WS_IMAGES . $products['products_image'], $products['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>
		  </noscript>
<?php			   } else {
				  echo tep_image(DIR_WS_IMAGES . 'no_image.gif');
				}
// <!-- /Modification Pic/No Pic -->
	}
} // <!-- Delete Product Notice (via products_id) Image -->

?>
<!-- /Modification Image -->

				</td>

<!-- Modification Name -->
<?php if (!tep_not_null($products['products_id'])) { // <!-- Delete Product Notice (via products_id) Name -->
?>					<td width="35%" align="center" class="productListing-data">
<?php } else { // <!-- Delete Product Notice (via products_id) Name -->
				if($products['products_status'] == 0) {
?>					<td width="35%" align="center"><table border="0" cellpadding="3" cellspacing="0" width="96%"><tr><td align="center" class="productListing-data"><b><?php echo $products['products_name']; ?></b>
<?php			   } else {
?>					<td width="35%" align="center"><table border="0" cellpadding="3" cellspacing="0" width="96%"><tr><td align="center" class="productListing-data"><b><a href="<?php echo tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $wishlist_id, 'NONSSL'); ?>"><?php echo $products['products_name']; ?></a></b>
<?php			   }
} // <!-- Delete Product Notice (via products_id) Name -->
?>
<!-- /Modification Name -->

				<input type="hidden" name="prod_link[]" value="<?php echo tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $wishlist_id, 'NONSSL'); ?>" />
				<input type="hidden" name="prod_name[]" value="<?php echo $products['products_name']; ?>" />
<?php

/*******************************************************************
******** THIS IS THE WISHLIST CODE FOR PRODUCT ATTRIBUTES  *********
*******************************************************************/

			  $attributes_addon_price = 0;

			  // Now get and populate product attributes
				$att_name = "";
				if (isset($wishList->wishID[$wishlist_id]['attributes'])) {
					while (list($option, $value) = each($wishList->wishID[$wishlist_id]['attributes'])) {
						  echo tep_draw_hidden_field('id[' . $wishlist_id . '][' . $option . ']', $value);

	 					$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 = '" . $wishlist_id . "'
								   and pa.options_id = '" . $option . "'
								   and pa.options_id = popt.products_options_id
								   and pa.options_values_id = '" . $value . "'
								   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);

				   		if ($attributes_values['price_prefix'] == '+') {
							$attributes_addon_price += $attributes_values['options_values_price'];
				   		} else if($attributes_values['price_prefix'] == '-') {
					 		$attributes_addon_price -= $attributes_values['options_values_price'];
						}
						$att_name .= " (" . $attributes_values['products_options_name'] . ": " . $attributes_values['products_options_values_name'] . ") ";

// <!-- Modification Attributes -->
if (tep_not_null($products['products_id'])) { // <!-- Delete Product Notice (via products_id) Attributes -->
			   	if ($attributes_values['options_values_price'] > 0) {
				   echo '<br /><small><i>' . $attributes_values['products_options_name'] . ': ' . $attributes_values['products_options_values_name'] . '</i></small><br><span style="font-family: Arial; font-size: 7pt">+?' . $currencies->display_price($attributes_values['options_values_price'], tep_get_tax_rate($products['products_tax_class_id'])) . '?<font color="#FF0000">(</font>included in price<font color="#FF0000">)</font></span>';
			   	} else {
				   echo '<br /><small><i> ' . $attributes_values['products_options_name'] . ': ' . $attributes_values['products_options_values_name'] . '</i></small>';

					} // end while attributes for product
					} // end if ($attributes_values['options_values_price'] > 0)
				}
} // <!-- Delete Product Notice (via products_id) Attributes -->
// <!-- /Modification Attributes -->

				echo '<input type="hidden" name="prod_att[]" value="' . $att_name . '" />';

				$products['specials_new_products_price'] = tep_get_products_special_price($products['products_id']); 
			   	if (tep_not_null($products['specials_new_products_price'])) {
//				  $products_price = '<b><span class="productSpecialPrice">SPECIAL</span> <br>' . $currencies->display_price($products['specials_new_products_price']+$attributes_addon_price, tep_get_tax_rate($products['products_tax_class_id'])) . '</b>';
			   	$products_price = '<s>' . $currencies->display_price($products['products_price']+$attributes_addon_price, tep_get_tax_rate($products['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price($products['specials_new_products_price']+$attributes_addon_price, tep_get_tax_rate($products['products_tax_class_id'])) . '</span>';
			   	} else {
				   	$products_price = '<b>' . $currencies->display_price($products['products_price']+$attributes_addon_price, tep_get_tax_rate($products['products_tax_class_id'])) . '</b>';
				}

/*******************************************************************
******* CHECK TO SEE IF PRODUCT HAS BEEN ADDED TO THEIR CART *******
*******************************************************************/

		if($cart->in_cart($wishlist_id) && ($products['products_status'] != 0)) {
			echo '<br /><font color="#FF0000"><b>Item in Cart</b></font>';
		}

		$i++;
?>

<!-- Modification Name - Short Description -->
<?php if (!tep_not_null($products['products_id'])) { // <!-- Delete Product Notice (via products_id) Name - Short Description -->
?>					<br><b><font color="#FF0000"> Product Is No Longer Available </font></b><br><br>
<?php } else { // <!-- Delete Product Notice (via products_id) Name - Short Description -->
				if($products['products_status'] == 0) {
?>					</td></tr><tr><td class="productListing-data" style="text-align: Justify; line-height: 125%"><?php echo $products['short_desc']; ?></td></tr></table>
<?php			   } else {
?>					</td></tr><tr><td class="productListing-data" style="text-align: Justify; line-height: 125%"><?php echo $products['short_desc']; ?></td></tr><tr><td align="right"><a class="popUpNavigation" href="<?php echo tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']); ?>">More Information >>></a></td></tr></table>
<?php			   }
} // <!-- Delete Product Notice (via products_id) Name - Short Description -->
?>
<!-- /Modification Name - Short Description -->

		</td>

<!-- Modification Price -->
<?php if (!tep_not_null($products['products_id'])) { // <!-- Delete Product Notice (via products_id) Price -->
?>					<td width="25%" class="productListing-data" align="center" nowrap><b><font color="#FF0000"> Check & Update </font></b></td>
<?php } else { // <!-- Delete Product Notice (via products_id) Price -->
				if($products['products_status'] == 0) {
?>					<td width="25%" class="productListing-data" align="center"><b>Item Is Currently<br><font color="#FF0000">NOT ?AVAILABLE</font></b></td>
<?php			   } else {
?>					<td width="25%" align="center" class="productListing-data"><?php echo $products_price; ?></td>
<?php			   }
} // <!-- Delete Product Notice (via products_id) Price -->
?>
<!-- /Modification Price -->

	  </tr>

<?php
	}
?>
	</table>
	</td>
  </tr>
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  <tr>
	<td align="center" class="wishList">Update The Wish List By Placing A Check In The Check Box To The Right Of The Item(s)<br>Then Click On Either The "ADD TO CART" Or The "DELETE" Button Below</td>
	  </tr>
<!-- 		  <tr>
			<td height="5"></td>
	  </tr>
	  <tr>
		<td align="center" class="main"><?php // echo BOX_TEXT_WISHLIST_HELP_WHOLESALE;?></td>
	  </tr>
-->		</table></td>
  </tr>
  <tr>
	<td><table border="0" width="100%" cellspacing="1" cellpadding="0" class="infoBox">
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="3">
  <tr class="infoBoxContents">
	<td align="center"><?php echo tep_image_submit('button_delete.gif', ' Delete From Wish List ', 'name="delete_prod" value="delete_prod"'); ?></td>
	<td align="center"><?php echo tep_image_submit('button_in_cart.gif', ' Add to Cart ', 'name="add_prod" value="add_prod"'); ?></td>
	  </tr>
	</table></td>
  </tr>
	</table></td>
  </tr>
</table>
<?php

/*******************************************************************
*********** CODE TO SPECIFY HOW MANY EMAILS TO DISPLAY *************
*******************************************************************/

if(!tep_session_is_registered('customer_id')) {

?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
  <tr>
	<td align="center"><table border="0" cellspacing="0" cellpadding="0" width="96%">
  <tr>
	<td class="main" style="text-align: Justify; line-height: 125%"><?php echo WISHLIST_EMAIL_TEXT_GUEST; ?></td>
  </tr>
	</table></td>
  </tr>
  <tr>
	<td align="center">
		<table border="0" width="100%" cellspacing="0" cellpadding="2">
		  <tr>
			<td align="center" class="main"><table cellpadding="2" cellspacing="0">
			  <tr>
				<td class="main"><?php echo TEXT_YOUR_NAME; ?></td>
				<td class="main"><?php echo tep_draw_input_field('your_name', $your_name); ?><b><font color="#FF0000"> ?*</font></b></td>
				</tr>
				<tr>
				<td class="main"><?php echo TEXT_YOUR_EMAIL; ?></td>
				<td class="main"><?php echo tep_draw_input_field('your_email', $your_email); ?><b><font color="#FF0000"> ?*</font></b></td>
				</tr>
			</table></td>
		  </tr>
		  <tr>
			<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
		  </tr>
		  <tr>
			<td align="center"><?php echo tep_draw_separator('pixel_black.gif', '100%', '1'); ?></td>
		  </tr>
		  <tr>
			<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
		  </tr>
<?php 

} else {

?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
  <tr>
	<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  </tr>
  <tr>
	<td align="center"><table border="0" cellspacing="0" cellpadding="0" width="96%">
  <tr>
	<td class="main" style="text-align: Justify; line-height: 125%"><?php echo WISHLIST_EMAIL_TEXT; ?></td>
  </tr>
	</table></td>
  </tr>
  <tr>
	<td align="center">
		<table border="0" width="100%" cellspacing="0" cellpadding="2">

<?php
}

$email_counter = 0;
while($email_counter < DISPLAY_WISHLIST_EMAILS) {
?>

  <tr>
	<td align="center">
		<table border="0" width="98%" cellspacing="0" cellpadding="2">
		  <tr>
			<td align="center" class="main"><table cellpadding="2" cellspacing="0">
			  <tr>
				<td class="main"><?php echo TEXT_NAME; ?></td>
				<td class="main"><?php echo tep_draw_input_field('friend[]', $friend[$email_counter]); ?><b><font color="#FF0000"> ?*</font></b></td>
				</tr>
				<tr>
				<td class="main"><?php echo TEXT_EMAIL; ?></td>
				<td class="main"><?php echo tep_draw_input_field('email[]', $email[$email_counter]); ?><b><font color="#FF0000"> ?*</font></b></td>
				</tr>
			</table></td>
		  </tr>

<?php
$email_counter++;
}
?>
		  <tr>
			<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
		  </tr>
  <tr>
	<td align="center"><table border="0" width="70%" cellspacing="0" cellpadding="0">
		  <tr>
			<td class="main"><?php echo TEXT_MESSAGE .  tep_draw_textarea_field('message', 'soft', 25, 3); ?></td>
		  </tr>
	</table></td>
  </tr>
		  <tr>
			<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '5'); ?></td>
		  </tr>
  <tr>
	<td><table border="0" width="100%" cellspacing="1" cellpadding="0" class="infoBox">
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="3">
  <tr class="infoBoxContents">
	<td align="center"><?php echo tep_image_submit('button_send.gif', IMAGE_BUTTON_SEND_WISHLIST, 'name="email_prod" value="email_prod"'); ?></td>
	  </tr>
	</table></td>
  </tr>
	</table></td>
  </tr>
		  <tr>
			<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '15'); ?></td>
		  </tr>
		</table>
	</td>
  </tr>
</table>
	</td>
  </tr>
</table>
</form>
<?php

} else { // Nothing in the customers wishlist

?>
<table border="0" width="100%" cellspacing="0" cellpadding="5">
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
	  <tr>
<?php if ($customer_group_id == '0') {
?>			<td align="center" class="main"><?php echo BOX_TEXT_NO_ITEMS_RETAIL;?></td>
<?php } else {
?>			<td align="center" class="main"><?php echo BOX_TEXT_NO_ITEMS_WHOLESALE;?></td>
<?php
  }
?>
	  </tr>
	</table>
	</td>
  </tr>
</table>

<?php 
}
?>

 

Thanks in advance.

 

Carlos

 

Carlos,

I think this should work as replacement for those two lines in tep_remove_product:

	tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" .  (int)$product_id . "{');");
tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" .  (int)$product_id . "{');");

That will look for product id's that are exactly alike and those that start with the correct product id (REGEXP ^ looks for strings that "start with"). Have tried this with a MySQL client, but not in the osC code so use caution.

 

Jan,

 

I didn't even get this response, till just now... Thank you for looking into this - I will try it now, and let you know!

 

Carlos

Link to comment
Share on other sites

Carlos,

$products_query_raw = tep_db_query("select * from customers_wishlist where customers_id = '".
$HTTP_GET_VARS['cid']."'");
while($products = tep_db_fetch_array($products_query_raw)) { 
?>
<tr class="dataTableRow">
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $products['products_name']; ?>
</td></tr>
</table>
</td>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $products['products_model']; ?>
</td></tr>
</table>
</td>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $currencies->format($products['products_price']); ?>

I can't see anything wrong with this. That is... if in the table customers_wishlist there are fields: products_name, products_model, products_price which seems questionable because it would mean storing the same information in two tables. Are you sure the same query in phpMyAdmin gives the same result?

Link to comment
Share on other sites

Carlos,

I think this should work as replacement for those two lines in tep_remove_product:

	tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" .  (int)$product_id . "{');");
tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" .  (int)$product_id . "{');");

That will look for product id's that are exactly alike and those that start with the correct product id (REGEXP ^ looks for strings that "start with"). Have tried this with a MySQL client, but not in the osC code so use caution.

 

Jan,

 

This seems to work perfectly! I also modified the Wish List TABLES, and seems to work with them as well!

 

	tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" . (int)$product_id . "{');");
tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" . (int)$product_id . "{');");

/* <!-- Wish List --> */
tep_db_query("delete from " . TABLE_WISHLIST . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" . (int)$product_id . "{');");
tep_db_query("delete from " . TABLE_WISHLIST_ATTRIBUTES . " where (products_id = '" . (int)$product_id . "' or products_id REGEXP '^" . (int)$product_id . "{');");
/* <!-- /Wish List --> */

 

Pretty awesome!

 

Now, I haven't done anything yet in so far as reporting a bug. Is there any reason for me not to report the bug, as well as report your fix?

 

Carlos

Link to comment
Share on other sites

Carlos,

$products_query_raw = tep_db_query("select * from customers_wishlist where customers_id = '".
$HTTP_GET_VARS['cid']."'");
while($products = tep_db_fetch_array($products_query_raw)) { 
?>
<tr class="dataTableRow">
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $products['products_name']; ?>
</td></tr>
</table>
</td>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $products['products_model']; ?>
</td></tr>
</table>
</td>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td class="dataTableContent">
<?php echo $currencies->format($products['products_price']); ?>

I can't see anything wrong with this. That is... if in the table customers_wishlist there are fields: products_name, products_model, products_price which seems questionable because it would mean storing the same information in two tables. Are you sure the same query in phpMyAdmin gives the same result?

 

Jan,

 

Yes, you are correct again! Dennis Blake who re-wrote the Wish List contribution just told me that:

The previous wishlist_stats, I think housed the product name, model number, and price in that table. I did not do that because prices and names can change. What you need to do is join the products and products description tables into the query to query your name, price, and model number.

 

Now I will try and figure out how to do this... Thanks for looking into it!

 

Carlos

Link to comment
Share on other sites

Thanks for such a great contribution! The support in this forum is wonderful.

 

I was thinking about using this contribution (Shipping, Order Processing module, http://www.oscommerce.com/community/contributions,832) with SPPC.

 

This module offers many features that will be extremely useful on my site. My PHP skills are limited, could someone take a look at this to see if it will work with SPPC?

 

It would be great to incorporate this module into the next revision of SPPC.

 

Thanks for your time and help.

Link to comment
Share on other sites

I can't seem to find any place to enter the company name or the company tax id number.

 

Another possibility: In the admin/configuration section, under Customer Details, make sure Company (Display company in the customers account) is set to true.

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