complete add product function