Merge branch 'develop'
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index efbed2e..9e302f0 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1 +1 @@
-__version__ = '4.11.1'
+__version__ = '4.11.2'
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index 825a8dd..c48eecf 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 
-from frappe.utils import cint, cstr, flt, fmt_money, formatdate, getdate
+from frappe.utils import cstr, flt, fmt_money, formatdate, getdate
 from frappe import msgprint, _, scrub
 from erpnext.setup.utils import get_company_currency
 
@@ -13,10 +13,6 @@
 class JournalVoucher(AccountsController):
 	def __init__(self, arg1, arg2=None):
 		super(JournalVoucher, self).__init__(arg1, arg2)
-		self.master_type = {}
-		self.credit_days_for = {}
-		self.credit_days_global = -1
-		self.is_approving_authority = -1
 
 	def validate(self):
 		if not self.is_opening:
@@ -40,7 +36,7 @@
 
 	def on_submit(self):
 		if self.voucher_type in ['Bank Voucher', 'Contra Voucher', 'Journal Entry']:
-			self.check_credit_days()
+			self.check_reference_date()
 		self.make_gl_entries()
 		self.check_credit_limit()
 		self.update_advance_paid()
@@ -309,43 +305,18 @@
 		from frappe.utils import money_in_words
 		self.total_amount_in_words = money_in_words(amt, company_currency)
 
-	def check_credit_days(self):
+	def check_reference_date(self):
 		if self.cheque_date:
 			for d in self.get("entries"):
-				if flt(d.credit) > 0 and d.against_invoice \
-					and frappe.db.get_value("Account", d.account, "master_type")=='Customer':
-						posting_date = frappe.db.get_value("Sales Invoice", d.against_invoice, "posting_date")
-						credit_days = self.get_credit_days_for(d.account)
-						if credit_days:
-							date_diff = (getdate(self.cheque_date) - getdate(posting_date)).days
-							if date_diff > flt(credit_days):
-								msgprint(_("Note: Reference Date exceeds allowed credit days by {0} days for {1}")
-									.format(date_diff - flt(credit_days), d.account))
-								if not self.get_authorized_user():
-									raise frappe.ValidationError
+				due_date = None
+				if d.against_invoice and flt(d.credit) > 0:
+					due_date = frappe.db.get_value("Sales Invoice", d.against_invoice, "due_date")
+				elif d.against_voucher and flt(d.debit) > 0:
+					due_date = frappe.db.get_value("Purchase Invoice", d.against_voucher, "due_date")
 
-	def get_credit_days_for(self, ac):
-		if not self.credit_days_for.has_key(ac):
-			self.credit_days_for[ac] = cint(frappe.db.get_value("Account", ac, "credit_days"))
-
-		if not self.credit_days_for[ac]:
-			if self.credit_days_global==-1:
-				self.credit_days_global = cint(frappe.db.get_value("Company", self.company, "credit_days"))
-
-			return self.credit_days_global
-		else:
-			return self.credit_days_for[ac]
-
-	def get_authorized_user(self):
-		if self.is_approving_authority==-1:
-			self.is_approving_authority = 0
-			approving_authority = frappe.db.get_value("Accounts Settings", None, "credit_controller")
-
-			# Check logged-in user is authorized
-			if approving_authority in frappe.user.get_roles():
-				self.is_approving_authority = 1
-
-		return self.is_approving_authority
+				if due_date and getdate(self.cheque_date) > getdate(due_date):
+					msgprint(_("Note: Reference Date {0} is after invoice due date {1}")
+						.format(formatdate(self.cheque_date), formatdate(due_date)))
 
 	def make_gl_entries(self, cancel=0, adv_adj=0):
 		from erpnext.accounts.general_ledger import make_gl_entries
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.js b/erpnext/accounts/doctype/payment_tool/payment_tool.js
index 3e0d2ee..473bc15 100644
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.js
+++ b/erpnext/accounts/doctype/payment_tool/payment_tool.js
@@ -42,9 +42,6 @@
 	erpnext.payment_tool.check_mandatory_to_set_button(frm);
 });
 
-// Fetch bank/cash account based on payment mode
-cur_frm.add_fetch("payment_mode", "default_account", "payment_account");
-
 // Set party account name
 frappe.ui.form.on("Payment Tool", "customer", function(frm) {
 	erpnext.payment_tool.set_party_account(frm);
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index c2e76e2..e21ff74 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -210,14 +210,15 @@
 	calculate_totals: function() {
 		var tax_count = this.frm.tax_doclist.length;
 		this.frm.doc.grand_total = flt(tax_count ?
-			this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total,
-			precision("grand_total"));
-		this.frm.doc.grand_total_import = flt(this.frm.doc.grand_total /
-			this.frm.doc.conversion_rate, precision("grand_total_import"));
+			this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total);
+		this.frm.doc.grand_total_import = flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate);
 
 		this.frm.doc.total_tax = flt(this.frm.doc.grand_total - this.frm.doc.net_total,
 			precision("total_tax"));
 
+		this.frm.doc.grand_total = flt(this.frm.doc.grand_total, precision("grand_total"));
+		this.frm.doc.grand_total_import = flt(this.frm.doc.grand_total_import, precision("grand_total_import"));
+
 		// rounded totals
 		if(frappe.meta.get_docfield(this.frm.doc.doctype, "rounded_total", this.frm.doc.name)) {
 			this.frm.doc.rounded_total = Math.round(this.frm.doc.grand_total);
diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js
index b5c7fb1..91ec813 100644
--- a/erpnext/buying/doctype/supplier/supplier.js
+++ b/erpnext/buying/doctype/supplier/supplier.js
@@ -22,10 +22,9 @@
 		cur_frm.cscript.make_contact(doc,dt,dn);
 
 		cur_frm.communication_view = new frappe.views.CommunicationList({
-			list: frappe.get_list("Communication", {"supplier": doc.name}),
 			parent: cur_frm.fields_dict.communication_html.wrapper,
 			doc: doc
-		})
+		});
   }
 }
 
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index fc912c9..1e6e65d 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -110,13 +110,13 @@
 		self.round_floats_in(self, ["net_total", "net_total_import"])
 
 	def calculate_totals(self):
-		self.grand_total = flt(self.tax_doclist[-1].total if self.tax_doclist
-			else self.net_total, self.precision("grand_total"))
-		self.grand_total_import = flt(self.grand_total / self.conversion_rate,
-			self.precision("grand_total_import"))
+		self.grand_total = flt(self.tax_doclist[-1].total if self.tax_doclist else self.net_total)
+		self.grand_total_import = flt(self.grand_total / self.conversion_rate)
 
-		self.total_tax = flt(self.grand_total - self.net_total,
-			self.precision("total_tax"))
+		self.total_tax = flt(self.grand_total - self.net_total, self.precision("total_tax"))
+
+		self.grand_total = flt(self.grand_total, self.precision("grand_total"))
+		self.grand_total_import = flt(self.grand_total_import, self.precision("grand_total_import"))
 
 		if self.meta.get_field("rounded_total"):
 			self.rounded_total = rounded(self.grand_total)
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 86d8837..6e93c30 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -216,17 +216,17 @@
 		self.round_floats_in(self, ["net_total", "net_total_export"])
 
 	def calculate_totals(self):
-		self.grand_total = flt(self.tax_doclist and \
-			self.tax_doclist[-1].total or self.net_total, self.precision("grand_total"))
-		self.grand_total_export = flt(self.grand_total / self.conversion_rate,
-			self.precision("grand_total_export"))
+		self.grand_total = flt(self.tax_doclist[-1].total if self.tax_doclist else self.net_total)
 
-		self.other_charges_total = flt(self.grand_total - self.net_total,
-			self.precision("other_charges_total"))
+		self.grand_total_export = flt(self.grand_total / self.conversion_rate)
 
-		self.other_charges_total_export = flt(self.grand_total_export -
-			self.net_total_export + flt(self.discount_amount),
-			self.precision("other_charges_total_export"))
+		self.other_charges_total = flt(self.grand_total - self.net_total, self.precision("other_charges_total"))
+
+		self.other_charges_total_export = flt(self.grand_total_export - self.net_total_export +
+			flt(self.discount_amount), self.precision("other_charges_total_export"))
+
+		self.grand_total = flt(self.grand_total, self.precision("grand_total"))
+		self.grand_total_export = flt(self.grand_total_export, self.precision("grand_total_export"))
 
 		self.rounded_total = rounded(self.grand_total)
 		self.rounded_total_export = rounded(self.grand_total_export)
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 75795af..d1599ed 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -4,7 +4,7 @@
 app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "4.11.1"
+app_version = "4.11.2"
 
 error_report_email = "support@erpnext.com"
 
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index fd16258..783474c 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -341,11 +341,8 @@
 		var me = this;
 		var tax_count = this.frm.tax_doclist.length;
 
-		this.frm.doc.grand_total = flt(
-			tax_count ? this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total,
-			precision("grand_total"));
-		this.frm.doc.grand_total_export = flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate,
-			precision("grand_total_export"));
+		this.frm.doc.grand_total = flt(tax_count ? this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total);
+		this.frm.doc.grand_total_export = flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate);
 
 		this.frm.doc.other_charges_total = flt(this.frm.doc.grand_total - this.frm.doc.net_total,
 			precision("other_charges_total"));
@@ -353,6 +350,9 @@
 			this.frm.doc.net_total_export + flt(this.frm.doc.discount_amount),
 			precision("other_charges_total_export"));
 
+		this.frm.doc.grand_total = flt(this.frm.doc.grand_total, precision("grand_total"));
+		this.frm.doc.grand_total_export = flt(this.frm.doc.grand_total_export, precision("grand_total_export"));
+
 		this.frm.doc.rounded_total = Math.round(this.frm.doc.grand_total);
 		this.frm.doc.rounded_total_export = Math.round(this.frm.doc.grand_total_export);
 	},
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index e87a233..a30a629 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -381,7 +381,8 @@
 		"Delivery Note": {
 			"doctype": "Packing Slip",
 			"field_map": {
-				"name": "delivery_note"
+				"name": "delivery_note",
+				"letter_head": "letter_head"
 			},
 			"validation": {
 				"docstatus": ["=", 0]
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index cb9552d..e87ceb0 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -205,7 +205,8 @@
 				["uom", "stock_uom"],
 				["uom", "uom"]
 			],
-			"postprocess": update_item
+			"postprocess": update_item,
+			"condition": lambda doc: doc.ordered_qty < doc.qty
 		}
 	}, target_doc, set_missing_values)
 
@@ -243,7 +244,8 @@
 					["uom", "stock_uom"],
 					["uom", "uom"]
 				],
-				"postprocess": update_item
+				"postprocess": update_item,
+				"condition": lambda doc: doc.ordered_qty < doc.qty
 			}
 		}, target_doc, postprocess)
 
@@ -315,7 +317,8 @@
 				"uom": "stock_uom",
 				"warehouse": "t_warehouse"
 			},
-			"postprocess": update_item
+			"postprocess": update_item,
+			"condition": lambda doc: doc.ordered_qty < doc.qty
 		}
 	}, target_doc, set_missing_values)
 
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.json b/erpnext/stock/doctype/packing_slip/packing_slip.json
index 3b3d5a0..27247e8 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.json
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.json
@@ -1,264 +1,281 @@
 {
- "autoname": "PS.#######",
- "creation": "2013-04-11 15:32:24",
- "description": "Generate packing slips for packages to be delivered. Used to notify package number, package contents and its weight.",
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "Transaction",
+ "autoname": "PS.#######", 
+ "creation": "2013-04-11 15:32:24", 
+ "description": "Generate packing slips for packages to be delivered. Used to notify package number, package contents and its weight.", 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "Transaction", 
  "fields": [
   {
-   "fieldname": "packing_slip_details",
-   "fieldtype": "Section Break",
-   "label": "Packing Slip Items",
-   "permlevel": 0,
+   "fieldname": "packing_slip_details", 
+   "fieldtype": "Section Break", 
+   "label": "Packing Slip Items", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "fieldname": "column_break0",
-   "fieldtype": "Column Break",
-   "permlevel": 0,
+   "fieldname": "column_break0", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "description": "Indicates that the package is a part of this delivery (Only Draft)",
-   "fieldname": "delivery_note",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Delivery Note",
-   "options": "Delivery Note",
-   "permlevel": 0,
-   "read_only": 0,
+   "description": "Indicates that the package is a part of this delivery (Only Draft)", 
+   "fieldname": "delivery_note", 
+   "fieldtype": "Link", 
+   "in_list_view": 1, 
+   "label": "Delivery Note", 
+   "options": "Delivery Note", 
+   "permlevel": 0, 
+   "read_only": 0, 
    "reqd": 1
-  },
+  }, 
   {
-   "fieldname": "column_break1",
-   "fieldtype": "Column Break",
-   "permlevel": 0,
+   "fieldname": "column_break1", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "fieldname": "naming_series",
-   "fieldtype": "Select",
-   "label": "Series",
-   "no_copy": 0,
-   "options": "PS-",
-   "permlevel": 0,
-   "print_hide": 1,
-   "read_only": 0,
+   "fieldname": "naming_series", 
+   "fieldtype": "Select", 
+   "label": "Series", 
+   "no_copy": 0, 
+   "options": "PS-", 
+   "permlevel": 0, 
+   "print_hide": 1, 
+   "read_only": 0, 
    "reqd": 1
-  },
+  }, 
   {
-   "fieldname": "section_break0",
-   "fieldtype": "Section Break",
-   "permlevel": 0,
+   "fieldname": "section_break0", 
+   "fieldtype": "Section Break", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "fieldname": "column_break2",
-   "fieldtype": "Column Break",
-   "permlevel": 0,
+   "fieldname": "column_break2", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "description": "Identification of the package for the delivery (for print)",
-   "fieldname": "from_case_no",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "From Package No.",
-   "no_copy": 1,
-   "permlevel": 0,
-   "read_only": 0,
-   "reqd": 1,
+   "description": "Identification of the package for the delivery (for print)", 
+   "fieldname": "from_case_no", 
+   "fieldtype": "Data", 
+   "in_list_view": 1, 
+   "label": "From Package No.", 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "read_only": 0, 
+   "reqd": 1, 
    "width": "50px"
-  },
+  }, 
   {
-   "fieldname": "column_break3",
-   "fieldtype": "Column Break",
-   "permlevel": 0,
+   "fieldname": "column_break3", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "description": "If more than one package of the same type (for print)",
-   "fieldname": "to_case_no",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "To Package No.",
-   "no_copy": 1,
-   "permlevel": 0,
-   "read_only": 0,
+   "description": "If more than one package of the same type (for print)", 
+   "fieldname": "to_case_no", 
+   "fieldtype": "Data", 
+   "in_list_view": 1, 
+   "label": "To Package No.", 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "read_only": 0, 
    "width": "50px"
-  },
+  }, 
   {
-   "fieldname": "package_item_details",
-   "fieldtype": "Section Break",
-   "label": "Package Item Details",
-   "permlevel": 0,
+   "fieldname": "package_item_details", 
+   "fieldtype": "Section Break", 
+   "label": "Package Item Details", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "fieldname": "get_items",
-   "fieldtype": "Button",
-   "label": "Get Items",
+   "fieldname": "get_items", 
+   "fieldtype": "Button", 
+   "label": "Get Items", 
    "permlevel": 0
-  },
+  }, 
   {
-   "fieldname": "item_details",
-   "fieldtype": "Table",
-   "label": "Items",
-   "options": "Packing Slip Item",
-   "permlevel": 0,
+   "fieldname": "item_details", 
+   "fieldtype": "Table", 
+   "label": "Items", 
+   "options": "Packing Slip Item", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "fieldname": "package_weight_details",
-   "fieldtype": "Section Break",
-   "label": "Package Weight Details",
-   "permlevel": 0,
+   "fieldname": "package_weight_details", 
+   "fieldtype": "Section Break", 
+   "label": "Package Weight Details", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "description": "The net weight of this package. (calculated automatically as sum of net weight of items)",
-   "fieldname": "net_weight_pkg",
-   "fieldtype": "Float",
-   "label": "Net Weight",
-   "no_copy": 1,
-   "permlevel": 0,
+   "description": "The net weight of this package. (calculated automatically as sum of net weight of items)", 
+   "fieldname": "net_weight_pkg", 
+   "fieldtype": "Float", 
+   "label": "Net Weight", 
+   "no_copy": 1, 
+   "permlevel": 0, 
    "read_only": 1
-  },
+  }, 
   {
-   "fieldname": "net_weight_uom",
-   "fieldtype": "Link",
-   "label": "Net Weight UOM",
-   "no_copy": 1,
-   "options": "UOM",
-   "permlevel": 0,
+   "fieldname": "net_weight_uom", 
+   "fieldtype": "Link", 
+   "label": "Net Weight UOM", 
+   "no_copy": 1, 
+   "options": "UOM", 
+   "permlevel": 0, 
    "read_only": 1
-  },
+  }, 
   {
-   "fieldname": "column_break4",
-   "fieldtype": "Column Break",
-   "permlevel": 0,
+   "fieldname": "column_break4", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "description": "The gross weight of the package. Usually net weight + packaging material weight. (for print)",
-   "fieldname": "gross_weight_pkg",
-   "fieldtype": "Float",
-   "label": "Gross Weight",
-   "no_copy": 1,
-   "permlevel": 0,
+   "description": "The gross weight of the package. Usually net weight + packaging material weight. (for print)", 
+   "fieldname": "gross_weight_pkg", 
+   "fieldtype": "Float", 
+   "label": "Gross Weight", 
+   "no_copy": 1, 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "fieldname": "gross_weight_uom",
-   "fieldtype": "Link",
-   "label": "Gross Weight UOM",
-   "no_copy": 1,
-   "options": "UOM",
-   "permlevel": 0,
+   "fieldname": "gross_weight_uom", 
+   "fieldtype": "Link", 
+   "label": "Gross Weight UOM", 
+   "no_copy": 1, 
+   "options": "UOM", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "fieldname": "misc_details",
-   "fieldtype": "Section Break",
-   "label": "Misc Details",
-   "permlevel": 0,
+   "fieldname": "letter_head_details", 
+   "fieldtype": "Section Break", 
+   "label": "Letter Head", 
+   "permlevel": 0, 
+   "precision": ""
+  }, 
+  {
+   "allow_on_submit": 1, 
+   "fieldname": "letter_head", 
+   "fieldtype": "Link", 
+   "label": "Letter Head", 
+   "options": "Letter Head", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1
+  }, 
+  {
+   "fieldname": "misc_details", 
+   "fieldtype": "Section Break", 
+   "label": "Misc Details", 
+   "permlevel": 0, 
    "read_only": 0
-  },
+  }, 
   {
-   "fieldname": "amended_from",
-   "fieldtype": "Link",
-   "ignore_user_permissions": 1,
-   "label": "Amended From",
-   "no_copy": 1,
-   "options": "Packing Slip",
-   "permlevel": 0,
-   "print_hide": 1,
+   "fieldname": "amended_from", 
+   "fieldtype": "Link", 
+   "ignore_user_permissions": 1, 
+   "label": "Amended From", 
+   "no_copy": 1, 
+   "options": "Packing Slip", 
+   "permlevel": 0, 
+   "print_hide": 1, 
    "read_only": 1
   }
- ],
- "icon": "icon-suitcase",
- "idx": 1,
- "is_submittable": 1,
- "modified": "2014-05-27 03:49:14.251039",
- "modified_by": "Administrator",
- "module": "Stock",
- "name": "Packing Slip",
- "owner": "Administrator",
+ ], 
+ "icon": "icon-suitcase", 
+ "idx": 1, 
+ "is_submittable": 1, 
+ "modified": "2014-11-13 16:50:50.423299", 
+ "modified_by": "Administrator", 
+ "module": "Stock", 
+ "name": "Packing Slip", 
+ "owner": "Administrator", 
  "permissions": [
   {
-   "amend": 1,
-   "apply_user_permissions": 1,
-   "cancel": 1,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Material User",
-   "submit": 1,
+   "amend": 1, 
+   "apply_user_permissions": 1, 
+   "cancel": 1, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Material User", 
+   "submit": 1, 
    "write": 1
-  },
+  }, 
   {
-   "amend": 1,
-   "apply_user_permissions": 1,
-   "cancel": 1,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Sales User",
-   "submit": 1,
+   "amend": 1, 
+   "apply_user_permissions": 1, 
+   "cancel": 1, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Sales User", 
+   "submit": 1, 
    "write": 1
-  },
+  }, 
   {
-   "amend": 1,
-   "cancel": 1,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Material Master Manager",
-   "submit": 1,
+   "amend": 1, 
+   "cancel": 1, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Material Master Manager", 
+   "submit": 1, 
    "write": 1
-  },
+  }, 
   {
-   "amend": 1,
-   "cancel": 1,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Material Manager",
-   "submit": 1,
+   "amend": 1, 
+   "cancel": 1, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Material Manager", 
+   "submit": 1, 
    "write": 1
-  },
+  }, 
   {
-   "amend": 1,
-   "cancel": 1,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Sales Manager",
-   "submit": 1,
+   "amend": 1, 
+   "cancel": 1, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Sales Manager", 
+   "submit": 1, 
    "write": 1
   }
- ],
- "read_only_onload": 1,
+ ], 
+ "read_only_onload": 1, 
  "search_fields": "delivery_note"
-}
+}
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 1ca99c0..5926fa5 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 import os
 
-version = "4.11.1"
+version = "4.11.2"
 
 with open("requirements.txt", "r") as f:
 	install_requires = f.readlines()