Merge pull request #39125 from ruthra-kumar/ignore_cancelled_payment_in_sales_register
fix: ignore cancelled payments in Sales/Purchase Register
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 008614e..fc9034b 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -114,14 +114,12 @@
set_account_and_due_date(party, account, party_type, company, posting_date, bill_date, doctype)
)
party = party_details[party_type.lower()]
-
- if not ignore_permissions and not (
- frappe.has_permission(party_type, "read", party)
- or frappe.has_permission(party_type, "select", party)
- ):
- frappe.throw(_("Not permitted for {0}").format(party), frappe.PermissionError)
-
party = frappe.get_doc(party_type, party)
+
+ if not ignore_permissions:
+ ptype = "select" if frappe.only_has_select_perm(party_type) else "read"
+ frappe.has_permission(party_type, ptype, party, throw=True)
+
currency = party.get("default_currency") or currency or get_company_currency(company)
party_address, shipping_address = set_address_details(
@@ -637,9 +635,7 @@
return due_date
-def validate_due_date(
- posting_date, due_date, party_type, party, company=None, bill_date=None, template_name=None
-):
+def validate_due_date(posting_date, due_date, bill_date=None, template_name=None):
if getdate(due_date) < getdate(posting_date):
frappe.throw(_("Due Date cannot be before Posting / Supplier Invoice Date"))
else:
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index de7a7f9..0409c68 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -561,18 +561,12 @@
validate_due_date(
self.posting_date,
self.due_date,
- "Customer",
- self.customer,
- self.company,
self.payment_terms_template,
)
elif self.doctype == "Purchase Invoice":
validate_due_date(
self.bill_date or self.posting_date,
self.due_date,
- "Supplier",
- self.supplier,
- self.company,
self.bill_date,
self.payment_terms_template,
)
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 866e94f..598167b 100755
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -865,16 +865,20 @@
}
if (opts.source_doctype) {
+ let data_fields = [];
+ if(opts.source_doctype == "Purchase Receipt") {
+ data_fields.push({
+ fieldname: 'merge_taxes',
+ fieldtype: 'Check',
+ label: __('Merge taxes from multiple documents'),
+ });
+ }
const d = new frappe.ui.form.MultiSelectDialog({
doctype: opts.source_doctype,
target: opts.target,
date_field: opts.date_field || undefined,
setters: opts.setters,
- data_fields: [{
- fieldname: 'merge_taxes',
- fieldtype: 'Check',
- label: __('Merge taxes from multiple documents'),
- }],
+ data_fields: data_fields,
get_query: opts.get_query,
add_filters_group: 1,
allow_child_item_selection: opts.allow_child_item_selection,
@@ -888,7 +892,10 @@
return;
}
opts.source_name = values;
- opts.args = args;
+ if (opts.allow_child_item_selection || opts.source_doctype == "Purchase Receipt") {
+ // args contains filtered child docnames
+ opts.args = args;
+ }
d.dialog.hide();
_map();
},
diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py
index 4bc98b9..df2c49b 100644
--- a/erpnext/setup/demo.py
+++ b/erpnext/setup/demo.py
@@ -149,6 +149,11 @@
invoice.set_posting_time = 1
invoice.posting_date = order.transaction_date
invoice.due_date = order.transaction_date
+ invoice.bill_date = order.transaction_date
+
+ if invoice.get("payment_schedule"):
+ invoice.payment_schedule[0].due_date = order.transaction_date
+
invoice.update_stock = 1
invoice.submit()