Merge pull request #35572 from nabinhait/quotation-fix

feat: ability to create quotation against a prospect
This commit is contained in:
Nabin Hait 2023-06-06 21:54:24 +05:30 committed by GitHub
commit 1cf1c7943f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 15 deletions

View File

@ -647,12 +647,12 @@ def set_taxes(
else: else:
args.update(get_party_details(party, party_type)) args.update(get_party_details(party, party_type))
if party_type in ("Customer", "Lead"): if party_type in ("Customer", "Lead", "Prospect"):
args.update({"tax_type": "Sales"}) args.update({"tax_type": "Sales"})
if party_type == "Lead": if party_type in ["Lead", "Prospect"]:
args["customer"] = None args["customer"] = None
del args["lead"] del args[frappe.scrub(party_type)]
else: else:
args.update({"tax_type": "Purchase"}) args.update({"tax_type": "Purchase"})

View File

@ -43,7 +43,6 @@ class SellingController(StockController):
self.set_serial_and_batch_bundle(table_field) self.set_serial_and_batch_bundle(table_field)
def set_missing_values(self, for_validate=False): def set_missing_values(self, for_validate=False):
super(SellingController, self).set_missing_values(for_validate) super(SellingController, self).set_missing_values(for_validate)
# set contact and address details for customer, if they are not mentioned # set contact and address details for customer, if they are not mentioned
@ -62,7 +61,7 @@ class SellingController(StockController):
elif self.doctype == "Quotation" and self.party_name: elif self.doctype == "Quotation" and self.party_name:
if self.quotation_to == "Customer": if self.quotation_to == "Customer":
customer = self.party_name customer = self.party_name
else: elif self.quotation_to == "Lead":
lead = self.party_name lead = self.party_name
if customer: if customer:

View File

@ -16,8 +16,8 @@ erpnext.utils.get_party_details = function(frm, method, args, callback) {
|| (frm.doc.party_name && in_list(['Quotation', 'Opportunity'], frm.doc.doctype))) { || (frm.doc.party_name && in_list(['Quotation', 'Opportunity'], frm.doc.doctype))) {
let party_type = "Customer"; let party_type = "Customer";
if (frm.doc.quotation_to && frm.doc.quotation_to === "Lead") { if (frm.doc.quotation_to && in_list(["Lead", "Prospect"], frm.doc.quotation_to)) {
party_type = "Lead"; party_type = frm.doc.quotation_to;
} }
args = { args = {

View File

@ -13,7 +13,7 @@ frappe.ui.form.on('Quotation', {
frm.set_query("quotation_to", function() { frm.set_query("quotation_to", function() {
return{ return{
"filters": { "filters": {
"name": ["in", ["Customer", "Lead"]], "name": ["in", ["Customer", "Lead", "Prospect"]],
} }
} }
}); });
@ -160,19 +160,16 @@ erpnext.selling.QuotationController = class QuotationController extends erpnext.
} }
set_dynamic_field_label(){ set_dynamic_field_label(){
if (this.frm.doc.quotation_to == "Customer") if (this.frm.doc.quotation_to == "Customer") {
{
this.frm.set_df_property("party_name", "label", "Customer"); this.frm.set_df_property("party_name", "label", "Customer");
this.frm.fields_dict.party_name.get_query = null; this.frm.fields_dict.party_name.get_query = null;
} } else if (this.frm.doc.quotation_to == "Lead") {
if (this.frm.doc.quotation_to == "Lead")
{
this.frm.set_df_property("party_name", "label", "Lead"); this.frm.set_df_property("party_name", "label", "Lead");
this.frm.fields_dict.party_name.get_query = function() { this.frm.fields_dict.party_name.get_query = function() {
return{ query: "erpnext.controllers.queries.lead_query" } return{ query: "erpnext.controllers.queries.lead_query" }
} }
} else if (this.frm.doc.quotation_to == "Prospect") {
this.frm.set_df_property("party_name", "label", "Prospect");
} }
} }