diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 9092176..cd343fb 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -444,27 +444,48 @@
 			return selected_attributes;
 		}
 
-		let attribute_names = frm.doc.attributes.map(d => d.attribute);
-
-		attribute_names.forEach(function(attribute) {
+		frm.doc.attributes.forEach(function(d) {
 			let p = new Promise(resolve => {
-				frappe.call({
-					method:"frappe.client.get_list",
-					args:{
-						doctype:"Item Attribute Value",
-						filters: [
-							["parent","=", attribute]
-						],
-						fields: ["attribute_value"],
-						limit_start: 0,
-						limit_page_length: 500
-					}
-				}).then((r) => {
-					if(r.message) {
-						attr_val_fields[attribute] = r.message.map(function(d) { return d.attribute_value; });
-						resolve();
-					}
-				});
+				if(!d.numeric_values) {
+					frappe.call({
+						method:"frappe.client.get_list",
+						args:{
+							doctype:"Item Attribute Value",
+							filters: [
+								["parent","=", d.attribute]
+							],
+							fields: ["attribute_value"],
+							limit_start: 0,
+							limit_page_length: 500
+						}
+					}).then((r) => {
+						if(r.message) {
+							attr_val_fields[d.attribute] = r.message.map(function(d) { return d.attribute_value; });
+							resolve();
+						}
+					});
+				} else {
+					frappe.call({
+						method:"frappe.client.get",
+						args:{
+							doctype:"Item Attribute",
+							name: d.attribute
+						}
+					}).then((r) => {
+						if(r.message) {
+							const from = r.message.from_range;
+							const to = r.message.to_range;
+							const increment = r.message.increment;
+
+							let values = [];
+							for(var i = from; i <= to; i += increment) {
+								values.push(i);
+							}
+							attr_val_fields[d.attribute] = values;
+							resolve();
+						}
+					});
+				}
 			});
 
 			promises.push(p);
