diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js index 38f3e0c6778..eac8f44e929 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.js +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js @@ -77,13 +77,21 @@ erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({ frappe.model.validate_missing(jvd, "party_type"); frappe.model.validate_missing(jvd, "party"); - return { + + var out = { filters: [ - [jvd.reference_type, jvd.reference_type.indexOf("Sales")==1 ? "customer" : "supplier", "=", jvd.party], + [jvd.reference_type, jvd.reference_type.indexOf("Sales")===0 ? "customer" : "supplier", "=", jvd.party], [jvd.reference_type, "docstatus", "=", 1], - [jvd.reference_type, "outstanding_amount", "!=", 0] ] }; + + if(in_list(["Sales Invoice", "Purchase Invoice"], jvd.reference_type)) { + out.filters.push([jvd.reference_type, "outstanding_amount", "!=", 0]); + } else { + out.filters.push([jvd.reference_type, "per_billed", "<", 100]); + } + + return out; }); diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py index b48e46c5a71..00e2e913186 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.py +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py @@ -118,7 +118,7 @@ class JournalEntry(AccountsController): def validate_against_jv(self): for d in self.get('accounts'): - if d.reference_type=="Journal Voucher": + if d.reference_type=="Journal Entry": account_root_type = frappe.db.get_value("Account", d.account, "root_type") if account_root_type == "Asset" and flt(d.debit) > 0: frappe.throw(_("For {0}, only credit accounts can be linked against another debit entry") @@ -132,7 +132,7 @@ class JournalEntry(AccountsController): against_entries = frappe.db.sql("""select * from `tabJournal Entry Account` where account = %s and docstatus = 1 and parent = %s - and ifnull(reference_type, '') = '' and ifnull(reference_name, '') = '' + and ifnull(reference_type, '') in ("", "Sales Order", "Purchase Order") """, (d.account, d.reference_name), as_dict=True) if not against_entries: @@ -163,8 +163,8 @@ class JournalEntry(AccountsController): for d in self.get("accounts"): if not d.reference_type: d.reference_name = None - if not d.reference_type: - d.reference_name = None + if not d.reference_name: + d.reference_type = None if d.reference_type and d.reference_name and (d.reference_type in field_dict.keys()): dr_or_cr = "credit" if d.reference_type in ("Sales Order", "Sales Invoice") \ else "debit" diff --git a/erpnext/patches/v5_4/cleanup_journal_entry.py b/erpnext/patches/v5_4/cleanup_journal_entry.py index 9968e3cc102..b8edbaa9622 100644 --- a/erpnext/patches/v5_4/cleanup_journal_entry.py +++ b/erpnext/patches/v5_4/cleanup_journal_entry.py @@ -2,10 +2,10 @@ import frappe def execute(): for doctype, fieldname in ( - ("Sales Invoice", "against_invoice"), - ("Purchase Invoice", "against_voucher"), ("Sales Order", "against_sales_order"), ("Purchase Order", "against_purchase_order"), + ("Sales Invoice", "against_invoice"), + ("Purchase Invoice", "against_voucher"), ("Journal Entry", "against_jv"), ("Expense Claim", "against_expense_claim"), ):