-- Resulta que estábamos guardando las cosas bastante mal: cuando -- hacíamos un currency_movement, que como todo movement está -- representado en una tabla 'histórica en si misma', el -- currency_movement.currency_type apuntaba al id de la tabla -- currency_type en vez de al id de la _currency_type_data. Eso por -- un lado; además, estábamos guardando los valores de las monedas -- pagadas convertidas a monedas del sistema, lo cual es pésimo (no -- te sirve de nada). Esto soluciona los resultados de ese problema, -- y las pantallas pertinentes se portan bien ahora. CREATE FUNCTION f1(bigint, numeric(12,4)) RETURNS INT AS ' BEGIN UPDATE movement SET amount=$2 WHERE id=$1; RETURN 1; END; ' LANGUAGE 'plpgsql'; CREATE FUNCTION f2(bigint, bigint) RETURNS INT AS ' BEGIN UPDATE currency_movement SET currency_type=$1 WHERE id=$2; RETURN 1; END; ' LANGUAGE 'plpgsql'; SELECT f1(movement.id, movement.amount / _currency_type_data.rate), f2(_currency_type_data.id, currency_movement.id) FROM currency_movement, movement, proceeding, _currency_type_data WHERE currency_movement.movement = movement.id AND movement.proceeding = proceeding.id AND currency_movement.currency_type = _currency_type_data._table AND _currency_type_data._start_t < proceeding.date AND (_currency_type_data._end_t > proceeding.date OR _currency_type_data._end_t IS NULL); DROP FUNCTION f1(bigint, numeric(12, 4)); DROP FUNCTION f2(bigint, bigint);