To reproduce add a currency with a single parenthesis - either left or right - and try to update an order. Adding both left and right parentheses to the currency will not cause the order update to fail. Originally discovered because the length of field truncated to leave a single left parenthesis.
Should be fixed with the following patch: diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm index 0bb34c6..320169a 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -1269,7 +1269,7 @@ sub ModOrder { foreach my $orderinfokey (grep(!/ordernumber/, keys %$orderinfo)){ # ... and skip hash entries that are not in the aqorders table # FIXME : probably not the best way to do it (would be better to have a correct hash) - next unless grep(/^$orderinfokey$/, @$colnames); + next unless grep(/^\Q$orderinfokey\E$/, @$colnames); $query .= "$orderinfokey=?, "; push(@params, $orderinfo->{$orderinfokey}); } But not sure of the consequences...