Adds button to find MRs linked to Supplier

This commit is contained in:
Ben Cornwell-Mott 2017-01-11 03:05:49 -08:00
parent 9e08ccdf39
commit 1cd7e54822
2 changed files with 82 additions and 1 deletions

View File

@ -134,6 +134,46 @@ erpnext.buying.RequestforQuotationController = erpnext.buying.BuyingController.e
}
})
}, __("Get items from"));
cur_frm.add_custom_button(__('Possible Supplier'),
function() {
//Create a dialog window for the user to pick their supplier
var d = new frappe.ui.Dialog({
title: __('Select Possible Supplier'),
fields: [
{fieldname: 'supplier', fieldtype:'Link', options:'Supplier', label:'Supplier', reqd:1},
{fieldname: 'ok_button', fieldtype:'Button', label:'Get Material Requests'},
]
});
//On the user clicking the ok button
d.fields_dict.ok_button.input.onclick = function() {
var btn = d.fields_dict.ok_button.input;
var v = d.get_values();
if(v) {
$(btn).set_working();
erpnext.utils.map_current_doc({
method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_matreq_from_possible_supplier",
source_name: v.supplier,
get_query_filters: {
material_request_type: "Purchase",
docstatus: 1,
status: ["!=", "Stopped"],
per_ordered: ["<", 99.99],
company: cur_frm.doc.company
}
});
$(btn).done_working();
//msgprint("Loaded Material Requests");
d.hide();
}
}
d.show();
}, __("Get items from"));
}
},

View File

@ -12,7 +12,7 @@ from frappe.utils.print_format import download_pdf
from frappe.desk.form.load import get_attachments
from frappe.core.doctype.communication.email import make
from erpnext.accounts.party import get_party_account_currency, get_party_details
from erpnext.stock.doctype.material_request.material_request import set_missing_values
from erpnext.stock.doctype.material_request.material_request import set_missing_values, make_request_for_quotation
from erpnext.controllers.buying_controller import BuyingController
STANDARD_USERS = ("Guest", "Administrator")
@ -244,3 +244,44 @@ def get_rfq_doc(doctype, name, supplier_idx):
args = doc.get('suppliers')[cint(supplier_idx) - 1]
doc.update_supplier_part_no(args)
return doc
@frappe.whitelist()
def get_matreq_from_possible_supplier(source_name, target_doc = None):
item_list = frappe.db.sql("""SELECT matreq.name, matreqi.item_code
FROM `tabItem` as item,
`tabItem Supplier` as itemsup,
`tabMaterial Request Item` as matreqi,
`tabMaterial Request` as matreq
WHERE itemsup.supplier = %(supplier)s
AND item.name = itemsup.parent
AND matreqi.parent = matreq.name
AND matreqi.item_code = item.name
AND matreq.status != "Stopped"
AND matreq.material_request_type = "Purchase"
AND matreq.docstatus = 1
AND matreq.per_ordered < 99.99""", \
{"supplier": source_name},as_dict=1)
for d in item_list:
frappe.msgprint(d.name + " - " + d.item_code)
target_doc = get_mapped_doc("Material Request", d.name, {
"Material Request": {
"doctype": "Request for Quotation",
"validation": {
"docstatus": ["=", 1],
"material_request_type": ["=", "Purchase"],
}
},
"Material Request Item": {
"doctype": "Request for Quotation Item",
"condition": lambda doc: doc.item_code == d.item_code,
"field_map": [
["name", "material_request_item"],
["parent", "material_request"],
["uom", "uom"]
]
}
}, target_doc)
return target_doc