My sales sites scripts all have databases so everything gets entered upon purchase domain, registrar, expiration, purchase date, category etc... some update this automatically and others I have to manually update expiration date when renewed. My 80+ domains used for developed sites get entered as well just to keep track of expiration dates but I hide them from being listed on the sales sites as not for sale.
Making things even easier I also use GoDaddy & Godaddy resellers consolidate feature where you can pay to advance expiration dates by the month instead of year. So if you have 600 domains you can use that to achieve 50 renewals a month so each month has the same fixed costs instead of 100 domains being due 1 month and 10 being due the next month. So between my own sites databases, consolidate feature and shifting everything to 1-2 registrars I'm very organized with the same fixed renewal costs every month.