示例#1
0
     			$arFields['ORIGIN_ID'] = $originId;
     		}*/
     $ID = $CCrmQuote->Add($arFields, true, array('REGISTER_SONET_EVENT' => false));
     $bSuccess = $ID !== false;
     if ($bSuccess) {
         $arResult['ELEMENT']['ID'] = $ID;
     }
 }
 if ($bSuccess) {
     // Save settings
     if (is_array($productRowSettings) && count($productRowSettings) > 0) {
         $arSettings = CCrmProductRow::LoadSettings(CCrmQuote::OWNER_TYPE, $arResult['ELEMENT']['ID']);
         foreach ($productRowSettings as $k => $v) {
             $arSettings[$k] = $v;
         }
         CCrmProductRow::SaveSettings(CCrmQuote::OWNER_TYPE, $arResult['ELEMENT']['ID'], $arSettings);
     }
     unset($arSettings);
 }
 if ($bSuccess && $processProductRows && ($bEdit || !empty($arProd))) {
     // Suppress owner synchronization
     $bSuccess = $CCrmQuote::SaveProductRows($arResult['ELEMENT']['ID'], $arProd, true, true, false);
     if (!$bSuccess) {
         $arResult['ERROR_MESSAGE'] = GetMessage('PRODUCT_ROWS_SAVING_ERROR');
     }
 }
 if ($bSuccess) {
     if ($arFields['CONTACT_ID'] > 0 && $arFields['COMPANY_ID'] > 0 && isset($_POST['NEW_CONTACT_ID']) && $arFields['CONTACT_ID'] == $_POST['NEW_CONTACT_ID']) {
         $CrmContact = new CCrmContact();
         $arContactFields = array('COMPANY_ID' => $arFields['COMPANY_ID']);
         $bSuccess = $CrmContact->Update($arFields['CONTACT_ID'], $arContactFields, false, true, array('DISABLE_USER_FIELD_CHECK' => true));
示例#2
0
    } else {
        echo CUtil::PhpToJSObject(array('PRODUCT_ROW' => array('ID' => $ID)));
    }
} elseif ($mode === 'SAVE_PRODUCTS') {
    if (!empty($ownerType) && $ownerID > 0) {
        $enableDiscount = false;
        $enableTax = false;
        if (isset($_POST['PRODUCT_ROW_SETTINGS']) && is_array($_POST['PRODUCT_ROW_SETTINGS'])) {
            $settings = $_POST['PRODUCT_ROW_SETTINGS'];
            $enableDiscount = isset($settings['ENABLE_DISCOUNT']) ? $settings['ENABLE_DISCOUNT'] === 'Y' : false;
            $enableTax = isset($settings['ENABLE_TAX']) ? $settings['ENABLE_TAX'] === 'Y' : false;
        }
        $settings = CCrmProductRow::LoadSettings($ownerType, $ownerID);
        $settings['ENABLE_DISCOUNT'] = $enableDiscount;
        $settings['ENABLE_TAX'] = $enableTax;
        CCrmProductRow::SaveSettings($ownerType, $ownerID, $settings);
        unset($settings);
    }
    $prodJson = isset($_POST['PRODUCT_ROW_DATA']) ? strval($_POST['PRODUCT_ROW_DATA']) : '';
    $arProducts = $arResult['PRODUCT_ROWS'] = strlen($prodJson) > 0 ? CUtil::JsObjectToPhp($prodJson) : array();
    if ($perms->HavePerm($ownerName, BX_CRM_PERM_NONE, 'WRITE')) {
        echo CUtil::PhpToJSObject(array('ERROR' => 'PERMISSION_DENIED'));
        die;
    }
    $arProductRows = array();
    foreach ($arProducts as $arProduct) {
        $fields = array();
        $ID = isset($arProduct['ID']) ? intval($arProduct['ID']) : 0;
        $fields['ID'] = $ID;
        // Custom products are allowed (PRODUCT_ID === 0)
        $productID = isset($arProduct['PRODUCT_ID']) ? intval($arProduct['PRODUCT_ID']) : 0;
示例#3
0
         $arFields['ORIGIN_ID'] = $originId;
     }
     $ID = $CCrmDeal->Add($arFields, true, array('REGISTER_SONET_EVENT' => true));
     $bSuccess = $ID !== false;
     if ($bSuccess) {
         $arResult['ELEMENT']['ID'] = $ID;
     }
 }
 if ($bSuccess) {
     // Save settings
     if (is_array($productRowSettings) && count($productRowSettings) > 0) {
         $arSettings = CCrmProductRow::LoadSettings('D', $arResult['ELEMENT']['ID']);
         foreach ($productRowSettings as $k => $v) {
             $arSettings[$k] = $v;
         }
         CCrmProductRow::SaveSettings('D', $arResult['ELEMENT']['ID'], $arSettings);
     }
     unset($arSettings);
 }
 if ($bSuccess && !$isExternal && $processProductRows && ($bEdit || !empty($arProd))) {
     // Suppress owner synchronization
     $bSuccess = $CCrmDeal::SaveProductRows($arResult['ELEMENT']['ID'], $arProd, true, true, false);
     if (!$bSuccess) {
         $arResult['ERROR_MESSAGE'] = GetMessage('PRODUCT_ROWS_SAVING_ERROR');
     }
 }
 if ($bSuccess) {
     if ($arFields['CONTACT_ID'] > 0 && $arFields['COMPANY_ID'] > 0 && isset($_POST['NEW_CONTACT_ID']) && $arFields['CONTACT_ID'] == $_POST['NEW_CONTACT_ID']) {
         $CrmContact = new CCrmContact();
         $arContactFields = array('COMPANY_ID' => $arFields['COMPANY_ID']);
         $bSuccess = $CrmContact->Update($arFields['CONTACT_ID'], $arContactFields, false, true, array('DISABLE_USER_FIELD_CHECK' => true));
示例#4
0
 protected static function UpdateTotalInfo($ownerType, $ownerID, $totalInfo = array())
 {
     $result = array();
     if (!is_array($totalInfo)) {
         $totalInfo = array();
     }
     $taxMode = isset($totalInfo['TAX_MODE']) ? intval($totalInfo['TAX_MODE']) : 0;
     if ($taxMode !== self::TAX_MODE && $taxMode !== self::LD_TAX_MODE) {
         $taxMode = CCrmTax::isVatMode() ? self::TAX_MODE : self::LD_TAX_MODE;
     }
     $taxList = null;
     if (is_array($totalInfo['TAX_LIST'])) {
         $taxList = $totalInfo['TAX_LIST'];
     } else {
         $owner = null;
         if (!isset($totalInfo['CURRENCY']) || !isset($totalInfo['PERSON_TYPE_ID'])) {
             if ($ownerType === 'D') {
                 $owner = CCrmDeal::GetByID($ownerID, false);
             } elseif ($ownerType === CCrmQuote::OWNER_TYPE) {
                 $owner = CCrmQuote::GetByID($ownerID, false);
             } elseif ($ownerType === 'L') {
                 $owner = CCrmLead::GetByID($ownerID, false);
             }
         }
         // Determine person type
         $personTypeID = 0;
         $arPersonTypes = CCrmPaySystem::getPersonTypeIDs();
         if (isset($arPersonTypes['COMPANY']) && isset($arPersonTypes['CONTACT'])) {
             if (!isset($totalInfo['PERSON_TYPE_ID'])) {
                 if (intval($owner['COMPANY_ID']) > 0) {
                     $personTypeID = intval($arPersonTypes['COMPANY']);
                 } elseif (intval($owner['CONTACT_ID']) > 0) {
                     $personTypeID = intval($arPersonTypes['CONTACT']);
                 }
             } else {
                 $personTypeID = intval($totalInfo['PERSON_TYPE_ID']);
             }
             if ($personTypeID !== intval($arPersonTypes['COMPANY']) && $personTypeID !== intval($arPersonTypes['CONTACT'])) {
                 $personTypeID = 0;
             }
         }
         $currencyID = '';
         if (isset($totalInfo['CURRENCY_ID'])) {
             $currencyID = $totalInfo['CURRENCY_ID'];
         }
         if (empty($currencyID) && !empty($owner['CURRENCY_ID'])) {
             $currencyID = $owner['CURRENCY_ID'];
         }
         if (empty($currencyID)) {
             $currencyID = CCrmCurrency::GetBaseCurrencyID();
         }
         $locationID = 0;
         if (isset($totalInfo['LOCATION_ID'])) {
             $locationID = $totalInfo['LOCATION_ID'];
         } else {
             if (isset($owner['LOCATION_ID'])) {
                 $locationID = $owner['LOCATION_ID'];
             }
         }
         $enableSaleDiscount = false;
         $siteID = '';
         if (!defined("SITE_ID")) {
             $obSite = CSite::GetList($by = "def", $order = "desc", array("ACTIVE" => "Y"));
             if ($obSite && ($arSite = $obSite->Fetch())) {
                 $siteID = $arSite["LID"];
             }
             unset($obSite, $arSite);
         } else {
             $siteID = SITE_ID;
         }
         $arRows = self::LoadRows($ownerType, $ownerID, true);
         $calculateOptions = array();
         if ($taxMode === self::LD_TAX_MODE) {
             $calculateOptions['LOCATION_ID'] = $locationID;
         }
         $arResult = CCrmSaleHelper::Calculate($arRows, $currencyID, $personTypeID, $enableSaleDiscount, $siteID, $calculateOptions);
         if (is_array($arResult['TAX_LIST'])) {
             $taxList = $arResult['TAX_LIST'];
         }
     }
     $settings = CCrmProductRow::LoadSettings($ownerType, $ownerID);
     $settings["TAX_MODE"] = $taxMode;
     if (is_array($taxList)) {
         $settings['TAX_LIST'] = $taxList;
     }
     CCrmProductRow::SaveSettings($ownerType, $ownerID, $settings);
     return $result;
 }