def get_transactions(bank, bank_account=None, start_date=None, end_date=None): access_token = None if bank_account: related_bank = frappe.db.get_values("Bank Account", bank_account, ["bank", "integration_id"], as_dict=True) access_token = frappe.db.get_value("Bank", related_bank[0].bank, "plaid_access_token") account_id = related_bank[0].integration_id else: access_token = frappe.db.get_value("Bank", bank, "plaid_access_token") account_id = None plaid = PlaidConnector(access_token) transactions = [] try: transactions = plaid.get_transactions(start_date=start_date, end_date=end_date, account_id=account_id) except ItemError as e: if e.code == "ITEM_LOGIN_REQUIRED": msg = _("There was an error syncing transactions.") + " " msg += _( "Please refresh or reset the Plaid linking of the Bank {}." ).format(bank) + " " frappe.log_error(msg, title=_("Plaid Link Refresh Required")) return transactions
def add_institution(token, response): response = json.loads(response) plaid = PlaidConnector() access_token = plaid.get_access_token(token) bank = None if not frappe.db.exists("Bank", response["institution"]["name"]): try: bank = frappe.get_doc( { "doctype": "Bank", "bank_name": response["institution"]["name"], "plaid_access_token": access_token, } ) bank.insert() except Exception: frappe.log_error("Plaid Link Error") else: bank = frappe.get_doc("Bank", response["institution"]["name"]) bank.plaid_access_token = access_token bank.save() return bank
def get_transactions(bank, bank_account=None, start_date=None, end_date=None): access_token = None if bank_account: related_bank = frappe.db.get_values("Bank Account", bank_account, ["bank", "integration_id"], as_dict=True) access_token = frappe.db.get_value("Bank", related_bank[0].bank, "plaid_access_token") account_id = related_bank[0].integration_id else: access_token = frappe.db.get_value("Bank", bank, "plaid_access_token") account_id = None if not access_token: frappe.throw(_("Please link your bank with Plaid first.")) plaid = PlaidConnector(access_token) transactions = plaid.get_transactions(start_date=start_date, end_date=end_date, account_id=account_id) return transactions
def get_transactions(bank, bank_account=None, start_date=None, end_date=None): access_token = None if bank_account: related_bank = frappe.db.get_values("Bank Account", bank_account, ["bank", "integration_id"], as_dict=True) access_token = frappe.db.get_value("Bank", related_bank[0].bank, "plaid_access_token") account_id = related_bank[0].integration_id else: access_token = frappe.db.get_value("Bank", bank, "plaid_access_token") account_id = None plaid = PlaidConnector(access_token) transactions = plaid.get_transactions(start_date=start_date, end_date=end_date, account_id=account_id) return transactions
def add_institution(token, response): response = json.loads(response) plaid = PlaidConnector() access_token = plaid.get_access_token(token) if not frappe.db.exists("Bank", response["institution"]["name"]): try: bank = frappe.get_doc({ "doctype": "Bank", "bank_name": response["institution"]["name"], "plaid_access_token": access_token }) bank.insert() except Exception: frappe.throw(frappe.get_traceback()) else: bank = frappe.get_doc("Bank", response["institution"]["name"]) bank.plaid_access_token = access_token bank.save() return bank
def get_link_token_for_update(access_token): plaid = PlaidConnector(access_token) return plaid.get_link_token(update_mode=True)
def get_link_token(): plaid = PlaidConnector() return plaid.get_link_token()