From b14401c320503f1e8273f29a53b80ac618e6a107 Mon Sep 17 00:00:00 2001 From: Sambhaji Kolate Date: Thu, 11 Sep 2014 16:09:05 +0530 Subject: [PATCH] change convert_to_recurring() to take recurring_id dynamicaly --- .../purchase_invoice/purchase_invoice.py | 4 +-- .../doctype/sales_invoice/sales_invoice.py | 4 +-- .../doctype/purchase_order/purchase_order.py | 4 +-- erpnext/controllers/recurring_document.py | 29 +++++++++++-------- .../doctype/sales_order/sales_order.py | 4 +-- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index 77c7ea97d1..6a41bbab39 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -265,11 +265,11 @@ class PurchaseInvoice(BuyingController): self.update_against_document_in_jv() self.update_prevdoc_status() self.update_billing_status_for_zero_amount_refdoc("Purchase Order") - convert_to_recurring(self, "RECPI.#####", self.posting_date) + convert_to_recurring(self, self.posting_date) def on_update_after_submit(self): validate_recurring_document(self) - convert_to_recurring(self, "RECPI.#####", self.posting_date) + convert_to_recurring(self, self.posting_date) def make_gl_entries(self): auto_accounting_for_stock = \ diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index a20d906b8c..dc38c9a8d8 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -103,7 +103,7 @@ class SalesInvoice(SellingController): self.update_c_form() self.update_time_log_batch(self.name) - convert_to_recurring(self, "RECINV.#####", self.posting_date) + convert_to_recurring(self, self.posting_date) def before_cancel(self): self.update_time_log_batch(None) @@ -145,7 +145,7 @@ class SalesInvoice(SellingController): def on_update_after_submit(self): validate_recurring_document(self) - convert_to_recurring(self, "RECINV.#####", self.posting_date) + convert_to_recurring(self, self.posting_date) def get_portal_page(self): return "invoice" if self.docstatus==1 else None diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 66083be53b..a8a9d0da2f 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -179,7 +179,7 @@ class PurchaseOrder(BuyingController): frappe.db.set(self,'status','Submitted') - convert_to_recurring(self, "SO/REP/.#####", self.transaction_date) + convert_to_recurring(self, self.transaction_date) def on_cancel(self): pc_obj = frappe.get_doc('Purchase Common') @@ -206,7 +206,7 @@ class PurchaseOrder(BuyingController): def on_update_after_submit(self): validate_recurring_document(self) - convert_to_recurring(self, "SO/REP/.#####", self.transaction_date) + convert_to_recurring(self, self.transaction_date) def set_missing_values(source, target): target.ignore_pricing_rule = 1 diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py index c7163ae3f8..7b4310bada 100644 --- a/erpnext/controllers/recurring_document.py +++ b/erpnext/controllers/recurring_document.py @@ -2,9 +2,14 @@ from __future__ import unicode_literals import frappe import frappe.utils import frappe.defaults -from frappe.utils import cint, cstr, getdate, nowdate, get_first_day, get_last_day + +from frappe.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate, \ + get_first_day, get_last_day, comma_and from frappe.model.naming import make_autoname + from frappe import _, msgprint, throw +from erpnext.accounts.party import get_party_account, get_due_date, get_party_details +from frappe.model.mapper import get_mapped_doc month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12} @@ -46,7 +51,7 @@ def manage_recurring_documents(doctype, next_date=None, commit=True): frappe.db.begin() frappe.db.sql("update `tab%s` \ - set is_recurring = 0 where name = %s" % (doctype, '%s'), + set is_recurring = 0 where name = %s" % (doctype, '%s'), (ref_document)) notify_errors(ref_document, doctype, ref_wrapper.customer, ref_wrapper.owner) frappe.db.commit() @@ -152,18 +157,18 @@ def validate_recurring_document(doc): elif not (doc.from_date and doc.to_date): throw(_("Period From and Period To dates mandatory for recurring %s") % doc.doctype) -def convert_to_recurring(doc, autoname, posting_date): - if doc.is_recurring: - if not doc.recurring_id: - frappe.db.set(doc, "recurring_id", - make_autoname(autoname)) +# +def convert_to_recurring(doc, posting_date): + if doc.is_recurring: + if not doc.recurring_id: + frappe.db.set(doc, "recurring_id", doc.name) - set_next_date(doc, posting_date) + set_next_date(doc, posting_date) - elif doc.recurring_id: - frappe.db.sql("""update `tab%s` - set is_recurring = 0 - where recurring_id = %s""" % (doc.doctype, '%s'), (doc.recurring_id)) + elif doc.recurring_id: + frappe.db.sql("""update `tab%s` set is_recurring = 0 + where recurring_id = %s""" % (doc.doctype, '%s'), (doc.recurring_id)) +# def validate_notification_email_id(doc): if doc.notification_email_address: diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index ff14f9d0c1..b1852f115c 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -166,7 +166,7 @@ class SalesOrder(SellingController): self.update_prevdoc_status('submit') frappe.db.set(self, 'status', 'Submitted') - convert_to_recurring(self, "SO/REC/.#####", self.transaction_date) + convert_to_recurring(self, self.transaction_date) def on_cancel(self): # Cannot cancel stopped SO @@ -257,7 +257,7 @@ class SalesOrder(SellingController): def on_update_after_submit(self): validate_recurring_document(self) - convert_to_recurring(self, "SO/REC/.#####", self.transaction_date) + convert_to_recurring(self, self.transaction_date) @frappe.whitelist()