def __select_groceries_sum_query(self) -> Expense: groceries_sum_query = (Expense.select( fn.SUM(Expense.amount).alias('sum')).join(Category).join( TypeofCategory).where( (TypeofCategory.name == 'Groceries') & (Expense.time_creating.truncate( self._formatter.period_name) == self._period))) return groceries_sum_query
def __select_categories_query(self): stat_category_query = (Expense.select( fn.SUM(Expense.amount).alias('sum'), Category.name, Expense.payment_type).join(Category).where( Expense.time_creating.truncate( self._formatter.period_name) == self._period).group_by( Expense.category_id, Category.name, Expense.payment_type).order_by(Expense.category_id)) return stat_category_query
def _select_groceries_sum_with_limit_query(self) -> Expense: groceries_monthly_limit_query = (Expense.select( fn.SUM(Expense.amount).alias('sum'), TypeofCategory.monthly_limit).join(Category).join( TypeofCategory).where( (Expense.time_creating.truncate( self._formatter.period_name) == self._period) & (TypeofCategory.monthly_limit.is_null(False))).group_by( TypeofCategory.monthly_limit).tuples()) return groceries_monthly_limit_query
def __select_detail_query(self): expense_detail_query = (Expense.select( fn.SUM(Expense.amount).alias('sum'), Category.name, Expense.payment_type, Expense.additional_info).join(Category).where( (Expense.time_creating.truncate(self._formatter.period_name) == self._period) & (Category.is_additional_info_needed == True)).group_by( Expense.category_id, Category.name, Expense.payment_type, Expense.additional_info).order_by(Expense.category_id)) return expense_detail_query
def __select_sum_query(self) -> Expense: expense_sum_query = (Expense.select( fn.SUM(Expense.amount).alias('sum')).where( Expense.time_creating.truncate(self._formatter.period_name) == self._period)) return expense_sum_query