There are two different approaches that can be set up to work. You can set up a portal filter to filter the records and click a button to perform a script in order add new records to your portal that meet the filter criteria.
You can add another table occurrence of Orders and link it to an additional field in accounts and make your portal a portal to this new occurrence of accounts. With this approach, you can enable the "allow creation..." option and add new records directly in the portal.
In both approaches clicking a button in the first portal is needed to perform a script to update a field. That field is either the added match field of the second option or a field referenced in your portal filter with the first option.
A filtered portal (option 1), however will not update as smoothly as you might like. The trick is to change your current relationship to include the field that your script updates when you click a button in the portal row.
Orders::fk_Contract_ID = Contracts::ID AND
Orders::globalField x Contracts::any field
where global field is a field defined in orders, with global storage specified and which your button's script sets to the selected Contract ID. It would then be used with this portal filter expression:
Orders::globalField = Contracts::ID
I went with the second option you proposed and everything works. Thanks for your help!
I however made a mistake and chose my reply as the best answer, my bad.