fix: Remove Pick List Reference Item use Item locations table instead
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 38e1157..efa901b 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -735,33 +735,22 @@
else:
target.delete()
- doc = get_mapped_doc("Work Order", source_name, {
- "Work Order": {
- "doctype": "Pick List",
- "validation": {
- "docstatus": ["=", 1]
+ doc = get_mapped_doc('Work Order', source_name, {
+ 'Work Order': {
+ 'doctype': 'Pick List',
+ 'validation': {
+ 'docstatus': ['=', 1]
}
},
- "Work Order Item": {
- "doctype": "Pick List Reference Item",
- "postprocess": update_item_quantity,
- "condition": lambda doc: abs(doc.transferred_qty) < abs(doc.required_qty)
+ 'Work Order Item': {
+ 'doctype': 'Pick List Item',
+ 'postprocess': update_item_quantity,
+ 'condition': lambda doc: abs(doc.transferred_qty) < abs(doc.required_qty)
},
}, target_doc)
- # # aggregate qty for same item
- # item_map = frappe._dict()
- # for item in doc.items:
- # item.idx = None
- # if not item_map.get(item.item_code):
- # item_map[item.item_code] = item
- # else:
- # item_map[item.item_code].qty += item.qty
- # item_map[item.item_code].stock_qty += item.stock_qty
-
- # doc.delete_key('items')
- # doc.set('items', item_map.values())
-
doc.for_qty = for_qty
+ doc.set_item_locations()
+
return doc
\ No newline at end of file
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index e6621b1..c9aaab4 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -998,24 +998,26 @@
target.qty = flt(source.qty) - flt(source.delivered_qty)
target.stock_qty = (flt(source.qty) - flt(source.delivered_qty)) * flt(source.conversion_factor)
- doc = get_mapped_doc("Sales Order", source_name, {
- "Sales Order": {
- "doctype": "Pick List",
- "validation": {
- "docstatus": ["=", 1]
+ doc = get_mapped_doc('Sales Order', source_name, {
+ 'Sales Order': {
+ 'doctype': 'Pick List',
+ 'validation': {
+ 'docstatus': ['=', 1]
}
},
- "Sales Order Item": {
- "doctype": "Pick List Reference Item",
- "field_map": {
- "parent": "sales_order",
- "name": "sales_order_item"
+ 'Sales Order Item': {
+ 'doctype': 'Pick List Item',
+ 'field_map': {
+ 'parent': 'sales_order',
+ 'name': 'sales_order_item'
},
- "postprocess": update_item_quantity,
- "condition": lambda doc: abs(doc.delivered_qty) < abs(doc.qty) and doc.delivered_by_supplier!=1
+ 'postprocess': update_item_quantity,
+ 'condition': lambda doc: abs(doc.delivered_qty) < abs(doc.qty) and doc.delivered_by_supplier!=1
},
}, target_doc)
doc.purpose = 'Delivery against Sales Order'
+ doc.set_item_locations()
+
return doc
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 9cad3f0..44e890c 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -516,7 +516,7 @@
}
},
'Material Request Item': {
- 'doctype': 'Pick List Reference Item',
+ 'doctype': 'Pick List Item',
'field_map': {
'name': 'material_request_item',
'qty': 'stock_qty'
@@ -524,4 +524,6 @@
},
}, target_doc)
+ doc.set_item_locations()
+
return doc
\ No newline at end of file
diff --git a/erpnext/stock/doctype/pick_list/pick_list.js b/erpnext/stock/doctype/pick_list/pick_list.js
index 163ff8c..54a2ca9 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.js
+++ b/erpnext/stock/doctype/pick_list/pick_list.js
@@ -30,6 +30,7 @@
}
};
});
+ // frm.set_df_property('get_item_locations', 'hidden', frm.is_dirty());
},
get_item_locations: (frm) => {
frm.call('set_item_locations');
@@ -69,7 +70,6 @@
frappe.msgprint(__('Quantity must not be more than {0}', [max]));
return;
}
- frm.clear_table('items');
frm.clear_table('locations');
erpnext.utils.map_current_doc({
method: 'erpnext.manufacturing.doctype.work_order.work_order.create_pick_list',
@@ -80,20 +80,13 @@
});
},
material_request: (frm) => {
- frm.clear_table('items');
- frm.clear_table('locations');
erpnext.utils.map_current_doc({
method: 'erpnext.stock.doctype.material_request.material_request.create_pick_list',
target: frm,
source_name: frm.doc.material_request
});
},
- parent_warehouse: (frm) => {
- frm.clear_table('locations');
- frm.refresh_field('locations');
- },
purpose: (frm) => {
- frm.clear_table('items');
frm.clear_table('locations');
frm.trigger('add_get_items_button');
},
@@ -140,7 +133,7 @@
}
});
-frappe.ui.form.on('Pick List Reference Item', {
+frappe.ui.form.on('Pick List Item', {
item_code: (frm, cdt, cdn) => {
let row = frappe.get_doc(cdt, cdn);
if (row.item_code) {
diff --git a/erpnext/stock/doctype/pick_list/pick_list.json b/erpnext/stock/doctype/pick_list/pick_list.json
index 5d33378..e635db0 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.json
+++ b/erpnext/stock/doctype/pick_list/pick_list.json
@@ -14,8 +14,6 @@
"for_qty",
"column_break_4",
"parent_warehouse",
- "section_break_4",
- "items",
"get_item_locations",
"section_break_6",
"locations",
@@ -39,10 +37,6 @@
"fieldtype": "Section Break"
},
{
- "fieldname": "section_break_4",
- "fieldtype": "Section Break"
- },
- {
"description": "Items under this warehouse will be suggested",
"fieldname": "parent_warehouse",
"fieldtype": "Link",
@@ -65,13 +59,6 @@
"options": "Work Order"
},
{
- "fieldname": "items",
- "fieldtype": "Table",
- "label": "Items To Be Picked",
- "options": "Pick List Reference Item",
- "reqd": 1
- },
- {
"fieldname": "locations",
"fieldtype": "Table",
"label": "Item Locations",
@@ -109,7 +96,6 @@
"options": "Material Request"
},
{
- "depends_on": "eval: doc.items.length && (doc.items.length > 1 || doc.items[0].item_code) && doc.docstatus === 0",
"fieldname": "get_item_locations",
"fieldtype": "Button",
"label": "Get Item Locations"
@@ -124,7 +110,7 @@
}
],
"is_submittable": 1,
- "modified": "2019-08-28 12:27:22.743705",
+ "modified": "2019-08-28 12:49:59.800807",
"modified_by": "Administrator",
"module": "Stock",
"name": "Pick List",
@@ -191,7 +177,6 @@
"write": 1
}
],
- "quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index 11a9985..0932c5a 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -17,7 +17,7 @@
class PickList(Document):
def set_item_locations(self):
- items = self.items
+ item_locations = self.locations
self.item_location_map = frappe._dict()
from_warehouses = None
@@ -26,7 +26,7 @@
# Reset
self.delete_key('locations')
- for item_doc in items:
+ for item_doc in item_locations:
item_code = item_doc.item_code
if frappe.get_cached_value('Item', item_code, 'has_serial_no'):
locations = get_item_locations_based_on_serial_nos(item_doc)
@@ -37,20 +37,21 @@
self.item_location_map[item_code] = get_available_items(item_code, from_warehouses)
locations = get_items_with_warehouse_and_quantity(item_doc, from_warehouses, self.item_location_map)
+ # hack
+ del item_doc.idx
+ if len(locations) > 1:
+ del item_doc.name
+
for row in locations:
+ stock_qty = row.get('qty', 0) * item_doc.conversion_factor
row.update({
- 'item_code': item_code,
- 'sales_order': item_doc.sales_order,
- 'sales_order_item': item_doc.sales_order_item,
- 'material_request': item_doc.material_request,
- 'material_request_item': item_doc.material_request_item,
- 'uom': item_doc.uom,
- 'stock_uom': item_doc.stock_uom,
- 'conversion_factor': item_doc.conversion_factor,
- 'stock_qty': row.get("qty", 0) * item_doc.conversion_factor,
- 'picked_qty': row.get("qty", 0) * item_doc.conversion_factor
+ 'stock_qty': stock_qty,
+ 'picked_qty': stock_qty
})
- self.append('locations', row)
+
+ location = item_doc
+ location.update(row)
+ self.append('locations', location)
def get_items_with_warehouse_and_quantity(item_doc, from_warehouses, item_location_map):
available_locations = item_location_map.get(item_doc.item_code)
@@ -243,27 +244,6 @@
return stock_entry.as_dict()
@frappe.whitelist()
-def create_stock_entry_with_material_request_items(pick_list):
- stock_entry = frappe.new_doc('Stock Entry')
- stock_entry.pick_list = pick_list.get('name')
- stock_entry.purpose = pick_list.get('purpose')
- stock_entry.set_stock_entry_type()
-
- doc = get_mapped_doc("Work Order", source_name, {
- "Work Order": {
- "doctype": "Pick List",
- "validation": {
- "docstatus": ["=", 1]
- }
- },
- "Work Order Item": {
- "doctype": "Pick List Reference Item",
- "postprocess": update_item_quantity,
- "condition": lambda doc: abs(doc.transferred_qty) < abs(doc.required_qty)
- },
- }, target_doc)
-
-@frappe.whitelist()
def get_pending_work_orders(doctype, txt, searchfield, start, page_length, filters, as_dict):
return frappe.db.sql("""
SELECT
diff --git a/erpnext/stock/doctype/pick_list_item/pick_list_item.json b/erpnext/stock/doctype/pick_list_item/pick_list_item.json
index 4dc3ae4..552764d 100644
--- a/erpnext/stock/doctype/pick_list_item/pick_list_item.json
+++ b/erpnext/stock/doctype/pick_list_item/pick_list_item.json
@@ -33,8 +33,7 @@
"fieldname": "qty",
"fieldtype": "Float",
"in_list_view": 1,
- "label": "Qty",
- "read_only": 1
+ "label": "Qty"
},
{
"fieldname": "picked_qty",
@@ -100,8 +99,7 @@
"fieldname": "uom",
"fieldtype": "Link",
"label": "UOM",
- "options": "UOM",
- "read_only": 1
+ "options": "UOM"
},
{
"fieldname": "conversion_factor",
@@ -121,8 +119,7 @@
"fieldtype": "Link",
"in_list_view": 1,
"label": "Item",
- "options": "Item",
- "read_only": 1
+ "options": "Item"
},
{
"fieldname": "quantity_section",
@@ -171,7 +168,7 @@
}
],
"istable": 1,
- "modified": "2019-08-28 12:34:06.224534",
+ "modified": "2019-08-28 15:56:14.507776",
"modified_by": "Administrator",
"module": "Stock",
"name": "Pick List Item",
diff --git a/erpnext/stock/doctype/pick_list_reference_item/__init__.py b/erpnext/stock/doctype/pick_list_reference_item/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/stock/doctype/pick_list_reference_item/__init__.py
+++ /dev/null
diff --git a/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.js b/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.js
deleted file mode 100644
index 875ce23..0000000
--- a/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('Pick List Reference Item', {
- // refresh: function(frm) {
-
- // }
-});
diff --git a/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.json b/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.json
deleted file mode 100644
index 861e696..0000000
--- a/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.json
+++ /dev/null
@@ -1,109 +0,0 @@
-{
- "creation": "2019-07-24 16:11:07.415562",
- "doctype": "DocType",
- "editable_grid": 1,
- "engine": "InnoDB",
- "field_order": [
- "item_code",
- "quantity_section",
- "qty",
- "stock_qty",
- "column_break_5",
- "uom",
- "conversion_factor",
- "stock_uom",
- "reference_section",
- "sales_order",
- "sales_order_item",
- "material_request",
- "material_request_item"
- ],
- "fields": [
- {
- "fieldname": "qty",
- "fieldtype": "Float",
- "in_list_view": 1,
- "label": "Qty"
- },
- {
- "fieldname": "quantity_section",
- "fieldtype": "Section Break",
- "label": "Quantity"
- },
- {
- "fieldname": "stock_qty",
- "fieldtype": "Float",
- "label": "Stock Qty",
- "read_only": 1
- },
- {
- "fieldname": "uom",
- "fieldtype": "Link",
- "label": "UOM",
- "options": "UOM"
- },
- {
- "fieldname": "stock_uom",
- "fieldtype": "Link",
- "label": "Stock UOM",
- "options": "UOM",
- "read_only": 1
- },
- {
- "fieldname": "item_code",
- "fieldtype": "Link",
- "in_list_view": 1,
- "label": "Item",
- "options": "Item"
- },
- {
- "fieldname": "column_break_5",
- "fieldtype": "Column Break"
- },
- {
- "fieldname": "reference_section",
- "fieldtype": "Section Break",
- "label": "Reference"
- },
- {
- "fieldname": "sales_order",
- "fieldtype": "Link",
- "label": "Sales Order",
- "options": "Sales Order",
- "read_only": 1
- },
- {
- "fieldname": "sales_order_item",
- "fieldtype": "Data",
- "label": "Sales Order Item",
- "read_only": 1
- },
- {
- "fieldname": "conversion_factor",
- "fieldtype": "Float",
- "label": "UOM Conversion Factor"
- },
- {
- "fieldname": "material_request",
- "fieldtype": "Link",
- "label": "Material Request",
- "options": "Material Request",
- "read_only": 1
- },
- {
- "fieldname": "material_request_item",
- "fieldtype": "Data",
- "label": "Material Request Item",
- "read_only": 1
- }
- ],
- "istable": 1,
- "modified": "2019-08-27 08:40:21.870638",
- "modified_by": "Administrator",
- "module": "Stock",
- "name": "Pick List Reference Item",
- "owner": "Administrator",
- "permissions": [],
- "sort_field": "modified",
- "sort_order": "DESC"
-}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.py b/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.py
deleted file mode 100644
index 74f0563..0000000
--- a/erpnext/stock/doctype/pick_list_reference_item/pick_list_reference_item.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-# import frappe
-from frappe.model.document import Document
-
-class PickListReferenceItem(Document):
- pass