Customizable Products with Shared SKU's

I know its been mentioned before, but the line item manager is by-and-large the most confusing change from Ubercart to Drupal Commerce.

It's too bad I didn't get a chance to sit in on Ryan's talk at DrupalCon Chicago (so many sessions, so little time)!

Anyway, I'm working for a manufacturing company that sells customizable products, wherein about 100 base SKUs can have many attributes applied to them. Line Items (just a new nomenclature?) make sense (at least in the Manufacturing world) here, but enforcing that every combination yield a new product does not.
Have I misunderstood the Commerce initiative? As of yet, Ubercart is an easier to understand solution, but I like the flexibility available to me through Drupal Commerce.

Take, for instance, a car. The auto manufacturer might sell model X-123 with over 50 various attributes applied to it. But not every combination of those attributes changes the base SKU.

Nowhere on the demo site, on Drupal.org, or here, have I found anything that clearly describes what a "Product" is, what a "Line Item" is, and how they are properly associated with one another--to the visitor, the store manager, or the site administrator.

Posted: Mar 15, 2011


liup (not verified) on March 31, 2011

This topic interests me as well, as I need to have customized product for my project as well.
As the line item : in my understanding, it is a concept made to make your cart more scalable in the future with other contrib modules. Say the Shipping module for instance: it creates a new type of line item to let you charge shipping fees to your client independently from your products. We can also think about a specific tax (say ecological tax) that would be applied in a fixed manner to every cart containing an electronic product for instance : instead of having a new tax type which behaves quite differently from the other taxes (% of a product price, or total order).

The association is as follow : 1 order consists of _several_ lines items, while a line item references a product (think of it as one line in your invoice)

As for the customizable product, I think a reasonable workaround for this requirement would be to create one "standardized" product (say CAR-1) then several products which would be somehow related to this CAR-1, say
CAR-1-AC, 800$
and so on .... then you'll have to work the UI so that the ordering workflow is consistent with your product and options.

Another option which would require a contrib module (i think) would be to have Line items bundles CRUD UI, with the possibility to assign line items to a product, I guess that possibility would require more thoughts

Hope it helps


switch on November 18, 2011

I've been searching everywhere for an answer for this and here are a few things I found:

  1. Ryan commented about attributes...but it was in 2009:
    "It doesn't adequately consider product describers, but that's just because we haven't got that far. It's definitely on the radar! : )"
  2. I'm currently looking into Commerce Product Attributes and Commerce Product Bundle. I'm not sure where this will get me or if it's the right direction.

Drupal Commerce seems to currently be the cleanest and most "Drupal initiative friendly" commerce system on Drupal and I don't want to dirty it by creating anything custom or waste too much time on a hacky work-around.

Not sure how comment pop up on Ryan or Randy's radars so if I don't hear anything i'll try to post this (or a link to it) elsewhere.


rfay Randy Fay on November 18, 2011

Well, Custom line item types are the new way of thinking about this problem, but the tools around them have not yet matured.

Right now, Commerce thinks of a product as one-to-one with a SKU.

Amazon has unique SKUs, but a SKU may describe a "master product" *or* a variant. It's an interesting concept.

Brian on November 19, 2011

I have not much experience with SKUs or how to code a complete Drupal module. But maybe I can trigger some thoughts. Reading this lets me think of modular (dynamic?) SKUs. E.g. a Product has a base block followed by digits of attributes. If the customer changes the Attribute, the SKU will be re-written.

In my new Shop I have Products with different sizes, colors and patterns, so I'd do the SKU like this:


SKU: BAG-15-red-stripes

If the color is changed by the visitor from red to green, the SKU will be re-written in BAG-15-green-stripes which will be used for the shopping cart (and maybe trgger images etc...).

This could bekome complicated quite quick (like attaching the attributes to the sku-syntax) so maybe a simpler solution might be better.

switch on November 22, 2011

In Drupal Commerce, for your situation the way that works well with the system is to:

- modify the product type to include 3 new fields as list items (size, color, and pattern)
- create a different products with a different sku for each combination (could be done quickly with excel and feeds importers)
- add a product display for each base product (could also be done with excel and feeds importers) and list the skus associated with that base product in the product display product field

Randy has some good videos on this out there.

switch on November 30, 2011

With so many different upgrades it doesn't make sense to create a sku for each.

How do you currently handle these "Checkbox" type add-ons?

Randy or Ryan - Even if you don't have time to tackle something like this, would you mind sharing your thoughts on the best way to achieve it with DC? Maybe I could take a stab a coding it. Thanks! =>switch<=