The problem here is that i could have the same product on promotion 6 times a year
product 1 01/01/18 to 31/10/18
product 1 01/03/18 to 31/03/18
product 1 01/05/18 to 31/05/18
your method will not work with this , as your final module is by product an can therefore only have one line per product with one set of dates..