One of my current projects involves a heavily customized Opportunity form and I was running into the following error messages whenever I attempted to set the value of a custom Attribute which was of a Money type:
A currency is required if a value exists in a money field. Select a currency and try again.
The solution, believe it or not, is stated right there in the error message:
You must select a Currency before you can populate any Money field.
I thought this was a rather odd behavior, until I realized the root cause of issue.
I was testing out my calculation, which involved three form fields, within the Form Preview ( Create, to be exact ). It turns out that the Currency is not automatically populated during the Preview, so my attempt to set a Money field was failing.
Once published, and operated normally, the Currency field is populated with the default currency as specified for/by the user.
Just to be safe, I added the transactioncurrencyid Attribute to the list of Attributes that must be completed before the calculation will be performed.