In general, use "didn't have" when "have" indicates possession and "have not" when "have" is an auxiliary verb in a perfect tense. You might also see "have" used as an auxiliary verb when it indicates possession in old-fashioned speech, or in certain parts of English (one member on this site mentioned a while ago that "have" is still commonly used as an auxiliary verb in all cases where they live, but I can't remember exactly where it was).