Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 $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'])) {
Exemplo n.º 3
0
    $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'])) {