customer issue cleanup
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.js b/erpnext/support/doctype/customer_issue/customer_issue.js
index 699c97f..0749424 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.js
+++ b/erpnext/support/doctype/customer_issue/customer_issue.js
@@ -8,85 +8,85 @@
 // 
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 // GNU General Public License for more details.
 // 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 cur_frm.cscript.onload = function(doc,cdt,cdn){
-  if(!doc.status) set_multiple(dt,dn,{status:'Open'});  
-  if(doc.__islocal){    
-    hide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group']);
-  }   
+	if(!doc.status) set_multiple(dt,dn,{status:'Open'});	
+	if(doc.__islocal){		
+		hide_field(['customer_address','contact_person']);
+	}	 
 }
 
 cur_frm.cscript.refresh = function(doc,ct,cdn){
-  if(!doc.docstatus) hide_field('make_maintenance_visit');
-  else if(doc.docstatus && (doc.status == 'Open' || doc.status == 'Work In Progress')) unhide_field('make_maintenance_visit');
+	if(doc.docstatus == 1 && (doc.status == 'Open' || doc.status == 'Work In Progress')) 
+		cur_frm.add_custom_button('Make Maintenance Visit', cur_frm.cscript['Make Maintenance Visit']);
 }
 
 
 //customer
 cur_frm.cscript.customer = function(doc,dt,dn) {
-  var callback = function(r,rt) {
-      var doc = locals[cur_frm.doctype][cur_frm.docname];
-      cur_frm.refresh();
-  }   
+	var callback = function(r,rt) {
+			var doc = locals[cur_frm.doctype][cur_frm.docname];
+			cur_frm.refresh();
+	}
 
-  if(doc.customer) $c_obj(make_doclist(doc.doctype, doc.name), 'get_default_customer_address', '', callback);
-  if(doc.customer) unhide_field(['customer_address','contact_person','customer_name','address_display','contact_display','contact_mobile','contact_email','territory','customer_group']);
+	if(doc.customer) $c_obj(make_doclist(doc.doctype, doc.name), 'get_default_customer_address', '', callback);
+	if(doc.customer) unhide_field(['customer_address','contact_person']);
 }
 
-cur_frm.cscript.customer_address = cur_frm.cscript.contact_person = function(doc,dt,dn) {    
-  if(doc.customer) get_server_fields('get_customer_address', JSON.stringify({customer: doc.customer, address: doc.customer_address, contact: doc.contact_person}),'', doc, dt, dn, 1);
+cur_frm.cscript.customer_address = cur_frm.cscript.contact_person = function(doc,dt,dn) {		
+	if(doc.customer) 
+		get_server_fields('get_customer_address', 
+			JSON.stringify({customer: doc.customer, address: doc.customer_address, contact: doc.contact_person}),'', doc, dt, dn, 1);
 }
 
 cur_frm.fields_dict.customer_address.on_new = function(dn) {
-  locals['Address'][dn].customer = locals[cur_frm.doctype][cur_frm.docname].customer;
-  locals['Address'][dn].customer_name = locals[cur_frm.doctype][cur_frm.docname].customer_name;
+	locals['Address'][dn].customer = locals[cur_frm.doctype][cur_frm.docname].customer;
+	locals['Address'][dn].customer_name = locals[cur_frm.doctype][cur_frm.docname].customer_name;
 }
 
 cur_frm.fields_dict.contact_person.on_new = function(dn) {
-  locals['Contact'][dn].customer = locals[cur_frm.doctype][cur_frm.docname].customer;
-  locals['Contact'][dn].customer_name = locals[cur_frm.doctype][cur_frm.docname].customer_name;
+	locals['Contact'][dn].customer = locals[cur_frm.doctype][cur_frm.docname].customer;
+	locals['Contact'][dn].customer_name = locals[cur_frm.doctype][cur_frm.docname].customer_name;
 }
 
 cur_frm.fields_dict['customer_address'].get_query = function(doc, cdt, cdn) {
-  return 'SELECT name,address_line1,city FROM tabAddress WHERE customer = "'+ doc.customer +'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50';
+	return 'SELECT name,address_line1,city FROM tabAddress WHERE customer = "'+ doc.customer +
+		'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50';
 }
 
 cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
-  return 'SELECT name,CONCAT(first_name," ",ifnull(last_name,"")) As FullName,department,designation FROM tabContact WHERE customer = "'+ doc.customer +'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50';
+	return 'SELECT name,CONCAT(first_name," ",ifnull(last_name,"")) As FullName,department,designation \
+		FROM tabContact WHERE customer = "'	+ doc.customer +
+		'" AND docstatus != 2 AND name LIKE "%s" ORDER BY name ASC LIMIT 50';
 }
 
-
-
-
-cur_frm.cscript.make_maintenance_visit = function(doc, cdt, cdn) {
-  if (doc.docstatus == 1) { 
-    $c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_visit','',
-      function(r,rt){
-        if(r.message == 'No'){
-          n = createLocal("Maintenance Visit");
-          $c('dt_map', args={
-                  'docs':compress_doclist([locals["Maintenance Visit"][n]]),
-                  'from_doctype':'Customer Issue',
-                  'to_doctype':'Maintenance Visit',
-                  'from_docname':doc.name,
-            'from_to_list':"[['Customer Issue', 'Maintenance Visit'], ['Customer Issue', 'Maintenance Visit Purpose']]"
-          }
-          , function(r,rt) {
-            loaddoc("Maintenance Visit", n);
-          }
-          );
-        }
-        else{
-          msgprint("You have already completed maintenance against this Customer Issue");
-        }
-      }
-    );
-  }
+cur_frm.cscript['Make Maintenance Visit'] = function() {
+	var doc = cur_frm.doc;
+	if (doc.docstatus == 1) { 
+		$c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_visit','',
+			function(r,rt){
+				if(r.message == 'No'){
+					n = createLocal("Maintenance Visit");
+					$c('dt_map', args={
+						'docs':compress_doclist([locals["Maintenance Visit"][n]]),
+						'from_doctype':'Customer Issue',
+						'to_doctype':'Maintenance Visit',
+						'from_docname':doc.name,
+						'from_to_list':"[['Customer Issue', 'Maintenance Visit'], ['Customer Issue', 'Maintenance Visit Purpose']]"
+					}, function(r,rt) {
+						loaddoc("Maintenance Visit", n);
+					});
+				} else{
+					msgprint("You have already completed maintenance against this Customer Issue");
+				}
+			}
+		);
+	}
 }
 
 // ----------
@@ -94,9 +94,13 @@
 // ----------
 
 cur_frm.fields_dict['serial_no'].get_query = function(doc, cdt, cdn) {
-  var cond = '';
-  if(doc.item_code) cond = ' AND `tabSerial No`.item_code = "'+ doc.item_code +'"';
-  return 'SELECT `tabSerial No`.name, `tabSerial No`.description FROM `tabSerial No` WHERE `tabSerial No`.docstatus != 2 AND `tabSerial No`.name LIKE "%s" '+cond+' ORDER BY `tabSerial No`.name ASC LIMIT 50';
+	var cond = '';
+	if(doc.item_code) cond = ' AND `tabSerial No`.item_code = "'+ doc.item_code +'"';
+	if(doc.customer) cond += ' AND `tabSerial No`.customer = "' + doc.customer + '"';
+	return 'SELECT `tabSerial No`.name, `tabSerial No`.description \
+		FROM `tabSerial No` \
+		WHERE `tabSerial No`.docstatus != 2 AND `tabSerial No`.status = "Delivered" \
+		AND `tabSerial No`.name LIKE "%s" ' + cond + ' ORDER BY `tabSerial No`.name ASC LIMIT 50';
 }
 
 cur_frm.add_fetch('serial_no', 'item_code', 'item_code');
@@ -105,20 +109,27 @@
 cur_frm.add_fetch('serial_no', 'maintenance_status', 'warranty_amc_status');
 cur_frm.add_fetch('serial_no', 'warranty_expiry_date', 'warranty_expiry_date');
 cur_frm.add_fetch('serial_no', 'amc_expiry_date', 'amc_expiry_date');
-cur_frm.add_fetch('serial_no', 'customer', 'customer');
-cur_frm.add_fetch('serial_no', 'customer_name', 'customer_name');
-cur_frm.add_fetch('serial_no', 'delivery_address', 'customer_address');
+if (cstr(doc.customer) == '') {
+	cur_frm.add_fetch('serial_no', 'customer', 'customer');
+	cur_frm.add_fetch('serial_no', 'customer_name', 'customer_name');
+	cur_frm.add_fetch('serial_no', 'delivery_address', 'customer_address');
+}
 
 // ----------
 // item code
 // ----------
 cur_frm.fields_dict['item_code'].get_query = function(doc, cdt, cdn) {
-  if(doc.serial_no){
-    return 'SELECT `tabSerial No`.item_code, `tabSerial No`.description FROM `tabSerial No` WHERE `tabSerial No`.docstatus != 2 AND `tabSerial No`.name = "'+ doc.serial_no +'" AND `tabSerial No`.item_code LIKE "%s" ORDER BY `tabSerial No`.item_code ASC LIMIT 50';
-  }
-  else{
-    return 'SELECT `tabItem`.name, `tabItem`.item_name, `tabItem`.description FROM `tabItem` WHERE `tabItem`.docstatus != 2 AND `tabItem`.name LIKE "%s" ORDER BY `tabItem`.name ASC LIMIT 50';
-  }
+	if(doc.serial_no) {
+		return 'SELECT `tabSerial No`.item_code, `tabSerial No`.description \
+			FROM `tabSerial No` \
+			WHERE `tabSerial No`.docstatus != 2 AND `tabSerial No`.name = "' + doc.serial_no +
+			'" AND `tabSerial No`.item_code LIKE "%s" ORDER BY `tabSerial No`.item_code ASC LIMIT 50';
+	}
+	else{
+		return 'SELECT `tabItem`.name, `tabItem`.item_name, `tabItem`.description \
+			FROM `tabItem` \
+			WHERE `tabItem`.docstatus != 2 AND `tabItem`.name LIKE "%s" ORDER BY `tabItem`.name ASC LIMIT 50';
+	}
 }
 
 cur_frm.add_fetch('item_code', 'item_name', 'item_name');
@@ -128,5 +139,8 @@
 //get query select Territory
 //=======================================================================================================================
 cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-  return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` FROM `tabTerritory` WHERE `tabTerritory`.`is_group` = "No" AND `tabTerritory`.`docstatus`!= 2 AND `tabTerritory`.%(key)s LIKE "%s"  ORDER BY  `tabTerritory`.`name` ASC LIMIT 50';
+	return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` \
+		FROM `tabTerritory` \
+		WHERE `tabTerritory`.`is_group` = "No" AND `tabTerritory`.`docstatus`!= 2 \
+		AND `tabTerritory`.%(key)s LIKE "%s"	ORDER BY	`tabTerritory`.`name` ASC LIMIT 50';
 }
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.py b/erpnext/support/doctype/customer_issue/customer_issue.py
index 096d688..5c3f024 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.py
+++ b/erpnext/support/doctype/customer_issue/customer_issue.py
@@ -8,11 +8,11 @@
 # 
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 # GNU General Public License for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 # Please edit this list and import only required elements
 
@@ -36,49 +36,42 @@
 from utilities.transaction_base import TransactionBase
 
 class DocType(TransactionBase):
-  def __init__(self, doc, doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
-    self.prefix = is_testing and 'test' or 'tab'
-    
-  def autoname(self):
-    #self.doc.name = make_autoname('CI/' + self.doc.fiscal_year + '/.######')
-    self.doc.name = make_autoname(self.doc.naming_series + '.######')
-    
+	def __init__(self, doc, doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
+			
+	def autoname(self):
+		self.doc.name = make_autoname(self.doc.naming_series + '.######')
+		
 #check if maintenance schedule already generated
 #============================================
-  def check_maintenance_visit(self):
-    nm = sql("select t1.name from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 where t2.parent=t1.name and t2.prevdoc_docname=%s and t1.docstatus=1 and t1.completion_status='Fully Completed'", self.doc.name)
-    nm = nm and nm[0][0] or ''
-    
-    if not nm:
-      return 'No'
-  
-  def on_submit(self):
-    if session['user'] != 'Guest':
-      if not self.doc.allocated_to:
-        msgprint("Please select service person name whom you want to assign this issue")
-        raise Exception
-  
-  def validate(self):
-    if session['user'] != 'Guest' and not self.doc.customer:
-      msgprint("Please select Customer from whom issue is raised")
-      raise Exception
-    #if not self.doc.email_id and not self.doc.contact_no:
-    #  msgprint("Please specify contact no. and/or email_id")
-    #  raise Exception
-    #elif self.doc.email_id and not validate_email_add(self.doc.email_id.strip(' ')):
-    #  msgprint('error:%s is not a valid email id' % self.doc.email_id)
-    #  raise Exception
-  
-  def on_cancel(self):
-    lst = sql("select t1.name from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 where t2.parent = t1.name and t2.prevdoc_docname = '%s' and  t1.docstatus!=2"%(self.doc.name))
-    if lst:
-      lst1 = ','.join([x[0] for x in lst])
-      msgprint("Maintenance Visit No. "+lst1+" already created against this customer issue. So can not be Cancelled")
-      raise Exception
-    else:
-      set(self.doc, 'status', 'Cancelled')
+	def check_maintenance_visit(self):
+		nm = sql("select t1.name from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 where t2.parent=t1.name and t2.prevdoc_docname=%s and t1.docstatus=1 and t1.completion_status='Fully Completed'", self.doc.name)
+		nm = nm and nm[0][0] or ''
+		
+		if not nm:
+			return 'No'
+	
+	def on_submit(self):
+		if session['user'] != 'Guest':
+			if not self.doc.allocated_to:
+				msgprint("Please select service person name whom you want to assign this issue")
+				raise Exception
+	
+	def validate(self):
+		if session['user'] != 'Guest' and not self.doc.customer:
+			msgprint("Please select Customer from whom issue is raised")
+			raise Exception
 
-  def on_update(self):
-    pass
+	
+	def on_cancel(self):
+		lst = sql("select t1.name from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 where t2.parent = t1.name and t2.prevdoc_docname = '%s' and	t1.docstatus!=2"%(self.doc.name))
+		if lst:
+			lst1 = ','.join([x[0] for x in lst])
+			msgprint("Maintenance Visit No. "+lst1+" already created against this customer issue. So can not be Cancelled")
+			raise Exception
+		else:
+			set(self.doc, 'status', 'Cancelled')
+
+	def on_update(self):
+		pass
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.txt b/erpnext/support/doctype/customer_issue/customer_issue.txt
index 2c27735..a96e91e 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.txt
+++ b/erpnext/support/doctype/customer_issue/customer_issue.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:40',
+		'creation': '2012-04-13 11:56:39',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:45:47',
+		'modified': '2012-05-18 17:04:36',
 		'modified_by': u'Administrator',
 		'owner': u'harshada@webnotestech.com'
 	},
@@ -25,7 +25,7 @@
 		'show_in_menu': 0,
 		'subject': u'%(complaint)s By %(complaint_raised_by)s on %(issue_date)s',
 		'tag_fields': u'status',
-		'version': 97
+		'version': 1
 	},
 
 	# These values are common for all DocField
@@ -55,6 +55,15 @@
 
 	# DocPerm
 	{
+		'create': 1,
+		'doctype': u'DocPerm',
+		'permlevel': 0,
+		'role': u'Guest',
+		'write': 1
+	},
+
+	# DocPerm
+	{
 		'amend': 1,
 		'cancel': 1,
 		'create': 1,
@@ -110,21 +119,12 @@
 		'role': u'Maintenance User'
 	},
 
-	# DocPerm
-	{
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'Guest',
-		'write': 1
-	},
-
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'customer_issue',
+		'fieldname': u'basic_info',
 		'fieldtype': u'Section Break',
-		'label': u'Customer Issue',
+		'label': u'Basic Info',
 		'oldfieldtype': u'Section Break',
 		'permlevel': 0
 	},
@@ -147,24 +147,6 @@
 
 	# DocField
 	{
-		'colour': u'White:FFF',
-		'default': u'Open',
-		'doctype': u'DocField',
-		'fieldname': u'status',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'Status',
-		'no_copy': 1,
-		'oldfieldname': u'status',
-		'oldfieldtype': u'Select',
-		'options': u'\nOpen\nClosed\nWork In Progress\nCancelled',
-		'permlevel': 0,
-		'reqd': 1,
-		'search_index': 1
-	},
-
-	# DocField
-	{
 		'default': u'Today',
 		'doctype': u'DocField',
 		'fieldname': u'complaint_date',
@@ -181,39 +163,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'complaint_raised_by',
-		'fieldtype': u'Data',
-		'label': u'Raised By',
-		'oldfieldname': u'complaint_raised_by',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'from_company',
-		'fieldtype': u'Data',
-		'label': u'From Company',
-		'oldfieldname': u'from_company',
-		'oldfieldtype': u'Data',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'service_address',
-		'fieldtype': u'Small Text',
-		'label': u'Service Address',
-		'oldfieldname': u'service_address',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'column_break0',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
@@ -264,144 +213,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'customer_name',
-		'fieldtype': u'Data',
-		'label': u'Name',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'address_display',
-		'fieldtype': u'Small Text',
-		'label': u'Address',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'contact_display',
-		'fieldtype': u'Small Text',
-		'label': u'Contact',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'contact_mobile',
-		'fieldtype': u'Data',
-		'label': u'Mobile No',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'contact_email',
-		'fieldtype': u'Data',
-		'label': u'Contact Email',
-		'permlevel': 1
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'territory',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'Territory',
-		'oldfieldname': u'territory',
-		'oldfieldtype': u'Link',
-		'options': u'Territory',
-		'permlevel': 0,
-		'print_hide': 1,
-		'reqd': 0,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'customer_group',
-		'fieldtype': u'Link',
-		'label': u'Customer Group',
-		'options': u'Customer Group',
-		'permlevel': 0,
-		'print_hide': 1,
-		'reqd': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'company',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'Company',
-		'oldfieldname': u'company',
-		'oldfieldtype': u'Link',
-		'options': u'Company',
-		'permlevel': 0,
-		'print_hide': 1,
-		'reqd': 1,
-		'search_index': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'fiscal_year',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'Fiscal Year',
-		'oldfieldname': u'fiscal_year',
-		'oldfieldtype': u'Select',
-		'options': u'link:Fiscal Year',
-		'permlevel': 0,
-		'print_hide': 1,
-		'reqd': 1,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amended_from',
-		'fieldtype': u'Data',
-		'hidden': 1,
-		'label': u'Amended From',
-		'no_copy': 1,
-		'oldfieldname': u'amended_from',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'print_hide': 1,
-		'width': u'150px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'amendment_date',
-		'fieldtype': u'Date',
-		'hidden': 1,
-		'label': u'Amendment Date',
-		'no_copy': 1,
-		'oldfieldname': u'amendment_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0,
-		'print_hide': 1,
-		'width': u'100px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'issue_details',
 		'fieldtype': u'Section Break',
 		'label': u'Issue Details',
@@ -440,6 +251,29 @@
 
 	# DocField
 	{
+		'doctype': u'DocField',
+		'fieldname': u'complaint',
+		'fieldtype': u'Small Text',
+		'label': u'Issue',
+		'no_copy': 1,
+		'oldfieldname': u'complaint',
+		'oldfieldtype': u'Small Text',
+		'permlevel': 0,
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'column_break1',
+		'fieldtype': u'Column Break',
+		'oldfieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
 		'colour': u'White:FFF',
 		'depends_on': u'eval:doc.item_code',
 		'doctype': u'DocField',
@@ -467,29 +301,6 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'complaint',
-		'fieldtype': u'Small Text',
-		'label': u'Issue',
-		'no_copy': 1,
-		'oldfieldname': u'complaint',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break1',
-		'fieldtype': u'Column Break',
-		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'warranty_amc_status',
@@ -522,6 +333,17 @@
 	# DocField
 	{
 		'doctype': u'DocField',
+		'fieldname': u'resolution_section',
+		'fieldtype': u'Section Break',
+		'label': u'Resolution',
+		'oldfieldtype': u'Section Break',
+		'options': u'Simple',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
 		'fieldname': u'allocated_on',
 		'fieldtype': u'Date',
 		'in_filter': 1,
@@ -549,29 +371,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'resolution_detail',
-		'fieldtype': u'Section Break',
-		'label': u'Resolution Detail',
-		'oldfieldtype': u'Section Break',
-		'options': u'Simple',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'resolution_details',
-		'fieldtype': u'Text',
-		'label': u'Resolution Details',
-		'no_copy': 1,
-		'oldfieldname': u'resolution_details',
-		'oldfieldtype': u'Text',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'column_break2',
 		'fieldtype': u'Column Break',
 		'oldfieldtype': u'Column Break',
@@ -610,27 +409,256 @@
 
 	# DocField
 	{
-		'allow_on_submit': 0,
-		'colour': u'White:FFF',
-		'depends_on': u'eval:!doc.__islocal',
 		'doctype': u'DocField',
-		'fieldname': u'next_steps',
-		'fieldtype': u'Section Break',
-		'label': u'Next Steps',
-		'oldfieldtype': u'Section Break',
+		'fieldname': u'resolution_details',
+		'fieldtype': u'Text',
+		'label': u'Resolution Details',
+		'no_copy': 1,
+		'oldfieldname': u'resolution_details',
+		'oldfieldtype': u'Text',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'allow_on_submit': 1,
+		'doctype': u'DocField',
+		'fieldname': u'contact_info',
+		'fieldtype': u'Section Break',
+		'label': u'Contact Info',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'col_break3',
+		'fieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'customer_name',
+		'fieldtype': u'Data',
+		'label': u'Customer Name',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'customer_group',
+		'fieldtype': u'Link',
+		'label': u'Customer Group',
+		'options': u'Customer Group',
+		'permlevel': 0,
+		'print_hide': 1,
+		'reqd': 0
+	},
+
+	# DocField
+	{
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
-		'fieldname': u'make_maintenance_visit',
-		'fieldtype': u'Button',
-		'label': u'Make Maintenance Visit',
-		'oldfieldtype': u'Button',
+		'fieldname': u'territory',
+		'fieldtype': u'Link',
+		'in_filter': 1,
+		'label': u'Territory',
+		'oldfieldname': u'territory',
+		'oldfieldtype': u'Link',
+		'options': u'Territory',
 		'permlevel': 0,
+		'print_hide': 1,
+		'reqd': 0,
+		'search_index': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'address_display',
+		'fieldtype': u'Small Text',
+		'label': u'Address',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'col_break4',
+		'fieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'contact_display',
+		'fieldtype': u'Small Text',
+		'label': u'Contact',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'contact_mobile',
+		'fieldtype': u'Data',
+		'label': u'Mobile No',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'contact_email',
+		'fieldtype': u'Data',
+		'label': u'Contact Email',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'service_address',
+		'fieldtype': u'Small Text',
+		'label': u'Service Address',
+		'oldfieldname': u'service_address',
+		'oldfieldtype': u'Small Text',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'more_info',
+		'fieldtype': u'Section Break',
+		'label': u'More Info',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'col_break5',
+		'fieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'doctype': u'DocField',
+		'fieldname': u'company',
+		'fieldtype': u'Link',
+		'in_filter': 1,
+		'label': u'Company',
+		'oldfieldname': u'company',
+		'oldfieldtype': u'Link',
+		'options': u'Company',
+		'permlevel': 0,
+		'print_hide': 1,
+		'reqd': 1,
+		'search_index': 1,
 		'trigger': u'Client'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'fiscal_year',
+		'fieldtype': u'Select',
+		'in_filter': 1,
+		'label': u'Fiscal Year',
+		'oldfieldname': u'fiscal_year',
+		'oldfieldtype': u'Select',
+		'options': u'link:Fiscal Year',
+		'permlevel': 0,
+		'print_hide': 1,
+		'reqd': 1,
+		'search_index': 1
+	},
+
+	# DocField
+	{
+		'colour': u'White:FFF',
+		'default': u'Open',
+		'doctype': u'DocField',
+		'fieldname': u'status',
+		'fieldtype': u'Select',
+		'in_filter': 1,
+		'label': u'Status',
+		'no_copy': 1,
+		'oldfieldname': u'status',
+		'oldfieldtype': u'Select',
+		'options': u'\nOpen\nClosed\nWork In Progress\nCancelled',
+		'permlevel': 0,
+		'reqd': 1,
+		'search_index': 1
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'col_break6',
+		'fieldtype': u'Column Break',
+		'permlevel': 0,
+		'width': u'50%'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'complaint_raised_by',
+		'fieldtype': u'Data',
+		'label': u'Raised By',
+		'oldfieldname': u'complaint_raised_by',
+		'oldfieldtype': u'Data',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'from_company',
+		'fieldtype': u'Data',
+		'label': u'From Company',
+		'oldfieldname': u'from_company',
+		'oldfieldtype': u'Data',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'amended_from',
+		'fieldtype': u'Data',
+		'hidden': 1,
+		'label': u'Amended From',
+		'no_copy': 1,
+		'oldfieldname': u'amended_from',
+		'oldfieldtype': u'Data',
+		'permlevel': 0,
+		'print_hide': 1,
+		'width': u'150px'
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'amendment_date',
+		'fieldtype': u'Date',
+		'hidden': 1,
+		'label': u'Amendment Date',
+		'no_copy': 1,
+		'oldfieldname': u'amendment_date',
+		'oldfieldtype': u'Date',
+		'permlevel': 0,
+		'print_hide': 1,
+		'width': u'100px'
 	}
 ]
\ No newline at end of file