// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt

cur_frm.cscript.onload = function(doc, cdt, cdn) {
	cur_frm.add_fetch('customer', 'customer_name', 'customer_name');
	cur_frm.add_fetch('supplier', 'supplier_name', 'supplier_name');

	cur_frm.fields_dict.customer.get_query = erpnext.queries.customer;
	cur_frm.fields_dict.supplier.get_query = erpnext.queries.supplier;

	if(cur_frm.fields_dict.lead) {
		cur_frm.fields_dict.lead.get_query = erpnext.queries.lead;
		cur_frm.add_fetch('lead', 'lead_name', 'lead_name');
	}

	if(doc.__islocal) {
		var last_route = frappe.route_history.slice(-2, -1)[0];
		if(last_route && last_route[0]==="Form") {
			var doctype = last_route[1],
				docname = last_route.slice(2).join("/");

			if(["Customer", "Quotation", "Sales Order", "Sales Invoice", "Delivery Note",
				"Installation Note", "Opportunity", "Warranty Claim", "Maintenance Visit",
				"Maintenance Schedule"]
				.indexOf(doctype)!==-1) {
				var refdoc = frappe.get_doc(doctype, docname);
				if((refdoc.doctype == "Quotation" && refdoc.quotation_to=="Customer") ||
					(refdoc.doctype == "Opportunity" && refdoc.enquiry_from=="Customer") ||
					!in_list(["Opportunity", "Quotation"], doctype)) {
						cur_frm.set_value("customer", refdoc.customer || refdoc.name);
						cur_frm.set_value("customer_name", refdoc.customer_name);
						if(cur_frm.doc.doctype==="Address")
							cur_frm.set_value("address_title", cur_frm.doc.customer_name);
				}
			}
			else if(["Supplier", "Supplier Quotation", "Purchase Order", "Purchase Invoice", "Purchase Receipt"]
				.indexOf(doctype)!==-1) {
				var refdoc = frappe.get_doc(doctype, docname);
				cur_frm.set_value("supplier", refdoc.supplier || refdoc.name);
				cur_frm.set_value("supplier_name", refdoc.supplier_name);
				if(cur_frm.doc.doctype==="Address")
					cur_frm.set_value("address_title", cur_frm.doc.supplier_name);
			}
			else if(["Lead", "Opportunity", "Quotation"]
				.indexOf(doctype)!==-1) {
				var refdoc = frappe.get_doc(doctype, docname);

				if((refdoc.doctype == "Quotation" && refdoc.quotation_to=="Lead") ||
					(refdoc.doctype == "Opportunity" && refdoc.enquiry_from=="Lead") || (doctype=="Lead")) {
						cur_frm.set_value("lead", refdoc.lead || refdoc.name);
						cur_frm.set_value("lead_name", refdoc.customer_name || refdoc.company_name || refdoc.lead_name);
						if(cur_frm.doc.doctype==="Address")
							cur_frm.set_value("address_title", cur_frm.doc.lead_name);
				}
			}
			else if(doctype == "Sales Partner") {
				cur_frm.set_value("sales_partner", docname);
			}
		}
	}
}
