Added test cases
diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index 6f280c4..be5407b 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -324,8 +324,9 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "default": "1",
"fetch_if_empty": 0,
- "fieldname": "unlink_advance_payment_on_cancellation_of_order",
+ "fieldname": "unlink_advance_payment_on_cancelation_of_order",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
@@ -334,7 +335,7 @@
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
- "label": "Unlink Advance Payment on Cancellation of Order",
+ "label": "Unlink Advance Payment on Cancelation of Order",
"length": 0,
"no_copy": 0,
"permlevel": 0,
@@ -762,7 +763,7 @@
"issingle": 1,
"istable": 0,
"max_attachments": 0,
- "modified": "2019-04-01 00:22:18.482570",
+ "modified": "2019-04-06 12:28:43.026250",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 450f2d0..896eab8 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -765,10 +765,6 @@
self.update_status_updater_args()
if not self.is_return:
- from erpnext.accounts.utils import unlink_ref_doc_from_payment_entries
- if frappe.db.get_single_value('Accounts Settings', 'unlink_payment_on_cancellation_of_invoice'):
- unlink_ref_doc_from_payment_entries(self)
-
self.update_prevdoc_status()
self.update_billing_status_for_zero_amount_refdoc("Purchase Order")
self.update_billing_status_in_pr()
diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
index f150736..774156e 100644
--- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py
@@ -465,6 +465,33 @@
self.assertEquals(se_items, supplied_items)
update_backflush_based_on("BOM")
+ def test_advance_payment_entry_unlink_against_purchase_order(self):
+ from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
+ frappe.db.set_value("Accounts Settings", "Accounts Settings",
+ "unlink_advance_payment_on_cancelation_of_order", 1)
+
+ po_doc = create_purchase_order()
+
+ pe = get_payment_entry("Purchase Order", po_doc.name, bank_account="_Test Bank - _TC")
+ pe.reference_no = "1"
+ pe.reference_date = nowdate()
+ pe.paid_from_account_currency = po_doc.currency
+ pe.paid_to_account_currency = po_doc.currency
+ pe.source_exchange_rate = 1
+ pe.target_exchange_rate = 1
+ pe.paid_amount = po_doc.grand_total
+ pe.save(ignore_permissions=True)
+ pe.submit()
+
+ po_doc = frappe.get_doc('Purchase Order', po_doc.name)
+ po_doc.cancel()
+
+ pe_doc = frappe.get_doc('Payment Entry', pe.name)
+ pe_doc.cancel()
+
+ frappe.db.set_value("Accounts Settings", "Accounts Settings",
+ "unlink_advance_payment_on_cancelation_of_order", 0)
+
def make_subcontracted_item(item_code):
from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 28757c5..7bb71ec 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -556,11 +556,13 @@
from erpnext.accounts.utils import unlink_ref_doc_from_payment_entries
if self.doctype in ["Sales Invoice", "Purchase Invoice"]:
+ if self.is_return: return
+
if frappe.db.get_single_value('Accounts Settings', 'unlink_payment_on_cancellation_of_invoice'):
unlink_ref_doc_from_payment_entries(self)
elif self.doctype in ["Sales Order", "Purchase Order"]:
- if frappe.db.get_single_value('Accounts Settings', 'unlink_advance_payment_on_cancellation_of_order'):
+ if frappe.db.get_single_value('Accounts Settings', 'unlink_advance_payment_on_cancelation_of_order'):
unlink_ref_doc_from_payment_entries(self)
def validate_multiple_billing(self, ref_dt, item_ref_dn, based_on, parentfield):
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index 766e4e6..3a1383f 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -2,7 +2,7 @@
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
-from frappe.utils import flt, add_days
+from frappe.utils import flt, add_days, nowdate
import frappe.permissions
import unittest
from erpnext.selling.doctype.sales_order.sales_order \
@@ -13,7 +13,6 @@
import json
from erpnext.selling.doctype.sales_order.sales_order import make_raw_material_request
-
class TestSalesOrder(unittest.TestCase):
def tearDown(self):
frappe.set_user("Administrator")
@@ -703,6 +702,28 @@
se.cancel()
self.assertFalse(frappe.db.exists("Serial No", {"sales_order": so.name}))
+ def test_advance_payment_entry_unlink_against_sales_order(self):
+ from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
+ frappe.db.set_value("Accounts Settings", "Accounts Settings",
+ "unlink_advance_payment_on_cancelation_of_order", 0)
+
+ so = make_sales_order()
+
+ pe = get_payment_entry("Sales Order", so.name, bank_account="_Test Bank - _TC")
+ pe.reference_no = "1"
+ pe.reference_date = nowdate()
+ pe.paid_from_account_currency = so.currency
+ pe.paid_to_account_currency = so.currency
+ pe.source_exchange_rate = 1
+ pe.target_exchange_rate = 1
+ pe.paid_amount = so.grand_total
+ pe.save(ignore_permissions=True)
+ pe.submit()
+
+ so_doc = frappe.get_doc('Sales Order', so.name)
+
+ self.assertRaises(frappe.LinkExistsError, so_doc.cancel)
+
def test_request_for_raw_materials(self):
from erpnext.stock.doctype.item.test_item import make_item
item = make_item("_Test Finished Item", {"is_stock_item": 1,