Skip to content

Commit 4f7fc17

Browse files
authored
Merge pull request #1347 from frappe/version-15-hotfix
chore: release v15
2 parents e0b446d + c001f59 commit 4f7fc17

File tree

5 files changed

+59
-2
lines changed

5 files changed

+59
-2
lines changed

frontend/src/views/Profile.vue

+8
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,19 @@
1919
</header>
2020

2121
<div class="flex flex-col items-center mt-5 p-4">
22+
<!-- Profile Image -->
2223
<img
24+
v-if="user.data.user_image"
2325
class="h-24 w-24 rounded-full object-cover"
2426
:src="user.data.user_image"
2527
:alt="user.data.first_name"
2628
/>
29+
<div
30+
v-else
31+
class="flex items-center justify-center bg-gray-200 uppercase text-gray-600 h-24 w-24 rounded-full object-cover"
32+
>
33+
{{ user.data.first_name[0] }}
34+
</div>
2735

2836
<div class="flex flex-col gap-1.5 items-center mt-2 mb-5">
2937
<span v-if="employee" class="text-lg font-bold text-gray-900">{{

hrms/hr/doctype/employee_advance/employee_advance.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,18 @@ def set_total_advance_paid(self):
116116
if return_amount != 0:
117117
return_amount = flt(return_amount) / flt(self.exchange_rate)
118118

119-
if flt(paid_amount) > self.advance_amount:
119+
precision = self.precision("paid_amount")
120+
paid_amount = flt(paid_amount, precision)
121+
if paid_amount > flt(self.advance_amount, precision):
120122
frappe.throw(
121123
_("Row {0}# Paid Amount cannot be greater than requested advance amount"),
122124
EmployeeAdvanceOverPayment,
123125
)
124126

125-
if flt(return_amount) > 0 and flt(return_amount) > (self.paid_amount - self.claimed_amount):
127+
precision = self.precision("return_amount")
128+
return_amount = flt(return_amount, precision)
129+
130+
if return_amount > 0 and return_amount > flt(self.paid_amount - self.claimed_amount, precision):
126131
frappe.throw(_("Return amount cannot be greater than unclaimed amount"))
127132

128133
self.db_set("paid_amount", paid_amount)

hrms/hr/doctype/employee_advance/test_employee_advance.py

+39
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,45 @@ def test_payment_entry_against_advance(self):
219219
self.assertEqual(advance.status, "Unpaid")
220220
self.assertEqual(advance.paid_amount, 700)
221221

222+
def test_precision(self):
223+
employee_name = make_employee("[email protected]")
224+
advance = make_employee_advance(employee_name)
225+
journal_entry = make_journal_entry_for_advance(advance)
226+
journal_entry.submit()
227+
228+
# PARTLY CLAIMED AND RETURNED
229+
payable_account = get_payable_account("_Test Company")
230+
claim = make_expense_claim(
231+
payable_account, 650.35, 619.34, "_Test Company", "Travel Expenses - _TC", do_not_submit=True
232+
)
233+
234+
claim = get_advances_for_claim(claim, advance.name, amount=619.34)
235+
claim.save()
236+
claim.submit()
237+
238+
advance.reload()
239+
self.assertEqual(advance.status, "Paid")
240+
241+
entry = make_return_entry(
242+
employee=advance.employee,
243+
company=advance.company,
244+
employee_advance_name=advance.name,
245+
return_amount=advance.paid_amount - advance.claimed_amount,
246+
advance_account=advance.advance_account,
247+
mode_of_payment=advance.mode_of_payment,
248+
currency=advance.currency,
249+
exchange_rate=advance.exchange_rate,
250+
)
251+
252+
entry = frappe.get_doc(entry)
253+
entry.insert()
254+
entry.submit()
255+
256+
advance.reload()
257+
# precision is respected
258+
self.assertEqual(advance.return_amount, 380.66)
259+
self.assertEqual(advance.status, "Partly Claimed and Returned")
260+
222261

223262
def make_journal_entry_for_advance(advance):
224263
journal_entry = frappe.get_doc(make_bank_entry("Employee Advance", advance.name))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
frappe.listview_settings["Expense Claim"] = {
2+
add_fields: ["company"]
3+
}

hrms/payroll/doctype/payroll_entry/payroll_entry.js

+2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ frappe.ui.form.on('Payroll Entry', {
5252
},
5353

5454
refresh: function (frm) {
55+
if (frm.doc.status === "Queued") frm.page.btn_secondary.hide()
56+
5557
if (frm.doc.docstatus === 0 && !frm.is_new()) {
5658
frm.page.clear_primary_action();
5759
frm.add_custom_button(__("Get Employees"),

0 commit comments

Comments
 (0)