feat: Add option to create pick list from material request

This commit is contained in:
Suraj Shetty 2019-08-26 06:33:27 +05:30
parent 8b4d604cfd
commit 9209570937
5 changed files with 86 additions and 15 deletions

View File

@ -502,3 +502,24 @@ def raise_work_orders(material_request):
frappe.throw(_("Productions Orders cannot be raised for:") + '\n' + new_line_sep(errors))
return work_orders
@frappe.whitelist()
def create_pick_list(source_name, target_doc=None):
doc = get_mapped_doc('Material Request', source_name, {
'Material Request': {
'doctype': 'Pick List',
'validation': {
'docstatus': ['=', 1]
}
},
'Material Request Item': {
'doctype': 'Pick List Reference Item',
'field_map': {
'name': 'material_request_item',
'qty': 'stock_qty'
},
# 'condition': lambda doc: abs(doc.transferred_qty) < abs(doc.required_qty)
},
}, target_doc)
return doc

View File

@ -19,6 +19,13 @@ frappe.ui.form.on('Pick List', {
}
};
});
frm.set_query('material_request', () => {
return {
filters: {
'material_request_type': ['=', frm.doc.purpose]
}
};
});
},
refresh: (frm) => {
frm.trigger('add_get_items_button');
@ -70,6 +77,15 @@ frappe.ui.form.on('Pick List', {
}, __("Select Quantity"), __('Get Items'));
});
},
material_request: (frm) => {
frm.clear_table('items');
frm.clear_table('locations');
erpnext.utils.map_current_doc({
method: 'erpnext.stock.doctype.material_request.material_request.create_pick_list',
target: frm,
source_name: frm.doc.material_request
});
},
purpose: (frm) => {
frm.clear_table('items');
frm.clear_table('locations');
@ -116,14 +132,4 @@ frappe.ui.form.on('Pick List', {
});
});
}
});
// frappe.ui.form.on('Pick List Reference Item', {
// item_code: (frm, cdt, cdn) => {
// let row = locals[cdt][cdn];
// if (row.item_code) {
// frappe.xcall('');
// }
// }
// });
});

View File

@ -8,6 +8,7 @@
"purpose",
"customer",
"work_order",
"material_request",
"for_qty",
"column_break_4",
"parent_warehouse",
@ -97,10 +98,17 @@
"fieldtype": "Select",
"label": "Purpose",
"options": "Material Transfer for Manufacture\nMaterial Issue\nMaterial Transfer\nDelivery against Sales Order"
},
{
"depends_on": "eval:['Material Transfer', 'Material Issue'].includes(doc.purpose)",
"fieldname": "material_request",
"fieldtype": "Link",
"label": "Material Request",
"options": "Material Request"
}
],
"is_submittable": 1,
"modified": "2019-08-22 16:58:07.270447",
"modified": "2019-08-23 12:34:00.223445",
"modified_by": "Administrator",
"module": "Stock",
"name": "Pick List",

View File

@ -41,6 +41,8 @@ class PickList(Document):
'item_code': item_code,
'sales_order': item_doc.sales_order,
'sales_order_item': item_doc.sales_order_item,
'material_request': item_doc.material_request,
'material_request_item': item_doc.material_request_item,
'uom': item_doc.uom,
'stock_uom': item_doc.stock_uom,
'conversion_factor': item_doc.conversion_factor,
@ -231,7 +233,6 @@ def set_delivery_note_missing_values(target):
target.run_method('set_po_nos')
target.run_method('calculate_taxes_and_totals')
@frappe.whitelist()
def create_stock_entry(pick_list):
pick_list = frappe.get_doc(json.loads(pick_list))
@ -282,6 +283,28 @@ def create_stock_entry(pick_list):
return stock_entry.as_dict()
@frappe.whitelist()
def create_stock_entry_with_material_request_items(pick_list):
stock_entry = frappe.new_doc('Stock Entry')
stock_entry.pick_list = pick_list.get('name')
stock_entry.purpose = pick_list.get('purpose')
stock_entry.set_stock_entry_type()
doc = get_mapped_doc("Work Order", source_name, {
"Work Order": {
"doctype": "Pick List",
"validation": {
"docstatus": ["=", 1]
}
},
"Work Order Item": {
"doctype": "Pick List Reference Item",
"postprocess": update_item_quantity,
"condition": lambda doc: abs(doc.transferred_qty) < abs(doc.required_qty)
},
}, target_doc)
@frappe.whitelist()
def get_pending_work_orders(doctype, txt, searchfield, start, page_length, filters, as_dict):
return frappe.db.sql("""

View File

@ -24,7 +24,9 @@
"batch_no",
"column_break_15",
"sales_order",
"sales_order_item"
"sales_order_item",
"material_request",
"material_request_item"
],
"fields": [
{
@ -152,10 +154,21 @@
{
"fieldname": "column_break_20",
"fieldtype": "Column Break"
},
{
"fieldname": "material_request",
"fieldtype": "Link",
"label": "Material Request",
"options": "Material Request"
},
{
"fieldname": "material_request_item",
"fieldtype": "Data",
"label": "Material Request Item"
}
],
"istable": 1,
"modified": "2019-08-14 18:41:37.727388",
"modified": "2019-08-23 14:13:11.088354",
"modified_by": "Administrator",
"module": "Stock",
"name": "Pick List Item",