почему нельзя сделать ComplexOrderComposer или что-то в этом роде?
прежде чем попасть в корзину айтемы(любые айтемы) проходят через композер, который "дополняет" заказ доводя его до валидного состояния, укладывает туда "обязательные" айтемы, и/или "подарки". в корзину в итоге попадают валидные сборки