In GroovePacker we rely on the barcode to distinguish one product from another during scanning. We use the SKU to identify products and kits. In order for this to work we need each product to have a unique sku and we need each barcode to be associated with only one product.
If you have one physical item, like a punching bag, that can be called by two separate SKUs (ie HEAVY-BAG and HPUNCH-BAG) we can associate a single barcode with both of these SKUs by having both SKUs saved under the same product record. Any time than one SKU refers to the same item we pick our favorite and call it the "Primary SKU" and all other SKUs associated with the item are called Alias SKUs. This article explains more about Aliases.
So what if the items are different, but they share the same barcode. ie The punching bags come in 3 colors: black, red, and pink with rainbow stripes. The manufacture was lazy and just used the same barcode for all 3. The same could happen with different sizes or colors of a garment. In both cases, the non-unique barcodes are useless for distinguishing the items. The variants will need to be barcoded with a unique barcode that can be used to differentiate the items during scanning. If barcoding the items in-house is not an option you could assign a barcode that matches the SKU for each of them and allow the packers to just click-scan these items. Another option is to use a proxy barcode. You'd assign unique barcodes, likely generated from the SKU, and print them out on a sheet that the packers would scan, rather than scanning a barcode on the item itself.
Lastly, you may have a rare case where the items are different and you need to distinguish between them and or track inventory separately, but you would like to be able to scan the same barcode. Please see this article for info on shared barcodes.