diff --git a/export_transactions_report.py b/export_transactions_report.py index dc3561e..97fa2cb 100644 --- a/export_transactions_report.py +++ b/export_transactions_report.py @@ -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): @@ -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): @@ -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)}") @@ -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 (сумма скидок) diff --git a/services/analytics/analytics_service.py b/services/analytics/analytics_service.py index 342e099..c0d311d 100644 --- a/services/analytics/analytics_service.py +++ b/services/analytics/analytics_service.py @@ -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) diff --git a/services/reports/reports_service.py b/services/reports/reports_service.py index 19e0246..7aa8ed2 100644 --- a/services/reports/reports_service.py +++ b/services/reports/reports_service.py @@ -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 = [] @@ -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 diff --git a/services/transactions_and_statistics/statistics_service.py b/services/transactions_and_statistics/statistics_service.py index a706d75..266dbb1 100644 --- a/services/transactions_and_statistics/statistics_service.py +++ b/services/transactions_and_statistics/statistics_service.py @@ -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) @@ -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 } @@ -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 # Тут мы думали только комиссию и отдельно возвраты, но пока вместе одним числом ) )