Thanks Justin,
I built this query to make it faster to get this data and not have to loop all the offers & products to get this information:
select TOP 1 bvc_Offers.Name, bvc_Offers.EndDate from bvc_ComponentSettingList
left join bvc_Offers ON bvc_ComponentSettingList.ComponentID = bvc_Offers.bvin
where bvc_ComponentSettingList.ListName = 'FreeShippingProducts'
AND bvc_ComponentSettingList.ComponentType = 'Offer'
AND bvc_ComponentSettingList.ComponentSubType = 'Free Shipping'
AND bvc_Offers.Enabled = 1
AND bvc_Offers.RequiresCouponCode = 0
AND bvc_Offers.EndDate > GETDATE()
AND Setting1 = @product_bvin
It's easy to adapt it for other type of offers. All you need is the product bvin and you will know if it's part of an offer that is valid, active and requires no promotional code.
Cheers,
Corneliu.
www.bestgames.com.au