Выберите вопросы, которые могут Вам определить архитектуру решения:
Какие именно данные о продажах должны быть включены в отчет?
Какие аргументы должен принимать метод get_sales_data() и generate_report()?
От чего следует отнаследовать класс SalesReport?
Что делает класс SalesReport?