in this you all ready told that you created on but, you can continue with that,if you refer the module "sale_add_products_wizard" apps, you can easily add that into your function.
i will give you my code , if you can modify it .
def button_submission_submit(self,cr,uid,ids,context=None):
order_line_obj = self.pool.get('sale.order.line')
product_obj = self.pool.get('product.product')
data=self.browse(cr,uid,ids[0])
partner = data.partner_id.id
pricelist = data.pricelist_id.id
line_ids = data.sale_id.order_line
for line in line_ids:
product_id = line.product_id.id
p = product_obj.browse(cr,uid,product_id)
uom_q = p.uom_id.id
qty_p = line.product_uom_qty
product = self.pool.get('sale.order.line').product_id_change(cr, uid, ids,
pricelist,
product_id,
qty=qty_p,
uom=uom_q,
partner_id=partner
)
val = {
'name': product['value'].get('name'),
'product_uom_qty': qty_p,
'order_id': ids[0],
'product_id': p.id or False,
'product_uom':uom_q,
'price_unit': product['value'].get('price_unit'),
}
order_line_obj.create(cr,uid,val)
return True
i got a same situation in form , but its for purchase . exact same thing i needed for my sales. i am attaching that for reference.https://www.odoo.com/forum/help-1/question/how-to-fill-purchase-order-line-with-sale-order-line-9924