diff --git a/india_banking/india_banking/doctype/bank_connector/bank_connector.py b/india_banking/india_banking/doctype/bank_connector/bank_connector.py index 3b728288..db04b290 100644 --- a/india_banking/india_banking/doctype/bank_connector/bank_connector.py +++ b/india_banking/india_banking/doctype/bank_connector/bank_connector.py @@ -727,26 +727,34 @@ def get_bank_statements( ) -def get_bank_connector(bank_account, company): +def get_bank_connector(bank_account, company, is_bulk=False): # Fetch the connector information - bank_connector = frappe.db.exists( - "Bank Connector", - { - "company": company, - "bank_account": bank_account, - }, - ) + filters = { + "company": company, + "bank_account": bank_account, + } + + # If is_bulk is True, only get connectors with bulk_transaction enabled + if is_bulk: + filters["bulk_transaction"] = 1 + + bank_connector = frappe.db.exists("Bank Connector", filters) + if not bank_connector: - frappe.throw(_("Bank Connector is not initialized")) + if is_bulk: + frappe.throw(_("Bank Connector with bulk transaction enabled is not initialized for this bank account")) + else: + frappe.throw(_("Bank Connector is not initialized")) return frappe.get_doc("Bank Connector", bank_connector) @frappe.whitelist() -def make_payment(payment_order, otp=None): +def make_payment(payment_order, otp=None, is_bulk=0): payment_order = frappe.get_doc("Payment Order", payment_order) + is_bulk = cint(is_bulk) or (payment_order.get("is_bulk") or 0) bank_connector = get_bank_connector( - payment_order.company_bank_account, payment_order.company + payment_order.company_bank_account, payment_order.company, is_bulk=is_bulk ) return bank_connector.make_post_request( payment_order, otp=otp, action="initiate_payment" diff --git a/india_banking/install.py b/india_banking/install.py index 1cc9738d..1e69c616 100644 --- a/india_banking/install.py +++ b/india_banking/install.py @@ -295,6 +295,13 @@ def create_payment_order_custom_fields(): "read_only": 1, "insert_after": "posting_date", }, + { + "label": "Is Bulk Payment", + "fieldname": "is_bulk", + "fieldtype": "Check", + "default": 0, + "insert_after": "status", + }, { "label": "Enqueue Status", "fieldname": "enqueue_status", diff --git a/india_banking/public/js/payment_order.js b/india_banking/public/js/payment_order.js index 281f13f7..4bf0d7c9 100644 --- a/india_banking/public/js/payment_order.js +++ b/india_banking/public/js/payment_order.js @@ -293,6 +293,7 @@ frappe.ui.form.on("Payment Order", { freeze_message: __("Initiating Payment..."), args: { payment_order: frm.doc.name, + is_bulk: frm.doc.is_bulk || 0, }, callback: (res) => { if (res.message && res.message.otp_required) { @@ -335,6 +336,7 @@ frappe.ui.form.on("Payment Order", { args: { payment_order: frm.doc.name, otp: otp, + is_bulk: frm.doc.is_bulk || 0, }, callback: function (r) { if (!r.exc) {