diff --git a/erpnext/agriculture/doctype/crop_cycle/crop_cycle.js b/erpnext/agriculture/doctype/crop_cycle/crop_cycle.js
index 98dd056..ae28bb7 100644
--- a/erpnext/agriculture/doctype/crop_cycle/crop_cycle.js
+++ b/erpnext/agriculture/doctype/crop_cycle/crop_cycle.js
@@ -15,7 +15,7 @@
 					output[doctype].forEach( (analysis_doc) => {
 						let point_to_be_tested = JSON.parse(analysis_doc.location).features[0].geometry.coordinates;
 						let poly_of_land = JSON.parse(land_doc.location).features[0].geometry.coordinates[0];
-						if (test_analysis_position(point_to_be_tested, poly_of_land)){
+						if (is_in_land_unit(point_to_be_tested, poly_of_land)){
 							obj_to_append[analysis_doctypes_docs[analysis_doctypes.indexOf(doctype)]].push(analysis_doc.name);
 						}
 					});
@@ -28,7 +28,7 @@
 	}
 });
 
-function test_analysis_position(point, vs) {
+function is_in_land_unit(point, vs) {
 	// ray-casting algorithm based on
 	// http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
 	
diff --git a/erpnext/agriculture/doctype/crop_cycle/crop_cycle.py b/erpnext/agriculture/doctype/crop_cycle/crop_cycle.py
index 8912f59..64e2f9a 100644
--- a/erpnext/agriculture/doctype/crop_cycle/crop_cycle.py
+++ b/erpnext/agriculture/doctype/crop_cycle/crop_cycle.py
@@ -12,6 +12,10 @@
 		if self.is_new():
 			crop = frappe.get_doc('Crop', self.crop)
 			self.create_project(crop.period, crop.agriculture_task)
+			if not self.crop_spacing_uom:
+				self.crop_spacing_uom = crop.crop_spacing_uom
+			if not self.row_spacing_uom:
+				self.row_spacing_uom = crop.row_spacing_uom
 		if not self.project:
 			self.project = self.name
 		for detected_disease in self.detected_disease:
@@ -59,4 +63,19 @@
 		return ast.literal_eval(doc.location).get('features')[0].get('geometry').get('coordinates')
 
 	def get_geometry_type(self, doc):
-		return ast.literal_eval(doc.location).get('features')[0].get('geometry').get('type')
\ No newline at end of file
+		return ast.literal_eval(doc.location).get('features')[0].get('geometry').get('type')
+
+	def is_in_land_unit(self, point, vs):
+		x, y = point
+		inside = False
+		j = len(vs)-1
+		i = 0
+		while i < len(vs):
+			xi, yi = vs[i]
+			xj, yj = vs[j]
+			intersect = ((yi > y) != (yj > y)) and (x < (xj - xi) * (y - yi) / (yj - yi) + xi)
+			if intersect:
+				inside = not inside
+			i = j
+			j += 1
+		return inside
\ No newline at end of file
diff --git a/erpnext/agriculture/doctype/land_unit/land_unit.js b/erpnext/agriculture/doctype/land_unit/land_unit.js
index c9ab348..5b40b24 100644
--- a/erpnext/agriculture/doctype/land_unit/land_unit.js
+++ b/erpnext/agriculture/doctype/land_unit/land_unit.js
@@ -9,6 +9,13 @@
 	setup: function(frm) {
 		frm.add_fetch("parent_land_unit", "latitude", "latitude");
 		frm.add_fetch("parent_land_unit", "longitude", "longitude");
+		frm.set_query("parent_land_unit", function() {
+			return {
+				"filters": {
+					"is_group": 1
+				}
+			};
+		});
 	},
 
 	onload_post_render(frm){
@@ -28,4 +35,7 @@
 			frm.set_intro(null);
 		}
 	},
+	parent_land_unit: function(frm) {
+		frm.set_intro(null);
+	},
 });
diff --git a/erpnext/agriculture/doctype/land_unit/land_unit.json b/erpnext/agriculture/doctype/land_unit/land_unit.json
index e5f6c0d..94d350f 100644
--- a/erpnext/agriculture/doctype/land_unit/land_unit.json
+++ b/erpnext/agriculture/doctype/land_unit/land_unit.json
@@ -431,7 +431,7 @@
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
@@ -632,7 +632,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-12-13 16:50:18.581137", 
+ "modified": "2017-12-14 18:16:15.124188", 
  "modified_by": "Administrator", 
  "module": "Agriculture", 
  "name": "Land Unit", 
@@ -680,7 +680,7 @@
    "write": 1
   }
  ], 
- "quick_entry": 0, 
+ "quick_entry": 1, 
  "read_only": 0, 
  "read_only_onload": 0, 
  "show_name_in_global_search": 1, 
diff --git a/erpnext/agriculture/doctype/land_unit/land_unit.py b/erpnext/agriculture/doctype/land_unit/land_unit.py
index 634cb75..fe683bc 100644
--- a/erpnext/agriculture/doctype/land_unit/land_unit.py
+++ b/erpnext/agriculture/doctype/land_unit/land_unit.py
@@ -10,6 +10,7 @@
 from  frappe import _
 
 from frappe.utils.nestedset import NestedSet
+from frappe.utils import flt
 # from frappe.model.document import Document
 
 RADIUS = 6378137
@@ -39,10 +40,10 @@
 			else:
 				features = json.loads(self.get('location')).get('features')
 			new_area = compute_area(features)
-			self.area_difference = new_area - self.area
+			self.area_difference = new_area - flt(self.area)
 			self.area = new_area	
 
-			if self.get('parent'): 
+			if self.get('parent_land_unit'):
 				ancestors = self.get_ancestors()
 				self_features = self.add_child_property()
 				self_features = set(self_features)
@@ -118,7 +119,7 @@
 			layer_area += polygon_area(coords = feature.get('geometry').get('coordinates'))
 		elif feature.get('geometry').get('type') == 'Point' and feature.get('properties').get('point_type') == 'circle':
 			layer_area += math.pi * math.pow(feature.get('properties').get('radius'), 2)
-	return layer_area
+	return flt(layer_area)
 
 def rad(angle_in_degrees):
 	return angle_in_degrees*math.pi/180
diff --git a/erpnext/agriculture/doctype/land_unit/land_unit_tree.js b/erpnext/agriculture/doctype/land_unit/land_unit_tree.js
index 0d7a53e..e0d6479 100644
--- a/erpnext/agriculture/doctype/land_unit/land_unit_tree.js
+++ b/erpnext/agriculture/doctype/land_unit/land_unit_tree.js
@@ -8,8 +8,8 @@
 			click: function(node) {
 				var lu = frappe.new_doc("Land Unit", {
 					"parent_land_unit": node.label
-				})
+				});
 			}
 		}
 	],
-}
\ No newline at end of file
+};
\ No newline at end of file
