It depends on the function of the verb 'have' in the sentence.
1. If 'have' is an auxiliary verb ('haber' in Spanish) you must use the form 'haven't'.
eg I haven't seen that film.
2. If 'have' is the main verb in the sentence, and has the meaning of another verb (eg take), you must use the form 'don't have'.
eg I don't have baths very often because I prefer to have showers.
I don't have a big breakfast on weekdays because there isn't time.
3. If 'have' has the meaning of 'tener' in Spanish, then either form is possible. There is also a 3rd form : 'haven't got'
A. I haven't time.
B. I don't have time.
C. I haven't got time.
There is no difference in meaning between these forms.
Form A is the least common.
Form B can be either neutral or formal. It is used in both British and US English.
Form C is more informal, and is used mainly in British English.
I hope that helps.