[fix] before_recurring, set due_date, ageing_date as None, fixed account due date validation
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index e067c70..7195db8 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -169,15 +169,13 @@
def validate_due_date(self, posting_date, due_date):
credit_days = (self.credit_days or frappe.db.get_value("Company", self.company, "credit_days"))
- if credit_days is None:
- return
-
posting_date, due_date = getdate(posting_date), getdate(due_date)
diff = (due_date - posting_date).days
if diff < 0:
frappe.throw(_("Due Date cannot be before Posting Date"))
- elif diff > credit_days:
+
+ elif credit_days is not None and diff > credit_days:
is_credit_controller = frappe.db.get_value("Accounts Settings", None,
"credit_controller") in frappe.user.get_roles()
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index a20d906..d4e09ec 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -71,7 +71,9 @@
self.is_opening = 'No'
self.set_aging_date()
+
frappe.get_doc("Account", self.debit_to).validate_due_date(self.posting_date, self.due_date)
+
self.set_against_income_account()
self.validate_c_form()
self.validate_time_logs_are_submitted()
@@ -147,6 +149,10 @@
validate_recurring_document(self)
convert_to_recurring(self, "RECINV.#####", self.posting_date)
+ def before_recurring(self):
+ self.aging_date = None
+ self.due_date = None
+
def get_portal_page(self):
return "invoice" if self.docstatus==1 else None
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index c7163ae..bdf8b29 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -36,6 +36,9 @@
% (doctype, date_field, '%s', '%s'), (next_date, recurring_id)):
try:
ref_wrapper = frappe.get_doc(doctype, ref_document)
+ if hasattr(ref_wrapper, "before_recurring"):
+ ref_wrapper.before_recurring()
+
new_document_wrapper = make_new_document(ref_wrapper, date_field, next_date)
send_notification(new_document_wrapper)
if commit: