Merge pull request #38148 from ruthra-kumar/prevent_lock_on_reconciliation
refactor: convert Payment Reconciliation to virtual doctype
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
index b88791d..ccb9e64 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
@@ -212,9 +212,10 @@
],
"hide_toolbar": 1,
"icon": "icon-resize-horizontal",
+ "is_virtual": 1,
"issingle": 1,
"links": [],
- "modified": "2023-08-15 05:35:50.109290",
+ "modified": "2023-11-17 17:33:55.701726",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation",
@@ -239,6 +240,5 @@
],
"sort_field": "modified",
"sort_order": "DESC",
- "states": [],
- "track_changes": 1
+ "states": []
}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
index 43167be..6673e8d 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
@@ -29,6 +29,58 @@
self.accounting_dimension_filter_conditions = []
self.ple_posting_date_filter = []
+ def load_from_db(self):
+ # 'modified' attribute is required for `run_doc_method` to work properly.
+ doc_dict = frappe._dict(
+ {
+ "modified": None,
+ "company": None,
+ "party": None,
+ "party_type": None,
+ "receivable_payable_account": None,
+ "default_advance_account": None,
+ "from_invoice_date": None,
+ "to_invoice_date": None,
+ "invoice_limit": 50,
+ "from_payment_date": None,
+ "to_payment_date": None,
+ "payment_limit": 50,
+ "minimum_invoice_amount": None,
+ "minimum_payment_amount": None,
+ "maximum_invoice_amount": None,
+ "maximum_payment_amount": None,
+ "bank_cash_account": None,
+ "cost_center": None,
+ "payment_name": None,
+ "invoice_name": None,
+ }
+ )
+ super(Document, self).__init__(doc_dict)
+
+ def save(self):
+ return
+
+ @staticmethod
+ def get_list(args):
+ pass
+
+ @staticmethod
+ def get_count(args):
+ pass
+
+ @staticmethod
+ def get_stats(args):
+ pass
+
+ def db_insert(self, *args, **kwargs):
+ pass
+
+ def db_update(self, *args, **kwargs):
+ pass
+
+ def delete(self):
+ pass
+
@frappe.whitelist()
def get_unreconciled_entries(self):
self.get_nonreconciled_payment_entries()
diff --git a/erpnext/accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json b/erpnext/accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json
index 5b8556e..491c678 100644
--- a/erpnext/accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json
+++ b/erpnext/accounts/doctype/payment_reconciliation_allocation/payment_reconciliation_allocation.json
@@ -159,9 +159,10 @@
"label": "Difference Posting Date"
}
],
+ "is_virtual": 1,
"istable": 1,
"links": [],
- "modified": "2023-10-23 10:44:56.066303",
+ "modified": "2023-11-17 17:33:38.612615",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation Allocation",
diff --git a/erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json b/erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json
index c4dbd7e..7c9d49e 100644
--- a/erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json
+++ b/erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json
@@ -71,9 +71,10 @@
"label": "Exchange Rate"
}
],
+ "is_virtual": 1,
"istable": 1,
"links": [],
- "modified": "2022-11-08 18:18:02.502149",
+ "modified": "2023-11-17 17:33:45.455166",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation Invoice",
diff --git a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json
index 17f3900..d199236 100644
--- a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json
+++ b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json
@@ -107,9 +107,10 @@
"options": "Cost Center"
}
],
+ "is_virtual": 1,
"istable": 1,
"links": [],
- "modified": "2023-09-03 07:43:29.965353",
+ "modified": "2023-11-17 17:33:34.818530",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation Payment",
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 0badab5..a71d71b 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -344,9 +344,8 @@
erpnext.patches.v15_0.update_sre_from_voucher_details
erpnext.patches.v14_0.rename_over_order_allowance_field
erpnext.patches.v14_0.migrate_delivery_stop_lock_field
-execute:frappe.db.set_single_value("Payment Reconciliation", "invoice_limit", 50)
-execute:frappe.db.set_single_value("Payment Reconciliation", "payment_limit", 50)
erpnext.patches.v14_0.add_default_for_repost_settings
+erpnext.patches.v14_0.clear_reconciliation_values_from_singles
erpnext.patches.v15_0.rename_daily_depreciation_to_depreciation_amount_based_on_num_days_in_month
erpnext.patches.v15_0.rename_depreciation_amount_based_on_num_days_in_month_to_daily_prorata_based
erpnext.patches.v15_0.set_reserved_stock_in_bin
diff --git a/erpnext/patches/v14_0/clear_reconciliation_values_from_singles.py b/erpnext/patches/v14_0/clear_reconciliation_values_from_singles.py
new file mode 100644
index 0000000..c1f5b60
--- /dev/null
+++ b/erpnext/patches/v14_0/clear_reconciliation_values_from_singles.py
@@ -0,0 +1,17 @@
+from frappe import qb
+
+
+def execute():
+ """
+ Clear `tabSingles` and Payment Reconciliation tables of values
+ """
+ singles = qb.DocType("Singles")
+ qb.from_(singles).delete().where(singles.doctype == "Payment Reconciliation").run()
+ doctypes = [
+ "Payment Reconciliation Invoice",
+ "Payment Reconciliation Payment",
+ "Payment Reconciliation Allocation",
+ ]
+ for x in doctypes:
+ dt = qb.DocType(x)
+ qb.from_(dt).delete().run()