fix: Add option to select qty of finished goods Item
diff --git a/erpnext/stock/doctype/pick_list/pick_list.js b/erpnext/stock/doctype/pick_list/pick_list.js
index 08a3888..e3064fe 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.js
+++ b/erpnext/stock/doctype/pick_list/pick_list.js
@@ -36,10 +36,30 @@
},
work_order: (frm) => {
frm.clear_table('items');
- erpnext.utils.map_current_doc({
- method: 'erpnext.manufacturing.doctype.work_order.work_order.create_pick_list',
- target: frm,
- source_name: frm.doc.work_order
+ frappe.db.get_value('Work Order',
+ frm.doc.work_order,
+ ['qty', 'produced_qty']
+ ).then(data => {
+ let qty_data = data.message;
+ let max = qty_data.qty - qty_data.produced_qty;
+ frappe.prompt({
+ fieldtype: 'Float',
+ label: __('Qty'),
+ fieldname: 'qty',
+ description: __('Max: {0}', [max]),
+ default: max
+ }, (data) => {
+ frm.set_value('qty', data.qty);
+ if (data.qty > max) {
+ frappe.msgprint(__('Quantity must not be more than {0}', [max]));
+ return;
+ }
+ erpnext.utils.map_current_doc({
+ method: 'erpnext.manufacturing.doctype.work_order.work_order.create_pick_list',
+ target: frm,
+ source_name: frm.doc.work_order
+ });
+ }, __("Select Quantity"), __('Get Items'));
});
},
items_based_on: (frm) => {
@@ -52,11 +72,8 @@
});
},
create_stock_entry(frm) {
- // TODO: show dialog for qty
-
frappe.xcall('erpnext.stock.doctype.pick_list.pick_list.create_stock_entry', {
'pick_list': frm.doc,
- 'qty': 1
}).then(stock_entry => {
frappe.model.sync(stock_entry);
frappe.set_route("Form", 'Stock Entry', stock_entry.name);
diff --git a/erpnext/stock/doctype/pick_list/pick_list.json b/erpnext/stock/doctype/pick_list/pick_list.json
index 1a33622..e321a0b 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.json
+++ b/erpnext/stock/doctype/pick_list/pick_list.json
@@ -8,6 +8,7 @@
"items_based_on",
"customer",
"work_order",
+ "qty",
"column_break_4",
"parent_warehouse",
"company",
@@ -59,8 +60,7 @@
"fieldtype": "Link",
"in_list_view": 1,
"label": "Customer",
- "options": "Customer",
- "reqd": 1
+ "options": "Customer"
},
{
"depends_on": "eval:doc.items_based_on===\"Work Order\"",
@@ -81,9 +81,16 @@
"fieldtype": "Table",
"label": "Item Locations",
"options": "Pick List Item"
+ },
+ {
+ "depends_on": "work_order",
+ "description": "Qty of raw materials will be decided based on the qty of the Finished Goods Item",
+ "fieldname": "qty",
+ "fieldtype": "Float",
+ "label": "Qty of Finished Goods Item"
}
],
- "modified": "2019-08-20 16:57:11.006221",
+ "modified": "2019-08-22 09:50:01.099449",
"modified_by": "Administrator",
"module": "Stock",
"name": "Pick List",
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index 34f1ab5..d7f420d 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -231,12 +231,9 @@
@frappe.whitelist()
-def create_stock_entry(pick_list, qty):
+def create_stock_entry(pick_list):
pick_list = frappe.get_doc(json.loads(pick_list))
work_order = frappe.get_doc("Work Order", pick_list.get('work_order'))
- if not qty:
- qty = work_order.qty - work_order.material_transferred_for_manufacturing
- if not qty: return
stock_entry = frappe.new_doc('Stock Entry')
stock_entry.purpose = 'Material Transfer For Manufacture'
@@ -246,7 +243,7 @@
stock_entry.from_bom = 1
stock_entry.bom_no = work_order.bom_no
stock_entry.use_multi_level_bom = work_order.use_multi_level_bom
- stock_entry.fg_completed_qty = (flt(work_order.qty) - flt(work_order.produced_qty))
+ stock_entry.fg_completed_qty = pick_list.qty
if work_order.bom_no:
stock_entry.inspection_required = frappe.db.get_value('BOM',
work_order.bom_no, 'inspection_required')