Merge branch 'rfq_supplier_pull' into develop
This commit is contained in:
commit
9e294ee454
@ -134,6 +134,42 @@ erpnext.buying.RequestforQuotationController = erpnext.buying.BuyingController.e
|
||||
}
|
||||
})
|
||||
}, __("Get items from"));
|
||||
|
||||
// Get items from open Material Requests based on supplier
|
||||
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 Items from 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_item_from_material_requests_based_on_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();
|
||||
d.hide();
|
||||
}
|
||||
}
|
||||
d.show();
|
||||
}, __("Get items from"));
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -6,7 +6,7 @@ from __future__ import unicode_literals
|
||||
import frappe, json
|
||||
from frappe import _
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
from frappe.utils import get_url, random_string, cint
|
||||
from frappe.utils import get_url, cint
|
||||
from frappe.utils.user import get_user_fullname
|
||||
from frappe.utils.print_format import download_pdf
|
||||
from frappe.desk.form.load import get_attachments
|
||||
@ -244,3 +244,49 @@ 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_item_from_material_requests_based_on_supplier(source_name, target_doc = None):
|
||||
mr_items_list = frappe.db.sql("""
|
||||
SELECT
|
||||
mr.name, mr_item.item_code
|
||||
FROM
|
||||
`tabItem` as item,
|
||||
`tabItem Supplier` as item_supp,
|
||||
`tabMaterial Request Item` as mr_item,
|
||||
`tabMaterial Request` as mr
|
||||
WHERE item_supp.supplier = %(supplier)s
|
||||
AND item.name = item_supp.parent
|
||||
AND mr_item.parent = mr.name
|
||||
AND mr_item.item_code = item.name
|
||||
AND mr.status != "Stopped"
|
||||
AND mr.material_request_type = "Purchase"
|
||||
AND mr.docstatus = 1
|
||||
AND mr.per_ordered < 99.99""", {"supplier": source_name}, as_dict=1)
|
||||
|
||||
material_requests = {}
|
||||
for d in mr_items_list:
|
||||
material_requests.setdefault(d.name, []).append(d.item_code)
|
||||
|
||||
for mr, items in material_requests.items():
|
||||
target_doc = get_mapped_doc("Material Request", mr, {
|
||||
"Material Request": {
|
||||
"doctype": "Request for Quotation",
|
||||
"validation": {
|
||||
"docstatus": ["=", 1],
|
||||
"material_request_type": ["=", "Purchase"],
|
||||
}
|
||||
},
|
||||
"Material Request Item": {
|
||||
"doctype": "Request for Quotation Item",
|
||||
"condition": lambda row: row.item_code in items,
|
||||
"field_map": [
|
||||
["name", "material_request_item"],
|
||||
["parent", "material_request"],
|
||||
["uom", "uom"]
|
||||
]
|
||||
}
|
||||
}, target_doc)
|
||||
|
||||
return target_doc
|
||||
|
Loading…
Reference in New Issue
Block a user