public 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 { if ($ownerType === 'L') { $arParams = CCrmLead::GetByID($ownerID, $checkPerms); } elseif ($ownerType === 'D') { $arParams = CCrmDeal::GetByID($ownerID, $checkPerms); } elseif ($ownerType === CCrmQuote::OWNER_TYPE) { $arParams = CCrmQuote::GetByID($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($by = 'def', $order = '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) : 1.0, 'TAX_VALUE' => isset($calculated['TAX_VALUE']) ? round(doubleval($calculated['TAX_VALUE']), 2) : 0.0); } return $result; }
$ID = isset($_REQUEST['ID']) ? intval($_REQUEST['ID']) : 0; $typeName = isset($_REQUEST['TYPE']) ? $_REQUEST['TYPE'] : ''; $statusID = isset($_REQUEST['VALUE']) ? $_REQUEST['VALUE'] : ''; $targetTypeName = CCrmOwnerType::ResolveName(CCrmOwnerType::Quote); if ($statusID === '' || $ID <= 0 || $typeName !== $targetTypeName) { $APPLICATION->RestartBuffer(); echo CUtil::PhpToJSObject(array('ERROR' => 'Invalid data!')); die; } $entityAttrs = $userPerms->GetEntityAttr($targetTypeName, array($ID)); if (!$userPerms->CheckEnityAccess($targetTypeName, 'WRITE', $entityAttrs[$ID])) { $APPLICATION->RestartBuffer(); echo CUtil::PhpToJSObject(array('ERROR' => 'Access denied!')); die; } $arFields = CCrmQuote::GetByID($ID, false); if (!is_array($arFields)) { $APPLICATION->RestartBuffer(); echo CUtil::PhpToJSObject(array('ERROR' => 'Not found!')); die; } if (isset($arFields['CREATED_BY_ID'])) { unset($arFields['CREATED_BY_ID']); } if (isset($arFields['DATE_CREATE'])) { unset($arFields['DATE_CREATE']); } if (isset($arFields['MODIFY_BY_ID'])) { unset($arFields['MODIFY_BY_ID']); } if (isset($arFields['DATE_MODIFY'])) {
$arFields = $obFields->GetNext(); if ($arFields === false) { $bEdit = false; $bCopy = false; } else { $arEntityAttr = $CCrmInvoice->cPerms->GetEntityAttr('INVOICE', array($arParams['ELEMENT_ID'])); } //HACK: MSSQL returns '.00' for zero value if (isset($arFields['~PRICE'])) { $arFields['~PRICE'] = $arFields['PRICE'] = floatval($arFields['~PRICE']); } } else { $arFields = array('ID' => 0, 'DATE_INSERT' => ConvertTimeStamp(time(), 'FULL', SITE_ID)); if ($bCreateFromQuote) { $arFields['UF_QUOTE_ID'] = $quoteId; $arQuote = CCrmQuote::GetByID($quoteId); $arQuoteProducts = CCrmQuote::LoadProductRows($quoteId); if (is_array($arQuote) && count($arQuote) > 0) { if ($bTaxMode && isset($arQuote['LOCATION_ID'])) { $arFields['~PR_LOCATION'] = $arQuote['LOCATION_ID']; $arFields['PR_LOCATION'] = htmlspecialcharsbx($arQuote['LOCATION_ID']); } if (isset($arQuote['TITLE'])) { $arFields['~ORDER_TOPIC'] = $arQuote['TITLE']; $arFields['ORDER_TOPIC'] = htmlspecialcharsbx($arQuote['TITLE']); } if (isset($arQuote['COMPANY_ID'])) { $arFields['~UF_COMPANY_ID'] = $arQuote['COMPANY_ID']; $arFields['UF_COMPANY_ID'] = htmlspecialcharsbx($arQuote['COMPANY_ID']); } if (isset($arQuote['CONTACT_ID'])) {