diff --git a/frontend/src/views/Profile.vue b/frontend/src/views/Profile.vue
index f0438ba582..a8ef5cf1b9 100644
--- a/frontend/src/views/Profile.vue
+++ b/frontend/src/views/Profile.vue
@@ -19,11 +19,19 @@
+
+
+ {{ user.data.first_name[0] }}
+
{{
diff --git a/hrms/hr/doctype/employee_advance/employee_advance.py b/hrms/hr/doctype/employee_advance/employee_advance.py
index d6b6356b2d..a69ab719f3 100644
--- a/hrms/hr/doctype/employee_advance/employee_advance.py
+++ b/hrms/hr/doctype/employee_advance/employee_advance.py
@@ -116,13 +116,18 @@ def set_total_advance_paid(self):
if return_amount != 0:
return_amount = flt(return_amount) / flt(self.exchange_rate)
- if flt(paid_amount) > self.advance_amount:
+ precision = self.precision("paid_amount")
+ paid_amount = flt(paid_amount, precision)
+ if paid_amount > flt(self.advance_amount, precision):
frappe.throw(
_("Row {0}# Paid Amount cannot be greater than requested advance amount"),
EmployeeAdvanceOverPayment,
)
- if flt(return_amount) > 0 and flt(return_amount) > (self.paid_amount - self.claimed_amount):
+ precision = self.precision("return_amount")
+ return_amount = flt(return_amount, precision)
+
+ if return_amount > 0 and return_amount > flt(self.paid_amount - self.claimed_amount, precision):
frappe.throw(_("Return amount cannot be greater than unclaimed amount"))
self.db_set("paid_amount", paid_amount)
diff --git a/hrms/hr/doctype/employee_advance/test_employee_advance.py b/hrms/hr/doctype/employee_advance/test_employee_advance.py
index 3d46d1c7a3..a042f43fd5 100644
--- a/hrms/hr/doctype/employee_advance/test_employee_advance.py
+++ b/hrms/hr/doctype/employee_advance/test_employee_advance.py
@@ -219,6 +219,45 @@ def test_payment_entry_against_advance(self):
self.assertEqual(advance.status, "Unpaid")
self.assertEqual(advance.paid_amount, 700)
+ def test_precision(self):
+ employee_name = make_employee("_T@employee.advance")
+ advance = make_employee_advance(employee_name)
+ journal_entry = make_journal_entry_for_advance(advance)
+ journal_entry.submit()
+
+ # PARTLY CLAIMED AND RETURNED
+ payable_account = get_payable_account("_Test Company")
+ claim = make_expense_claim(
+ payable_account, 650.35, 619.34, "_Test Company", "Travel Expenses - _TC", do_not_submit=True
+ )
+
+ claim = get_advances_for_claim(claim, advance.name, amount=619.34)
+ claim.save()
+ claim.submit()
+
+ advance.reload()
+ self.assertEqual(advance.status, "Paid")
+
+ entry = make_return_entry(
+ employee=advance.employee,
+ company=advance.company,
+ employee_advance_name=advance.name,
+ return_amount=advance.paid_amount - advance.claimed_amount,
+ advance_account=advance.advance_account,
+ mode_of_payment=advance.mode_of_payment,
+ currency=advance.currency,
+ exchange_rate=advance.exchange_rate,
+ )
+
+ entry = frappe.get_doc(entry)
+ entry.insert()
+ entry.submit()
+
+ advance.reload()
+ # precision is respected
+ self.assertEqual(advance.return_amount, 380.66)
+ self.assertEqual(advance.status, "Partly Claimed and Returned")
+
def make_journal_entry_for_advance(advance):
journal_entry = frappe.get_doc(make_bank_entry("Employee Advance", advance.name))
diff --git a/hrms/hr/doctype/expense_claim/expense_claim_list.js b/hrms/hr/doctype/expense_claim/expense_claim_list.js
new file mode 100644
index 0000000000..bf708e020d
--- /dev/null
+++ b/hrms/hr/doctype/expense_claim/expense_claim_list.js
@@ -0,0 +1,3 @@
+frappe.listview_settings["Expense Claim"] = {
+ add_fields: ["company"]
+}
\ No newline at end of file
diff --git a/hrms/payroll/doctype/payroll_entry/payroll_entry.js b/hrms/payroll/doctype/payroll_entry/payroll_entry.js
index ec46824f5e..575fbab880 100644
--- a/hrms/payroll/doctype/payroll_entry/payroll_entry.js
+++ b/hrms/payroll/doctype/payroll_entry/payroll_entry.js
@@ -52,6 +52,8 @@ frappe.ui.form.on('Payroll Entry', {
},
refresh: function (frm) {
+ if (frm.doc.status === "Queued") frm.page.btn_secondary.hide()
+
if (frm.doc.docstatus === 0 && !frm.is_new()) {
frm.page.clear_primary_action();
frm.add_custom_button(__("Get Employees"),