Skip to content

Commit e9c0c92

Browse files
authored
fix edit expenses (#92)
1 parent 44c267e commit e9c0c92

File tree

6 files changed

+48
-63
lines changed

6 files changed

+48
-63
lines changed

apps/fyle/models.py

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -69,49 +69,59 @@ class Meta:
6969
db_table = 'expenses'
7070

7171
@staticmethod
72-
def create_expense_objects(expenses: List[Dict], workspace_id: int):
72+
def create_expense_objects(expenses: List[Dict], workspace_id: int, skip_update: bool = True):
7373
"""
7474
Bulk create expense objects
7575
"""
7676
expense_objects = []
7777

7878
for expense in expenses:
79-
expense_object, _ = Expense.objects.update_or_create(
80-
expense_id=expense['id'],
81-
workspace_id=workspace_id,
82-
defaults={
83-
'employee_email': expense['employee_email'],
84-
'employee_name': expense['employee_name'],
85-
'category': expense['category'],
86-
'sub_category': expense['sub_category'],
87-
'project': expense['project'],
88-
'expense_number': expense['expense_number'],
89-
'org_id': expense['org_id'],
79+
expense_data_to_append = None
80+
if not skip_update:
81+
expense_data_to_append = {
9082
'claim_number': expense['claim_number'],
91-
'amount': round(expense['amount'], 2),
92-
'currency': expense['currency'],
93-
'foreign_amount': expense['foreign_amount'],
94-
'foreign_currency': expense['foreign_currency'],
95-
'reimbursable': expense['reimbursable'],
96-
'state': expense['state'],
97-
'vendor': expense['vendor'][:250] if expense['vendor'] else None,
98-
'cost_center': expense['cost_center'],
99-
'corporate_card_id': expense['corporate_card_id'],
100-
'purpose': expense['purpose'],
101-
'report_id': expense['report_id'],
102-
'file_ids': expense['file_ids'],
103-
'spent_at': expense['spent_at'],
10483
'approved_at': expense['approved_at'],
105-
'posted_at': expense['posted_at'],
106-
'expense_created_at': expense['expense_created_at'],
107-
'expense_updated_at': expense['expense_updated_at'],
108-
'fund_source': SOURCE_ACCOUNT_MAP[expense['source_account_type']],
109-
'verified_at': expense['verified_at'],
110-
'custom_properties': expense['custom_properties'],
111-
'tax_amount': round(expense['tax_amount'], 2) if expense['tax_amount'] is not None else None,
112-
'tax_group_id': expense['tax_group_id'],
113-
'billable': expense['billable'] if expense['billable'] else False
11484
}
85+
86+
defaults = {
87+
'employee_email': expense['employee_email'],
88+
'employee_name': expense['employee_name'],
89+
'category': expense['category'],
90+
'sub_category': expense['sub_category'],
91+
'project': expense['project'],
92+
'expense_number': expense['expense_number'],
93+
'org_id': expense['org_id'],
94+
'amount': round(expense['amount'], 2),
95+
'currency': expense['currency'],
96+
'foreign_amount': expense['foreign_amount'],
97+
'foreign_currency': expense['foreign_currency'],
98+
'reimbursable': expense['reimbursable'],
99+
'state': expense['state'],
100+
'vendor': expense['vendor'][:250] if expense['vendor'] else None,
101+
'cost_center': expense['cost_center'],
102+
'corporate_card_id': expense['corporate_card_id'],
103+
'purpose': expense['purpose'],
104+
'report_id': expense['report_id'],
105+
'file_ids': expense['file_ids'],
106+
'spent_at': expense['spent_at'],
107+
'posted_at': expense['posted_at'],
108+
'expense_created_at': expense['expense_created_at'],
109+
'expense_updated_at': expense['expense_updated_at'],
110+
'fund_source': SOURCE_ACCOUNT_MAP[expense['source_account_type']],
111+
'verified_at': expense['verified_at'],
112+
'custom_properties': expense['custom_properties'],
113+
'tax_amount': round(expense['tax_amount'], 2) if expense['tax_amount'] is not None else None,
114+
'tax_group_id': expense['tax_group_id'],
115+
'billable': expense['billable'] if expense['billable'] else False
116+
}
117+
118+
if expense_data_to_append:
119+
defaults.update(expense_data_to_append)
120+
121+
expense_object, _ = Expense.objects.update_or_create(
122+
expense_id=expense['id'],
123+
workspace_id=workspace_id,
124+
defaults=defaults
115125
)
116126
expense_objects.append(expense_object)
117127

apps/fyle/tasks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,5 +169,5 @@ def update_non_exported_expenses(data: Dict) -> None:
169169
expense_obj.append(data)
170170
expense_objects = FyleExpenses().construct_expense_object(expense_obj, expense.workspace_id)
171171
Expense.create_expense_objects(
172-
expense_objects, expense.workspace_id
172+
expense_objects, expense.workspace_id, skip_update=True
173173
)

quickbooks_desktop_api/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
'cached': False,
128128
'orm': 'default',
129129
'ack_failures': True,
130-
'poll': 1,
130+
'poll': 5,
131131
'max_attempts': 1,
132132
'attempt_count': 1,
133133
'retry': 14400,

quickbooks_desktop_api/tests/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@
115115
'cached': False,
116116
'orm': 'default',
117117
'ack_failures': True,
118-
'poll': 1,
118+
'poll': 5,
119119
'max_attempts': 1,
120120
'attempt_count': 1,
121121
'retry': 14400,

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ fyle==0.37.0
2929
# Reusable Fyle Packages
3030
fyle-rest-auth==1.7.2
3131
fyle-accounting-mappings==1.33.1
32-
fyle-integrations-platform-connector==1.38.1
32+
fyle-integrations-platform-connector==1.38.4
3333

3434
# Postgres Dependincies
3535
psycopg2-binary==2.8.4

tests/test_fyle/fixtures.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -159,31 +159,6 @@
159159
},
160160
'project_id': 330241,
161161
'purpose': None,
162-
'report': {
163-
'amount': 12,
164-
'approvals': [
165-
{
166-
'approver_user': {
167-
'email': 'admin1@fyleforimporrttest.in',
168-
'full_name': 'Theresa Brown',
169-
'id': 'usVN2WTtPqE7'
170-
},
171-
'approver_user_id': 'usVN2WTtPqE7',
172-
'state': 'APPROVAL_DONE'
173-
}
174-
],
175-
'id': 'rpN41rGGnxNI',
176-
'last_approved_at': '2024-05-10T07:53:25.774+00:00',
177-
'last_paid_at': None,
178-
'last_submitted_at': '2024-05-10T07:53:09.457+00:00',
179-
'last_verified_at': '2024-05-10T07:55:02.32928+00:00',
180-
'reimbursement_id': 'reimYNNUkKQiWp',
181-
'reimbursement_seq_num': 'P/2024/05/T/P/2024/05/R/30',
182-
'seq_num': 'C/2024/05/R/45',
183-
'settlement_id': 'setUkp31alIp7',
184-
'state': 'PAYMENT_PROCESSING',
185-
'title': '#5: May 2024'
186-
},
187162
'report_id': 'rpN41rGGnxNI',
188163
'report_last_approved_at': '2024-05-10T07:53:25.774000+00:00',
189164
'report_last_paid_at': None,

0 commit comments

Comments
 (0)