Take product in/out of stock (adjust inventory)
Select "Operations - Find Inventory":
Enter a product name or the SKU (without the prd_):
Select the item SKU (the one without the prd_) and select “Adjust Quantity”:
Select “Decrease…” and enter a value equal to the current inventory to take it out of stock, or select “Increase…” and give it whatever value you wish to put it back in:

Print This Post
In Home Assembly, the grinch (only I didn’t say grinch I said another word) of Wonderland.
So everytime we start a new site, and I've been doing a lot of them lately but you wouldn't know it because they never go live, we have to set up In Home Assembly on the big 3 (treadmills, ellipticals, exercise bikes). this always gets me because I can never remember the correct way to do a merchadising association. Therefore, for this cause have i decided to write this post in order that I can remember how to do these things next time.
the first few steps are easy so we'll breeze through them.
- Create a new category in the master catalog.
- Create new products for In Home Assembly in the new category in the master catalog.
- set prices on said new products in the new category in the master catalog. (I think you see where this is going)
- generate SKUs on the new products in the new category in the master catalog.
- edit SKU's ID in the new products in the new category in the master catalog.
Now here comes the tricky part, Setting up Merchandising Associations:
- in Accelerator go to Merchandise -> Find Merchandising Associations
- change "Number of Search results" at bottom of page to as many as possible.
- click "Find" (if it feels weird cuz you never typed anything just ignore that).
- find product SKU that you want to Associate In Home Assembly with.
- click little check box to left of said SKU (make sure no other checkboxes are clicked or you'll pull your hair out).
- in the "code" box to the right type the SKU of desired In Home Assembly thingy.
- click Add
- you should see two new drop down boxes appear under "Target Catalog Entries" if you don't you have too many checkboxes checked, uncheck some and start agian, but don't start at the beginning start at the middle.
- the first checkbox "Association" should be set to "up sell" there is a trick to this cuz once you click the drop down you have to click it again...you'll see.
- the next "Schematic" should be set to "none"
- click save
- find next product SKU and start all over again, but don't start from the beginning start from the middle.
if you have any questions just look at how it was done on previous sites (ProForm, NordicTrack [even though it never went live], Reebok, Weslo, WorkouWarehouse, and now HealthRider).
Print This Post
Password Woes
So a few things I've noticed about Passwords here at wonderland are that none of them have the same restrictions/parameters.
Lets start with the Windows Password:
- minimum length: I think it's 6 characters
- Maximum Length: not sure if there is one but there is a rumor floating around that it's 127 chars.
- Special Chars allowed: Yes
- Quirkiness: nothing so far but stay tuned.
Accelerator Passwords (better split this up):
Ecom2:
- minimum length: not sure but I think 6 chars.
- maximum length: haven't hit one yet (up to 11 chars)
- Special Chars allowed: not sure
- Quirkiness: nothing so far.
WCDEV/WC6:
- minimum length: 8 characters
- maximum length: ?
- Special Chars allowed: not sure
- Quirkiness: besides it doesn't match ECOM2? nothing.
iSeries/WCDEV (server):
- minimum length: 6?
- maximum length: at least 10 maybe less my 11 char password failed on me
- Special Chars allowed: not sure
- Quirkiness: if you are trying to log into the file system either through start/run or on a saved link/mapped ip you will have to match up this password with your windows password or you'll be pulling your hair out trying to make it all happen, and you'll still fail. Also Ryan has informed me that Passwords contiaining capitol letters fail on this (I think when trying to access the filesystem) and someone mentioned that a number starting a password is a bad idea (also fails some how).
So to sum it up if you want to make all your paswords match when you change (every 45 days) you will have to keep them between 8 and 10 chars ( or maybe 8 and 8 chars) and you probably don't want to use capital letters AND you may want to avoid starting your password with a number.
On a more exciting note Brett has informed me that Accelerator doesn't force a password change like windows does ( i'm not sure it forces a change at all, and the iseries password can be different from the accelerator password so my suggestion/plan is to use one password for all accelerator logins and then just change the windows and iseries/wcdev password as needed.
if I had the clout to do anything about it all I would but alas i'm merely a drudgen.
Print This Post
Import Explosions: how to calm the storm
So we recently started rebuilding our ProForm site (and by rebuilding I mean from the ground up...mostly), and lucky me I was placed on import duty. Well being the freakin' genius that I am I realized that .csv files for WorkoutWarehouse would likely work on Proform since we generally don't change them on the 6.0 stores (we tend to like to try to pretend we keep things standardized). So I grabbed me some WW goodness and commenced importing. I only had about 12 .csv files on me but it was enough to get a few products to test and build with.
Not long after the imports we noticed we couldn't add products to the shopping cart, we kept getting some bizzarre error saying that it couldn't resolve the product ID from the SKU.
MENTAL NOTE: when getting the aforementioned error check the "defining attributes"
I'd seen this error before on NordicTrack and I knew it has something to do with, you guessed it, the sku. However I was too involved in my own little world to do anything about it so Phil dug in and found that somehow our descriptive attributes from the .csv were placed in the wrong attributes section...instead they were placed as "defining attributes" which is bad because we all know that each defining attribute is a SKU. Once we deleted all defining attributes the products worked fine, however we were still stuck with the problem of what to do about the lousy imports that we would get should we try anymore .CSV's.
Turns out the answer is quite simple...there is a certain DTD (wcs.dtd) that needs to be defined to do what you want it to do and in our case on ProForm it was not defined so well. the trick here is to steal one you know works for the site you are on. Which brings me to the whole point of this post, all I really wanted to do was plaster this path somewhere else so when I run into this agian I have a better chance of stumbling onto a solution before it's too late. Sure I could go on about how to properly write a DTD and make it do what you want, but that would cut into my Reaper time?
the path you've all been waiting for, the path that contains all DTD's from WorkoutWarehouse to Proform and everything in Europe is:
\\wcdev\QIBM\UserData\WebSphere\AppServer\V6\ND\profiles\wcdev6\nulltemp\catalogimport
Print This Post
Proform _SUB products
FYI, if you get a tasks asking you to change the price of a product on proform and said product has a duplicate (or _SUB product) DO NOT change the price of the _SUB product unless asked to, or asked to change the price of the 'Beneplace' product.
I suppose some will need a reason for this. It's simply because the _SUB products are used for a hidden category that can only be reached by direct link. If you change the price of the _SUB product you will likely eliminate the special deals we give to those customers.
Print This Post
Awesome Image Evolution
So a while back, and by a while I mean about 3 months or so ago Marketing decided they'd like to show some eye catching images on some of the products on two of our sites...lucky me I got this task and at the time accomplished this the only way I could think of (and I'm not sure why it's the only thing I could think of). What I did was use Field 4 as a place holder for a phrase/word that would trigger an image to be shown if a proper word/phrase was in that field. The code looked quite similar to the following:
<wcbase:useBean id="product" classname="com.ibm.commerce.catalog.beans.ProductDataBean" scope="request" /> <c:if test "${product.field4 == 'blah'}"> <img src="blah"/> </c:if> |
While functional and handy for keeping any rougue phrases from triggering a false image this is not ideal, especially when your marketing group keeps adding more and more images to display...I think now we are up to around 8.
So about a month or so ago Phil got a task to add yet another image and while consulting about it we decided it would be better to change the code so that there weren't so many if's in our code. So we chaged it to the following:
<wcbase:useBean id="product" classname="com.ibm.commerce.catalog.beans.ProductDataBean" scope="request" /> <c:if test="${product.field4 != ''}"> <img src="<c:out value="${jspStoreImgDir}${product.field4}"/>.jpg" alt="<c:out value="${product.field4}"/>" /> </c:if> |
This is much better because it allows us to put any value in field4 and then the code will strip that value and slap a .jpg on the end, so as long as we have a value.jpg image it will show up. However we did find a bug in this, apparently if you have had a value in field4 and deleted said value it confuses the code and websphere will still look for a .jpg image which of course is nowhere to be found, and if viewed in the wrong browser (ie IE) a missing image will appear (funny how missing images can appear). So recently we've changed this code yet again and this time I think we nailed it, have a look:
<wcbase:useBean id="product" classname="com.ibm.commerce.catalog.beans.ProductDataBean" scope="request" /> <c:if test="${!empty product.field4}"> <img src="<c:out value="${jspStoreImgDir}${product.field4}"/>.jpg" alt="<c:out value="${product.field4}"/>" /> </c:if> |
The empty seems to ignore any previously entered values and focus on the fact that the field is empty and not so much look for a null value.
THE END
Print This Post
Change Pages in Accelerator (Dynamic Text)
So Ben has requested that we do this in all of our new 6.0 stores, and at one time or another we've all seen how dynamic text has helped save us time (replacing zingers, bugs, etc) and cut down on hard-coding in our jsp files. It also helps make our sites more internationally friendly (since our international team can just grab the localized text files and edit them for what they need
). So here we go, here is how to add some dynamic text into a page that you can then edit through accelerator.
To define the new dynamic text message for the store and the Change Pages page:
- 1. Navigate to the following directory:
* WC_eardir/Stores.war/WEB-INF/classes/ConsumerDirect
* Cloudscape workspace_dir\Stores\WebContent\WEB-INF\classes\ConsumerDirect - 2. Open the storetext_dynamic_locale.properties file for editing.
- 3. Insert the following text at the end of the file:
# ShoppingArea/DiscountSection/DiscountDetailsDisplay.jsp
Discount_Disclaimer = Some restrictions may apply. Discount cannot be combined with other offers. - 4. Save and close the file.
- 5. Open the storetext_dynamic_labels_locale.properties file, located in the same directory, for editing.
- 6. Insert the following text at the end of the file:
# ShoppingArea/DiscountSection/DiscountDetailsDisplay.jsp
DiscountDisclaimer = Discount disclaimer
DiscountDisclaimer_Text = - 7. Save and close the file.
- 8. Restart your WebSphere Commerce instance to load the changed properties files.
To add the option for setting the discount disclaimer text to the Change Pages page:
- 1. Navigate to the following directory:
* WC_eardir/Stores.war/WEB-INF/xml/tools/stores/ConsumerDirect/devtools/storefront
* Cloudscape workspace_dir\Stores\Web Content\WEB-INF\xml\tools\stores\ConsumerDirect\devtools\storefront - 2. Open the StoreFront.xml file for editing.
- 3. Add the following lines to the store-front-text element:
- 4. Save and close the file.
Open your jsp file and where you want your dynamic text to appear, insert the following.
- 1. <fmt:message key="Discount_Disclaimer" bundle="${storeDynamicText}"/>
- 2. Save and close the file.
That should do it... please note that WordPress strips out all the formatting, so we lose all our nice tabbing, that explains why the code above looks so poor. The bulk of this post was taken directly from IBM's tutorial website, so if you get lost, go there.
Print This Post
Changing payment prices when lower than $25
On some sites, namely NordicTrack and Weider it is quite simple to change a payment price to lower than the minimum ($25) if that product already has a payment price lower than $25.
All you need to do is find the product in accelerator and go to the descriptive attributes, under the ICON tab look for the attribute with the "H" under "type" and then you can change the price in the Details tab.
Now if you have to add this ability to a product in either of the aforementioned sites it's not as simple as adding a descriptive attribute. It has something to do with modifying tables and changing helpcard logic, a lot of pish-posh that I don't currently have access to. But I leave this post simply because I wasted roughly 30 min. looking for a place to change the price in a properties table when it was in accelerator, and as frequently as I do it I'll likely forget by Tomorrow.
Edit: Actually the above paragraph is not true cuz I just logged into one of the sites and added some "H" attributes to a few products and it worked like a dream. So that Pish Posh above is just a bunch of Hocus Pocus someone fed me.
Print This Post
Using Accelerator Fields to set Images on Product Displays.
So you've got a marketing "genius" who would like to place variable images on various products throughout the website. This can be quite simply done with the use of a bean. You can use the "com.ibm.commerce.catalog.beans.ProductDataBean" to get the field information at the product level.
Simply declare your bean:
<wcbase:usebean id="product" classname="com.ibm.commerce.catalog.beans.ProductDataBean" scope="request"></wcbase:usebean>
Then wherever you need to access a field on the page you can call the bean and field like so:
<c:if test="${product.field4 == 'EXCLUSIVE'}">
<div><img src="<c:out value="${jspStoreImgDir}" />Exclusive.jpg" alt="Internet Exclusive" /></div>
</c:if>
Per the above example any product with the word "EXCLUSIVE" in field 4 will display the "Exclusive.jpg" image.
You can also use this logic in a choose statement and display different images.
e.g.
<c:choose>
<c:when test="${product.field4 == 'EXCLUSIVE'}">
<div><img src="<c:out value="${jspStoreImgDir}" />Exclusive.jpg" alt="Internet Exclusive" /></div>
</c:when>
<c:when test="${product.field4 == 'INTRODUCTORY OFFER'}">
<div><img src="<c:out value="${jspStoreImgDir}" />IntroOffer.jpg" alt="Introductory Offer" /></div>
</c:when>
<c:otherwise>
<div><img src="<c:out value="${jspStoreImgDir}" />Sale.jpg" alt="Sale" /></div>
</c:otherwise>
</c:choose>
Print This Post
.csv Import Hangs on Accelerator
Traditionally we've been having issues with .csv imports on Websphere 6.0. Normally we'd get about 12 products imported and on the next one Websphere will explode in a ball of fury sending flaming body parts all over the office (more precisely it hangs on the "please wait..." screen). As a work around I tried importing a file, then adding it to it's respective sales catalogs, this would typically take about 2 minutes at the most, then I'd wait for another 2-3 minutes before importing another file. by doing this I was able to import upwards of 18 products before the great explosion.
It's kind of a slow process and isn't so much a workaround as it is just delaying the inevitable but until further notice this is the best we have
Print This Post



