Merge pull request #5799 from nabinhait/fix104

Fixes
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
index 375828c..c7a8045 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json
@@ -37,19 +37,24 @@
 	            "Capital Equipments": {
 	                "account_type": "Fixed Asset"
 	            },
-	            "Computers": {
+	            "Electronic Equipments": {
 	                "account_type": "Fixed Asset"
 	            },
-	            "Furniture and Fixture": {
+	            "Furnitures and Fixtures": {
 	                "account_type": "Fixed Asset"
 	            },
 	            "Office Equipments": {
 	                "account_type": "Fixed Asset"
 	            },
-	            "Plant and Machinery": {
+	            "Plants and Machineries": {
 	                "account_type": "Fixed Asset"
 	            },
-				"Accumulated Depreciations": {}
+				"Buildings": {
+					"account_type": "Fixed Asset"
+				},
+				"Accumulated Depreciations": {
+					"account_type": "Accumulated Depreciation"
+				}
 	        },
 	        "Investments": {
 	        	"is_group": 1
@@ -72,67 +77,37 @@
 	                },
 	                "Stock Adjustment": {
 	                    "account_type": "Stock Adjustment"
-	                },
-	                "account_type": "Expense Account"
-	            },
-	            "account_type": "Expense Account"
+	                }
+	            }
 	        },
 	        "Indirect Expenses": {
-	            "Administrative Expenses": {
-	                "account_type": "Expense Account"
-	            },
-	            "Commission on Sales": {
-	                "account_type": "Expense Account"
-	            },
+	            "Administrative Expenses": {},
+	            "Commission on Sales": {},
 	            "Depreciation": {
-	                "account_type": "Expense Account"
+	                "account_type": "Depreciation"
 	            },
-	            "Entertainment Expenses": {
-	                "account_type": "Expense Account"
-	            },
+	            "Entertainment Expenses": {},
 	            "Freight and Forwarding Charges": {
 	                "account_type": "Chargeable"
 	            },
-	            "Legal Expenses": {
-	                "account_type": "Expense Account"
-	            },
-	            "Marketing Expenses": {
-	                "account_type": "Chargeable"
-	            },
-	            "Miscellaneous Expenses": {
-	                "account_type": "Chargeable"
-	            },
-	            "Office Maintenance Expenses": {
-	                "account_type": "Expense Account"
-	            },
-	            "Office Rent": {
-	                "account_type": "Expense Account"
-	            },
-	            "Postal Expenses": {
-	                "account_type": "Expense Account"
-	            },
-	            "Print and Stationary": {
-	                "account_type": "Expense Account"
-	            },
+	            "Legal Expenses": {},
+	            "Marketing Expenses": {},
+	            "Miscellaneous Expenses": {},
+	            "Office Maintenance Expenses": {},
+	            "Office Rent": {},
+	            "Postal Expenses": {},
+	            "Print and Stationary": {},
 	            "Rounded Off": {
-	                "account_type": "Expense Account"
+	                "account_type": "Round Off"
 	            },
-	            "Salary": {
-	                "account_type": "Expense Account"
-	            },
-	            "Sales Expenses": {
-	                "account_type": "Expense Account"
-	            },
-	            "Telephone Expenses": {
-	                "account_type": "Expense Account"
-	            },
-	            "Travel Expenses": {
-	                "account_type": "Expense Account"
-	            },
-	            "Utility Expenses": {
-	                "account_type": "Expense Account"
-	            },
-	            "account_type": "Expense Account"
+	            "Salary": {},
+	            "Sales Expenses": {},
+	            "Telephone Expenses": {},
+	            "Travel Expenses": {},
+	            "Utility Expenses": {},
+				"Write Off": {},
+				"Exchange Gain/Loss": {},
+				"Gain/Loss on Asset Disposal": {}
 	        },
 			"root_type": "Expense"
 	    },
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
index 386b229..5824704 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py
@@ -41,18 +41,24 @@
 	            _("Capital Equipments"): {
 	                "account_type": "Fixed Asset"
 	            },
-	            _("Computers"): {
+	            _("Electronic Equipments"): {
 	                "account_type": "Fixed Asset"
 	            },
-	            _("Furniture and Fixture"): {
+	            _("Furnitures and Fixtures"): {
 	                "account_type": "Fixed Asset"
 	            },
 	            _("Office Equipments"): {
 	                "account_type": "Fixed Asset"
 	            },
-	            _("Plant and Machinery"): {
+	            _("Plants and Machineries"): {
 	                "account_type": "Fixed Asset"
 	            },
+				_("Buildings"): {
+					"account_type": "Fixed Asset"
+				},
+				_("Softwares"): {
+					"account_type": "Fixed Asset"
+				},
 	            _("Accumulated Depreciation"): {
 	            	"account_type": "Accumulated Depreciation"
 	            }
@@ -109,7 +115,10 @@
 	            _("Sales Expenses"): {},
 	            _("Telephone Expenses"): {},
 	            _("Travel Expenses"): {},
-	            _("Utility Expenses"): {}
+	            _("Utility Expenses"): {},
+				_("Write Off"): {},
+				_("Exchange Gain/Loss"): {},
+				_("Gain/Loss on Asset Disposal"): {}
 	        },
 			"root_type": "Expense"
 	    },
diff --git a/erpnext/accounts/doctype/asset/asset.py b/erpnext/accounts/doctype/asset/asset.py
index 1118766..b28aaa9 100644
--- a/erpnext/accounts/doctype/asset/asset.py
+++ b/erpnext/accounts/doctype/asset/asset.py
@@ -15,8 +15,8 @@
 	def validate(self):
 		self.status = self.get_status()
 		self.validate_item()
+		self.set_missing_values()
 		self.validate_asset_values()
-		self.set_depreciation_settings()
 		self.make_depreciation_schedule()
 		self.validate_expected_value_after_useful_life()
 		# Validate depreciation related accounts
@@ -41,10 +41,18 @@
 			frappe.throw(_("Item {0} must be a Fixed Asset Item").format(self.item_code))
 		elif item.is_stock_item:
 			frappe.throw(_("Item {0} must be a non-stock item").format(self.item_code))
+			
+	def set_missing_values(self):
+		if self.item_code:
+			item_details = get_item_details(self.item_code)
+			for field, value in item_details.items():
+				if not self.get(field):
+					self.set(field, value)
+					
+		self.value_after_depreciation = (flt(self.gross_purchase_amount) - 
+			flt(self.opening_accumulated_depreciation))
 
 	def validate_asset_values(self):
-		self.value_after_depreciation = flt(self.gross_purchase_amount) - flt(self.opening_accumulated_depreciation)
-		
 		if flt(self.expected_value_after_useful_life) >= flt(self.gross_purchase_amount):
 			frappe.throw(_("Expected Value After Useful Life must be less than Gross Purchase Amount"))
 
@@ -77,15 +85,6 @@
 		if (flt(self.value_after_depreciation) > flt(self.expected_value_after_useful_life) 
 			and not self.next_depreciation_date):
 				frappe.throw(_("Please set Next Depreciation Date"))
-			
-		
-
-	def set_depreciation_settings(self):
-		asset_category = frappe.get_doc("Asset Category", self.asset_category)
-
-		for field in ("depreciation_method", "total_number_of_depreciations", "frequency_of_depreciation"):
-			if not self.get(field):
-				self.set(field, asset_category.get(field))
 
 	def make_depreciation_schedule(self):
 		self.schedules = []
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 96b95f9..6f25220 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -519,7 +519,7 @@
 
 			if (d.party_type, d.party) not in party_balance:
 				party_balance[(d.party_type, d.party)] = get_balance_on(party_type=d.party_type,
-					party=d.party, date=self.posting_date)
+					party=d.party, date=self.posting_date, company=self.company)
 
 			d.account_balance = account_balance[d.account]
 			d.party_balance = party_balance[(d.party_type, d.party)]
@@ -553,6 +553,7 @@
 			"account_currency": account_details.account_currency,
 			"account_type": account_details.account_type
 		})
+	else: return frappe._dict()
 
 @frappe.whitelist()
 def get_payment_entry_against_order(dt, dn, amount=None, debit_in_account_currency=None, journal_entry=False, bank_account=None):
@@ -754,7 +755,7 @@
 	account = get_party_account(party_type, party, company)
 
 	account_balance = get_balance_on(account=account)
-	party_balance = get_balance_on(party_type=party_type, party=party)
+	party_balance = get_balance_on(party_type=party_type, party=party, company=company)
 
 	return {
 		"account": account,
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 5ed14d5..28978cd 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -77,7 +77,7 @@
 		if self.party:
 			if not self.party_balance:
 				self.party_balance = get_balance_on(party_type=self.party_type,
-					party=self.party, date=self.posting_date)
+					party=self.party, date=self.posting_date, company=self.company)
 			
 			if not self.party_account:
 				party_account = get_party_account(self.party_type, self.party, self.company)
@@ -251,7 +251,7 @@
 				self.unallocated_amount = party_amount - self.total_allocated_amount
 				
 	def set_difference_amount(self):
-		base_unallocated_amount = self.unallocated_amount * \
+		base_unallocated_amount = flt(self.unallocated_amount) * \
 			(self.source_exchange_rate if self.payment_type=="Receive" else self.target_exchange_rate)
 			
 		base_party_amount = flt(self.base_total_allocated_amount) + flt(base_unallocated_amount)
@@ -669,9 +669,10 @@
 		"outstanding_amount": outstanding_amount,
 		"allocated_amount": outstanding_amount
 	})
-	
+
 	pe.setup_party_account_field()
 	pe.set_missing_values()
-	pe.set_exchange_rate()
-	pe.set_amounts()
+	if bank:
+		pe.set_exchange_rate()
+		pe.set_amounts()
 	return pe
\ No newline at end of file
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 2d1b2db..635197f 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -53,7 +53,7 @@
 			throw(_("{0} '{1}' not in Fiscal Year {2}").format(label, formatdate(date), fiscal_year))
 
 @frappe.whitelist()
-def get_balance_on(account=None, date=None, party_type=None, party=None, in_account_currency=True):
+def get_balance_on(account=None, date=None, party_type=None, party=None, company=None, in_account_currency=True):
 	if not account and frappe.form_dict.get("account"):
 		account = frappe.form_dict.get("account")
 	if not date and frappe.form_dict.get("date"):
@@ -110,6 +110,9 @@
 	if party_type and party:
 		cond.append("""gle.party_type = "%s" and gle.party = "%s" """ %
 			(frappe.db.escape(party_type), frappe.db.escape(party, percent=False)))
+			
+	if company:
+		cond.append("""gle.company = "%s" """ % (frappe.db.escape(company, percent=False)))
 
 	if account or (party_type and party):
 		if in_account_currency:
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index c3ec2b1..d42f735 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -179,6 +179,7 @@
 			}
 		}
 
+		frm.fields_dict.source_warehouse.get_query = company_filter;
 		frm.fields_dict.fg_warehouse.get_query = company_filter;
 		frm.fields_dict.wip_warehouse.get_query = company_filter;
 	},
diff --git a/erpnext/stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.json b/erpnext/stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.json
index bc8eaef..d65da88 100644
--- a/erpnext/stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.json
+++ b/erpnext/stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.json
@@ -20,7 +20,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "label": "Receipt Document Type", 
    "length": 0, 
    "no_copy": 0, 
@@ -124,7 +124,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 1, 
+   "in_list_view": 0, 
    "label": "Posting Date", 
    "length": 0, 
    "no_copy": 0, 
@@ -173,7 +173,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-07-11 03:28:01.870042", 
+ "modified": "2016-07-20 10:49:34.228751", 
  "modified_by": "Administrator", 
  "module": "Stock", 
  "name": "Landed Cost Purchase Receipt", 
@@ -182,5 +182,6 @@
  "quick_entry": 0, 
  "read_only": 0, 
  "read_only_onload": 0, 
+ "sort_order": "ASC", 
  "track_seen": 0
 }
\ No newline at end of file