Journal Entry: validate and post gle in multi currency
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.json b/erpnext/accounts/doctype/gl_entry/gl_entry.json
index 08c5d87..dfe9fc3 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.json
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.json
@@ -186,7 +186,7 @@
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Currency", 
+   "label": "Account Currency", 
    "no_copy": 0, 
    "options": "Currency", 
    "permlevel": 0, 
@@ -469,7 +469,7 @@
  "is_submittable": 0, 
  "issingle": 0, 
  "istable": 0, 
- "modified": "2015-08-13 16:46:11.515538", 
+ "modified": "2015-08-18 14:25:44.430671", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "GL Entry", 
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.json b/erpnext/accounts/doctype/journal_entry/journal_entry.json
index 4847a71..c652ae4 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.json
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.json
@@ -1,36 +1,64 @@
 {
+ "allow_copy": 0, 
  "allow_import": 1, 
+ "allow_rename": 0, 
  "autoname": "naming_series:", 
  "creation": "2013-03-25 10:53:52", 
+ "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
  "fields": [
   {
+   "allow_on_submit": 0, 
    "fieldname": "entry_type_and_date", 
    "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "", 
+   "no_copy": 0, 
    "options": "icon-flag", 
-   "permlevel": 0
+   "permlevel": 0, 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "default": "Journal Entry", 
    "fieldname": "voucher_type", 
    "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
    "in_list_view": 0, 
    "label": "Voucher Type", 
+   "no_copy": 0, 
    "oldfieldname": "voucher_type", 
    "oldfieldtype": "Select", 
    "options": "Journal Entry\nBank Entry\nCash Entry\nCredit Card Entry\nDebit Note\nCredit Note\nContra Entry\nExcise Entry\nWrite Off Entry\nOpening Entry", 
    "permlevel": 0, 
    "print_hide": 0, 
    "read_only": 0, 
+   "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 1
+   "search_index": 1, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "naming_series", 
    "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Series", 
    "no_copy": 1, 
    "oldfieldname": "naming_series", 
@@ -39,19 +67,38 @@
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 0, 
-   "reqd": 1
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "column_break1", 
    "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "no_copy": 0, 
    "oldfieldtype": "Column Break", 
    "permlevel": 0, 
+   "print_hide": 0, 
    "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0, 
    "width": "50%"
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "posting_date", 
    "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
    "in_list_view": 0, 
    "label": "Posting Date", 
@@ -59,49 +106,123 @@
    "oldfieldname": "posting_date", 
    "oldfieldtype": "Date", 
    "permlevel": 0, 
+   "print_hide": 0, 
    "read_only": 0, 
+   "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 1
+   "search_index": 1, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
+   "fieldname": "exchange_rate", 
+   "fieldtype": "Float", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Exchange Rate", 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
    "fieldname": "2_add_edit_gl_entries", 
    "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "", 
+   "no_copy": 0, 
    "oldfieldtype": "Section Break", 
    "options": "icon-table", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
    "allow_on_submit": 1, 
    "fieldname": "accounts", 
    "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Accounting Entries", 
+   "no_copy": 0, 
    "oldfieldname": "entries", 
    "oldfieldtype": "Table", 
    "options": "Journal Entry Account", 
    "permlevel": 0, 
    "print_hide": 0, 
-   "read_only": 0
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "section_break99", 
    "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "no_copy": 0, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "depends_on": "eval:inList([\"Credit Note\", \"Debit Note\"], doc.voucher_type)", 
    "fieldname": "stock_entry", 
    "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Stock Entry", 
+   "no_copy": 0, 
    "options": "Stock Entry", 
    "permlevel": 0, 
-   "precision": ""
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "total_debit", 
    "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
    "in_list_view": 1, 
    "label": "Total Debit", 
@@ -110,23 +231,44 @@
    "oldfieldtype": "Currency", 
    "options": "Company:company:default_currency", 
    "permlevel": 0, 
-   "read_only": 1
+   "print_hide": 0, 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "total_credit", 
    "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
+   "in_list_view": 0, 
    "label": "Total Credit", 
    "no_copy": 1, 
    "oldfieldname": "total_credit", 
    "oldfieldtype": "Currency", 
    "options": "Company:company:default_currency", 
    "permlevel": 0, 
-   "read_only": 1
+   "print_hide": 0, 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "difference", 
    "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Difference (Dr - Cr)", 
    "no_copy": 1, 
    "oldfieldname": "difference", 
@@ -134,26 +276,58 @@
    "options": "Company:company:default_currency", 
    "permlevel": 0, 
    "print_hide": 1, 
-   "read_only": 1
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "get_balance", 
    "fieldtype": "Button", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Make Difference Entry", 
+   "no_copy": 0, 
    "oldfieldtype": "Button", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "column_break99", 
    "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "no_copy": 0, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "description": "eg. Cheque Number", 
    "fieldname": "cheque_no", 
    "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
    "in_list_view": 1, 
    "label": "Reference Number", 
@@ -161,48 +335,103 @@
    "oldfieldname": "cheque_no", 
    "oldfieldtype": "Data", 
    "permlevel": 0, 
+   "print_hide": 0, 
    "read_only": 0, 
-   "search_index": 1
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 1, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "cheque_date", 
    "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Reference Date", 
    "no_copy": 1, 
    "oldfieldname": "cheque_date", 
    "oldfieldtype": "Date", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "user_remark", 
    "fieldtype": "Small Text", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
+   "in_list_view": 0, 
    "label": "User Remark", 
    "no_copy": 1, 
    "oldfieldname": "user_remark", 
    "oldfieldtype": "Small Text", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "view_details", 
    "fieldtype": "Fold", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "View Details", 
-   "permlevel": 0
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "reference", 
    "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Reference", 
+   "no_copy": 0, 
    "options": "icon-pushpin", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "clearance_date", 
    "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
+   "in_list_view": 0, 
    "label": "Clearance Date", 
    "no_copy": 1, 
    "oldfieldname": "clearance_date", 
@@ -210,135 +439,272 @@
    "permlevel": 0, 
    "print_hide": 0, 
    "read_only": 1, 
-   "search_index": 1
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 1, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "description": "User Remark will be added to Auto Remark", 
    "fieldname": "remark", 
    "fieldtype": "Small Text", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
    "in_list_view": 0, 
    "label": "Remark", 
    "no_copy": 1, 
    "oldfieldname": "remark", 
    "oldfieldtype": "Small Text", 
    "permlevel": 0, 
+   "print_hide": 0, 
    "read_only": 1, 
-   "reqd": 0
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "column_break98", 
    "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "no_copy": 0, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "bill_no", 
    "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
    "in_list_view": 0, 
    "label": "Bill No", 
+   "no_copy": 0, 
    "oldfieldname": "bill_no", 
    "oldfieldtype": "Data", 
    "permlevel": 0, 
    "print_hide": 1, 
-   "read_only": 0
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "bill_date", 
    "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Bill Date", 
+   "no_copy": 0, 
    "oldfieldname": "bill_date", 
    "oldfieldtype": "Date", 
    "permlevel": 0, 
    "print_hide": 1, 
-   "read_only": 0
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "due_date", 
    "fieldtype": "Date", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Due Date", 
+   "no_copy": 0, 
    "oldfieldname": "due_date", 
    "oldfieldtype": "Date", 
    "permlevel": 0, 
    "print_hide": 0, 
-   "read_only": 0
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "addtional_info", 
    "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "", 
+   "no_copy": 0, 
    "oldfieldtype": "Section Break", 
    "options": "icon-file-text", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "column_break2", 
    "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "no_copy": 0, 
    "oldfieldtype": "Column Break", 
    "permlevel": 0, 
+   "print_hide": 0, 
    "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0, 
    "width": "50%"
   }, 
   {
+   "allow_on_submit": 0, 
    "default": "No", 
    "description": "", 
    "fieldname": "is_opening", 
    "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
+   "in_list_view": 0, 
    "label": "Is Opening", 
+   "no_copy": 0, 
    "oldfieldname": "is_opening", 
    "oldfieldtype": "Select", 
    "options": "No\nYes", 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 0, 
-   "search_index": 1
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 1, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "default": "Accounts Receivable", 
    "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", 
    "fieldname": "write_off_based_on", 
    "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Write Off Based On", 
+   "no_copy": 0, 
    "options": "Accounts Receivable\nAccounts Payable", 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 0, 
-   "report_hide": 1
+   "report_hide": 1, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", 
    "fieldname": "write_off_amount", 
    "fieldtype": "Currency", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Write Off Amount", 
+   "no_copy": 0, 
    "options": "Company:company:default_currency", 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 0, 
-   "report_hide": 1
+   "report_hide": 1, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "depends_on": "eval:doc.voucher_type == 'Write Off Entry'", 
    "fieldname": "get_outstanding_invoices", 
    "fieldtype": "Button", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Get Outstanding Invoices", 
+   "no_copy": 0, 
    "options": "get_outstanding_invoices", 
    "permlevel": 0, 
    "print_hide": 1, 
-   "read_only": 0
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
    "allow_on_submit": 1, 
    "fieldname": "letter_head", 
    "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Letter Head", 
+   "no_copy": 0, 
    "options": "Letter Head", 
-   "permlevel": 0
+   "permlevel": 0, 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
    "allow_on_submit": 1, 
    "fieldname": "select_print_heading", 
    "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Print Heading", 
    "no_copy": 1, 
    "oldfieldname": "select_print_heading", 
@@ -347,12 +713,20 @@
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 0, 
-   "report_hide": 1
+   "report_hide": 1, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "amended_from", 
    "fieldtype": "Link", 
+   "hidden": 0, 
    "ignore_user_permissions": 1, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Amended From", 
    "no_copy": 1, 
    "oldfieldname": "amended_from", 
@@ -360,31 +734,59 @@
    "options": "Journal Entry", 
    "permlevel": 0, 
    "print_hide": 1, 
-   "read_only": 1
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "column_break3", 
    "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "no_copy": 0, 
    "oldfieldtype": "Column Break", 
    "permlevel": 0, 
+   "print_hide": 0, 
    "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0, 
    "width": "50%"
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "pay_to_recd_from", 
    "fieldtype": "Data", 
    "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Pay To / Recd From", 
    "no_copy": 1, 
    "permlevel": 0, 
    "print_hide": 0, 
    "read_only": 0, 
-   "report_hide": 1
+   "report_hide": 1, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "total_amount", 
    "fieldtype": "Currency", 
    "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
    "in_list_view": 0, 
    "label": "Total Amount", 
    "no_copy": 1, 
@@ -392,60 +794,106 @@
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 1, 
-   "report_hide": 1
+   "report_hide": 1, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "total_amount_in_words", 
    "fieldtype": "Data", 
    "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Total Amount in Words", 
    "no_copy": 1, 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 1, 
-   "report_hide": 1
+   "report_hide": 1, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "company", 
    "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
+   "in_list_view": 0, 
    "label": "Company", 
+   "no_copy": 0, 
    "oldfieldname": "company", 
    "oldfieldtype": "Link", 
    "options": "Company", 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 0, 
+   "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 1
+   "search_index": 1, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "fiscal_year", 
    "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
    "in_filter": 1, 
+   "in_list_view": 0, 
    "label": "Fiscal Year", 
+   "no_copy": 0, 
    "oldfieldname": "fiscal_year", 
    "oldfieldtype": "Select", 
    "options": "Fiscal Year", 
    "permlevel": 0, 
    "print_hide": 1, 
    "read_only": 0, 
+   "report_hide": 0, 
    "reqd": 1, 
-   "search_index": 1
+   "search_index": 1, 
+   "set_only_once": 0, 
+   "unique": 0
   }, 
   {
+   "allow_on_submit": 0, 
    "fieldname": "title", 
    "fieldtype": "Data", 
    "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
    "label": "Title", 
+   "no_copy": 0, 
    "permlevel": 0, 
-   "precision": ""
+   "precision": "", 
+   "print_hide": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }
  ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
  "icon": "icon-file-text", 
  "idx": 1, 
+ "in_create": 0, 
+ "in_dialog": 0, 
  "is_submittable": 1, 
- "modified": "2015-06-29 15:28:12.529019", 
+ "issingle": 0, 
+ "istable": 0, 
+ "modified": "2015-08-18 14:26:37.496638", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Journal Entry", 
@@ -458,26 +906,35 @@
    "create": 1, 
    "delete": 1, 
    "email": 1, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
    "report": 1, 
    "role": "Accounts User", 
+   "set_user_permissions": 0, 
    "share": 1, 
    "submit": 1, 
    "write": 1
   }, 
   {
    "amend": 1, 
+   "apply_user_permissions": 0, 
    "cancel": 1, 
    "create": 1, 
    "delete": 1, 
    "email": 1, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
    "report": 1, 
    "role": "Accounts Manager", 
+   "set_user_permissions": 0, 
    "share": 1, 
    "submit": 1, 
    "write": 1
@@ -489,18 +946,24 @@
    "create": 0, 
    "delete": 0, 
    "email": 1, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
    "report": 1, 
    "role": "Auditor", 
+   "set_user_permissions": 0, 
+   "share": 0, 
    "submit": 0, 
    "write": 0
   }
  ], 
+ "read_only": 0, 
  "read_only_onload": 1, 
  "search_fields": "voucher_type,posting_date, due_date, cheque_no", 
  "sort_field": "modified", 
  "sort_order": "DESC", 
  "title_field": "title"
-}
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 4b25a88..8ea1e58 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -13,6 +13,7 @@
 class JournalEntry(AccountsController):
 	def __init__(self, arg1, arg2=None):
 		super(JournalEntry, self).__init__(arg1, arg2)
+		self.company_currency = get_company_currency(self.company)
 
 	def get_feed(self):
 		return self.voucher_type
@@ -27,6 +28,7 @@
 		self.validate_cheque_info()
 		self.validate_entries_for_advance()
 		self.validate_debit_and_credit()
+		self.validate_multi_currency()
 		self.validate_against_jv()
 		self.validate_reference_doc()
 		self.set_against_account()
@@ -266,6 +268,30 @@
 		if self.difference:
 			frappe.throw(_("Total Debit must be equal to Total Credit. The difference is {0}")
 				.format(self.difference))
+				
+	def validate_multi_currency(self):
+		alternate_currency = [d.currency for d in self.get("accounts") if d.currency!=self.company_currency]
+			
+		if alternate_currency:
+			if not self.exchange_rate:
+				frappe.throw(_("Exchange Rate is mandatory in multi-currency Journal Entry"))
+				
+			if len(alternate_currency) > 1:
+				frappe.throw(_("Only one alternate currency can be used in a single Journal Entry"))
+		else:
+			self.exchange_rate = 1.0
+			
+		for d in self.get("accounts"):
+			if not d.currency:
+				d.currency = frappe.db.get_value("Account", d.account, "currency") or self.company_currency
+				
+			exchange_rate = self.exchange_rate
+			if d.currency != self.company_currency:
+				exchange_rate = 1
+			
+			d.debit_in_account_currency = flt(flt(d.debit)*exchange_rate, d.precision("debit_in_account_currency"))
+			d.credit_in_account_currency = flt(flt(d.credit)*exchange_rate, d.precision("credit_in_account_currency"))
+		
 
 	def create_remarks(self):
 		r = []
@@ -275,15 +301,13 @@
 			else:
 				msgprint(_("Please enter Reference date"), raise_exception=frappe.MandatoryError)
 
-		company_currency = get_company_currency(self.company)
-
 		for d in self.get('accounts'):
 			if d.reference_type=="Sales Invoice" and d.credit:
-				r.append(_("{0} against Sales Invoice {1}").format(fmt_money(flt(d.credit), currency = company_currency), \
+				r.append(_("{0} against Sales Invoice {1}").format(fmt_money(flt(d.credit), currency = self.company_currency), \
 					d.reference_name))
 
 			if d.reference_type=="Sales Order" and d.credit:
-				r.append(_("{0} against Sales Order {1}").format(fmt_money(flt(d.credit), currency = company_currency), \
+				r.append(_("{0} against Sales Order {1}").format(fmt_money(flt(d.credit), currency = self.company_currency), \
 					d.reference_name))
 
 			if d.reference_type == "Purchase Invoice" and d.debit:
@@ -291,11 +315,11 @@
 					from `tabPurchase Invoice` where name=%s""", d.reference_name)
 				if bill_no and bill_no[0][0] and bill_no[0][0].lower().strip() \
 						not in ['na', 'not applicable', 'none']:
-					r.append(_('{0} against Bill {1} dated {2}').format(fmt_money(flt(d.debit), currency=company_currency), bill_no[0][0],
+					r.append(_('{0} against Bill {1} dated {2}').format(fmt_money(flt(d.debit), currency=self.company_currency), bill_no[0][0],
 						bill_no[0][1] and formatdate(bill_no[0][1].strftime('%Y-%m-%d'))))
 
 			if d.reference_type == "Purchase Order" and d.debit:
-				r.append(_("{0} against Purchase Order {1}").format(fmt_money(flt(d.credit), currency = company_currency), \
+				r.append(_("{0} against Purchase Order {1}").format(fmt_money(flt(d.credit), currency = self.company_currency), \
 					d.reference_name))
 
 		if self.user_remark:
@@ -316,10 +340,9 @@
 				self.set_total_amount(d.debit or d.credit)
 
 	def set_total_amount(self, amt):
-		company_currency = get_company_currency(self.company)
 		self.total_amount = amt
 		from frappe.utils import money_in_words
-		self.total_amount_in_words = money_in_words(amt, company_currency)
+		self.total_amount_in_words = money_in_words(amt, self.company_currency)
 
 	def make_gl_entries(self, cancel=0, adv_adj=0):
 		from erpnext.accounts.general_ledger import make_gl_entries
@@ -333,8 +356,11 @@
 						"party_type": d.party_type,
 						"party": d.party,
 						"against": d.against_account,
-						"debit": flt(d.debit, self.precision("debit", "accounts")),
-						"credit": flt(d.credit, self.precision("credit", "accounts")),
+						"debit": flt(d.debit, d.precision("debit")),
+						"credit": flt(d.credit, d.precision("credit")),
+						"currency": d.currency,
+						"debit_in_account_currency": flt(d.debit_in_account_currency, d.precision("debit_in_account_currency")),
+						"credit_in_account_currency": flt(d.credit_in_account_currency, d.precision("credit_in_account_currency")),
 						"against_voucher_type": d.reference_type,
 						"against_voucher": d.reference_name,
 						"remarks": self.remark,
diff --git a/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
index 506dfd9..5cd7216 100644
--- a/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
+++ b/erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
@@ -277,7 +277,7 @@
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -338,7 +338,7 @@
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -476,7 +476,7 @@
  "is_submittable": 0, 
  "issingle": 0, 
  "istable": 1, 
- "modified": "2015-08-17 19:20:19.153237", 
+ "modified": "2015-08-18 15:17:42.583090", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Journal Entry Account",