class NetIncomeReport(object): def __init__(self): self.incomReport = IncomeReport() self.refundsReport = RefundsReport() self.category_id = None def filterDateRange(self, startDate=None, endDate=None): startTime = datetime.time(00, 00) endTime = datetime.time(23, 59) self.startDate = startDate if startDate else datetime.date.today() self.endDate = endDate if endDate else datetime.date.today() self.startDate = datetime.datetime.combine(self.startDate, startTime) self.endDate = datetime.datetime.combine(self.endDate, endTime) self.incomReport.filterDateRange(self.startDate, self.endDate) self.refundsReport.filterDateRange(self.startDate, self.endDate) def filterByCategory(self, category_id=None): self.category_id = category_id self.incomReport.filterByCategory(category_id) self.refundsReport.filterByCategory(category_id) def result(self): incomeResult = self.incomReport.result() refundsResult = self.refundsReport.result() netIncome = incomeResult["total"] - refundsResult["refundamount"] result = {'refunds': refundsResult, 'income': incomeResult, 'netIncome': netIncome} return result
def get(self): qParser = reqparse.RequestParser() qParser.add_argument('fromDate', type=dateInput, default=None) qParser.add_argument('toDate', type=dateInput, default=None) qParser.add_argument('category_id', type=int, default=None) args = qParser.parse_args() fromDate = args.get('fromDate') toDate = args.get('toDate') category_id = args.get('category_id') incomeReport = IncomeReport() incomeReport.filterDateRange(fromDate, toDate) incomeReport.filterByCategory(category_id) return incomeReport.result()