In order to hide sub-products in emails, open the email templates under Configuration → Email Templates. In the templates where the individual items are listed, you will find a text section for inserting items that looks something like this:
{foreach item=details key=position from=$sOrderDetails}
{$position+1|fill:3} {$details.ordernumber|fill:10:" ":"..."}
{$details.articlename|fill:30} {$details.quantity} x
{$details.price|string_format:"%.2f"} {$sConfig.sCURRENCY}
{/foreach}
Replace this section with the following section. The new section checks a list that has been implemented by the product set plugin, which is used to ignore all sub-products.
{assign var=position value=1}
{foreach item=details key=index from=$sOrderDetails}
{assign var=itemEmailQuantity value=-1}
{if $EventResult && $EventResult.orderItemsWhitelist|is_array}
{foreach item=whitelistQuantity key=whitelistId from=$EventResult.orderItemsWhitelist}
{if $whitelistId == $details.orderdetailsID}
{assign var=itemEmailQuantity value=$whitelistQuantity}
{break}
{/if}
{/foreach}
{else}
{assign var=itemEmailQuantity value=$details.quantity}
{/if}
{if $itemEmailQuantity > -1}
{$position|fill:3} {$details.ordernumber|fill:20} {$details.articlename|fill:50}
{$itemEmailQuantity}/{$details.quantity} x {$details.price|string_format:"%.2f"}
{$sConfig.sCURRENCY}
{assign var=position value=$position+1}
{/if}
{/foreach}
The lines in bold in both sections indicate the information that will eventually be displayed per position on the document. This can be customised.