Option combinations....again vers 2.14

Trying to (better) re-word as I did not get any responses to my question yesterday.

*Question is regarding “Product Option Combinations”


  1. Say I have 50 styles of boots. Each style comes in 3 colors, 5 sizes and 3 widths.

    That means if I use this feature I have to manually enter 96 different model numbers for EACH style boot (AND manually upload 96 photos). This will take till 2015. Do most people use this feature?


  2. When customers look at a product, they select a black boot. I want the back boot pic to pop up. If they select brown, I want the brown pic to pop up. I understand to have this happen, I need to use the “option combination” feature". so I can put different pics in for each possibility. Is this true? Thank you so much! Stan

Re question 2:



You can add a picture for each variant you define, for each option. (Products/Options/edit/Variants/Extras) All variant images for that option will be displayed on your product page… When your customer clicks on one of these pictures, it will select the corresponding choice in the Option drop-down. And vice versa.



These variant pictures are very small, and don’t affect the primary product picture that is also displayed. I’m sure the size can be adjusted, but I haven’t looked for it.



Gary

Re question 1:

I humbly suggest you look at your problem a bit differently. You have three problem domains to consider:

  1. Your products and how you manage them.
  2. Your customer’s choice and how they find what they want.
  3. CS Cart and how it does or does not handle 1 and 2.



    Re 1: You have 50 styles of boots, in 3 colors, 5 sizes and 3 widths. I think that means that you have 2250 unique skus you have to manage in your business. You probably order, stock, sell and renew inventory by sku. Unless you are selling bunches of bananas, or eggs or such, your unit identifier is the sku (or UPC).



    Re 2: Unless you have a very small set of products, you’ll have to decide how you will organize your site and products to enable your customer to find what you want to sell, and what they want to buy. If you have a large number of products, this becomes a challenge, and is what sets off good site design from poor site design.



    However you decide to do it, your goal will be to assist your customer getting to a product page where they can make their final selection and place their order. In other words, they need to make a choice that translates into a sku that you use to fill their order.



    As far as I can tell, CS Cart doesn’t have anything called ‘sku’, but has a value called Product Code that is part of the general info associated with a ‘Product’. (When CS Cart transmits the Product Code to you when an order is placed, it labels it ‘SKU’, so I take them to be same.)



    Products in CS Cart, which have Product Codes (skus), can also have options with variants. But those don’t have corresponding skus. CS Cart doesn’t support sku specification at the lower level of option and variant descriptions. CS Cart will let you set up 50 styles of boots, each with color, size and width indicated. But these combinations won’t be coded as sku values, and your order invoice won’t report the correct sku for the unique combination of options selected.



    So I think CS Cart is fundamentally flawed in it’s ability to support normal and routine order processing as typically done in retail business. My opinion is this is very place most carts fail. Most carts do not anticipate needs like yours (common in retail), and do not make it easy, or even possible to do what you need and want.



    There are different ways to work around this flaw, but all require work, and diligence on your part to keep it all straight. And they defeat the use of Product Code to hold the sku value. For example, you can use the Options and Variants to add qualifying info to your order, either as text or sku numbers.



    It’s possible to avoid a lot a manual work by using the built-in upload/download features. Unfortunately, CS Cart doesn’t support the import of Option Variant info, so while you can use Options, you have to code them manually. A catch-22 condition for anyone with a normal number of complex products.







    I have the same problem you do - I have a product available in 2400 different combinations. The solution I’m working on is to make my website relatively simple, and present the user with carefully designed html tables for each product. These tables represent option combinations that are available. The item they select in the table takes them to a specific and unique product page (hidden otherwise to keep the site simple to navigate) for that particular option combination. From this point on, the cart behaves normally.



    I’d love to learn I’ve missed something, and that CS Cart really does handle these cases, but I haven’t found it. If it’s possible, maybe someone else will explain it.



    HTH, Gary

[quote name=‘garyr1@ix.netcom.com’]

Products in CS Cart, which have Product Codes (skus), can also have options with variants. But those don’t have corresponding skus. CS Cart doesn’t support sku specification at the lower level of option and variant descriptions. CS Cart will let you set up 50 styles of boots, each with color, size and width indicated. But these combinations won’t be coded as sku values, and your order invoice won’t report the correct sku for the unique combination of options selected.[/QUOTE]

This is not entirely true. When you build your option combinations, you can specify a product code (SKU) for each combination of options when tracking inventory with options. You can find a trick (post #30) to allow it to work when inventory is not tracked in the following thread:

[url]http://forum.cs-cart.com/showthread.php?t=16468&highlight=options[/url]



Bob

Thank you Gary and Bob,



This is excellent. Let me re-read these (and #30), and experiment.

I really appreciate you both taking the time to respond. Thanks again, Stan

  1. I know that I can use the “option combination” box will work for me, does one have to manually enter EVERY assigned “product code”, and upload the pic for every combination?



    Between different styles, colors and lengths of jeans,boots and shirts, I will easily have over 10,000 unique SKU’s. Using DSL, this will take days to manually type the product code and upload a picture for each one! Is there a shortcut?


  2. Do most people not worry about creating unique product codes this way, but rather just use descriptions generated to keep track of and place orders? I just cannot fathom that people actually MANUALLY enter 10,000 and 20,000 product codes and pics while using the “option combination” box. Thanks.

I believe that you can only do this manually. CS-Cart does not export/import the option product code or inventory amount. People have been asking that this be added.



I think it would be great if the product code could be built dynamically from the base product code plus the options. Many product codes are normalized this way (baseproduct-option1-option2).



Bob

Whoa! That would take me forever! I guess I will have to come up with another idea. Thank you Bob.

Bob -

Thank you for pointing out that capability. I had stumbled across it some time ago, but didn’t pursue it because I don’t see that it’s a set of values that can be imported. So in my case, where I’ve one product in 400 base configurations, each taking 6 combinations, This is just one product, and I have many that are structured this way. It’s impractical to code the info manually, and without the ability to import this info, I’m not sure how it can help.

Still looking, Gary

Someone with unused points should enter this into the UserVoice forum so that others can vote and leave their comments/suggestions:

[url]http://cscart.uservoice.com/forums/40782-general[/url]



It won’t get you immediate satisfaction but if enough people vote for it, it could be included in a future upgrade.



Bob

Your sizes and widths can be taken care of with Global options, but Im afraid the image pics cant. I did the same with my site, selling soccer kits,

many different colour strips and all with sizes and other options.

by uploading all the images to the server then just copying and pasting the image path into the images tab on the product description page, it didnt take weeks as i was expecting but it was about 3 days.



I know its not ideal but it was shorter than expected.

I also sell safety boots and safety footwear etc but only in the basic colours so that wont be as bad.



Good luck

John

[quote name=‘stangunner’]Whoa! That would take me forever! I guess I will have to come up with another idea. Thank you Bob.[/QUOTE]



I have coded a solution to this. Data digestability is my specialty :slight_smile:



I can create every possible combination of your boots with product codes and images. All done programatically. After creating an import for the main items, my scripts go through all itterations of applicable options and creates individual option variants for each new item. All the while creating the proper codes, confirming if the proper image is available and assigning it to the variant/product.



The only hang up right now is creating the “hashes” that are on each variant. I believe I’ll have this straight today or tomorrow.



The work around for this is still FAR LESS cumbersome than creating each variant combination manually. All you have to do is go to each main item and click “rebuild combinations”. This sets the hash values and VOILA!



Currently the script is not available for release to others as it is not complete and has no interface. I will be creating a CS-Cart import suite that I may make available at a modest cost.



Until then, if you need this sort of service, please PM me. :cool:



p.s. It can also do the qtys for all those rascally variants!

I have a curl script that can automatically insert options into products. You can loop it with this kind of function:



add_option($product_id,$option_id,$times_to_insert,$is_global=‘N’);



(you can mod the function for global to be implicitly ‘Y’)



With a matched product->has options array you can run my curl script:

(for this you would need already global options created and have and array that matches what products get what options. Then it is automatic insert through admin.php that emulates a user…



```php function add_option($item,$option,$times=1,$g=‘N’){

$post_data=“product_id=$item&selected_section=options&global_option%5Bid%5D=$option&global_option%5Blink%5D=$g&dispatch%5Bproducts.apply_global_option%5D=Apply”;

$url=‘https://website.com/admin.php’;

$cookie=‘my.c’;

$useragent=“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1”;

$referrer=‘https://website.com/admin.php?dispatch=products.update&product_id=’.$item;

for($i=0;$i<$times;$i++){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_REFERER, $referrer);

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

curl_setopt($ch, CURLOPT_HEADER,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);

$out = curl_exec($ch);

unset($ch);

sleep(1);

}

} ```



Before using this function, find another curl script in my posts for admin, you need to run the “login” part first so the cookies would have you marked as logged in.



Also, you need to change some URLs in the function to match your website and admin.php name.



This is what I have to play with demo website (note that demo login is not HTTPS and you would need to edit to HTTPS if you are editing that function to match your needs):



```php function login_demo(){

$url=‘Instant Demo - CS-Cart Multi-Vendor Demo Try Free for 15 days’;

$post_data=‘return_url=admin.php&user_login=admin&password=admin&dispatch%5Bauth.login%5D=Sign+in’;

$cookie=‘my.c’;

$useragent=“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1”;

$referrer=‘Instant Demo - CS-Cart Multi-Vendor Demo Try Free for 15 days’;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_REFERER, $referrer);

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

curl_setopt($ch, CURLOPT_HEADER,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);

$out = curl_exec($ch);

echo $out;

}



function add_option_demo($item,$option,$times=1,$g=‘N’){

$post_data=“product_id=$item&selected_section=options&global_option%5Bid%5D=$option&global_option%5Blink%5D=$g&dispatch%5Bproducts.apply_global_option%5D=Apply”;

$url=‘Instant Demo - CS-Cart Multi-Vendor Demo Try Free for 15 days’;

$cookie=‘my.c’;

$useragent=“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1”;

$referrer=‘Instant Demo - CS-Cart Multi-Vendor Demo Try Free for 15 days’.$item;

for($i=0;$i<$times;$i++){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_REFERER, $referrer);

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

curl_setopt($ch, CURLOPT_HEADER,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);

$out = curl_exec($ch);

unset($ch);

}

} ```



If you are to enter admin of demo cs-cart, you will see 2 global options:



Color with id 734 (hoover over edit to see the link in the status bar, last digit is the id)

and

Size with id 735



The id of a product can be found from admin in a similar manner without going into DB, but just looking at the link. With product id and option id you can start inserts in no time.



Then you would run login once then add_option as many times as you need.



My latest script (with my admin info that I don’t want to show here) has a last part that detects if the login was successful is:



```php if(stripos(‘Sign out’,$out)===false) return false;

return true ```



This returns true/false on login rather than echoing the output… You can apply your own logic.

I have a client that has thousands of products. They are fasteners that come in many materials, diameter, lengths and head styles. Each particular combination has it’s own product code, price and weight. I’ve had support add input fields for price and weight for each particular product code combination.



I’m in need of an easier way to do this. I have to add thousands of exceptions and option combinations. I’ve been doing this manually and it’s taken me months so far with many more to go. I know there has to be an easier way to upload this data. If anyone has any ideas other than what’s been posted here, let me know.



[COLOR=“DarkRed”]I will pay for someone to build a tool to make this happen. Send me a message or post with any ideas.[/COLOR]

I have CSC currently doing me a mod that will allow import of options also with price modifier import. This may be the type of thing your after

[quote name=‘jobosales’]This is not entirely true. When you build your option combinations, you can specify a product code (SKU) for each combination of options when tracking inventory with options. You can find a trick (post #30) to allow it to work when inventory is not tracked in the following thread:

[url]http://forum.cs-cart.com/showthread.php?t=16468&highlight=options[/url]



Bob[/QUOTE]



That fix only works if you want no inventory tracking on all of your products.

On our site, we have a warehouse for some items, but others are dropped shipped. Items that are drop shipped do not need any inventory tracking. So there doesn’t appear to be any solution to simply have a separate product code for options if they are not tracked. CSC isn’t going to do anything about that? Tracking or not, who doesn’t have different sku’s for different products? Options are simply different products grouped together. Has any bug been submitted?

Maybe I’m missing something simple but I’m pulling my hair out trying to figure this out:



I’ve added a product and given it a product number we’ll say Coat001. I’ve then added a size global option of five sizes to this product and selected “Track With Options”.



The products general information “In Stock” label has the link “edit” beside it which leads me to the products Inventory combinations. I then fill out let’s say four of the five sizes giving them unique codes and delete one as that size is not available.



I would expect a user not to be able to select the deleted size or for it to be removed from the product detaila page “sizes” drop down box. But this is not the case?!



When I select other options the correct product code is displayed and when I select the one that I deleted in the product inventory combinations, the default product number is displayed.



So is there any way to disable a global option from its product option box IF that option has been deleted or marked as out of stock (0) in the products inventory combination?



:confused:

I’m just after noticing that the add to cart button and quantity dissapear when I select the unavailbale size.

Anyone come up with a working solution for these issues?

[quote name=‘TexasGuy’]I have a curl script that can automatically insert options into products. You can loop it with this kind of function:



add_option($product_id,$option_id,$times_to_insert,$is_global=‘N’);



(you can mod the function for global to be implicitly ‘Y’)



With a matched product->has options array you can run my curl script:

(for this you would need already global options created and have and array that matches what products get what options. Then it is automatic insert through admin.php that emulates a user…



```php function add_option($item,$option,$times=1,$g=‘N’){

$post_data=“product_id=$item&selected_section=options&global_option%5Bid%5D=$option&global_option%5Blink%5D=$g&dispatch%5Bproducts.apply_global_option%5D=Apply”;

$url=‘https://website.com/admin.php’;

$cookie=‘my.c’;

$useragent=“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1”;

$referrer=‘https://website.com/admin.php?dispatch=products.update&product_id=’.$item;

for($i=0;$i<$times;$i++){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_REFERER, $referrer);

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

curl_setopt($ch, CURLOPT_HEADER,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);

$out = curl_exec($ch);

unset($ch);

sleep(1);

}

} ```



Before using this function, find another curl script in my posts for admin, you need to run the “login” part first so the cookies would have you marked as logged in.



Also, you need to change some URLs in the function to match your website and admin.php name.



This is what I have to play with demo website (note that demo login is not HTTPS and you would need to edit to HTTPS if you are editing that function to match your needs):



```php function login_demo(){

$url=‘Instant Demo - CS-Cart Multi-Vendor Demo Try Free for 15 days’;

$post_data=‘return_url=admin.php&user_login=admin&password=admin&dispatch%5Bauth.login%5D=Sign+in’;

$cookie=‘my.c’;

$useragent=“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1”;

$referrer=‘Instant Demo - CS-Cart Multi-Vendor Demo Try Free for 15 days’;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_REFERER, $referrer);

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

curl_setopt($ch, CURLOPT_HEADER,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);

$out = curl_exec($ch);

echo $out;

}



function add_option_demo($item,$option,$times=1,$g=‘N’){

$post_data=“product_id=$item&selected_section=options&global_option%5Bid%5D=$option&global_option%5Blink%5D=$g&dispatch%5Bproducts.apply_global_option%5D=Apply”;

$url=‘Instant Demo - CS-Cart Multi-Vendor Demo Try Free for 15 days’;

$cookie=‘my.c’;

$useragent=“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1”;

$referrer=‘Instant Demo - CS-Cart Multi-Vendor Demo Try Free for 15 days’.$item;

for($i=0;$i<$times;$i++){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_REFERER, $referrer);

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

curl_setopt($ch, CURLOPT_HEADER,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);

$out = curl_exec($ch);

unset($ch);

}

} ```



If you are to enter admin of demo cs-cart, you will see 2 global options:



Color with id 734 (hoover over edit to see the link in the status bar, last digit is the id)

and

Size with id 735



The id of a product can be found from admin in a similar manner without going into DB, but just looking at the link. With product id and option id you can start inserts in no time.



Then you would run login once then add_option as many times as you need.



My latest script (with my admin info that I don’t want to show here) has a last part that detects if the login was successful is:



```php if(stripos(‘Sign out’,$out)===false) return false;

return true ```



This returns true/false on login rather than echoing the output… You can apply your own logic.[/QUOTE]







Sounds nice… any idea on adding combinations and or exceptions ?





basically i need to figure HOW to use IMPORT format to add options with inventory…



BOOT

color = red,brown,blue

size= small,large



combos… (color/size/invent)

red/small/1

red/large/4

blue/small/32



etc…



options is ok for import…size and color can be passed… how can the system know about inventory ? if inventory is checked and track with options… does it ASSUME that when you send ITEM with option and inventory that is what it needs ?





example…

ITEM1, "Color: S[Black]; Size: S[Small];100

ITEM1, "Color: S[Black]; Size: S[Medium];50

ITEM1, "Color: S[Black]; Size: S[Large];30



it this it ?