fix: Supplier users not able to see RFQ on the Portal (#40161)
This commit is contained in:
parent
6f5815e44f
commit
f8ba560394
@ -206,10 +206,30 @@ class RequestforQuotation(BuyingController):
|
|||||||
|
|
||||||
contact.save(ignore_permissions=True)
|
contact.save(ignore_permissions=True)
|
||||||
|
|
||||||
|
if rfq_supplier.supplier:
|
||||||
|
self.update_user_in_supplier(rfq_supplier.supplier, user.name)
|
||||||
|
|
||||||
if not rfq_supplier.contact:
|
if not rfq_supplier.contact:
|
||||||
# return contact to later update, RFQ supplier row's contact
|
# return contact to later update, RFQ supplier row's contact
|
||||||
return contact.name
|
return contact.name
|
||||||
|
|
||||||
|
def update_user_in_supplier(self, supplier, user):
|
||||||
|
"""Update user in Supplier."""
|
||||||
|
if not frappe.db.exists("Portal User", {"parent": supplier, "user": user}):
|
||||||
|
supplier_doc = frappe.get_doc("Supplier", supplier)
|
||||||
|
supplier_doc.append(
|
||||||
|
"portal_users",
|
||||||
|
{
|
||||||
|
"user": user,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
supplier_doc.flags.ignore_validate = True
|
||||||
|
supplier_doc.flags.ignore_mandatory = True
|
||||||
|
supplier_doc.flags.ignore_permissions = True
|
||||||
|
|
||||||
|
supplier_doc.save()
|
||||||
|
|
||||||
def create_user(self, rfq_supplier, link):
|
def create_user(self, rfq_supplier, link):
|
||||||
user = frappe.get_doc(
|
user = frappe.get_doc(
|
||||||
{
|
{
|
||||||
|
@ -149,6 +149,33 @@ class TestRequestforQuotation(FrappeTestCase):
|
|||||||
get_pdf(rfq.name, rfq.get("suppliers")[0].supplier)
|
get_pdf(rfq.name, rfq.get("suppliers")[0].supplier)
|
||||||
self.assertEqual(frappe.local.response.type, "pdf")
|
self.assertEqual(frappe.local.response.type, "pdf")
|
||||||
|
|
||||||
|
def test_portal_user_with_new_supplier(self):
|
||||||
|
supplier_doc = frappe.get_doc(
|
||||||
|
{
|
||||||
|
"doctype": "Supplier",
|
||||||
|
"supplier_name": "Test Supplier for RFQ",
|
||||||
|
"supplier_group": "_Test Supplier Group",
|
||||||
|
}
|
||||||
|
).insert()
|
||||||
|
|
||||||
|
self.assertFalse(supplier_doc.portal_users)
|
||||||
|
|
||||||
|
rfq = make_request_for_quotation(
|
||||||
|
supplier_data=[
|
||||||
|
{
|
||||||
|
"supplier": supplier_doc.name,
|
||||||
|
"supplier_name": supplier_doc.supplier_name,
|
||||||
|
"email_id": "123_testrfquser@example.com",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
do_not_submit=True,
|
||||||
|
)
|
||||||
|
for rfq_supplier in rfq.suppliers:
|
||||||
|
rfq.update_supplier_contact(rfq_supplier, rfq.get_link())
|
||||||
|
|
||||||
|
supplier_doc.reload()
|
||||||
|
self.assertTrue(supplier_doc.portal_users[0].user)
|
||||||
|
|
||||||
|
|
||||||
def make_request_for_quotation(**args) -> "RequestforQuotation":
|
def make_request_for_quotation(**args) -> "RequestforQuotation":
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user