Skip to content

Commit

Permalink
feat: implement split expense grouping functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
JustARatherRidiculouslyLongUsername committed Nov 12, 2024
1 parent 5ca036f commit 2b5f748
Showing 1 changed file with 47 additions and 7 deletions.
54 changes: 47 additions & 7 deletions apps/fyle/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from fyle_accounting_mappings.models import ExpenseAttribute

from apps.fyle.enums import ExpenseStateEnum, FundSourceEnum, PlatformExpensesEnum
from apps.workspaces.models import Workspace
from apps.workspaces.models import Workspace, WorkspaceGeneralSettings

logger = logging.getLogger(__name__)
logger.level = logging.INFO
Expand All @@ -35,6 +35,7 @@
"spent_at",
"expense_id",
"posted_at",
"bank_transaction_id",
]


Expand Down Expand Up @@ -515,13 +516,52 @@ def create_expense_groups_by_report_id_fund_source(
corporate_credit_card_expenses = list(
filter(lambda expense: expense.fund_source == "CCC", expense_objects)
)
corporate_credit_card_expense_groups = _group_expenses(
corporate_credit_card_expenses,
corporate_credit_card_expense_group_field,
workspace_id,
)

expense_groups.extend(corporate_credit_card_expense_groups)
if corporate_credit_card_expenses:
workspace_general_settings = WorkspaceGeneralSettings.objects.get(
workspace_id=workspace_id
)
ccc_export_module = workspace_general_settings.corporate_credit_card_expenses_object

if ccc_export_module == "BANK TRANSACTION" and expense_group_settings.split_expense_grouping == 'MULTIPLE_LINE_ITEM':
ccc_expenses_without_bank_transaction_id = list(
filter(lambda expense: not expense.bank_transaction_id, corporate_credit_card_expenses)
)

ccc_expenses_with_bank_transaction_id = list(
filter(lambda expense: expense.bank_transaction_id, corporate_credit_card_expenses)
)

if ccc_expenses_without_bank_transaction_id:
groups_without_bank_transaction_id = _group_expenses(
ccc_expenses_without_bank_transaction_id,
corporate_credit_card_expense_group_field,
workspace_id,
)
expense_groups.extend(groups_without_bank_transaction_id)

if ccc_expenses_with_bank_transaction_id:
split_expense_group_fields = [
field for field in corporate_credit_card_expense_group_field
if field not in ('spent_at', 'posted_at', 'expense_id')
]
split_expense_group_fields.append('bank_transaction_id')

groups_with_bank_transaction_id = _group_expenses(
ccc_expenses_with_bank_transaction_id,
split_expense_group_fields,
workspace_id,
)
expense_groups.extend(groups_with_bank_transaction_id)

else:
corporate_credit_card_expense_groups = _group_expenses(
corporate_credit_card_expenses,
corporate_credit_card_expense_group_field,
workspace_id,
)

expense_groups.extend(corporate_credit_card_expense_groups)

expense_group_objects = []

Expand Down

0 comments on commit 2b5f748

Please sign in to comment.