[shopping-cart] i'm back
diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py
index 9892924..139e63a 100644
--- a/erpnext/templates/utils.py
+++ b/erpnext/templates/utils.py
@@ -2,7 +2,10 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import frappe
+
+import frappe, json
+from frappe import _
+from frappe.utils import cint, formatdate
 
 @frappe.whitelist(allow_guest=True)
 def send_message(subject="Website Query", message="", sender="", status="Open"):
@@ -18,3 +21,47 @@
 		"sent_or_received": "Received"
 	})
 	comm.insert(ignore_permissions=True)
+
+def get_transaction_list(doctype, start, additional_fields=None):
+	# find customer id
+	customer = frappe.db.get_value("Contact", {"email_id": frappe.session.user},
+		"customer")
+
+	if customer:
+		if additional_fields:
+			additional_fields = ", " + ", ".join(("`%s`" % f for f in additional_fields))
+		else:
+			additional_fields = ""
+
+		transactions = frappe.db.sql("""select name, creation, currency, grand_total_export
+			%s
+			from `tab%s` where customer=%s and docstatus=1
+			order by creation desc
+			limit %s, 20""" % (additional_fields, doctype, "%s", "%s"),
+			(customer, cint(start)), as_dict=True)
+		for doc in transactions:
+			items = frappe.db.sql_list("""select item_name
+				from `tab%s Item` where parent=%s limit 6""" % (doctype, "%s"), doc.name)
+			doc.items = ", ".join(items[:5]) + ("..." if (len(items) > 5) else "")
+			doc.creation = formatdate(doc.creation)
+		return transactions
+	else:
+		return []
+
+def get_currency_context():
+	return {
+		"global_number_format": frappe.db.get_default("number_format") or "#,###.##",
+		"currency": frappe.db.get_default("currency"),
+		"currency_symbols": json.dumps(dict(frappe.db.sql("""select name, symbol
+			from tabCurrency where ifnull(enabled,0)=1""")))
+	}
+
+def get_transaction_context(doctype, name):
+	customer = frappe.db.get_value("Contact", {"email_id": frappe.session.user},
+		"customer")
+
+	doc = frappe.get_doc(doctype, name)
+	if doc.customer != customer:
+		return { "doc": frappe._dict({"name": _("Not Allowed")}) }
+	else:
+		return { "doc": doc }