Skip to content

Commit 6db4a95

Browse files
authored
Merge pull request #4539 from krishna-254/fix/payroll-entry-canceling-for-hr-manager
Fix/payroll entry canceling for hr manager
2 parents 3bde5d7 + e0c34de commit 6db4a95

2 files changed

Lines changed: 44 additions & 3 deletions

File tree

hrms/payroll/doctype/payroll_entry/payroll_entry.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,13 @@ def cancel_linked_journal_entries(self):
218218
)
219219
# cancel linked payment ledger entry
220220
for pl in journal_entry_payment_ledgers:
221-
frappe.get_doc("Payment Ledger Entry", pl).cancel()
221+
payment_ledger_entry = frappe.get_doc("Payment Ledger Entry", pl)
222+
payment_ledger_entry.flags.ignore_permissions = True
223+
payment_ledger_entry.cancel()
222224

223-
frappe.get_doc("Journal Entry", je).cancel()
225+
journal_entry = frappe.get_doc("Journal Entry", je)
226+
journal_entry.flags.ignore_permissions = True
227+
journal_entry.cancel()
224228

225229
def cancel_linked_payment_ledger_entries(self):
226230
payment_ledgers = frappe.get_all(
@@ -231,7 +235,9 @@ def cancel_linked_payment_ledger_entries(self):
231235

232236
# cancel payment ledger entry
233237
for pl in payment_ledgers:
234-
frappe.get_doc("Payment Ledger Entry", pl).cancel()
238+
payment_ledger_entry = frappe.get_doc("Payment Ledger Entry", pl)
239+
payment_ledger_entry.flags.ignore_permissions = True
240+
payment_ledger_entry.cancel()
235241

236242
def get_linked_salary_slips(self):
237243
return frappe.get_all("Salary Slip", {"payroll_entry": self.name}, ["name", "docstatus"])

hrms/payroll/doctype/payroll_entry/test_payroll_entry.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,41 @@ def test_payroll_entry_cancellation(self):
444444
journal_entries = get_linked_journal_entries(payroll_entry.name, docstatus=2)
445445
self.assertEqual(len(journal_entries), 2)
446446

447+
def test_payroll_entry_cancellation_with_hr_manager(self):
448+
company_doc = frappe.get_doc("Company", "_Test Company")
449+
employee = make_employee("test_hr_manager_employee@payroll.com", company=company_doc.name)
450+
451+
setup_salary_structure(employee, company_doc)
452+
dates = get_start_end_dates("Monthly", nowdate())
453+
payroll_entry = make_payroll_entry(
454+
start_date=dates.start_date,
455+
end_date=dates.end_date,
456+
payable_account=company_doc.default_payroll_payable_account,
457+
currency=company_doc.default_currency,
458+
company=company_doc.name,
459+
cost_center="Main - _TC",
460+
payment_account="Cash - _TC",
461+
)
462+
463+
hr_user = frappe.get_doc(
464+
{
465+
"doctype": "User",
466+
"email": "test_hr_manager@payroll.com",
467+
"first_name": "Test HR Manager",
468+
"enabled": 1,
469+
}
470+
).insert(ignore_if_duplicate=True)
471+
hr_user.add_roles("HR Manager")
472+
frappe.set_user(hr_user.name)
473+
474+
payroll_entry.submit()
475+
self.assertEqual(payroll_entry.status, "Submitted")
476+
477+
payroll_entry.cancel()
478+
self.assertEqual(payroll_entry.status, "Cancelled")
479+
480+
frappe.set_user("Administrator")
481+
447482
def test_payroll_entry_status(self):
448483
company_doc = frappe.get_doc("Company", "_Test Company")
449484
employee = make_employee("test_employee@payroll.com", company=company_doc.name)

0 commit comments

Comments
 (0)