...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_accounting_helper.php
- Класс: \CCrmAccountingHelper
- Вызов: CCrmAccountingHelper::calculateAccountingData
static function calculateAccountingData(array $newValue, array $oldValue = [], bool $calculateTax = false): array { $result = []; $currencyId = $newValue['CURRENCY_ID'] ?? $oldValue['CURRENCY_ID'] ?? null; $exchangeRate = $newValue['EXCH_RATE'] ?? $oldValue['EXCH_RATE'] ?? null; if (!$exchangeRate && $currencyId) { $exchangeRate = CCrmCurrency::GetExchangeRate($currencyId); } // if currency changed and exchangeRate is not directly set, need to update it if ( isset($newValue['CURRENCY_ID']) && isset($oldValue['CURRENCY_ID']) && $newValue['CURRENCY_ID'] !== $oldValue['CURRENCY_ID'] && !isset($newValue['EXCH_RATE']) ) { $exchangeRate = CCrmCurrency::GetExchangeRate($currencyId); } $accData = self::PrepareAccountingData( [ 'CURRENCY_ID' => $currencyId, 'SUM' => $newValue['OPPORTUNITY'] ?? $oldValue['OPPORTUNITY'] ?? null, 'EXCH_RATE' => $exchangeRate, ] ); if (is_array($accData)) { $result['EXCH_RATE'] = $exchangeRate; $result['ACCOUNT_CURRENCY_ID'] = $accData['ACCOUNT_CURRENCY_ID']; $result['OPPORTUNITY_ACCOUNT'] = $accData['ACCOUNT_SUM']; } if ($calculateTax) { $accData = self::PrepareAccountingData( [ 'CURRENCY_ID' => $currencyId, 'SUM' => $newValue['TAX_VALUE'] ?? $oldValue['TAX_VALUE'] ?? null, 'EXCH_RATE' => $exchangeRate, ] ); if (is_array($accData)) { $result['EXCH_RATE'] = $exchangeRate; $result['TAX_VALUE_ACCOUNT'] = $accData['ACCOUNT_SUM']; } } return $result; }