Показать сообщение отдельно
Старый 29.01.2020, 18:06   #2  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от Ion Посмотреть сообщение
Дорогие господа!

Как-то раньше организации со множеством валют обходили меня стороной, но в данном проекте все-таки настигли В организации основная валюта - доллар США, а пользователи работают с канадским долларом.

Суть проблемы следующая: есть quote и связанные продукты, надо высчитывать total по продуктам, к сожалению, там не просто всего лишь sum, но и дополнительно есть коэффициенты которые надо рассчитывать и умножать этот total, что-то типа (total = sum * discount + tax ), так бы логично было использовать rollup fields

Выше были лирика, проблема в том что fetch xml sum возвращает сумму по данному запросу в базовой валюте.

Насколько правильно умножать данную сумму в базовой валюте на рейт?
В общем умножение на рейт нас не спасет, т.к. все равно теряется точность и махинации Math.Round не спасет.

В общем, прийдется пожертовать перфомансом ну и суммировать с помощью LINQ

X++:
            var quote = _saleProductRepository.GetSaleProductsByQuoteId(quoteId);
            var total = quote.Sum(e => e?.GetAttributeValue<Money>("total")?.Value ?? 0.0M);
            var estimatedtax = quote.Sum(e => e?.GetAttributeValue<Money>("estimatedtax")?.Value ?? 0.0M);