product function submit