Fixes in material request, asset maintenance
diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.js b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.js
index 1583daf..3c135d4 100644
--- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.js
+++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.js
@@ -24,7 +24,28 @@
return indicator;
}
);
+
+ frm.set_query('select_serial_no', function(doc){
+ return {
+ asset: frm.doc.asset_name
+ }
+ })
},
+
+ select_serial_no: (frm) => {
+ let serial_nos = frm.doc.serial_no || frm.doc.select_serial_no;
+ if (serial_nos) {
+ serial_nos = serial_nos.split('\n');
+ serial_nos.push(frm.doc.select_serial_no);
+
+ const unique_sn = serial_nos.filter(function(elem, index, self) {
+ return index === self.indexOf(elem);
+ });
+
+ frm.set_value("serial_no", unique_sn.join('\n'));
+ }
+ },
+
refresh: (frm) => {
if(!frm.is_new()) {
frm.trigger('make_dashboard');
diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.json b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.json
index f36fe4e..c254fe1 100644
--- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.json
+++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.json
@@ -209,6 +209,38 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "fieldname": "select_serial_no",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Select Serial No",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Serial No",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "serial_no",
"fieldtype": "Small Text",
"hidden": 0,
@@ -221,12 +253,12 @@
"label": "Serial No",
"length": 0,
"no_copy": 0,
- "options": "asset_name.serial_no",
+ "options": "",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
- "read_only": 1,
+ "read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
@@ -465,7 +497,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2018-04-20 08:39:27.072622",
+ "modified": "2018-05-18 16:16:56.181695",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset Maintenance",
diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
index b30685f..7551eae 100644
--- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
+++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py
@@ -11,9 +11,6 @@
class AssetMaintenance(Document):
def validate(self):
- if not self.serial_no:
- self.serial_no = frappe.db.get_value("Asset", self.asset_name, 'serial_no')
-
for task in self.get('asset_maintenance_tasks'):
if task.end_date and (getdate(task.start_date) >= getdate(task.end_date)):
throw(_("Start date should be less than end date for task {0}").format(task.maintenance_task))
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index cdfbcae..6332d71 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -228,9 +228,13 @@
}
}
- frm.fields_dict["item_defaults"].grid.get_field("buying_cost_center").get_query = function(doc) {
+ frm.fields_dict["item_defaults"].grid.get_field("buying_cost_center").get_query = function(doc, cdt, cdn) {
+ const row = locals[cdt][cdn];
return {
- filters: { "is_group": 0 }
+ filters: {
+ "is_group": 0,
+ "company": row.company
+ }
}
}
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index 8e66b55..62ea2b6 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -45,6 +45,8 @@
stock_qty: item.stock_qty,
company: frm.doc.company,
conversion_rate: 1,
+ name: frm.doc.name,
+ material_request_type: frm.doc.material_request_type,
plc_conversion_rate: 1,
rate: item.rate,
conversion_factor: item.conversion_factor
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 562ac68..8a194fa 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -210,8 +210,8 @@
warehouse = user_default_warehouse or item_defaults.get("default_warehouse") or args.warehouse
material_request_type = ''
- if args.get('doctype') == "Material Request":
- material_request_type = frappe.db.get_value('Material Request',
+ if args.get('doctype') == "Material Request" and not args.get('material_request_type'):
+ args['material_request_type'] = frappe.db.get_value('Material Request',
args.get('name'), 'material_request_type')
#Set the UOM to the Default Sales UOM or Default Purchase UOM if configured in the Item Master
@@ -219,7 +219,7 @@
if args.get('doctype') in ['Quotation', 'Sales Order', 'Delivery Note', 'Sales Invoice']:
args.uom = item.sales_uom if item.sales_uom else item.stock_uom
elif (args.get('doctype') in ['Purchase Order', 'Purchase Receipt', 'Purchase Invoice']) or \
- (args.get('doctype') == 'Material Request' and material_request_type == 'Purchase'):
+ (args.get('doctype') == 'Material Request' and args.get('material_request_type') == 'Purchase'):
args.uom = item.purchase_uom if item.purchase_uom else item.stock_uom
else:
args.uom = item.stock_uom