Merge branch 'staging' into develop
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index ba5a8c1..a9aa5ae 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -5,7 +5,7 @@
from erpnext.hooks import regional_overrides
from frappe.utils import getdate
-__version__ = '10.1.67'
+__version__ = '10.1.68'
def get_default_company(user=None):
'''Get default company for user'''
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index fde0737..e7f7b08 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -1,7 +1,9 @@
+# -*- coding: utf-8 -*-
+
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
-
+from __future__ import unicode_literals
import re
from past.builtins import cmp
@@ -342,7 +344,7 @@
accounts = frappe.db.sql_list("""select name from `tabAccount`
where lft >= %s and rgt <= %s""", (root_lft, root_rgt))
additional_conditions += " and account in ({})"\
- .format(", ".join([frappe.safe_encode(frappe.db.escape(d)) for d in accounts]))
+ .format(", ".join([frappe.db.escape(d) for d in accounts]))
gl_entries = frappe.db.sql("""select posting_date, account, debit, credit, is_opening, fiscal_year, debit_in_account_currency, credit_in_account_currency, account_currency from `tabGL Entry`
where company=%(company)s
@@ -400,7 +402,6 @@
def get_cost_centers_with_children(cost_centers):
if not isinstance(cost_centers, list):
- cost_centers = frappe.safe_encode(cost_centers)
cost_centers = [d.strip() for d in cost_centers.strip().split(',') if d]
all_cost_centers = []
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 6997776..a38b40b 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -85,8 +85,17 @@
elif not self.finance_books:
frappe.throw(_("Enter depreciation details"))
- if self.available_for_use_date and getdate(self.available_for_use_date) < getdate(nowdate()):
- frappe.throw(_("Available-for-use Date is entered as past date"))
+ if self.is_existing_asset:
+ return
+
+ date = nowdate()
+ docname = self.purchase_receipt or self.purchase_invoice
+ if docname:
+ doctype = 'Purchase Receipt' if self.purchase_receipt else 'Purchase Invoice'
+ date = frappe.db.get_value(doctype, docname, 'posting_date')
+
+ if self.available_for_use_date and getdate(self.available_for_use_date) < getdate(date):
+ frappe.throw(_("Available-for-use Date should be after purchase date"))
def make_depreciation_schedule(self):
if self.depreciation_method != 'Manual':
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index e421a4c..47a7044 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -12,7 +12,7 @@
source_link = "https://github.com/frappe/erpnext"
develop_version = '12.x.x-develop'
-staging_version = '11.0.3-beta.18'
+staging_version = '11.0.3-beta.19'
error_report_email = "support@erpnext.com"
diff --git a/erpnext/patches/v11_0/update_department_lft_rgt.py b/erpnext/patches/v11_0/update_department_lft_rgt.py
index 5a8837e..b2f407b 100644
--- a/erpnext/patches/v11_0/update_department_lft_rgt.py
+++ b/erpnext/patches/v11_0/update_department_lft_rgt.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import frappe
from frappe import _
from frappe.utils.nestedset import rebuild_tree
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 4b1ceed..d070af0 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -85,9 +85,9 @@
self.purchase_date = purchase_sle.posting_date
self.purchase_time = purchase_sle.posting_time
self.purchase_rate = purchase_sle.incoming_rate
- if purchase_sle.voucher_type == "Purchase Receipt":
+ if purchase_sle.voucher_type in ("Purchase Receipt", "Purchase Invoice"):
self.supplier, self.supplier_name = \
- frappe.db.get_value("Purchase Receipt", purchase_sle.voucher_no,
+ frappe.db.get_value(purchase_sle.voucher_type, purchase_sle.voucher_no,
["supplier", "supplier_name"])
# If sales return entry
@@ -304,8 +304,8 @@
status = False
if sn.purchase_document_no:
- if sle.voucher_type in ['Purchase Receipt', 'Stock Entry'] and \
- sn.delivery_document_type not in ['Purchase Receipt', 'Stock Entry']:
+ if sle.voucher_type in ['Purchase Receipt', 'Stock Entry', "Purchase Invoice"] and \
+ sn.delivery_document_type not in ['Purchase Receipt', 'Stock Entry', "Purchase Invoice"]:
status = True
if status and sle.voucher_type == 'Stock Entry' and \