diff --git a/erpnext/buying/doctype/request_for_quotation/test_request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/test_request_for_quotation.py index 4f205c57032..2e8b946f9db 100644 --- a/erpnext/buying/doctype/request_for_quotation/test_request_for_quotation.py +++ b/erpnext/buying/doctype/request_for_quotation/test_request_for_quotation.py @@ -3,8 +3,10 @@ # See license.txt from __future__ import unicode_literals -import frappe import unittest + +import frappe +from erpnext.templates.pages.rfq import check_supplier_has_docname_access from frappe.utils import nowdate class TestRequestforQuotation(unittest.TestCase): @@ -28,6 +30,31 @@ class TestRequestforQuotation(unittest.TestCase): self.assertEquals(sq1.get('items')[0].item_code, "_Test Item") self.assertEquals(sq1.get('items')[0].qty, 5) + def test_make_supplier_quotation_with_special_characters(self): + from erpnext.buying.doctype.request_for_quotation.request_for_quotation import make_supplier_quotation + + frappe.delete_doc_if_exists("Supplier", "_Test Supplier '1", force=1) + supplier = frappe.new_doc("Supplier") + supplier.supplier_name = "_Test Supplier '1" + supplier.supplier_type = "_Test Supplier Type" + supplier.insert() + + rfq = make_request_for_quotation(supplier_wt_appos) + + sq = make_supplier_quotation(rfq.name, supplier_wt_appos[0].get("supplier")) + sq.submit() + + frappe.form_dict = frappe.local("form_dict") + frappe.form_dict.name = rfq.name + + self.assertEqual( + check_supplier_has_docname_access(supplier_wt_appos[0].get('supplier')), + True + ) + + # reset form_dict + frappe.form_dict.name = None + def test_make_supplier_quotation_from_portal(self): from erpnext.buying.doctype.request_for_quotation.request_for_quotation import create_supplier_quotation rfq = make_request_for_quotation() @@ -44,8 +71,11 @@ class TestRequestforQuotation(unittest.TestCase): self.assertEquals(supplier_quotation_doc.get('items')[0].amount, 500) -def make_request_for_quotation(): - supplier_data = get_supplier_data() +def make_request_for_quotation(supplier_data=None): + """ + :param supplier_data: List containing supplier data + """ + supplier_data = supplier_data if supplier_data else get_supplier_data() rfq = frappe.new_doc('Request for Quotation') rfq.transaction_date = nowdate() rfq.status = 'Draft' @@ -77,3 +107,8 @@ def get_supplier_data(): "supplier": "_Test Supplier 1", "supplier_name": "_Test Supplier 1" }] + +supplier_wt_appos = [{ + "supplier": "_Test Supplier '1", + "supplier_name": "_Test Supplier '1", +}] diff --git a/erpnext/templates/pages/rfq.py b/erpnext/templates/pages/rfq.py index abc28904c32..aaf41104966 100644 --- a/erpnext/templates/pages/rfq.py +++ b/erpnext/templates/pages/rfq.py @@ -29,7 +29,7 @@ def get_supplier(): def check_supplier_has_docname_access(supplier): status = True if frappe.form_dict.name not in frappe.db.sql_list("""select parent from `tabRequest for Quotation Supplier` - where supplier = '{supplier}'""".format(supplier=supplier)): + where supplier = %s""", (supplier,)): status = False return status