From cb6774e373c2951c6a6a7fd1e6012ec8edecd222 Mon Sep 17 00:00:00 2001 From: AravindPranera Date: Mon, 18 Sep 2017 17:37:37 +0530 Subject: [PATCH] Files added with all functions --- .../crm/doctype/opportunity/opportunity.py | 65 +++++++++++-------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py index 4e6047760cf..31f74a69419 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.py +++ b/erpnext/crm/doctype/opportunity/opportunity.py @@ -84,11 +84,19 @@ class Opportunity(TransactionBase): self.delete_events() def has_active_quotation(self): - return frappe.db.sql(""" - select q.name - from `tabQuotation` q, `tabQuotation Item` qi - where q.name = qi.parent and q.docstatus=1 and qi.prevdoc_docname =%s - and q.status not in ('Lost', 'Closed')""", self.name) + if not self.with_items: + return frappe.get_all('Quotation', + { + 'opportunity': self.name, + 'status': ("not in", ['Lost', 'Closed']), + 'docstatus': 1 + }, 'name') + else: + return frappe.db.sql(""" + select q.name + from `tabQuotation` q, `tabQuotation Item` qi + where q.name = qi.parent and q.docstatus=1 and qi.prevdoc_docname =%s + and q.status not in ('Lost', 'Closed')""", self.name) def has_ordered_quotation(self): return frappe.db.sql(""" @@ -185,27 +193,6 @@ def get_item_details(item_code): 'brand': item and item[0]['brand'] or '' } -@frappe.whitelist() -def make_request_for_quotation(source_name, target_doc=None): - doclist = get_mapped_doc("Opportunity", source_name, { - "Opportunity": { - "doctype": "Request for Quotation", - "validation": { - "enquiry_type": ["=", "Sales"] - } - }, - "Opportunity Item": { - "doctype": "Request for Quotation Item", - "field_map": [ - ["name", "opportunity_item"], - ["parent", "opportunity"], - ["uom", "uom"] - ] - } - }, target_doc) - - return doclist - @frappe.whitelist() def make_quotation(source_name, target_doc=None): def set_missing_values(source, target): @@ -233,6 +220,8 @@ def make_quotation(source_name, target_doc=None): quotation.run_method("set_missing_values") quotation.run_method("calculate_taxes_and_totals") + if not source.with_items: + quotation.opportunity = source.name doclist = get_mapped_doc("Opportunity", source_name, { "Opportunity": { @@ -256,6 +245,27 @@ def make_quotation(source_name, target_doc=None): return doclist + @frappe.whitelist() + def make_request_for_quotation(source_name, target_doc=None): + doclist = get_mapped_doc("Opportunity", source_name, { + "Opportunity": { + "doctype": "Request for Quotation", + "validation": { + "enquiry_type": ["=", "Sales"] + } + }, + "Opportunity Item": { + "doctype": "Request for Quotation Item", + "field_map": [ + ["name", "opportunity_item"], + ["parent", "opportunity"], + ["uom", "uom"] + ] + } + }, target_doc) + + return doclist + @frappe.whitelist() def make_supplier_quotation(source_name, target_doc=None): doclist = get_mapped_doc("Opportunity", source_name, { @@ -272,7 +282,8 @@ def make_supplier_quotation(source_name, target_doc=None): } } }, target_doc) - return doclist + + return doclist @frappe.whitelist() def set_multiple_status(names, status):