Grab Variants in Category Code(s) (CSV)
<mvt:if expr="g.Category_Code NE ''">
<mvt:item name="toolkit" param="vacreate|categoryCodes|g.Category_Code|," />
<mvt:item name="toolkit" param="mvassign|comma|asciichar('44')" />
<mvt:item name="toolkit" param="mvassign|break|asciichar('10')" />
<mvt:item name="toolkit" param="mvassign|quote|asciichar('34')" />
<mvt:item name="toolkit" param="mvassign|headerRow|'PRODUCT_CODE' $ g.comma $ 'PRODUCT_NAME' $ g.comma $ 'PRICE' $ g.comma $ 'CATEGORY_CODES' $ g.break" />
&mvt:global:headerRow;
<mvt:foreach iterator="catCode" array="categoryCodes">
<mvt:item name="toolkit" param="cxpc|pcount|l.all_settings:catCode" />
<mvt:if expr="pcount GT 0">
<mvt:foreach iterator="sub_product" array="sub_products">
<mvt:item name="toolkit" param="mvassign|productRow|l.all_settings:sub_product:code $ g.comma $ g.quote $ l.all_settings:sub_product:name $ g.quote $ g.comma $ l.all_settings:sub_product:price $ g.comma" />
<mvt:item name="toolkit" param="productincategory|incatcount|l.all_settings:sub_product:code" />
<mvt:if expr="incatcount GT 0">
<mvt:item name="toolkit" param="counter|current_nbr|g.offset" />
<mvt:assign name="current_nbr" value="0" />
<mvt:item name="toolkit" param="mvassign|productRow|productRow $ g.quote" />
<mvt:foreach iterator="incategory" array="incategories">
<mvt:item name="toolkit" param="counter|current_nbr" />
<mvt:if expr="g.current_nbr EQ 1">
<mvt:item name="toolkit" param="mvassign|productRow|productRow $ l.all_settings:incategory:code "/>
<mvt:else>
<mvt:item name="toolkit" param="mvassign|productRow|productRow $ ',' $ l.all_settings:incategory:code "/>
</mvt:if>
</mvt:foreach>
<mvt:item name="toolkit" param="mvassign|productRow|productRow $ g.quote" />
</mvt:if>
&mvt:global:productRow;
<mvt:item name="toolkit" param="variantarray|vcount|l.all_settings:sub_product:code" />
<mvt:if expr="vcount GT 0">
<mvt:foreach iterator="variant" array="variants">
<mvt:item name="toolkit" param="vproduct_find|productfound|l.all_settings:variant:variant_code|A" />
<mvt:item name="toolkit" param="mvassign|variantRow|l.all_settings:key_product:code $ g.comma $ g.quote $ l.all_settings:key_product:name $ g.quote $ g.comma $ l.all_settings:key_product:price $ g.comma" />
<mvt:item name="toolkit" param="productincategory|incatcount2|l.all_settings:key_product:code" />
<mvt:if expr="incatcount2 GT 0">
<mvt:item name="toolkit" param="mvassign|variantRow|variantRow $ g.quote" />
<mvt:item name="toolkit" param="counter|current_nbr2|g.offset" />
<mvt:assign name="current_nbr2" value="0" />
<mvt:foreach iterator="incategory2" array="incategories">
<mvt:item name="toolkit" param="counter|current_nbr2" />
<mvt:if expr="g.current_nbr2 EQ 1">
<mvt:item name="toolkit" param="mvassign|variantRow|variantRow $ l.all_settings:incategory2:code "/>
<mvt:else>
<mvt:item name="toolkit" param="mvassign|variantRow|variantRow $ ',' $ l.all_settings:incategory2:code "/>
</mvt:if>
</mvt:foreach>
<mvt:item name="toolkit" param="mvassign|variantRow|variantRow $ g.quote" />
</mvt:if>
&mvt:global:variantRow;
</mvt:foreach>
</mvt:if>
</mvt:foreach>
</mvt:if>
</mvt:foreach>
</mvt:if>