мне кажется, что обсуждение вопроса можно и должно разложить на случаи:
1. сделать быстро
2. сделать хорошо
2.1. сделать хорошо select
2.2. сделать хорошо query
для начала хотелось бы убедиться что способ "сделать быстро" не подходит по тем или иным причинам.
итак, "сделать быстро":
есть группа методов InventSum.addInventSumDelta
эти методы работают следующим образом:
- стандартный алгоритм где-то и как-то получает inventSum обычным образом
- программист добавляет/вызывает код, который рассчитывает/находит inventSumDelta для данного inventSum (методы InventSumDelta.findSumDelta, newQuery, summarizeDelta* и т.п.)
- программист вызывает код, который добавляет найденную дельту к найденной сумме - InventSum.addInventSumDelta
- Profit
да, это далеко не оптимальный с точки зрения производительности способ.
но легко программируется и легко читается при поддержке.
мне кажется, что этот способ стоит использовать даже в случае 2.1.
для 2.2. лучше использовать стандартные методы NewQuery, queryAddSumFields и подобные. главное, не вклиниваться в исходный код, а сделать... хм... extension.