All above is true. First step is review Scripted Records and looking for clientscripts ... but ... I have the exactly same issue with calculating rate on sales order item. I wrote my own client script, using fieldchange, validate line etc... Behavior was strange, there wasn't any additional client script, but NetSuite override my rate with BasePrice ... Inspecting with Google Chrome console, I found a lot of INLINE functions for Item, Quantity column fields like SyncQty(), isValid() ... These functions doesn't come from visible Client Scripts, but directly from NetSuite app. It would be great to have possibility to override or extend DOM events 🙂
Anyway, solution was forcing Custom Price for pricelevel (value = -1). After that rate stop being overriden from internal NetSuite script