The SF Giants have agreed to terms on a three-year, $42 million contract with free agent slugger Jorge Soler.