Well, here's my 5 pence worth on this one; I hope it helps:
I would use 'he has had' if the year was not yet over. Eg, 'he has had a good year, so far' but you can miss out the words 'so far' as they are implied by the word 'has'. If the year is over, then I would say 'he had a good year'.