fixed logic for creating disease tasks (#12081)

diff --git a/erpnext/agriculture/doctype/crop_cycle/crop_cycle.json b/erpnext/agriculture/doctype/crop_cycle/crop_cycle.json
index 410a0d4..e508888 100644
--- a/erpnext/agriculture/doctype/crop_cycle/crop_cycle.json
+++ b/erpnext/agriculture/doctype/crop_cycle/crop_cycle.json
@@ -599,6 +599,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "depends_on": "eval:!doc.__islocal", 
    "description": "List of diseases detected on the field. When selected it'll automatically add a list of tasks to deal with the disease ", 
    "fieldname": "section_break_14", 
    "fieldtype": "Section Break", 
@@ -790,7 +791,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-12-06 01:47:26.656870", 
+ "modified": "2017-12-18 12:54:29.071743", 
  "modified_by": "Administrator", 
  "module": "Agriculture", 
  "name": "Crop Cycle", 
diff --git a/erpnext/agriculture/doctype/crop_cycle/crop_cycle.py b/erpnext/agriculture/doctype/crop_cycle/crop_cycle.py
index 64e2f9a..819315c 100644
--- a/erpnext/agriculture/doctype/crop_cycle/crop_cycle.py
+++ b/erpnext/agriculture/doctype/crop_cycle/crop_cycle.py
@@ -16,11 +16,28 @@
 				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:
-			disease = frappe.get_doc('Disease', detected_disease.disease)
-			self.create_task(disease.treatment_task, self.name, detected_disease.start_date)
+			if not self.project:
+				self.project = self.name
+		else:
+			old_disease, new_disease = [], []
+			for detected_disease in self.detected_disease:
+				new_disease.append(detected_disease.name)
+			for detected_disease in self.get_doc_before_save().get('detected_disease'):
+				old_disease.append(detected_disease.name)
+			if list(set(new_disease)-set(old_disease)) != []:
+				self.update_disease(list(set(new_disease)-set(old_disease)))
+				frappe.msgprint("All tasks for the detected diseases were imported")
+
+	def update_disease(self, disease_hashes):
+		new_disease = []
+		for disease in self.detected_disease:
+			for disease_hash in disease_hashes:
+				if disease.name == disease_hash:
+					self.import_disease_tasks(disease.disease, disease.start_date)
+
+	def import_disease_tasks(self, disease, start_date):
+		disease_doc = frappe.get_doc('Disease', disease)
+		self.create_task(disease_doc.treatment_task, self.name, start_date)
 
 	def create_project(self, period, crop_tasks):
 		project = frappe.new_doc("Project")