diff --git a/erpnext/manufacturing/doctype/work_order/work_order.js b/erpnext/manufacturing/doctype/work_order/work_order.js
index ce66c8f..ce7b4f9 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.js
+++ b/erpnext/manufacturing/doctype/work_order/work_order.js
@@ -4,16 +4,17 @@
 frappe.ui.form.on("Work Order", {
 	setup: function(frm) {
 		frm.custom_make_buttons = {
-			'Stock Entry': 'Make Stock Entry',
-		}
+			'Stock Entry': 'Start',
+			'Pick List': 'Create Pick List',
+		};
 
 		// Set query for warehouses
-		frm.set_query("wip_warehouse", function(doc) {
+		frm.set_query("wip_warehouse", function() {
 			return {
 				filters: {
 					'company': frm.doc.company,
 				}
-			}
+			};
 		});
 
 		frm.set_query("source_warehouse", function() {
@@ -21,7 +22,7 @@
 				filters: {
 					'company': frm.doc.company,
 				}
-			}
+			};
 		});
 
 		frm.set_query("source_warehouse", "required_items", function() {
@@ -29,7 +30,7 @@
 				filters: {
 					'company': frm.doc.company,
 				}
-			}
+			};
 		});
 
 		frm.set_query("sales_order", function() {
@@ -37,7 +38,7 @@
 				filters: {
 					"status": ["not in", ["Closed", "On Hold"]]
 				}
-			}
+			};
 		});
 
 		frm.set_query("fg_warehouse", function() {
@@ -46,7 +47,7 @@
 					'company': frm.doc.company,
 					'is_group': 0
 				}
-			}
+			};
 		});
 
 		frm.set_query("scrap_warehouse", function() {
@@ -55,17 +56,19 @@
 					'company': frm.doc.company,
 					'is_group': 0
 				}
-			}
+			};
 		});
 
 		// Set query for BOM
 		frm.set_query("bom_no", function() {
 			if (frm.doc.production_item) {
-				return{
+				return {
 					query: "erpnext.controllers.queries.bom",
 					filters: {item: cstr(frm.doc.production_item)}
-				}
-			} else msgprint(__("Please enter Production Item first"));
+				};
+			} else {
+				frappe.msgprint(__("Please enter Production Item first"));
+			}
 		});
 
 		// Set query for FG Item
@@ -76,7 +79,7 @@
 					['is_stock_item', '=',1],
 					['default_bom', '!=', '']
 				]
-			}
+			};
 		});
 
 		// Set query for FG Item
@@ -85,12 +88,12 @@
 				filters:[
 					['Project', 'status', 'not in', 'Completed, Cancelled']
 				]
-			}
+			};
 		});
 
 		// formatter for work order operation
 		frm.set_indicator_formatter('operation',
-			function(doc) { return (frm.doc.qty==doc.completed_qty) ? "green" : "orange" });
+			function(doc) { return (frm.doc.qty==doc.completed_qty) ? "green" : "orange"; });
 	},
 
 	onload: function(frm) {
@@ -133,7 +136,7 @@
 
 			if(not_completed && not_completed.length) {
 				frm.add_custom_button(__('Create Job Card'), () => {
-					frm.trigger("make_job_card")
+					frm.trigger("make_job_card");
 				}).addClass('btn-primary');
 			}
 		}
@@ -151,7 +154,7 @@
 						condition: (d) => {
 							if (d.allow_alternative_item) {return true;}
 						}
-					})
+					});
 				});
 			}
 		}
@@ -285,13 +288,13 @@
 		if(!frm.doc.skip_transfer){
 			var pending_complete = frm.doc.material_transferred_for_manufacturing - frm.doc.produced_qty;
 			if(pending_complete) {
-				var title = __('{0} items in progress', [pending_complete]);
 				var width = ((pending_complete / frm.doc.qty * 100) - added_min);
+				title = __('{0} items in progress', [pending_complete]);
 				bars.push({
 					'title': title,
 					'width': (width > 100 ? "99.5" : width)  + '%',
 					'progress_class': 'progress-bar-warning'
-				})
+				});
 				message = message + '. ' + title;
 			}
 		}
@@ -377,7 +380,7 @@
 							filters: [
 								["Sales Order","name", "in", r.message]
 							]
-						}
+						};
 					});
 				}
 			});
@@ -401,10 +404,10 @@
 					frappe.model.set_value(row.doctype, row.name,
 						"available_qty_at_source_warehouse", r.message);
 				}
-			})
+			});
 		}
 	}
-})
+});
 
 frappe.ui.form.on("Work Order Operation", {
 	workstation: function(frm, cdt, cdn) {
@@ -421,7 +424,7 @@
 					erpnext.work_order.calculate_cost(frm.doc);
 					erpnext.work_order.calculate_total_cost(frm);
 				}
-			})
+			});
 		}
 	},
 	time_in_mins: function(frm, cdt, cdn) {
@@ -447,10 +450,13 @@
 			const show_start_btn = (frm.doc.skip_transfer
 				|| frm.doc.transfer_material_against == 'Job Card') ? 0 : 1;
 
-			if (show_start_btn){
+			if (show_start_btn) {
 				if ((flt(doc.material_transferred_for_manufacturing) < flt(doc.qty))
 					&& frm.doc.status != 'Stopped') {
 					frm.has_start_btn = true;
+					frm.add_custom_button(__('Create Pick List'), function() {
+						erpnext.work_order.create_pick_list(frm);
+					});
 					var start_btn = frm.add_custom_button(__('Start'), function() {
 						erpnext.work_order.make_se(frm, 'Material Transfer for Manufacture');
 					});
@@ -519,8 +525,8 @@
 
 	calculate_total_cost: function(frm) {
 		var variable_cost = frm.doc.actual_operating_cost ?
-			flt(frm.doc.actual_operating_cost) : flt(frm.doc.planned_operating_cost)
-		frm.set_value("total_operating_cost", (flt(frm.doc.additional_operating_cost) + variable_cost))
+			flt(frm.doc.actual_operating_cost) : flt(frm.doc.planned_operating_cost);
+		frm.set_value("total_operating_cost", (flt(frm.doc.additional_operating_cost) + variable_cost));
 	},
 
 	set_default_warehouse: function(frm) {
@@ -528,60 +534,72 @@
 			frappe.call({
 				method: "erpnext.manufacturing.doctype.work_order.work_order.get_default_warehouse",
 				callback: function(r) {
-					if(!r.exe) {
+					if (!r.exe) {
 						frm.set_value("wip_warehouse", r.message.wip_warehouse);
-						frm.set_value("fg_warehouse", r.message.fg_warehouse)
+						frm.set_value("fg_warehouse", r.message.fg_warehouse);
 					}
 				}
 			});
 		}
 	},
 
-	make_se: function(frm, purpose) {
-		if(!frm.doc.skip_transfer){
-			var max = (purpose === "Manufacture") ?
-				flt(frm.doc.material_transferred_for_manufacturing) - flt(frm.doc.produced_qty) :
-				flt(frm.doc.qty) - flt(frm.doc.material_transferred_for_manufacturing);
+	get_max_transferable_qty: (frm, purpose) => {
+		let max = 0;
+		if (frm.doc.skip_transfer) return max;
+		if (purpose === 'Manufacture') {
+			max = flt(frm.doc.material_transferred_for_manufacturing) - flt(frm.doc.produced_qty);
+		} else {
+			max = flt(frm.doc.qty) - flt(frm.doc.material_transferred_for_manufacturing);
 		}
-		max = flt(max, precision('qty'));
+		return flt(max, precision('qty'));
+	},
 
-		frappe.prompt([{
-			fieldtype: 'Float',
-			label: __('Qty for {0}', [purpose]),
-			fieldname: 'qty',
-			description: __('Max: {0}',[max]),
-			default: max
-		}, {
-			fieldtype: 'Select',
-			label: __('Create'),
-			fieldname: 'create',
-			default: 'Stock Entry',
-			options: 'Stock Entry\nPick List'
-		}], function (data) {
-			if (data.qty > max) {
-				frappe.msgprint(__('Quantity must not be more than {0}', [max]));
-				return;
-			}
-			if (data.create === 'Stock Entry') {
-				frappe.xcall('erpnext.manufacturing.doctype.work_order.work_order.make_stock_entry', {
+	show_prompt_for_qty_input: function(frm, purpose) {
+		let max = this.get_max_transferable_qty(frm, purpose);
+		return new Promise((resolve, reject) => {
+			frappe.prompt({
+				fieldtype: 'Float',
+				label: __('Qty for {0}', [purpose]),
+				fieldname: 'qty',
+				description: __('Max: {0}', [max]),
+				default: max
+			}, data => {
+				if (data.qty > max) {
+					frappe.msgprint(__('Quantity must not be more than {0}', [max]));
+					reject();
+				}
+				data.purpose = purpose;
+				resolve(data);
+			}, __('Select Quantity'), __('Create'));
+		});
+	},
+
+	make_se: function(frm, purpose) {
+		this.show_prompt_for_qty_input(frm, purpose)
+			.then(data => {
+				return frappe.xcall('erpnext.manufacturing.doctype.work_order.work_order.make_stock_entry', {
 					'work_order_id': frm.doc.name,
 					'purpose': purpose,
 					'qty': data.qty
-				}).then(stock_entry => {
-					frappe.model.sync(stock_entry);
-					frappe.set_route('Form', stock_entry.doctype, stock_entry.name);
 				});
-			} else {
-				frappe.xcall('erpnext.manufacturing.doctype.work_order.work_order.create_pick_list', {
+			}).then(stock_entry => {
+				frappe.model.sync(stock_entry);
+				frappe.set_route('Form', stock_entry.doctype, stock_entry.name);
+			});
+
+	},
+
+	create_pick_list: function(frm, purpose='Material Transfer for Manufacture') {
+		this.show_prompt_for_qty_input(frm, purpose)
+			.then(data => {
+				return frappe.xcall('erpnext.manufacturing.doctype.work_order.work_order.create_pick_list', {
 					'source_name': frm.doc.name,
 					'for_qty': data.qty
-				}).then(pick_list => {
-					frappe.model.sync(pick_list);
-					frappe.set_route('Form', pick_list.doctype, pick_list.name);
 				});
-			}
-
-		}, __('Select Quantity'), __('Create'));
+			}).then(pick_list => {
+				frappe.model.sync(pick_list);
+				frappe.set_route('Form', pick_list.doctype, pick_list.name);
+			});
 	},
 
 	make_consumption_se: function(frm, backflush_raw_materials_based_on) {
@@ -621,6 +639,6 @@
 					frm.reload_doc();
 				}
 			}
-		})
+		});
 	}
-}
+};
