fix: make transaction date of the oldest transaction as the last integration date (#22000)
* fix: make transaction date of the oldest transaction as the last integration date
* chore: remove blank line after docstring
diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
index a706223..a45c6b1 100644
--- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
+++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
@@ -124,10 +124,11 @@
@frappe.whitelist()
def sync_transactions(bank, bank_account):
-
- last_sync_date = frappe.db.get_value("Bank Account", bank_account, "last_integration_date")
- if last_sync_date:
- start_date = formatdate(last_sync_date, "YYYY-MM-dd")
+ '''Sync transactions based on the last integration date as the start date, after the sync is completed
+ add the transaction date of the oldest transaction as the last integration date'''
+ last_transaction_date = frappe.db.get_value("Bank Account", bank_account, "last_integration_date")
+ if last_transaction_date:
+ start_date = formatdate(last_transaction_date, "YYYY-MM-dd")
else:
start_date = formatdate(add_months(today(), -12), "YYYY-MM-dd")
end_date = formatdate(today(), "YYYY-MM-dd")
@@ -139,12 +140,14 @@
for transaction in reversed(transactions):
result += new_bank_transaction(transaction)
- frappe.logger().info("Plaid added {} new Bank Transactions from '{}' between {} and {}".format(
- len(result), bank_account, start_date, end_date))
+ if result:
+ end_date = frappe.db.get_value('Bank Transaction', result.pop(), 'date')
- frappe.db.set_value("Bank Account", bank_account, "last_integration_date", getdate(end_date))
+ frappe.logger().info("Plaid added {} new Bank Transactions from '{}' between {} and {}".format(
+ len(result), bank_account, start_date, end_date))
- return result
+ frappe.db.set_value("Bank Account", bank_account, "last_integration_date", end_date)
+
except Exception:
frappe.log_error(frappe.get_traceback(), _("Plaid transactions sync error"))