feat: Supplier Quotation UX fixes
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 4a937f7..cf5d7cd 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -179,7 +179,7 @@
dialog.hide();
return frappe.call({
type: "GET",
- method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.make_supplier_quotation",
+ method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.make_supplier_quotation_from_rfq",
args: {
"source_name": doc.name,
"for_supplier": args.supplier
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 b54a585..fd04b0d 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -214,14 +214,14 @@
and `tabDynamic Link`.link_name like %(txt)s) and `tabContact`.name = `tabDynamic Link`.parent
limit %(start)s, %(page_len)s""", {"start": start, "page_len":page_len, "txt": "%%%s%%" % txt, "name": filters.get('supplier')})
-# This method is used to make supplier quotation from material request form.
@frappe.whitelist()
-def make_supplier_quotation(source_name, for_supplier, target_doc=None):
+def make_supplier_quotation_from_rfq(source_name, target_doc=None, for_supplier=None):
def postprocess(source, target_doc):
- target_doc.supplier = for_supplier
- args = get_party_details(for_supplier, party_type="Supplier", ignore_permissions=True)
- target_doc.currency = args.currency or get_party_account_currency('Supplier', for_supplier, source.company)
- target_doc.buying_price_list = args.buying_price_list or frappe.db.get_value('Buying Settings', None, 'buying_price_list')
+ if for_supplier:
+ target_doc.supplier = for_supplier
+ args = get_party_details(for_supplier, party_type="Supplier", ignore_permissions=True)
+ target_doc.currency = args.currency or get_party_account_currency('Supplier', for_supplier, source.company)
+ target_doc.buying_price_list = args.buying_price_list or frappe.db.get_value('Buying Settings', None, 'buying_price_list')
set_missing_values(source, target_doc)
doclist = get_mapped_doc("Request for Quotation", source_name, {
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index 1b8b404..4a2a078 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -8,8 +8,7 @@
setup: function() {
this.frm.custom_make_buttons = {
'Purchase Order': 'Purchase Order',
- 'Quotation': 'Quotation',
- 'Subscription': 'Subscription'
+ 'Quotation': 'Quotation'
}
this._super();
@@ -28,12 +27,6 @@
cur_frm.page.set_inner_btn_group_as_primary(__('Create'));
cur_frm.add_custom_button(__("Quotation"), this.make_quotation,
__('Create'));
-
- if(!this.frm.doc.auto_repeat) {
- cur_frm.add_custom_button(__('Subscription'), function() {
- erpnext.utils.make_subscription(me.frm.doc.doctype, me.frm.doc.name)
- }, __('Create'))
- }
}
else if (this.frm.doc.docstatus===0) {
@@ -54,6 +47,25 @@
}
})
}, __("Get items from"));
+
+ this.frm.add_custom_button(__("Request for Quotation"),
+ function() {
+ if (!me.frm.doc.supplier) {
+ frappe.throw({message:__("Please select a Supplier"), title:__("Mandatory")})
+ }
+ erpnext.utils.map_current_doc({
+ method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.make_supplier_quotation_from_rfq",
+ source_doctype: "Request for Quotation",
+ target: me.frm,
+ setters: {
+ company: me.frm.doc.company,
+ transaction_date: null
+ },
+ get_query_filters: {
+ docstatus: 1,
+ }
+ })
+ }, __("Get items from"));
}
},
diff --git a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json
index b50e834..7d62435 100644
--- a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json
+++ b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json
@@ -12,6 +12,8 @@
"item_name",
"column_break_3",
"lead_time_days",
+ "expected_delivery_date",
+ "is_free_item",
"section_break_5",
"description",
"item_group",
@@ -19,20 +21,18 @@
"col_break1",
"image",
"image_view",
- "manufacture_details",
- "manufacturer",
- "column_break_15",
- "manufacturer_part_no",
"quantity_and_rate",
"qty",
"stock_uom",
- "price_list_rate",
- "discount_percentage",
- "discount_amount",
"col_break2",
"uom",
"conversion_factor",
"stock_qty",
+ "sec_break_price_list",
+ "price_list_rate",
+ "discount_percentage",
+ "discount_amount",
+ "col_break_price_list",
"base_price_list_rate",
"sec_break1",
"rate",
@@ -42,7 +42,6 @@
"base_rate",
"base_amount",
"pricing_rules",
- "is_free_item",
"section_break_24",
"net_rate",
"net_amount",
@@ -56,7 +55,6 @@
"weight_uom",
"warehouse_and_reference",
"warehouse",
- "project",
"prevdoc_doctype",
"material_request",
"sales_order",
@@ -65,13 +63,19 @@
"material_request_item",
"request_for_quotation_item",
"item_tax_rate",
+ "manufacture_details",
+ "manufacturer",
+ "column_break_15",
+ "manufacturer_part_no",
+ "ad_sec_break",
+ "project",
"section_break_44",
"page_break"
],
"fields": [
{
"bold": 1,
- "columns": 4,
+ "columns": 2,
"fieldname": "item_code",
"fieldtype": "Link",
"in_list_view": 1,
@@ -107,7 +111,7 @@
{
"fieldname": "lead_time_days",
"fieldtype": "Int",
- "label": "Lead Time in days"
+ "label": "Supplier Lead Time (days)"
},
{
"collapsible": 1,
@@ -162,7 +166,6 @@
{
"fieldname": "stock_uom",
"fieldtype": "Link",
- "in_list_view": 1,
"label": "Stock UOM",
"options": "UOM",
"print_hide": 1,
@@ -196,6 +199,7 @@
{
"fieldname": "uom",
"fieldtype": "Link",
+ "in_list_view": 1,
"label": "UOM",
"options": "UOM",
"print_hide": 1,
@@ -290,14 +294,6 @@
"read_only": 1
},
{
- "default": "0",
- "fieldname": "is_free_item",
- "fieldtype": "Check",
- "label": "Is Free Item",
- "print_hide": 1,
- "read_only": 1
- },
- {
"fieldname": "section_break_24",
"fieldtype": "Section Break"
},
@@ -528,12 +524,43 @@
{
"fieldname": "column_break_15",
"fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "sec_break_price_list",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "col_break_price_list",
+ "fieldtype": "Column Break"
+ },
+ {
+ "collapsible": 1,
+ "fieldname": "ad_sec_break",
+ "fieldtype": "Section Break",
+ "label": "Accounting Dimensions"
+ },
+ {
+ "default": "0",
+ "depends_on": "is_free_item",
+ "fieldname": "is_free_item",
+ "fieldtype": "Check",
+ "label": "Is Free Item",
+ "print_hide": 1,
+ "read_only": 1
+ },
+ {
+ "allow_on_submit": 1,
+ "bold": 1,
+ "fieldname": "expected_delivery_date",
+ "fieldtype": "Date",
+ "label": "Expected Delivery Date"
}
],
"idx": 1,
+ "index_web_pages_for_search": 1,
"istable": 1,
"links": [],
- "modified": "2020-04-07 18:35:51.175947",
+ "modified": "2020-10-01 16:34:39.703033",
"modified_by": "Administrator",
"module": "Buying",
"name": "Supplier Quotation Item",