When an exchange has a formula, the amount field is not always updated when a parameter value changes. The truth is in the formula then, not in the amount field. The formulas are interpreted and the updated values are displayed when a process is opened in the user interface. Also, all formulas are evaluated in the calculation of course (with possible re-definitions of local and global parameter values of the calculation setup).
When a process is modified and saved, the current formula values are written into the amount fields. But when a global parameter changes, we do not update all amount fields. As the processes would change then, we also would have to increment the versions, last change timestamps with possible effects on data exchange with the collaboration server etc.
edit:
In the openLCA Python editor, you can create a formula interpreter. You need to register all processes that have local parameters and formulas you want to evaluate as interpreter scopes. In the example below it simply registers all processes and then evaluates the formula of one process in its scope:
process_ids = set()
for p in db.getDescriptors(Process):
process_ids.add(p.id)
interpreter = ParameterTable.interpreter(db, process_ids, set())
process = db.get(Process, "43ba4a27-a674-4a7c-bc84-b05a431bcb55")
scope = interpreter.getScopeOrGlobal(process.id)
for e in process.exchanges:
if e.formula is not None and e.formula != "":
value = scope.eval(e.formula)
print("%s = %.4f" % (e.formula, value))