- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_product_row.php
- Класс: \CAllCrmProductRow
- Вызов: CAllCrmProductRow::CalculateTotalInfo
static function CalculateTotalInfo($ownerType, $ownerID, $checkPerms = true, $params = null, $rows = null, $totalInfo = array())
{
if (!is_array($totalInfo))
{
$totalInfo = array();
}
$result = false;
if (isset($totalInfo['OPPORTUNITY']) && isset($totalInfo['TAX_VALUE']))
{
$result = array(
'OPPORTUNITY' => round(doubleval($totalInfo['OPPORTUNITY']), 2),
'TAX_VALUE' => round(doubleval($totalInfo['TAX_VALUE']), 2)
);
}
else
{
$arParams = null;
if ($ownerID <= 0)
{
$arParams = $params;
}
else
{
$arParams = self::getOwnerData($ownerType, $ownerID, $checkPerms);
}
if(!is_array($arParams))
{
return $result;
}
$arRows = null;
if (is_array($rows))
{
$arRows = $rows;
}
elseif($ownerID > 0)
{
$arRows = CCrmProductRow::LoadRows($ownerType, $ownerID);
}
if (!is_array($arRows))
{
return $result;
}
$currencyID = isset($params['CURRENCY_ID']) ? $params['CURRENCY_ID'] : '';
if($currencyID === '')
{
$currencyID = CCrmCurrency::GetBaseCurrencyID();
}
$companyID = isset($params['COMPANY_ID']) ? intval($params['COMPANY_ID']) : 0;
$contactID = isset($params['CONTACT_ID']) ? intval($params['CONTACT_ID']) : 0;
// Determine person type
$personTypeId = 0;
$arPersonTypes = CCrmPaySystem::getPersonTypeIDs();
if ($companyID > 0 && isset($arPersonTypes['COMPANY']))
{
$personTypeId = $arPersonTypes['COMPANY'];
}
elseif ($contactID > 0 && isset($arPersonTypes['CONTACT']))
{
$personTypeId = $arPersonTypes['CONTACT'];
}
$enableSaleDiscount = false;
$siteID = '';
if (defined('SITE_ID'))
{
$siteID = SITE_ID;
}
else
{
$obSite = CSite::GetList('def', 'desc', array('ACTIVE' => 'Y'));
if ($obSite && $arSite = $obSite->Fetch())
$siteID= $arSite["LID"];
unset($obSite, $arSite);
}
$calculateOptions = array();
if (CCrmTax::isTaxMode())
{
$calculateOptions['LOCATION_ID'] = isset($arParams['LOCATION_ID']) ? $arParams['LOCATION_ID'] : '';
}
$calculated = CCrmSaleHelper::Calculate($arRows, $currencyID, $personTypeId, $enableSaleDiscount, $siteID, $calculateOptions);
$result = array(
'OPPORTUNITY' => isset($calculated['PRICE']) ? round(doubleval($calculated['PRICE']), 2) : 0.0,
'TAX_VALUE' => isset($calculated['TAX_VALUE']) ? round(doubleval($calculated['TAX_VALUE']), 2) : 0.0
);
}
return $result;
}