Merge pull request #17448 from nabinhait/woocommerce-multilingual-fix-dev
fix: Multilingual handling in woocommerce integration
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 3d9604d..ecf67dd 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -105,20 +105,27 @@
descendants = get_descendants_of('Company', self.company)
if not descendants: return
- acc_name_map = {}
- acc_name = frappe.db.get_value('Account', self.parent_account, "account_name")
+ parent_acc_name_map = {}
+ parent_acc_name = frappe.db.get_value('Account', self.parent_account, "account_name")
for d in frappe.db.get_values('Account',
- {"company": ["in", descendants], "account_name": acc_name},
+ {"company": ["in", descendants], "account_name": parent_acc_name},
["company", "name"], as_dict=True):
- acc_name_map[d["company"]] = d["name"]
+ parent_acc_name_map[d["company"]] = d["name"]
- if not acc_name_map: return
+ if not parent_acc_name_map: return
for company in descendants:
+ if not parent_acc_name_map.get(company):
+ frappe.throw(_("While creating account for child Company {0}, parent account {1} not found. Please create the parent account in corresponding COA")
+ .format(company, parent_acc_name))
+
doc = frappe.copy_doc(self)
doc.flags.ignore_root_company_validation = True
- doc.update({"company": company, "account_currency": None,
- "parent": acc_name_map[company], "parent_account": acc_name_map[company]})
+ doc.update({
+ "company": company,
+ "account_currency": None,
+ "parent_account": parent_acc_name_map[company]
+ })
doc.save()
frappe.msgprint(_("Account {0} is added in the child company {1}")
.format(doc.name, company))
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index 48663ca..2140315 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -331,9 +331,8 @@
if a.root_type == "Income" and b.root_type == "Expense":
return -1
else:
- if re.split('\W+', a[key])[0].isdigit():
- # if chart of accounts is numbered, then sort by number
- return cmp(a[key], b[key])
+ # sort by key (number) or name
+ return cmp(a[key], b[key])
return 1
accounts.sort(key = functools.cmp_to_key(compare_accounts))
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 9787dc8..5a7ea32 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -568,7 +568,7 @@
execute:frappe.delete_doc_if_exists("Page", "purchase-analytics")
execute:frappe.delete_doc_if_exists("Page", "stock-analytics")
execute:frappe.delete_doc_if_exists("Page", "production-analytics")
-erpnext.patches.v11_0.ewaybill_fields_gst_india #2018-11-13 #2019-01-09 #2019-04-01 #2019-04-26
+erpnext.patches.v11_0.ewaybill_fields_gst_india #2019-05-01
erpnext.patches.v11_0.drop_column_max_days_allowed
erpnext.patches.v10_0.update_user_image_in_employee
erpnext.patches.v10_0.repost_gle_for_purchase_receipts_with_rejected_items
diff --git a/erpnext/projects/doctype/project/project_list.js b/erpnext/projects/doctype/project/project_list.js
index 0f715bf..5ad4bb7 100644
--- a/erpnext/projects/doctype/project/project_list.js
+++ b/erpnext/projects/doctype/project/project_list.js
@@ -3,7 +3,7 @@
filters:[["status","=", "Open"]],
get_indicator: function(doc) {
if(doc.status=="Open" && doc.percent_complete) {
- return [__("{0}% Complete", [cint(doc.percent_complete)]), "orange", "percent_complete,>,0|status,=,Open"];
+ return [__("{0}%", [cint(doc.percent_complete)]), "orange", "percent_complete,>,0|status,=,Open"];
} else {
return [__(doc.status), frappe.utils.guess_colour(doc.status), "status,=," + doc.status];
}
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 2686e58..ac71b28 100755
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -48,7 +48,7 @@
if self.status!=self.get_db_value("status") and self.status == "Completed":
for d in self.depends_on:
if frappe.db.get_value("Task", d.task, "status") != "Completed":
- frappe.throw(_("Cannot close task as its dependant task {0} is not closed.").format(d.task))
+ frappe.throw(_("Cannot close task {0} as its dependant task {1} is not closed.").format(frappe.bold(self.name), frappe.bold(d.task)))
from frappe.desk.form.assign_to import clear
clear(self.doctype, self.name)
diff --git a/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py b/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py
index 4667107..de150f4 100644
--- a/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py
+++ b/erpnext/regional/doctype/gstr_3b_report/test_gstr_3b_report.py
@@ -11,6 +11,8 @@
from erpnext.stock.doctype.item.test_item import make_item
import json
+test_dependencies = ["Territory", "Customer Group", "Supplier Group", "Item"]
+
class TestGSTR3BReport(unittest.TestCase):
def test_gstr_3b_report(self):
@@ -388,5 +390,3 @@
})
gst_settings.save()
-
-
diff --git a/erpnext/regional/india/setup.py b/erpnext/regional/india/setup.py
index f3a4f7c..e1aa233 100644
--- a/erpnext/regional/india/setup.py
+++ b/erpnext/regional/india/setup.py
@@ -105,16 +105,18 @@
dict(fieldname='gst_section', label='GST Details', fieldtype='Section Break',
insert_after='language', print_hide=1, collapsible=1),
dict(fieldname='gst_category', label='GST Category',
- fieldtype='Data', insert_after='gst_section', print_hide=1,
- fetch_from='supplier.gst_category')
+ fieldtype='Select', insert_after='gst_section', print_hide=1,
+ options='\nRegistered Regular\nRegistered Composition\nUnregistered\nSEZ\nOverseas\nUIN Holders',
+ fetch_from='supplier.gst_category', fetch_if_empty=1)
]
sales_invoice_gst_category = [
dict(fieldname='gst_section', label='GST Details', fieldtype='Section Break',
insert_after='language', print_hide=1, collapsible=1),
dict(fieldname='gst_category', label='GST Category',
- fieldtype='Data', insert_after='gst_section', print_hide=1,
- fetch_from='customer.gst_category')
+ fieldtype='Select', insert_after='gst_section', print_hide=1,
+ options='\nRegistered Regular\nRegistered Composition\nUnregistered\nSEZ\nOverseas\nConsumer\nDeemed Export\nUIN Holders',
+ fetch_from='customer.gst_category', fetch_if_empty=1)
]
invoice_gst_fields = [