Merge pull request #31322 from deepeshgarg007/quotation_issues
fix: Company address filter in quotation
This commit is contained in:
commit
f8011f30e0
@ -211,7 +211,7 @@ def set_address_details(
|
|||||||
else:
|
else:
|
||||||
party_details.update(get_company_address(company))
|
party_details.update(get_company_address(company))
|
||||||
|
|
||||||
if doctype and doctype in ["Delivery Note", "Sales Invoice", "Sales Order"]:
|
if doctype and doctype in ["Delivery Note", "Sales Invoice", "Sales Order", "Quotation"]:
|
||||||
if party_details.company_address:
|
if party_details.company_address:
|
||||||
party_details.update(
|
party_details.update(
|
||||||
get_fetch_values(doctype, "company_address", party_details.company_address)
|
get_fetch_values(doctype, "company_address", party_details.company_address)
|
||||||
|
@ -35,7 +35,8 @@ status_map = {
|
|||||||
["Draft", None],
|
["Draft", None],
|
||||||
["Open", "eval:self.docstatus==1"],
|
["Open", "eval:self.docstatus==1"],
|
||||||
["Lost", "eval:self.status=='Lost'"],
|
["Lost", "eval:self.status=='Lost'"],
|
||||||
["Ordered", "has_sales_order"],
|
["Partially Ordered", "is_partially_ordered"],
|
||||||
|
["Ordered", "is_fully_ordered"],
|
||||||
["Cancelled", "eval:self.docstatus==2"],
|
["Cancelled", "eval:self.docstatus==2"],
|
||||||
],
|
],
|
||||||
"Sales Order": [
|
"Sales Order": [
|
||||||
|
@ -287,7 +287,7 @@ def get_regional_address_details(party_details, doctype, company):
|
|||||||
return party_details
|
return party_details
|
||||||
|
|
||||||
if (
|
if (
|
||||||
doctype in ("Sales Invoice", "Delivery Note", "Sales Order")
|
doctype in ("Sales Invoice", "Delivery Note", "Sales Order", "Quotation")
|
||||||
and party_details.company_gstin
|
and party_details.company_gstin
|
||||||
and party_details.company_gstin[:2] != party_details.place_of_supply[:2]
|
and party_details.company_gstin[:2] != party_details.place_of_supply[:2]
|
||||||
) or (
|
) or (
|
||||||
|
@ -20,6 +20,20 @@ frappe.ui.form.on('Quotation', {
|
|||||||
|
|
||||||
frm.set_df_property('packed_items', 'cannot_add_rows', true);
|
frm.set_df_property('packed_items', 'cannot_add_rows', true);
|
||||||
frm.set_df_property('packed_items', 'cannot_delete_rows', true);
|
frm.set_df_property('packed_items', 'cannot_delete_rows', true);
|
||||||
|
|
||||||
|
frm.set_query('company_address', function(doc) {
|
||||||
|
if(!doc.company) {
|
||||||
|
frappe.throw(__('Please set Company'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
query: 'frappe.contacts.doctype.address.address.address_query',
|
||||||
|
filters: {
|
||||||
|
link_doctype: 'Company',
|
||||||
|
link_name: doc.company
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
refresh: function(frm) {
|
refresh: function(frm) {
|
||||||
@ -70,7 +84,7 @@ erpnext.selling.QuotationController = class QuotationController extends erpnext.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(doc.docstatus == 1 && doc.status!=='Lost') {
|
if(doc.docstatus == 1 && !(['Lost', 'Ordered']).includes(doc.status)) {
|
||||||
if(!doc.valid_till || frappe.datetime.get_diff(doc.valid_till, frappe.datetime.get_today()) >= 0) {
|
if(!doc.valid_till || frappe.datetime.get_diff(doc.valid_till, frappe.datetime.get_today()) >= 0) {
|
||||||
cur_frm.add_custom_button(__('Sales Order'),
|
cur_frm.add_custom_button(__('Sales Order'),
|
||||||
cur_frm.cscript['Make Sales Order'], __('Create'));
|
cur_frm.cscript['Make Sales Order'], __('Create'));
|
||||||
|
@ -897,7 +897,7 @@
|
|||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "status",
|
"oldfieldname": "status",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"options": "Draft\nOpen\nReplied\nOrdered\nLost\nCancelled\nExpired",
|
"options": "Draft\nOpen\nReplied\nPartially Ordered\nOrdered\nLost\nCancelled\nExpired",
|
||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"read_only": 1,
|
"read_only": 1,
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
@ -986,7 +986,7 @@
|
|||||||
"idx": 82,
|
"idx": 82,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2022-04-07 11:01:31.157084",
|
"modified": "2022-06-11 20:35:32.635804",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Selling",
|
"module": "Selling",
|
||||||
"name": "Quotation",
|
"name": "Quotation",
|
||||||
|
@ -70,8 +70,32 @@ class Quotation(SellingController):
|
|||||||
title=_("Unpublished Item"),
|
title=_("Unpublished Item"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def has_sales_order(self):
|
def get_ordered_status(self):
|
||||||
return frappe.db.get_value("Sales Order Item", {"prevdoc_docname": self.name, "docstatus": 1})
|
ordered_items = frappe._dict(
|
||||||
|
frappe.db.get_all(
|
||||||
|
"Sales Order Item",
|
||||||
|
{"prevdoc_docname": self.name, "docstatus": 1},
|
||||||
|
["item_code", "sum(qty)"],
|
||||||
|
group_by="item_code",
|
||||||
|
as_list=1,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
status = "Open"
|
||||||
|
if ordered_items:
|
||||||
|
status = "Ordered"
|
||||||
|
|
||||||
|
for item in self.get("items"):
|
||||||
|
if item.qty > ordered_items.get(item.item_code, 0.0):
|
||||||
|
status = "Partially Ordered"
|
||||||
|
|
||||||
|
return status
|
||||||
|
|
||||||
|
def is_fully_ordered(self):
|
||||||
|
return self.get_ordered_status() == "Ordered"
|
||||||
|
|
||||||
|
def is_partially_ordered(self):
|
||||||
|
return self.get_ordered_status() == "Partially Ordered"
|
||||||
|
|
||||||
def update_lead(self):
|
def update_lead(self):
|
||||||
if self.quotation_to == "Lead" and self.party_name:
|
if self.quotation_to == "Lead" and self.party_name:
|
||||||
|
@ -25,6 +25,8 @@ frappe.listview_settings['Quotation'] = {
|
|||||||
get_indicator: function(doc) {
|
get_indicator: function(doc) {
|
||||||
if(doc.status==="Open") {
|
if(doc.status==="Open") {
|
||||||
return [__("Open"), "orange", "status,=,Open"];
|
return [__("Open"), "orange", "status,=,Open"];
|
||||||
|
} else if (doc.status==="Partially Ordered") {
|
||||||
|
return [__("Partially Ordered"), "yellow", "status,=,Partially Ordered"];
|
||||||
} else if(doc.status==="Ordered") {
|
} else if(doc.status==="Ordered") {
|
||||||
return [__("Ordered"), "green", "status,=,Ordered"];
|
return [__("Ordered"), "green", "status,=,Ordered"];
|
||||||
} else if(doc.status==="Lost") {
|
} else if(doc.status==="Lost") {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user