refering to this code
we can create adocument from sales order into job order and copy items as follows:
frappe.ui.form.on('Sales Order', {
refresh: function(frm) {
if (frm.doc.docstatus==1) {
if(cur_frm.has_perm("submit")) {
frm.add_custom_button(__('Job Order'), function() {
frappe.model.with_doctype('Job Order', function() {
var jobOrder = frappe.model.get_new_doc('Job Order');
jobOrder.customer=frm.doc.customer;
jobOrder.posting_date=frm.doc.transaction_date;
jobOrder.customer_address=frm.doc.customer_address
jobOrder.shipping_address_name=frm.doc.shipping_address_name
jobOrder.contact_person=frm.doc.contact_person;
jobOrder.company_address=frm.doc.company_address;
var items = frm.get_field('items').grid.get_selected_children();
if(!items.length) {
items = frm.doc.items;
}
items.forEach(function(item) {
var jobOrder_item = frappe.model.add_child(jobOrder, 'job_order_item');
jobOrder_item.item_code = item.item_code;
jobOrder_item.item_name = item.item_name;
jobOrder_item.uom = item.uom;
jobOrder_item.conversion_factor = item.conversion_factor;
jobOrder_item.item_group = item.item_group;
jobOrder_item.description = item.description;
jobOrder_item.image = item.image;
jobOrder_item.qty = item.qty;
jobOrder_item.warehouse = item.s_warehouse;
jobOrder_item.required_date = frappe.datetime.nowdate();
});
frappe.set_route('Form', 'Job Order', jobOrder.name);
});
}, __('Create'));