The main core of ATG is commerce, now that we know the basics of the application, and understand the repositories, we can safely proceed to commerce.
Before we start with anything technical, you might like to re-visit our small article on HOW E-COMMERCE WORKS. (This is a very small article, and i would suggest you to read it once before you proceed with this article)
Before starting with any e-commerce application, or a real life store, we must have something to sell. In a supermarket or a big grocery store, all the items which they sell are neatly categorized, so that it is easy for a customer to find an item of his own choice.
We aim to take that experience online. In terms of ATG, a collection of all the categories, products, SKUs, promotions neatly organized into a single place is called a catalog. An ATG catalog contains a lot of other stuff required from e-Commerce perspective, which we will cover as and when needed.
WHAT IS CATALOG?
1. A Catalog consists of a number of categories.
2. Categories may contain subcategories OR Products OR both.
3. Each Product must have at-least one SKU.
4. SKU refers to "Stock Keeping Unit". You might go to a store and find a pair of Jeans of a particular brand and design. That is your "product". That product may have a number of sizes, each of which can be sold. That "sellable" item form actual stock is called a SKU.
5. A SKU may not be restricted to only size. A particular product may also be available in multiple colors. Therefore, in that case a color-size combination can be considered as a SKU.
Although, many brand consider a different color as a different product altogether. That depends on how you configure your SKU/Products as per your need.
See below diagram for more details.
HOW DOES ATG REPRESENT CATALOG?
ATG provides an out-of-the-box repository called /atg/commerce/catalog/ProductCatalog. This repository holds, catalog, categories, products, SKUs and a lot of other stuff. This repository is a versioned repository, and can only be modified by business users using Business Control Center (BCC) module of ATG.
Since, this is a repository, it must be having a repository-xml file to represent various item-descriptors it carries. If you see the definitionFiles property of this repository, you'll see that it refers to an XML, /atg/commerce/catalog/custom/customCatalog.xml
You can simply override this xml in your layer and customize the item-descriptors as per your need. There might be different ways of extending the product-catalog which we will cover soon.
NAVIGATION BEGINS AT ROOT CATEGORY!
A catalog may have a lot of categories, but it has to start the navigation from some place. There is a property in "catalog" item-descriptor called "rootCategories". We can specify any category-id as the value of this property. This category will be considered as the top-level of the product catalog. This property can have multiple values.
Let us not go into, HOW we populate this field. We will cover the population of data into ProductCatalog, when we cover BCC.
The whole structure of the catalog, like creating new catalogs/categories/products etc. can be done very easily via BCC. The linkage of catalog to categories, categories to products etc. is also done via BCC.
Now that we know what a catalog is, and how ATG represents it, we can now go on to understand the various ways of extending product catalog, apart from the standard way of extending repositories.