Merge pull request #6956 from rohitwaghchaure/payment_entry_issue
[Fix] Payment entry, exchange rate is not set properly
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index a92e105..d0fec44 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
import frappe
-__version__ = '7.1.12'
+__version__ = '7.1.13'
def get_default_company(user=None):
'''Get default company for user'''
diff --git a/erpnext/hr/doctype/salary_component/salary_component.json b/erpnext/hr/doctype/salary_component/salary_component.json
index 33fb793..64f91c7 100644
--- a/erpnext/hr/doctype/salary_component/salary_component.json
+++ b/erpnext/hr/doctype/salary_component/salary_component.json
@@ -31,6 +31,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
@@ -58,8 +59,9 @@
"print_hide_if_no_value": 0,
"print_width": "120px",
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
- "reqd": 0,
+ "reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0,
@@ -86,6 +88,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
@@ -112,6 +115,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -137,6 +141,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -164,6 +169,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -182,7 +188,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-08-31 08:08:47.359578",
+ "modified": "2016-11-16 12:44:37.733773",
"modified_by": "Administrator",
"module": "HR",
"name": "Salary Component",
@@ -199,6 +205,7 @@
"export": 1,
"if_owner": 0,
"import": 0,
+ "is_custom": 0,
"permlevel": 0,
"print": 1,
"read": 1,
diff --git a/erpnext/hr/doctype/salary_component/salary_component.py b/erpnext/hr/doctype/salary_component/salary_component.py
index ca69568..8af7311 100644
--- a/erpnext/hr/doctype/salary_component/salary_component.py
+++ b/erpnext/hr/doctype/salary_component/salary_component.py
@@ -10,7 +10,6 @@
class SalaryComponent(Document):
def validate(self):
self.validate_abbr()
-
def validate_abbr(self):
if not self.salary_component_abbr:
@@ -21,8 +20,5 @@
if self.get('__islocal') and len(self.salary_component_abbr) > 5:
frappe.throw(_("Abbreviation cannot have more than 5 characters"))
- if not self.salary_component_abbr.strip():
- frappe.throw(_("Abbreviation is mandatory"))
-
if frappe.db.sql("select salary_component_abbr from `tabSalary Component` where name!=%s and salary_component_abbr=%s", (self.name, self.salary_component_abbr)):
frappe.throw(_("Abbreviation already used for another salary component"))
\ No newline at end of file
diff --git a/erpnext/patches/v7_1/update_missing_salary_component_type.py b/erpnext/patches/v7_1/update_missing_salary_component_type.py
index 7f6002d..f0e3f6a 100644
--- a/erpnext/patches/v7_1/update_missing_salary_component_type.py
+++ b/erpnext/patches/v7_1/update_missing_salary_component_type.py
@@ -1,6 +1,7 @@
from __future__ import unicode_literals
import frappe
+from frappe.utils import cstr
'''
Some components do not have type set, try and guess whether they turn up in
@@ -8,18 +9,38 @@
'''
def execute():
- for s in frappe.db.sql('select name from `tabSalary Component` where ifnull(type, "")=""'):
- compontent = frappe.get_doc('Salary Component', s[0])
+ for s in frappe.db.sql('''select name, type, salary_component_abbr from `tabSalary Component`
+ where ifnull(type, "")="" or ifnull(salary_component_abbr, "") = ""''', as_dict=1):
+
+ component = frappe.get_doc('Salary Component', s.name)
# guess
- guess = frappe.db.sql('''select
- parentfield from `tabSalary Detail`
- where salary_component=%s limit 1''', s[0])
+ if not s.type:
+ guess = frappe.db.sql('''select
+ parentfield from `tabSalary Detail`
+ where salary_component=%s limit 1''', s.name)
- if guess:
- compontent.type = 'Earning' if guess[0][0]=='earnings' else 'Deduction'
+ if guess:
+ component.type = 'Earning' if guess[0][0]=='earnings' else 'Deduction'
- else:
- compontent.type = 'Deduction'
-
- compontent.save()
\ No newline at end of file
+ else:
+ component.type = 'Deduction'
+
+ if not s.salary_component_abbr:
+ abbr = ''.join([c[0] for c in component.salary_component.split()]).upper()
+
+ abbr_count = frappe.db.sql("""
+ select
+ count(name)
+ from
+ `tabSalary Component`
+ where
+ salary_component_abbr = %s or salary_component_abbr like %s
+ """, (abbr, abbr + "-%%"))
+
+ if abbr_count and abbr_count[0][0] > 0:
+ abbr = abbr + "-" + cstr(abbr_count[0][0])
+
+ component.salary_component_abbr = abbr
+
+ component.save()
\ No newline at end of file