Merge branch 'develop' of https://github.com/frappe/erpnext into new-translations
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index 749816f..c0e1285 100755
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -207,7 +207,7 @@
if pos_profile.get('customer_groups'):
# Get customers based on the customer groups defined in the POS profile
for d in pos_profile.get('customer_groups'):
- customer_groups.extend([d.name for d in get_child_nodes('Customer Group', d.customer_group)])
+ customer_groups.extend([d.get('name') for d in get_child_nodes('Customer Group', d.get('customer_group'))])
cond = "customer_group in (%s)" % (', '.join(['%s'] * len(customer_groups)))
return frappe.db.sql(""" select name, customer_name, customer_group,
@@ -387,7 +387,9 @@
@frappe.whitelist()
-def make_invoice(doc_list={}, email_queue_list={}, customers_list={}):
+def make_invoice(pos_profile, doc_list={}, email_queue_list={}, customers_list={}):
+ import json
+
if isinstance(doc_list, string_types):
doc_list = json.loads(doc_list)
@@ -421,7 +423,8 @@
name_list.append(name)
email_queue = make_email_queue(email_queue_list)
- customers = get_customers_list()
+ pos_profile = json.loads(pos_profile)
+ customers = get_customers_list(pos_profile)
return {
'invoice': name_list,
'email_queue': email_queue,
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index 8dc00f3..24fcb41 100755
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -1769,6 +1769,7 @@
method: "erpnext.accounts.doctype.sales_invoice.pos.make_invoice",
freeze: true,
args: {
+ pos_profile: me.pos_profile_data,
doc_list: me.si_docs,
email_queue_list: me.email_queue_list,
customers_list: me.customers_list
diff --git a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
index 4523f66..11f4e0d 100644
--- a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
+++ b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py
@@ -54,8 +54,8 @@
'description': d.description,
'invoice': d.parent,
'posting_date': d.posting_date,
- 'customer': d.supplier,
- 'customer_name': d.supplier_name
+ 'supplier': d.supplier,
+ 'supplier_name': d.supplier_name
}
if additional_query_columns:
diff --git a/erpnext/public/js/utils/dimension_tree_filter.js b/erpnext/public/js/utils/dimension_tree_filter.js
index 7abe4a7..8b6de0f 100644
--- a/erpnext/public/js/utils/dimension_tree_filter.js
+++ b/erpnext/public/js/utils/dimension_tree_filter.js
@@ -35,11 +35,13 @@
}
}
- if (frm.doc.items && frm.doc.items.length) {
+ if (frm.doc.items && frm.doc.items.length && frm.doc.docstatus === 0
+ && (!frm.doc.items[0][dimension['fieldname']])) {
frm.doc.items[0][dimension['fieldname']] = erpnext.default_dimensions[frm.doc.company][dimension['document_type']];
}
- if (frm.doc.accounts && frm.doc.accounts.length) {
+ if (frm.doc.accounts && frm.doc.accounts.length && frm.doc.docstatus === 0
+ && (!frm.doc.items[0][dimension['fieldname']])) {
frm.doc.accounts[0][dimension['fieldname']] = erpnext.default_dimensions[frm.doc.company][dimension['document_type']];
}
}
diff --git a/erpnext/regional/report/gst_itemised_purchase_register/gst_itemised_purchase_register.py b/erpnext/regional/report/gst_itemised_purchase_register/gst_itemised_purchase_register.py
index 3ce2547..b5948f9 100644
--- a/erpnext/regional/report/gst_itemised_purchase_register/gst_itemised_purchase_register.py
+++ b/erpnext/regional/report/gst_itemised_purchase_register/gst_itemised_purchase_register.py
@@ -13,9 +13,9 @@
dict(fieldtype='Data', label='GST Category', fieldname="gst_category", width=120),
dict(fieldtype='Data', label='Export Type', fieldname="export_type", width=120),
dict(fieldtype='Data', label='E-Commerce GSTIN', fieldname="ecommerce_gstin", width=130),
- dict(fieldtype='Data', label='HSN Code', fieldname="hsn_code", width=120),
- dict(fieldtype='Data', label='Supplier Invoice No', fieldname="supplier_invoice_no", width=120),
- dict(fieldtype='Date', label='Supplier Invoice Date', fieldname="supplier_invoice_date", width=100)
+ dict(fieldtype='Data', label='HSN Code', fieldname="gst_hsn_code", width=120),
+ dict(fieldtype='Data', label='Supplier Invoice No', fieldname="bill_no", width=120),
+ dict(fieldtype='Date', label='Supplier Invoice Date', fieldname="bill_date", width=100)
], additional_query_columns=[
'supplier_gstin',
'company_gstin',
diff --git a/erpnext/regional/turkey/setup.py b/erpnext/regional/turkey/setup.py
new file mode 100644
index 0000000..ebf3b2b
--- /dev/null
+++ b/erpnext/regional/turkey/setup.py
@@ -0,0 +1,4 @@
+from __future__ import unicode_literals
+
+def setup(company=None, patch=True):
+ pass
\ No newline at end of file
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 6aa2c04..956deef 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -424,8 +424,13 @@
company_doc = frappe.get_doc("Company", company)
path = frappe.get_app_path('erpnext', 'regional', frappe.scrub(company_doc.country))
if os.path.exists(path.encode("utf-8")):
- frappe.get_attr("erpnext.regional.{0}.setup.setup"
- .format(frappe.scrub(company_doc.country)))(company_doc, False)
+ try:
+ module_name = "erpnext.regional.{0}.setup.setup".format(frappe.scrub(company_doc.country))
+ frappe.get_attr(module_name)(company_doc, False)
+ except Exception as e:
+ frappe.log_error(str(e), frappe.get_traceback())
+ frappe.throw(_("Failed to setup defaults for country {0}. Please contact support@erpnext.com").format(frappe.bold(company_doc.country)))
+
def update_company_current_month_sales(company):
current_month_year = formatdate(today(), "MM-yyyy")
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index ca2741c..afa2394 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -190,6 +190,9 @@
has_serial_no = True
self.get_sle_for_serialized_items(row, sl_entries)
else:
+ if row.serial_no or row.batch_no:
+ frappe.throw(_("Row #{0}: Item {1} is not a Serialized/Batched Item. It cannot have a Serial No/Batch No against it.") \
+ .format(row.idx, frappe.bold(row.item_code)))
previous_sle = get_previous_sle({
"item_code": row.item_code,
"warehouse": row.warehouse,