Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 21 additions & 19 deletions export_transactions_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,21 +69,23 @@ def get_organizations(db):
return db.query(Organization).filter(Organization.is_active == True).all()


# def get_additional_revenue_by_organization(db, organization_id, start_date, end_date):
# """
# Получает дополнительную выручку из транзакций по организации
# """
# additional_revenue = float(db.query(func.sum(Transaction.sum_resigned)).filter(
# and_(
# Transaction.organization_id == organization_id,
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
# Transaction.date_typed >= start_date,
# Transaction.date_typed <= end_date
# )
# ).scalar() or 0)
def get_additional_revenue_by_organization(db, organization_id, start_date, end_date):
"""
Получает дополнительную выручку из транзакций по организации
"""
additional_revenue = float(db.query(func.sum(Transaction.sum_resigned)).filter(
and_(
Transaction.organization_id == organization_id,
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
Transaction.contr_account_name == 'Торговая выручка',
Transaction.date_typed >= start_date,
Transaction.date_typed <= end_date
)
).scalar() or 0)

# return additional_revenue
additional_revenue = abs(additional_revenue)
return additional_revenue


def get_revenue_by_organization(db, organization_id, start_date, end_date):
Expand Down Expand Up @@ -124,9 +126,9 @@ def get_revenue_by_organization(db, organization_id, start_date, end_date):
bar_revenue = float(bar_query.full_sum or 0) - float(bar_query.discount or 0)

# Дополнительная выручка
# additional_revenue = get_additional_revenue_by_organization(db, organization_id, start_date, end_date)
additional_revenue = get_additional_revenue_by_organization(db, organization_id, start_date, end_date)

return kitchen_revenue, bar_revenue
return kitchen_revenue, bar_revenue, additional_revenue


def get_cost_of_goods_by_organization(db, organization_id, start_date, end_date):
Expand Down Expand Up @@ -328,7 +330,7 @@ def create_profit_loss_report(start_date='2025-10-13 00:00:00', end_date='2025-1
all_categories_list.append('bank_commission')
all_categories_list.append('Выручка > Кухня')
all_categories_list.append('Выручка > Бар')
# all_categories_list.append('Выручка > Дополнительная')
all_categories_list.append('Выручка > Дополнительная')
all_categories_list.append('discount')

print(f"\nНайдено категорий: {len(all_categories_list)}")
Expand Down Expand Up @@ -393,8 +395,8 @@ def create_profit_loss_report(start_date='2025-10-13 00:00:00', end_date='2025-1
report_data['Выручка > Бар'][org.name] = float(bar_revenue_query or 0)

# Получаем дополнительную выручку из транзакций
# additional_revenue = get_additional_revenue_by_organization(db, org.id, start_date, end_date)
# report_data['Выручка > Дополнительная'][org.name] = additional_revenue
additional_revenue = get_additional_revenue_by_organization(db, org.id, start_date, end_date)
report_data['Выручка > Дополнительная'][org.name] = additional_revenue
# print(f" Дополнительная выручка: {additional_revenue:.2f}")

# Получаем discount из d_orders (сумма скидок)
Expand Down
41 changes: 23 additions & 18 deletions services/analytics/analytics_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,28 +62,33 @@ def get_analytics(
previous_revenue = calculate_revenue_from_orders(previous_orders, use_discount=True)

# Дополнительная выручка для текущего периода
# additional_revenue_current = float(db.query(func.sum(Transaction.sum_resigned)).filter(
# and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
# Transaction.date_typed >= start_date,
# Transaction.date_typed <= end_date
# )
# ).scalar() or 0)
additional_revenue_current = float(db.query(func.sum(Transaction.sum_resigned)).filter(
and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
Transaction.contr_account_name == 'Торговая выручка',
Transaction.date_typed >= start_date,
Transaction.date_typed <= end_date
)
).scalar() or 0)

# # Дополнительная выручка для предыдущего периода
# additional_revenue_previous = float(db.query(func.sum(Transaction.sum_resigned)).filter(
# and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
# Transaction.date_typed >= previous_start,
# Transaction.date_typed <= previous_end
# )
# ).scalar() or 0)
additional_revenue_previous = float(db.query(func.sum(Transaction.sum_resigned)).filter(
and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
Transaction.contr_account_name == 'Торговая выручка',
Transaction.date_typed >= previous_start,
Transaction.date_typed <= previous_end
)
).scalar() or 0)

# # Добавляем дополнительную выручку к общей
# current_revenue += additional_revenue_current
# previous_revenue += additional_revenue_previous
additional_revenue_current = abs(additional_revenue_current)
additional_revenue_previous = abs(additional_revenue_previous)

current_revenue += additional_revenue_current
previous_revenue += additional_revenue_previous

current_checks = len(orders)
previous_checks = len(previous_orders)
Expand Down
43 changes: 24 additions & 19 deletions services/reports/reports_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,16 +250,18 @@ def get_moneyflow_reports(
incomes_sum += amount

# Дополнительная выручка
# additional_revenue = float(db.query(func.sum(Transaction.sum_resigned)).filter(
# and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
# Transaction.date_typed >= start_date,
# Transaction.date_typed <= end_date
# )
# ).scalar() or 0)
additional_revenue = float(db.query(func.sum(Transaction.sum_resigned)).filter(
and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
Transaction.contr_account_name == 'Торговая выручка',
Transaction.date_typed >= start_date,
Transaction.date_typed <= end_date
)
).scalar() or 0)
additional_revenue = abs(additional_revenue)

# incomes_sum += additional_revenue
incomes_sum += additional_revenue

# Формируем массив доходов по категориям
income_by_category = []
Expand Down Expand Up @@ -407,16 +409,19 @@ def get_sales_dynamics(
total_checks += day_checks

# Дополнительная выручка за весь период
# additional_revenue = float(db.query(func.sum(Transaction.sum_resigned)).filter(
# and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
# Transaction.date_typed >= datetime.combine(start_date, datetime.min.time()),
# Transaction.date_typed <= datetime.combine(end_date, datetime.max.time())
# )
# ).scalar() or 0)

# total_revenue += additional_revenue
additional_revenue = float(db.query(func.sum(Transaction.sum_resigned)).filter(
and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
Transaction.contr_account_name == 'Торговая выручка',
Transaction.date_typed >= datetime.combine(start_date, datetime.min.time()),
Transaction.date_typed <= datetime.combine(end_date, datetime.max.time())
)
).scalar() or 0)

additional_revenue = abs(additional_revenue)

total_revenue += additional_revenue

overall_average_check = total_revenue / total_checks if total_checks > 0 else 0

Expand Down
25 changes: 14 additions & 11 deletions services/transactions_and_statistics/statistics_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -433,14 +433,16 @@ def get_revenue_by_category(


# Дополнительная выручка
# additional_revenue = float(db.query(func.sum(Transaction.sum_resigned)).filter(
# and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
# Transaction.date_typed >= start_date,
# Transaction.date_typed <= end_date
# )
# ).scalar() or 0)
additional_revenue = float(db.query(func.sum(Transaction.sum_resigned)).filter(
and_(
# Transaction.account_name == 'Задолженность перед поставщиками',
# Transaction.contr_account_type == 'INCOME',
Transaction.contr_account_name == 'Торговая выручка',
Transaction.date_typed >= start_date,
Transaction.date_typed <= end_date
)
).scalar() or 0)
additional_revenue = abs(additional_revenue)

other_base = float(other_data.sum_base or 0)
other_discount = float(other_data.sum_discount or 0)
Expand All @@ -451,14 +453,14 @@ def get_revenue_by_category(
total_increase = kitchen_increase + bar_increase + other_increase

# Общая выручка
total_revenue = overall_revenue
total_revenue = overall_revenue + additional_revenue

return {
"Кухня": kitchen_base,
"Бар": bar_base,
"Прочее": other_revenue,
"Наценка (обслуживание)": total_increase,
# "Дополнительная выручка": additional_revenue,
"Дополнительная выручка": additional_revenue,
"total": total_revenue
}

Expand Down Expand Up @@ -547,7 +549,8 @@ def get_bank_commission_total(
and_(
BankCommission.time_transaction >= start_date,
BankCommission.time_transaction < end_date,
BankCommission.bank_commission.isnot(None)
BankCommission.bank_commission.isnot(None),
# BankCommission.bank_commission <= 0 # Тут мы думали только комиссию и отдельно возвраты, но пока вместе одним числом
)
)

Expand Down