Col codice così postato non si capisce nulla, prima di inviare un messaggio contenente codice, visualizza sempre l'anteprima e se necessario riformattalo, così è illegibile.
Vado quindi ad intuito: potresti prevedere un campo "modifica" nel quale salvi l'id dell'eventuale contratto che modifica quello in esame, quindi ad esempio quando crei il primo contratto, il campo sarà vuoto, se lo modifichi, salvi il contratto modificato (il suo campo "modifica" sarà vuoto) e nel precedente inserisci l'id di questo nuovo contratto.

In questo modo puoi decidere se ripetere l'iterazione o no in base al fatto che quel campo sia compilato o meno.