fix: removed expense claim, advance and salary slip updates from PE/JE events
- moved them to HRMS app hooks
This commit is contained in:
parent
3fe2ef6790
commit
0f83e7af56
@ -24,7 +24,6 @@ from erpnext.accounts.utils import (
|
|||||||
get_stock_and_account_balance,
|
get_stock_and_account_balance,
|
||||||
)
|
)
|
||||||
from erpnext.controllers.accounts_controller import AccountsController
|
from erpnext.controllers.accounts_controller import AccountsController
|
||||||
from erpnext.hr.doctype.expense_claim.expense_claim import update_reimbursed_amount
|
|
||||||
|
|
||||||
|
|
||||||
class StockAccountInvalidTransaction(frappe.ValidationError):
|
class StockAccountInvalidTransaction(frappe.ValidationError):
|
||||||
@ -66,7 +65,6 @@ class JournalEntry(AccountsController):
|
|||||||
self.set_against_account()
|
self.set_against_account()
|
||||||
self.create_remarks()
|
self.create_remarks()
|
||||||
self.set_print_format_fields()
|
self.set_print_format_fields()
|
||||||
self.validate_expense_claim()
|
|
||||||
self.validate_credit_debit_note()
|
self.validate_credit_debit_note()
|
||||||
self.validate_empty_accounts_table()
|
self.validate_empty_accounts_table()
|
||||||
self.set_account_and_party_balance()
|
self.set_account_and_party_balance()
|
||||||
@ -83,21 +81,17 @@ class JournalEntry(AccountsController):
|
|||||||
self.check_credit_limit()
|
self.check_credit_limit()
|
||||||
self.make_gl_entries()
|
self.make_gl_entries()
|
||||||
self.update_advance_paid()
|
self.update_advance_paid()
|
||||||
self.update_expense_claim()
|
|
||||||
self.update_inter_company_jv()
|
self.update_inter_company_jv()
|
||||||
self.update_invoice_discounting()
|
self.update_invoice_discounting()
|
||||||
self.update_status_for_full_and_final_statement()
|
self.update_status_for_full_and_final_statement()
|
||||||
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
from erpnext.accounts.utils import unlink_ref_doc_from_payment_entries
|
from erpnext.accounts.utils import unlink_ref_doc_from_payment_entries
|
||||||
from erpnext.payroll.doctype.salary_slip.salary_slip import unlink_ref_doc_from_salary_slip
|
|
||||||
|
|
||||||
unlink_ref_doc_from_payment_entries(self)
|
unlink_ref_doc_from_payment_entries(self)
|
||||||
unlink_ref_doc_from_salary_slip(self.name)
|
|
||||||
self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry", "Payment Ledger Entry")
|
self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry", "Payment Ledger Entry")
|
||||||
self.make_gl_entries(1)
|
self.make_gl_entries(1)
|
||||||
self.update_advance_paid()
|
self.update_advance_paid()
|
||||||
self.update_expense_claim()
|
|
||||||
self.unlink_advance_entry_reference()
|
self.unlink_advance_entry_reference()
|
||||||
self.unlink_asset_reference()
|
self.unlink_asset_reference()
|
||||||
self.unlink_inter_company_jv()
|
self.unlink_inter_company_jv()
|
||||||
@ -932,29 +926,6 @@ class JournalEntry(AccountsController):
|
|||||||
as_dict=True,
|
as_dict=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
def update_expense_claim(self):
|
|
||||||
for d in self.accounts:
|
|
||||||
if d.reference_type == "Expense Claim" and d.reference_name:
|
|
||||||
doc = frappe.get_doc("Expense Claim", d.reference_name)
|
|
||||||
if self.docstatus == 2:
|
|
||||||
update_reimbursed_amount(doc, -1 * d.debit)
|
|
||||||
else:
|
|
||||||
update_reimbursed_amount(doc, d.debit)
|
|
||||||
|
|
||||||
def validate_expense_claim(self):
|
|
||||||
for d in self.accounts:
|
|
||||||
if d.reference_type == "Expense Claim":
|
|
||||||
sanctioned_amount, reimbursed_amount = frappe.db.get_value(
|
|
||||||
"Expense Claim", d.reference_name, ("total_sanctioned_amount", "total_amount_reimbursed")
|
|
||||||
)
|
|
||||||
pending_amount = flt(sanctioned_amount) - flt(reimbursed_amount)
|
|
||||||
if d.debit > pending_amount:
|
|
||||||
frappe.throw(
|
|
||||||
_(
|
|
||||||
"Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. Pending Amount is {2}"
|
|
||||||
).format(d.idx, d.reference_name, pending_amount)
|
|
||||||
)
|
|
||||||
|
|
||||||
def validate_credit_debit_note(self):
|
def validate_credit_debit_note(self):
|
||||||
if self.stock_entry:
|
if self.stock_entry:
|
||||||
if frappe.db.get_value("Stock Entry", self.stock_entry, "docstatus") != 1:
|
if frappe.db.get_value("Stock Entry", self.stock_entry, "docstatus") != 1:
|
||||||
|
@ -29,7 +29,6 @@ from erpnext.controllers.accounts_controller import (
|
|||||||
get_supplier_block_status,
|
get_supplier_block_status,
|
||||||
validate_taxes_and_charges,
|
validate_taxes_and_charges,
|
||||||
)
|
)
|
||||||
from erpnext.hr.doctype.expense_claim.expense_claim import update_reimbursed_amount
|
|
||||||
from erpnext.setup.utils import get_exchange_rate
|
from erpnext.setup.utils import get_exchange_rate
|
||||||
|
|
||||||
|
|
||||||
@ -88,7 +87,6 @@ class PaymentEntry(AccountsController):
|
|||||||
if self.difference_amount:
|
if self.difference_amount:
|
||||||
frappe.throw(_("Difference Amount must be zero"))
|
frappe.throw(_("Difference Amount must be zero"))
|
||||||
self.make_gl_entries()
|
self.make_gl_entries()
|
||||||
self.update_expense_claim()
|
|
||||||
self.update_outstanding_amounts()
|
self.update_outstanding_amounts()
|
||||||
self.update_advance_paid()
|
self.update_advance_paid()
|
||||||
self.update_payment_schedule()
|
self.update_payment_schedule()
|
||||||
@ -97,7 +95,6 @@ class PaymentEntry(AccountsController):
|
|||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry", "Payment Ledger Entry")
|
self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry", "Payment Ledger Entry")
|
||||||
self.make_gl_entries(cancel=1)
|
self.make_gl_entries(cancel=1)
|
||||||
self.update_expense_claim()
|
|
||||||
self.update_outstanding_amounts()
|
self.update_outstanding_amounts()
|
||||||
self.update_advance_paid()
|
self.update_advance_paid()
|
||||||
self.delink_advance_entry_references()
|
self.delink_advance_entry_references()
|
||||||
@ -985,16 +982,6 @@ class PaymentEntry(AccountsController):
|
|||||||
):
|
):
|
||||||
frappe.get_doc(d.reference_doctype, d.reference_name).set_total_advance_paid()
|
frappe.get_doc(d.reference_doctype, d.reference_name).set_total_advance_paid()
|
||||||
|
|
||||||
def update_expense_claim(self):
|
|
||||||
if self.payment_type in ("Pay") and self.party:
|
|
||||||
for d in self.get("references"):
|
|
||||||
if d.reference_doctype == "Expense Claim" and d.reference_name:
|
|
||||||
doc = frappe.get_doc("Expense Claim", d.reference_name)
|
|
||||||
if self.docstatus == 2:
|
|
||||||
update_reimbursed_amount(doc, -1 * d.allocated_amount)
|
|
||||||
else:
|
|
||||||
update_reimbursed_amount(doc, d.allocated_amount)
|
|
||||||
|
|
||||||
def on_recurring(self, reference_doc, auto_repeat_doc):
|
def on_recurring(self, reference_doc, auto_repeat_doc):
|
||||||
self.reference_no = reference_doc.name
|
self.reference_no = reference_doc.name
|
||||||
self.reference_date = nowdate()
|
self.reference_date = nowdate()
|
||||||
|
@ -18,7 +18,6 @@ from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import (
|
|||||||
create_sales_invoice,
|
create_sales_invoice,
|
||||||
create_sales_invoice_against_cost_center,
|
create_sales_invoice_against_cost_center,
|
||||||
)
|
)
|
||||||
from erpnext.hr.doctype.expense_claim.test_expense_claim import make_expense_claim
|
|
||||||
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||||
|
|
||||||
test_dependencies = ["Item"]
|
test_dependencies = ["Item"]
|
||||||
@ -293,31 +292,6 @@ class TestPaymentEntry(unittest.TestCase):
|
|||||||
self.assertEqual(flt(outstanding_amount), 250)
|
self.assertEqual(flt(outstanding_amount), 250)
|
||||||
self.assertEqual(status, "Unpaid")
|
self.assertEqual(status, "Unpaid")
|
||||||
|
|
||||||
def test_payment_entry_against_ec(self):
|
|
||||||
|
|
||||||
payable = frappe.get_cached_value("Company", "_Test Company", "default_payable_account")
|
|
||||||
ec = make_expense_claim(payable, 300, 300, "_Test Company", "Travel Expenses - _TC")
|
|
||||||
pe = get_payment_entry(
|
|
||||||
"Expense Claim", ec.name, bank_account="_Test Bank USD - _TC", bank_amount=300
|
|
||||||
)
|
|
||||||
pe.reference_no = "1"
|
|
||||||
pe.reference_date = "2016-01-01"
|
|
||||||
pe.source_exchange_rate = 1
|
|
||||||
pe.paid_to = payable
|
|
||||||
pe.insert()
|
|
||||||
pe.submit()
|
|
||||||
|
|
||||||
expected_gle = dict(
|
|
||||||
(d[0], d) for d in [[payable, 300, 0, ec.name], ["_Test Bank USD - _TC", 0, 300, None]]
|
|
||||||
)
|
|
||||||
|
|
||||||
self.validate_gl_entries(pe.name, expected_gle)
|
|
||||||
|
|
||||||
outstanding_amount = flt(
|
|
||||||
frappe.db.get_value("Expense Claim", ec.name, "total_sanctioned_amount")
|
|
||||||
) - flt(frappe.db.get_value("Expense Claim", ec.name, "total_amount_reimbursed"))
|
|
||||||
self.assertEqual(outstanding_amount, 0)
|
|
||||||
|
|
||||||
def test_payment_entry_against_si_usd_to_inr(self):
|
def test_payment_entry_against_si_usd_to_inr(self):
|
||||||
si = create_sales_invoice(
|
si = create_sales_invoice(
|
||||||
customer="_Test Customer USD",
|
customer="_Test Customer USD",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user