NetSuite’s ability to link custom fields and propagate default values is amazing. So much so, I wanted to make sure everyone following me knows how it works.
My task was to create a custom field, a dropdown at the customer level. Then add the same field to estimates and sales orders. When new estimates or sales orders are created, set the dropdown to the value of the customer assigned to the new transaction. However, allow the field to be modified after the fact. Then, when an estimate is copied to a sales order, let the modified selection follow to the new transaction. And, if the customer is changed, revisit the selection on same transaction and set it to the default value of the new customer. Crazy! I know.
Instead of writing complicated event scripts, this is easily accomplished when defining the custom field. Simple as that. Here’s the trick.

I added a custom dropdown at the customer level and populated from a list. Next, I created another custom field at the transaction level and assigned it to estimates and sales orders. It also populates from the same list. Here is how I sourced the custom field at the transaction level. It looks back to the customer to get its default value. Then it can be modified at any point thereafter. The most important thing to understand is that checking the “Store Value” checkbox, makes this behave as I’d described above.
Unchecking that checkbox will make this a “Calculated field.” In that case, it will always display whatever value is currently set in the dropdown at the customer level. This is a very important distinction!