Hey Chris!
Check out Clone Attack, it does all this out of the box (no custom code required)!
Clone Attack has a workflow action that allows you to choose what associations and properties you want to copy over to the new deal. It also allows you to choose what stage and pipeline the new deal gets created in. You can also incerment date fields by a set amount of time such as +1 month or +17 weeks.
If you want to copy over the original Deal ID all you have to do is create an unformatted number property for deals with the API name: ac_clone_attack_parent_object_id
Here is an example of what a Clone Attack workflow looks like:
Hopefully this helps!
