You use "I heard" to refer to [hearsay][1] information- you are not completely sure whether it is correct, or you didn't hear it from the source. 

You can use "I heard you had..." about something that happened in the past:

> I heard you had an accident last week

> I heard you had got married

Or about something in the future that may not go ahead or has already been cancelled

> I heard you had a date next week with that cute guy from accounts...

> I heard you had a job interview next week but it fell through

If you are talking about something in the future that will definitely go ahead, you should really use 

> I heard you **have** a job interview next week

> I heard you **have** Diwali next week, will you celebrate?

Other answers suggest that it's not normal to refer to holidays using the words **have** or **had**. If you google **have a good Christmas**, you will get lots of hits, incliding this from the British Council [learn English][2] site:

> Avoid these things and you’ll have a good chance of **having** a truly Merry Christmas

Imagine a situation where a guy takes his children to Lappland for Christmas. Back at work after the holiday, a colleague says to him "I heard you **had** an exciting Christmas!"

In a monoculture society, it's hard to imagine somebody saying "I heard you **have** Christmas next week". This sounds wrong not for grammatical or idiomatic reasons, but because Christmas is the same day every year and **everybody** knows when it is. Furthermore, **everybody** is involved, like it or not.

Diwali, however, is like Easter- it's on a different date each year. It's therefore easy to imagine in a multicultural society like England a Christian (who has a vague idea about Hindu traditions) saying to a Hindu "I heard that you **have** Diwali next week".


  [1]: http://dictionary.cambridge.org/dictionary/english/hearsay
  [2]: http://learnenglish.britishcouncil.org/en/magazine/christmas-good-bad-and-ugly