Merge pull request #6426 from rohitwaghchaure/supplier_portal_enhancement
[Enhancement] Supplier quotation added on supplier portal
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index b01d3e8..482a2ae 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -210,7 +210,7 @@
frappe.msgprint(_("Supplier Quotation {0} created").format(sq_doc.name))
return sq_doc.name
except Exception:
- return
+ return None
def add_items(sq_doc, supplier, items):
for data in items:
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index 206dfa3..144e982 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -3,6 +3,7 @@
from __future__ import unicode_literals
import frappe
+from frappe import _
from frappe.utils import flt
from frappe.model.mapper import get_mapped_doc
@@ -54,6 +55,18 @@
pc = frappe.get_doc('Purchase Common')
pc.validate_for_items(self)
+def get_list_context(context=None):
+ from erpnext.controllers.website_list_for_contact import get_list_context
+ list_context = get_list_context(context)
+ list_context.update({
+ 'show_sidebar': True,
+ 'show_search': True,
+ 'no_breadcrumbs': True,
+ 'title': _('Supplier Quotation'),
+ })
+
+ return list_context
+
@frappe.whitelist()
def make_purchase_order(source_name, target_doc=None):
def set_missing_values(source, target):
diff --git a/erpnext/controllers/website_list_for_contact.py b/erpnext/controllers/website_list_for_contact.py
index 75c6e08..1abb7e7 100644
--- a/erpnext/controllers/website_list_for_contact.py
+++ b/erpnext/controllers/website_list_for_contact.py
@@ -25,7 +25,10 @@
if not filters: filters = []
- filters.append((doctype, "docstatus", "=", 1))
+ if doctype == 'Supplier Quotation':
+ filters.append((doctype, "docstatus", "<", 2))
+ else:
+ filters.append((doctype, "docstatus", "=", 1))
if user != "Guest" and is_website_user():
parties_doctype = 'Request for Quotation Supplier' if doctype == 'Request for Quotation' else doctype
@@ -112,7 +115,8 @@
return frappe.get_all(doctype, filters=[(doctype, "customer", "in", customers),
(doctype, "name", "=", doc.name)]) and True or False
elif suppliers:
- return frappe.get_all(doctype, filters=[(doctype, "suppliers", "in", suppliers),
+ fieldname = 'suppliers' if doctype == 'Request for Quotation' else 'supplier'
+ return frappe.get_all(doctype, filters=[(doctype, fieldname, "in", suppliers),
(doctype, "name", "=", doc.name)]) and True or False
else:
return False
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 19e915e..43ae234 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -67,6 +67,13 @@
"parents": [{"title": _("Invoices"), "name": "invoices"}]
}
},
+ {"from_route": "/quotations", "to_route": "Supplier Quotation"},
+ {"from_route": "/quotations/<path:name>", "to_route": "order",
+ "defaults": {
+ "doctype": "Supplier Quotation",
+ "parents": [{"title": _("Supplier Quotation"), "name": "quotations"}]
+ }
+ },
{"from_route": "/shipments", "to_route": "Delivery Note"},
{"from_route": "/shipments/<path:name>", "to_route": "order",
"defaults": {
@@ -95,6 +102,7 @@
portal_menu_items = [
{"title": _("Projects"), "route": "/project", "reference_doctype": "Project"},
{"title": _("Request for Quotations"), "route": "/rfq", "reference_doctype": "Request for Quotation"},
+ {"title": _("Supplier Quotation"), "route": "/quotations", "reference_doctype": "Supplier Quotation"},
{"title": _("Orders"), "route": "/orders", "reference_doctype": "Sales Order"},
{"title": _("Invoices"), "route": "/invoices", "reference_doctype": "Sales Invoice"},
{"title": _("Shipments"), "route": "/shipments", "reference_doctype": "Delivery Note"},
@@ -109,6 +117,7 @@
has_website_permission = {
"Sales Order": "erpnext.controllers.website_list_for_contact.has_website_permission",
"Sales Invoice": "erpnext.controllers.website_list_for_contact.has_website_permission",
+ "Supplier Quotation": "erpnext.controllers.website_list_for_contact.has_website_permission",
"Delivery Note": "erpnext.controllers.website_list_for_contact.has_website_permission",
"Issue": "erpnext.support.doctype.issue.issue.has_website_permission",
"Address": "erpnext.utilities.doctype.address.address.has_website_permission",
diff --git a/erpnext/templates/includes/rfq.js b/erpnext/templates/includes/rfq.js
index c63226c..42dcc3a 100644
--- a/erpnext/templates/includes/rfq.js
+++ b/erpnext/templates/includes/rfq.js
@@ -81,8 +81,11 @@
},
btn: this,
callback: function(r){
- $('.btn-sm').hide()
frappe.unfreeze();
+ if(r.message){
+ $('.btn-sm').hide()
+ window.location.href = "/quotations/" + encodeURIComponent(r.message);
+ }
}
})
})
diff --git a/erpnext/templates/pages/order.py b/erpnext/templates/pages/order.py
index d390ebf..1a40280 100644
--- a/erpnext/templates/pages/order.py
+++ b/erpnext/templates/pages/order.py
@@ -16,8 +16,8 @@
context.parents = frappe.form_dict.parents
context.payment_ref = frappe.db.get_value("Payment Request",
{"reference_name": frappe.form_dict.name}, "name")
-
+
context.enabled_checkout = frappe.get_doc("Shopping Cart Settings").enable_checkout
-
+
if not context.doc.has_website_permission("read"):
frappe.throw(_("Not Permitted"), frappe.PermissionError)