public function __construct($catalogID = 0)
 {
     if ($catalogID <= 0) {
         $catalogID = CCrmCatalog::EnsureDefaultExists();
     }
     $this->catalogID = $catalogID;
     $this->sectionByNameCache = array();
     $this->iblockModuleIncluded = CModule::IncludeModule('iblock');
 }
Exemplo n.º 2
0
 public static function PreparePopupItems($currencyID = '', $count = 50, $enableRawPrices = false)
 {
     $currencyID = strval($currencyID);
     if (!isset($currencyID[0])) {
         $currencyID = CCrmCurrency::GetBaseCurrencyID();
     }
     $count = intval($count);
     if ($count <= 0) {
         $count = 50;
     }
     $arSelect = array('ID', 'NAME', 'PRICE', 'CURRENCY_ID');
     $arPricesSelect = $arVatsSelect = array();
     $arSelect = CCrmProduct::DistributeProductSelect($arSelect, $arPricesSelect, $arVatsSelect);
     $rs = CCrmProduct::GetList(array('ID' => 'DESC'), array('ACTIVE' => 'Y', 'CATALOG_ID' => CCrmCatalog::EnsureDefaultExists()), $arSelect, $count);
     $arProducts = array();
     $arProductId = array();
     while ($product = $rs->Fetch()) {
         foreach ($arPricesSelect as $fieldName) {
             $product[$fieldName] = null;
         }
         foreach ($arVatsSelect as $fieldName) {
             $product[$fieldName] = null;
         }
         $arProductId[] = $product['ID'];
         $arProducts[$product['ID']] = $product;
     }
     CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect, $enableRawPrices);
     $measureInfos = \Bitrix\Crm\Measure::getProductMeasures($arProductId);
     $productVatInfos = CCrmProduct::PrepareCatalogProductFields($arProductId);
     unset($arProductId, $arPricesSelect, $arVatsSelect);
     $defaultMeasureInfo = \Bitrix\Crm\Measure::getDefaultMeasure();
     $result = array();
     foreach ($arProducts as $productID => &$product) {
         if ($currencyID != $product['CURRENCY_ID']) {
             $product['PRICE'] = CCrmCurrency::ConvertMoney($product['PRICE'], $product['CURRENCY_ID'], $currencyID);
             $product['CURRENCY_ID'] = $currencyID;
         }
         $customData = array('price' => $product['PRICE']);
         if (isset($measureInfos[$productID]) && !empty($measureInfos[$productID])) {
             $measureIfo = $measureInfos[$productID][0];
             $customData['measure'] = array('code' => $measureIfo['CODE'], 'name' => $measureIfo['SYMBOL']);
         } elseif ($defaultMeasureInfo !== null) {
             $customData['measure'] = array('code' => $defaultMeasureInfo['CODE'], 'name' => $defaultMeasureInfo['SYMBOL']);
         }
         if (isset($productVatInfos[$productID])) {
             $productVatInfo = $productVatInfos[$productID];
             $customData['tax'] = array('id' => $productVatInfo['TAX_ID'], 'included' => $enableRawPrices && $productVatInfo['TAX_INCLUDED']);
         }
         $result[] = array('title' => $product['NAME'], 'desc' => CCrmProduct::FormatPrice($product), 'id' => $product['ID'], 'url' => '', 'type' => 'product', 'selected' => false, 'customData' => &$customData);
         unset($customData);
     }
     unset($product, $arProducts);
     return $result;
 }
Exemplo n.º 3
0
 public function executeComponent()
 {
     if (!CModule::IncludeModule('crm')) {
         ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED'));
         return;
     }
     $catalogID = isset($this->arParams['CATALOG_ID']) ? intval($this->arParams['CATALOG_ID']) : 0;
     if ($catalogID <= 0) {
         $catalogID = CCrmCatalog::EnsureDefaultExists();
     }
     $this->arResult['CATALOG_ID'] = $catalogID;
     $this->arResult['JS_EVENTS_MANAGER_ID'] = isset($this->arParams['JS_EVENTS_MANAGER_ID']) ? $this->arParams['JS_EVENTS_MANAGER_ID'] : '';
     if (!is_string($this->arResult['JS_EVENTS_MANAGER_ID']) || $this->arResult['JS_EVENTS_MANAGER_ID'] === '') {
         return;
     }
     $this->includeComponentTemplate();
 }
Exemplo n.º 4
0
 public static function Create($catalogID = 0, $currencyID = '')
 {
     IncludeModuleLangFile(__FILE__);
     $catalogID = intval($catalogID);
     if ($catalogID <= 0) {
         $catalogID = CCrmCatalog::EnsureDefaultExists();
     }
     $currencyID = strval($currencyID);
     if ($currencyID === '') {
         $currencyID = CCrmCurrency::GetBaseCurrencyID();
     }
     $sectionID = self::EnsureProductSection('CRM_DEMO_SECTION_PRODUCTS', $catalogID, array('NAME' => GetMessage('CRM_DEMO_SECTION_PRODUCTS')));
     self::EnsureProduct('CRM_DEMO_PRODUCT_BX_CMS', $catalogID, array('CATALOG_ID' => $catalogID, 'SECTION_ID' => $sectionID, 'NAME' => GetMessage('CRM_DEMO_PRODUCT_BX_CMS'), 'CURRENCY_ID' => $currencyID, 'PRICE' => self::ConvertMoney(10000, 'RUB', $currencyID), 'ACTIVE' => 'Y', 'SORT' => 100));
     self::EnsureProduct('CRM_DEMO_PRODUCT_BX_CP', $catalogID, array('CATALOG_ID' => $catalogID, 'SECTION_ID' => $sectionID, 'NAME' => GetMessage('CRM_DEMO_PRODUCT_BX_CP'), 'CURRENCY_ID' => $currencyID, 'PRICE' => self::ConvertMoney(25000, 'RUB', $currencyID), 'ACTIVE' => 'Y', 'SORT' => 110));
     self::EnsureProduct('CRM_DEMO_PRODUCT_BX_TEAM', $catalogID, array('CATALOG_ID' => $catalogID, 'SECTION_ID' => $sectionID, 'NAME' => GetMessage('CRM_DEMO_PRODUCT_BX_TEAM'), 'CURRENCY_ID' => $currencyID, 'PRICE' => self::ConvertMoney(5000, 'RUB', $currencyID), 'ACTIVE' => 'Y', 'SORT' => 120));
     $sectionID = self::EnsureProductSection('CRM_DEMO_SECTION_SERVICES', $catalogID, array('NAME' => GetMessage('CRM_DEMO_SECTION_SERVICES')));
     self::EnsureProduct('CRM_DEMO_SERVICE_SITE_DISIGN', $catalogID, array('CATALOG_ID' => $catalogID, 'SECTION_ID' => $sectionID, 'NAME' => GetMessage('CRM_DEMO_SERVICE_SITE_DISIGN'), 'CURRENCY_ID' => $currencyID, 'PRICE' => self::ConvertMoney(15000, 'RUB', $currencyID), 'ACTIVE' => 'Y', 'SORT' => 130));
     self::EnsureProduct('CRM_DEMO_SERVICE_SITE_TUNING', $catalogID, array('CATALOG_ID' => $catalogID, 'SECTION_ID' => $sectionID, 'NAME' => GetMessage('CRM_DEMO_SERVICE_SITE_TUNING'), 'CURRENCY_ID' => $currencyID, 'PRICE' => self::ConvertMoney(20000, 'RUB', $currencyID), 'ACTIVE' => 'Y', 'SORT' => 140));
     self::EnsureProduct('CRM_DEMO_SERVICE_MANAGER_TRAINING', $catalogID, array('CATALOG_ID' => $catalogID, 'SECTION_ID' => $sectionID, 'NAME' => GetMessage('CRM_DEMO_SERVICE_MANAGER_TRAINING'), 'CURRENCY_ID' => $currencyID, 'PRICE' => self::ConvertMoney(5000, 'RUB', $currencyID), 'ACTIVE' => 'Y', 'SORT' => 150));
 }
Exemplo n.º 5
0
 }
 if ($iRoleIDChif <= 0) {
     $iRoleIDChif = $CCrmRole->Add($arRoles['chif']);
 }
 if ($iRoleIDMan <= 0) {
     $iRoleIDMan = $CCrmRole->Add($arRoles['man']);
 }
 if (WIZARD_MARKETING_AND_SALES_GROUP > 0) {
     $arRel['G' . WIZARD_MARKETING_AND_SALES_GROUP] = array($iRoleID);
 }
 $CCrmRole->SetRelation($arRel);
 /* INSTALL DEMO-DATA */
 // copy files
 CopyDirFiles(WIZARD_ABSOLUTE_PATH . "/site/services/crm/images/", WIZARD_SITE_PATH . '/upload/crm', true, true);
 // Create default product catalog
 $catalogID = CCrmCatalog::EnsureDefaultExists();
 $currencyID = CCrmCurrency::GetBaseCurrencyID();
 // Creation of demo products
 require_once "product.demo.php";
 if (COption::GetOptionString('crm', '~CRM_INVOICE_INSTALL_12_5_7', 'N') !== 'Y') {
     require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/crm/install/sale_link.php";
 }
 CCrmProductDemo::Create($catalogID);
 // Add lead
 require_once "lead.demo.php";
 $CCrmLead = new CCrmLead();
 foreach ($arLeads as $ID => $arParams) {
     $arProductRows = null;
     if (isset($arParams['PRODUCT_ROWS'])) {
         $arProductRows = $arParams['PRODUCT_ROWS'];
         unset($arParams['PRODUCT_ROWS']);
Exemplo n.º 6
0
        $measureListItems[$measure['ID']] = $measure['SYMBOL'];
    }
    unset($measure);
}
unset($measures);
$productID = isset($arParams['PRODUCT_ID']) ? intval($arParams['PRODUCT_ID']) : 0;
if ($productID <= 0) {
    $productIDParName = isset($arParams['PRODUCT_ID_PAR_NAME']) ? strval($arParams['PRODUCT_ID_PAR_NAME']) : '';
    if (strlen($productIDParName) == 0) {
        $productIDParName = 'product_id';
    }
    $productID = isset($_REQUEST[$productIDParName]) ? intval($_REQUEST[$productIDParName]) : 0;
}
$arResult['PRODUCT_ID'] = $productID;
$product = $productID > 0 ? CCrmProduct::GetByID($productID, true) : false;
$arResult['CATALOG_ID'] = $catalogID = isset($product['CATALOG_ID']) ? intval($product['CATALOG_ID']) : CCrmCatalog::EnsureDefaultExists();
if (!$product) {
    ShowError(GetMessage('CRM_PRODUCT_NOT_FOUND'));
    @define('ERROR_404', 'Y');
    if ($arParams['SET_STATUS_404'] === 'Y') {
        CHTTP::SetStatus("404 Not Found");
    }
    return;
}
// Product properties
$arPropUserTypeList = CCrmProductPropsHelper::GetPropsTypesByOperations(false, 'view');
$arResult['PROP_USER_TYPES'] = $arPropUserTypeList;
$arProps = CCrmProductPropsHelper::GetProps($catalogID, $arPropUserTypeList);
$arResult['PROPS'] = $arProps;
$arResult['PRODUCT'] = $product;
$arResult['FORM_ID'] = 'CRM_PRODUCT_SHOW';
Exemplo n.º 7
0
$CrmPerms = new CCrmPerms($USER->GetID());
if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE')) {
    ShowError(GetMessage('CRM_PERMISSION_DENIED'));
    return;
}
$arResult['PATH_TO_EXCH1C_INDEX'] = CrmCheckPath('PATH_TO_EXCH1C_INDEX', $arParams['PATH_TO_EXCH1C_INDEX'], $APPLICATION->GetCurPage());
$arResult['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
$arResult['BACK_URL'] = $arParams['PATH_TO_EXCH1C_INDEX'];
$arResult['FORM_ID'] = 'CRM_EXCH1C_CONFIG';
$arResult['FIELDS'] = array();
// <editor-fold defaultstate="collapsed" desc="Catalog import options">
// --> Catalog import options
$arUGroupsEx = array();
$arAction = array("N" => GetMessage("CAT_1C_NONE"), "A" => GetMessage("CAT_1C_DEACTIVATE"), "D" => GetMessage("CAT_1C_DELETE"));
$iblockType = CCrmCatalog::GetCatalogTypeID();
$iblockId = CCrmCatalog::EnsureDefaultExists();
$arPriceType = array();
$arGroup = array();
$rsGroup = CCatalogGroup::GetListEx(array('SORT', 'ASC'), array(), false, false, array('ID', 'NAME', 'NAME_LANG', 'XML_ID'));
while ($arGroup = $rsGroup->Fetch()) {
    $arPriceType[intval($arGroup['ID'])] = '[' . $arGroup['ID'] . '] ' . $arGroup['NAME'] . (empty($arGroup['NAME_LANG']) ? '' : ', ' . $arGroup['NAME_LANG']);
}
unset($arGroup, $rsGroup);
$priceTypeId = intval(COption::GetOptionInt('crm', 'selected_catalog_group_id', 0));
if ($priceTypeId < 1) {
    $arBaseCatalogGroup = CCatalogGroup::GetBaseGroup();
    $priceTypeId = intval($arBaseCatalogGroup['ID']);
    unset($arBaseCatalogGroup);
}
$arAllOptions = array(array("1C_IBLOCK_TYPE", GetMessage("CAT_1C_IBLOCK_TYPE"), $iblockType, array("text", 50), "hidden", 1), array("1C_SITE_LIST", GetMessage("CAT_1C_SITE_LIST"), SITE_ID, array("text", 2), "hidden", 1), array("1C_INTERVAL", GetMessage("CAT_1C_INTERVAL"), "30", array("text", 20), "visible", 1), array("1C_GROUP_PERMISSIONS", GetMessage("CAT_1C_GROUP_PERMISSIONS"), "-", array("mlist", 5, $arUGroupsEx), "hidden", 1), array("1C_ELEMENT_ACTION", GetMessage("CAT_1C_ELEMENT_ACTION"), "D", array("list", $arAction), "visible", 1), array("1C_SECTION_ACTION", GetMessage("CAT_1C_SECTION_ACTION"), "D", array("list", $arAction), "visible", 1), array("1C_FILE_SIZE_LIMIT", GetMessage("CAT_1C_FILE_SIZE_LIMIT"), 200 * 1024, array("text", 20), "hidden", 1), array("1C_USE_CRC", GetMessage("CAT_1C_USE_CRC"), "Y", array("checkbox"), "hidden", 1), array("1C_USE_ZIP", GetMessage("CAT_1C_USE_ZIP"), "Y", array("checkbox"), "hidden", 1), array("1C_USE_IBLOCK_PICTURE_SETTINGS", GetMessage("CAT_1C_USE_IBLOCK_PICTURE_SETTINGS"), "N", array("checkbox"), "hidden", 1), array("1C_GENERATE_PREVIEW", GetMessage("CAT_1C_GENERATE_PREVIEW"), "N", array("checkbox"), "hidden", 1), array("1C_PREVIEW_WIDTH", GetMessage("CAT_1C_PREVIEW_WIDTH"), 100, array("text", 20), "hidden", 1), array("1C_PREVIEW_HEIGHT", GetMessage("CAT_1C_PREVIEW_HEIGHT"), 100, array("text", 20), "hidden", 1), array("1C_DETAIL_RESIZE", GetMessage("CAT_1C_DETAIL_RESIZE"), "N", array("checkbox"), "hidden", 1), array("1C_DETAIL_WIDTH", GetMessage("CAT_1C_DETAIL_WIDTH"), 300, array("text", 20), "hidden", 1), array("1C_DETAIL_HEIGHT", GetMessage("CAT_1C_DETAIL_HEIGHT"), 300, array("text", 20), "hidden", 1), array("1C_USE_OFFERS", GetMessage("CAT_1C_USE_OFFERS"), "N", array("checkbox"), "hidden", 1), array("1C_FORCE_OFFERS", GetMessage("CAT_1C_FORCE_OFFERS"), "N", array("checkbox"), "hidden", 1), array("1C_USE_IBLOCK_TYPE_ID", GetMessage("CAT_1C_USE_IBLOCK_TYPE_ID"), "N", array("checkbox"), "hidden", 1), array("1C_SKIP_ROOT_SECTION", GetMessage("CAT_1C_SKIP_ROOT_SECTION"), "N", array("checkbox"), "hidden", 1), array("1C_TRANSLIT_ON_ADD", GetMessage("CAT_1C_TRANSLIT_ON_ADD"), "N", array("checkbox"), "hidden", 1), array("1C_TRANSLIT_ON_UPDATE", GetMessage("CAT_1C_TRANSLIT_ON_UPDATE"), "N", array("checkbox"), "hidden", 1), array("1C_CRM_CAT_XML_ID", GetMessage("CRM_CATALOG_XML_ID"), "", array("text", 20), "visible", 1), array("selected_catalog_group_id", GetMessage("CRM_SELECTED_CATALOG_GROUP_ID"), $priceTypeId, array("list", $arPriceType), "visible", 1), array("1CE_IBLOCK_ID", GetMessage("CAT_1CE_IBLOCK_ID"), $iblockId, array("text", 50), "hidden", 2), array("1CE_ELEMENTS_PER_STEP", GetMessage("CAT_1CE_ELEMENTS_PER_STEP"), 100, array("text", 5), "visible", 2), array("1CE_INTERVAL", GetMessage("CAT_1CE_INTERVAL"), "30", array("text", 20), "visible", 2), array("1CE_GROUP_PERMISSIONS", GetMessage("CAT_1CE_GROUP_PERMISSIONS"), "-", array("mlist", 5, $arUGroupsEx), "hidden", 2), array("1CE_USE_ZIP", GetMessage("CAT_1CE_USE_ZIP"), "Y", array("checkbox"), "hidden", 2));
if ($_SERVER['REQUEST_METHOD'] == "POST" && $_POST['save'] != "" && check_bitrix_sessid()) {
Exemplo n.º 8
0
 public static function GetList($arOrder = array(), $arFilter = array(), $arSelectFields = array(), $arNavStartParams = false, $arGroupBy = false)
 {
     $arProductFields = self::GetFields();
     // Rewrite order
     // <editor-fold defaultstate="collapsed" desc="Rewrite order ...">
     $arOrderRewrited = array();
     foreach ($arOrder as $k => $v) {
         $uk = strtoupper($k);
         if (isset($arProductFields[$uk]) && $arProductFields[$uk] !== false || preg_match('/^PROPERTY_\\d+$/', $uk)) {
             $arOrderRewrited[$uk] = $v;
         }
     }
     if (strlen($arOrder['ORIGINATOR_ID'] . $arOrder['ORIGIN_ID']) > 0) {
         if (strlen($arOrder['ORIGINATOR_ID']) > 0) {
             $arOrderRewrited['XML_ID'] = $arOrder['ORIGINATOR_ID'];
         } else {
             $arOrderRewrited['XML_ID'] = $arOrder['ORIGIN_ID'];
         }
     }
     // </editor-fold>
     // Rewrite filter
     // <editor-fold defaultstate="collapsed" desc="Rewrite filter ...">
     $arAdditionalFilter = $arFilterRewrited = array();
     $arOptions = array();
     if (isset($arFilter['~REAL_PRICE'])) {
         $arOptions['REAL_PRICE'] = true;
         unset($arFilter['~REAL_PRICE']);
     }
     foreach ($arProductFields as $fieldProduct => $fieldIblock) {
         foreach ($arFilter as $k => $v) {
             $matches = array();
             if (preg_match('/^([!><=%?][><=%]?[<]?|)' . $fieldProduct . '$/', $k, $matches)) {
                 if ($fieldIblock) {
                     if ($fieldIblock === 'IBLOCK_SECTION_ID') {
                         //HACK: IBLOCK_SECTION_ID is not supported in filter
                         $fieldIblock = 'SECTION_ID';
                     }
                     $arFilterRewrited[$matches[1] . $fieldIblock] = $v;
                 } else {
                     $arAdditionalFilter[$k] = $v;
                 }
             } else {
                 if (preg_match('/^([!><=%?][><=%]?[<]?|)(PROPERTY_\\d+)$/', $k, $matches)) {
                     $arFilterRewrited[$matches[1] . $matches[2]] = $v;
                 }
             }
         }
     }
     if (strlen($arFilter['ORIGINATOR_ID'] . $arFilter['ORIGIN_ID']) > 0) {
         if (strlen($arFilter['ORIGINATOR_ID']) > 0 && strlen($arFilter['ORIGIN_ID']) > 0) {
             $arFilterRewrited['XML_ID'] = $arFilter['ORIGINATOR_ID'] . '#' . $arFilter['ORIGIN_ID'];
         } else {
             if (strlen($arFilter['ORIGINATOR_ID']) > 0) {
                 $arFilterRewrited['%XML_ID'] = $arFilter['ORIGINATOR_ID'] . '#';
             } else {
                 $arFilterRewrited['%XML_ID'] = '#' . $arFilter['ORIGIN_ID'];
             }
         }
     }
     if (!isset($arFilter['ID']) || isset($arFilter['CATALOG_ID'])) {
         $catalogID = isset($arFilter['CATALOG_ID']) ? intval($arFilter['CATALOG_ID']) : 0;
         if ($catalogID > 0 && !CCrmCatalog::Exists($catalogID)) {
             $catalogID = 0;
         }
         if ($catalogID <= 0) {
             $catalogID = CCrmCatalog::EnsureDefaultExists();
         }
         $arFilterRewrited['IBLOCK_ID'] = $catalogID;
     }
     // </editor-fold>
     // Rewrite select
     // <editor-fold defaultstate="collapsed" desc="Rewrite select ...">
     $arSelect = $arSelectFields;
     if (!is_array($arSelect)) {
         $arSelect = array();
     }
     if (empty($arSelect)) {
         $arSelect = array();
         foreach (array_keys($arProductFields) as $fieldName) {
             if (!in_array($fieldName, array('PRICE', 'CURRENCY_ID', 'VAT_ID', 'VAT_INCLUDED', 'MEASURE'), true)) {
                 $arSelect[] = $fieldName;
             }
         }
     } else {
         if (in_array('*', $arSelect, true)) {
             $arSelect = array_keys($arProductFields);
         }
     }
     $arAdditionalSelect = $arSelectRewrited = array();
     foreach ($arProductFields as $fieldProduct => $fieldIblock) {
         if (in_array($fieldProduct, $arSelect, true)) {
             if ($fieldIblock) {
                 $arSelectRewrited[] = $fieldIblock;
             } else {
                 $arAdditionalSelect[] = $fieldProduct;
             }
         }
     }
     foreach ($arSelect as $v) {
         if (isset($arProductFields[$v]) && $arProductFields[$v] !== false || preg_match('/^PROPERTY_\\d+$/', $v)) {
             $arSelectRewrited[] = $arProductFields[$v];
         } else {
             if (isset($arProductFields[$v])) {
                 $arAdditionalSelect[] = $v;
             }
         }
     }
     if (!in_array('ID', $arSelectRewrited, true)) {
         $arSelectRewrited[] = 'ID';
     }
     if (!in_array('XML_ID', $arSelectRewrited, true)) {
         $bSelectXmlId = false;
         foreach ($arSelect as $k => $v) {
             if ($v === 'ORIGINATOR_ID' || $v === 'ORIGIN_ID') {
                 $bSelectXmlId = true;
                 break;
             }
         }
         if ($bSelectXmlId) {
             $arAdditionalSelect[] = $arSelectRewrited[] = 'XML_ID';
         }
     }
     // </editor-fold>
     $arNavStartParamsRewrited = false;
     if (is_array($arNavStartParams)) {
         $arNavStartParamsRewrited = $arNavStartParams;
     } else {
         if (is_numeric($arNavStartParams)) {
             $nTopCount = intval($arNavStartParams);
             if ($nTopCount > 0) {
                 $arNavStartParamsRewrited = array('nTopCount' => $nTopCount);
             }
         }
     }
     $dbRes = CIBlockElement::GetList($arOrderRewrited, $arFilterRewrited, $arGroupBy === false ? false : array(), $arNavStartParamsRewrited, $arSelectRewrited);
     if ($arGroupBy === false) {
         $dbRes = new CCrmProductResult($dbRes, $arProductFields, $arAdditionalFilter, $arAdditionalSelect, $arOptions);
     }
     return $dbRes;
 }
Exemplo n.º 9
0
}
unset($arFields, $fieldID, $obFile, $obFileControl, $html, $fieldValue);
$visibleFields = array();
$productFormOptions = CUserOptions::GetOption('main.interface.form', 'CRM_PRODUCT_EDIT', array());
if (is_array($productFormOptions) && is_array($productFormOptions['tabs']) && count($productFormOptions['tabs']) && (!isset($productFormOptions['settings_disabled']) || $productFormOptions['settings_disabled'] !== 'Y')) {
    $tabFound = false;
    $tab = null;
    foreach ($productFormOptions['tabs'] as $tab) {
        if (isset($tab['id']) && $tab['id'] === 'tab_1') {
            $tabFound = true;
            break;
        }
    }
    if ($tabFound) {
        if (is_array($tab) && is_array($tab['fields'])) {
            foreach ($tab['fields'] as $field) {
                if (isset($field['type']) && isset($field['id']) && $field['type'] !== 'section') {
                    $visibleFields[] = $field['id'];
                }
            }
        }
    }
}
$arResult['PRODUCT_CREATE_DLG_VISIBLE_FIELDS'] = $visibleFields;
unset($productFormOptions);
$arResult['PRODUCT_CREATE_DLG_SETTINGS'] = array('formId' => 'crm_product_create_dialog_form', 'url' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCT_EDIT'], array('product_id' => 0)), 'sessid' => bitrix_sessid(), 'messages' => array('dialogTitle' => GetMessage('CRM_PRODUCT_CREATE'), 'waitMessage' => GetMessage('CRM_PRODUCT_CREATE_WAIT'), 'ajaxError' => GetMessage('CRM_PRODUCT_CREATE_AJAX_ERR'), 'buttonCreateTitle' => GetMessage('CRM_BUTTON_CREATE_TITLE'), 'buttonCancelTitle' => GetMessage('CRM_BUTTON_CANCEL_TITLE'), 'NAME' => GetMessage('CRM_FIELD_PRODUCT_NAME'), 'DESCRIPTION' => GetMessage('CRM_FIELD_DESCRIPTION'), 'ACTIVE' => GetMessage('CRM_FIELD_ACTIVE'), 'CURRENCY' => GetMessage('CRM_FIELD_CURRENCY'), 'PRICE' => GetMessage('CRM_FIELD_PRICE'), 'MEASURE' => GetMessage('CRM_FIELD_MEASURE'), 'VAT_ID' => GetMessage('CRM_FIELD_VAT_ID'), 'VAT_INCLUDED' => GetMessage('CRM_FIELD_VAT_INCLUDED'), 'SECTION' => GetMessage('CRM_FIELD_SECTION'), 'SORT' => GetMessage('CRM_FIELD_SORT'), 'PREVIEW_PICTURE' => GetMessage('CRM_PRODUCT_FIELD_PREVIEW_PICTURE'), 'DETAIL_PICTURE' => GetMessage('CRM_PRODUCT_FIELD_DETAIL_PICTURE')), 'fields' => array(array('textCode' => 'NAME', 'type' => 'text', 'maxLength' => 255, 'value' => '', 'skip' => 'N', 'required' => 'Y'), array('textCode' => 'DESCRIPTION', 'type' => 'textarea', 'maxLength' => 7500, 'value' => '', 'skip' => !CCrmProductHelper::IsFieldVisible('DESCRIPTION', $visibleFields) ? 'Y' : 'N'), array('textCode' => 'ACTIVE', 'type' => 'checkbox', 'value' => 'Y', 'skip' => 'Y'), array('textCode' => 'CURRENCY', 'type' => 'select', 'value' => CCrmCurrency::GetBaseCurrencyID(), 'items' => CCrmViewHelper::prepareSelectItemsForJS(CCrmCurrencyHelper::PrepareListItems()), 'skip' => !CCrmProductHelper::IsFieldVisible('CURRENCY', $visibleFields) ? 'Y' : 'N'), array('textCode' => 'PRICE', 'type' => 'text', 'maxLength' => 21, 'value' => '0.00', 'skip' => !CCrmProductHelper::IsFieldVisible('PRICE', $visibleFields) ? 'Y' : 'N'), array('textCode' => 'MEASURE', 'type' => 'select', 'value' => '', 'items' => CCrmViewHelper::prepareSelectItemsForJS($measureListItems), 'skip' => !CCrmProductHelper::IsFieldVisible('MEASURE', $visibleFields) ? 'Y' : 'N'), array('textCode' => 'VAT_ID', 'type' => 'select', 'value' => '', 'items' => $arResult['ALLOW_TAX'] ? CCrmViewHelper::prepareSelectItemsForJS(CCrmVat::GetVatRatesListItems()) : null, 'skip' => $arResult['ALLOW_TAX'] ? !CCrmProductHelper::IsFieldVisible('VAT_ID', $visibleFields) ? 'Y' : 'N' : 'Y'), array('textCode' => 'VAT_INCLUDED', 'type' => 'checkbox', 'value' => 'N', 'skip' => $arResult['ALLOW_TAX'] ? !CCrmProductHelper::IsFieldVisible('VAT_INCLUDED', $visibleFields) ? 'Y' : 'N' : 'Y'), array('textCode' => 'SECTION', 'type' => 'select', 'value' => '0', 'items' => CCrmViewHelper::prepareSelectItemsForJS(CCrmProductHelper::PrepareSectionListItems(CCrmCatalog::EnsureDefaultExists())), 'skip' => !CCrmProductHelper::IsFieldVisible('SECTION', $visibleFields) ? 'Y' : 'N'), array('textCode' => 'SORT', 'type' => 'text', 'maxLength' => 11, 'value' => 100, 'skip' => 'Y'), array('textCode' => 'PREVIEW_PICTURE', 'type' => 'custom', 'value' => $htmlPreviewPictureValue, 'skip' => !CCrmProductHelper::IsFieldVisible('PREVIEW_PICTURE', $visibleFields) ? 'Y' : 'N'), array('textCode' => 'DETAIL_PICTURE', 'type' => 'custom', 'value' => $htmlDetailPictureValue, 'skip' => !CCrmProductHelper::IsFieldVisible('DETAIL_PICTURE', $visibleFields) ? 'Y' : 'N')), "ownerCurrencyId" => $currencyID);
unset($visibleFields);
$arResult['PRODUCT_PROPS_USER_TYPES'] = $arPropUserTypeList;
$arResult['PRODUCT_PROPS'] = $arProps;
/** @var CBitrixComponent $this */
$this->IncludeComponentTemplate();
Exemplo n.º 10
0
// Prepare tax list
if (!$arResult['VAT_MODE']) {
    $arResult['TAX_LIST'] = CCrmInvoice::getTaxList($ownerID);
    $arResult['TAX_LIST_PERCENT_PRECISION'] = SALE_VALUE_PRECISION;
}
// Prepare sum total
$sumTotal = 0.0;
foreach ($arResult['PRODUCT_ROWS'] as $row) {
    if (!isset($row['PRICE']) || !isset($row['QUANTITY'])) {
        continue;
    }
    $sumTotal += doubleval($row['PRICE']) * intval($row['QUANTITY']);
}
$arResult['TAX_VALUE'] = isset($arParams['TAX_VALUE']) ? $arParams['TAX_VALUE'] : 0.0;
$arResult['SUM_TOTAL'] = isset($arParams['SUM_TOTAL']) ? $arParams['SUM_TOTAL'] : round($sumTotal, 2);
$arResult['TAX_VALUE_WT'] = round(doubleval($arParams['SUM_TOTAL'] - doubleval($arParams['TAX_VALUE'])), 2);
//SAVING MODE. ONSUBMIT: SAVE ALL PRODUCT ROWS ON SUBMIT, ONCHANGE: SAVE PRODUCT ROWS AFTER EVERY CHANGE (AJAX)
$arResult['SAVING_MODE'] = isset($arParams['SAVING_MODE']) ? strtoupper($arParams['SAVING_MODE']) : 'ONSUBMIT';
if ($arResult['SAVING_MODE'] != 'ONSUBMIT' && $arResult['SAVING_MODE'] != 'ONCHANGE') {
    $arResult['SAVING_MODE'] = 'ONSUBMIT';
}
$arResult['FORM_ID'] = isset($arParams['FORM_ID']) ? $arParams['FORM_ID'] : '';
$arResult['PREFIX'] = htmlspecialcharsbx($ownerID > 0 ? strtolower($ownerName) . '_' . strval($ownerID) : 'new_' . strtolower($ownerName));
$arResult['CONTAINER_CLASS'] = htmlspecialcharsbx(strtolower($ownerName) . '-product-rows');
$arResult['ROW_CLASS'] = '';
$arResult['PRODUCT_DATA_FIELD_NAME'] = isset($arParams['PRODUCT_DATA_FIELD_NAME']) ? $arParams['PRODUCT_DATA_FIELD_NAME'] : 'PRODUCT_ROW_DATA';
// crmProductCreateDialog dialog settings
$bVatMode = CCrmTax::isVatMode();
$arResult['INVOICE_PRODUCT_CREATE_DLG_SETTINGS'] = array('url' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCT_EDIT'], array('product_id' => 0)), 'sessid' => bitrix_sessid(), 'messages' => array('dialogTitle' => GetMessage('CRM_PRODUCT_CREATE'), 'waitMessage' => GetMessage('CRM_PRODUCT_CREATE_WAIT'), 'ajaxError' => GetMessage('CRM_PRODUCT_CREATE_AJAX_ERR'), 'buttonCreateTitle' => GetMessage('CRM_BUTTON_CREATE_TITLE'), 'buttonCancelTitle' => GetMessage('CRM_BUTTON_CANCEL_TITLE'), 'NAME' => GetMessage('CRM_FIELD_NAME'), 'DESCRIPTION' => GetMessage('CRM_FIELD_DESCRIPTION'), 'ACTIVE' => GetMessage('CRM_FIELD_ACTIVE'), 'CURRENCY' => GetMessage('CRM_FIELD_CURRENCY'), 'PRICE' => GetMessage('CRM_FIELD_PRICE'), 'VAT_ID' => GetMessage('CRM_FIELD_VAT_ID'), 'VAT_INCLUDED' => GetMessage('CRM_FIELD_VAT_INCLUDED'), 'SECTION_ID' => GetMessage('CRM_FIELD_SECTION'), 'SORT' => GetMessage('CRM_FIELD_SORT')), 'fields' => array(array('textCode' => 'NAME', 'type' => 'text', 'maxLength' => 255, 'value' => '', 'skip' => 'N'), array('textCode' => 'DESCRIPTION', 'type' => 'textarea', 'maxLength' => 7500, 'value' => '', 'skip' => 'N'), array('textCode' => 'ACTIVE', 'type' => 'checkbox', 'value' => 'Y', 'skip' => 'N'), array('textCode' => 'CURRENCY', 'type' => 'select', 'value' => CCrmCurrency::GetBaseCurrencyID(), 'items' => CCrmViewHelper::prepareSelectItemsForJS(CCrmCurrencyHelper::PrepareListItems()), 'skip' => 'N'), array('textCode' => 'PRICE', 'type' => 'text', 'maxLength' => 21, 'value' => '0.00', 'skip' => 'N'), array('textCode' => 'VAT_ID', 'type' => 'select', 'value' => '', 'items' => $bVatMode ? CCrmViewHelper::prepareSelectItemsForJS(CCrmVat::GetVatRatesListItems()) : null, 'skip' => $bVatMode ? 'N' : 'Y'), array('textCode' => 'VAT_INCLUDED', 'type' => 'checkbox', 'value' => 'N', 'skip' => $bVatMode ? 'N' : 'Y'), array('textCode' => 'SECTION_ID', 'type' => 'select', 'value' => '0', 'items' => CCrmViewHelper::prepareSelectItemsForJS(CCrmProductHelper::PrepareSectionListItems(CCrmCatalog::EnsureDefaultExists())), 'skip' => 'N'), array('textCode' => 'SORT', 'type' => 'text', 'maxLength' => 11, 'value' => 100, 'skip' => 'N')), "ownerCurrencyId" => $currencyID);
unset($bVatMode);
$this->IncludeComponentTemplate();
Exemplo n.º 11
0
 public static function GetList($arOrder = array(), $arFilter = array(), $arSelectFields = array(), $arNavStartParams = false)
 {
     if (!CModule::IncludeModule('iblock')) {
         return false;
     }
     if (!is_array($arFilter)) {
         $arFilter = array();
     }
     $catalogID = isset($arFilter['CATALOG_ID']) ? intval($arFilter['CATALOG_ID']) : 0;
     if (!($catalogID > 0 && CCrmCatalog::Exists($catalogID))) {
         $catalogID = CCrmCatalog::EnsureDefaultExists();
     }
     $arFilter['CATALOG_ID'] = $catalogID;
     $section = new CIBlockSection();
     $effectiveFilter = CCrmProductSectionDbResult::MapKeys($arFilter);
     if (isset($effectiveFilter['IBLOCK_SECTION_ID'])) {
         $effectiveFilter['SECTION_ID'] = (int) $effectiveFilter['IBLOCK_SECTION_ID'];
     }
     return new CCrmProductSectionDbResult($section->GetList(CCrmProductSectionDbResult::MapKeys($arOrder), $effectiveFilter, false, CCrmProductSectionDbResult::MapValues($arSelectFields), $arNavStartParams));
 }
Exemplo n.º 12
0
    if (in_array($k, $arStrFilters, true)) {
        $arFilter['?' . $k] = $v;
        unset($arFilter[$k]);
    }
}
$arSort = array();
$by = isset($_GET['by']) ? trim($_GET['by']) : 'ID';
$sort = isset($_GET['order']) ? trim($_GET['order']) : 'asc';
if (isset($_GET['by']) && isset($_GET['order'])) {
    $arSort = array($by => $sort);
}
$gridSorting = $CGridOptions->GetSorting(array('sort' => array('sort' => 'asc'), 'vars' => array('by' => 'by', 'order' => 'order')));
$arResult['SORT'] = !empty($arSort) ? $arSort : $gridSorting['sort'];
$arResult['SORT_VARS'] = $gridSorting['vars'];
$arOrder = strtoupper($by) === 'ID' ? array($by => $sort) : array($by => $sort, 'ID' => 'ASC');
$arFilter['IBLOCK_ID'] = intval(CCrmCatalog::EnsureDefaultExists());
$arFilter['CHECK_PERMISSIONS'] = 'N';
$arFilter['!PROPERTY_TYPE'] = 'G';
$errorMsg = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && check_bitrix_sessid() && isset($_POST['action_button_' . $arResult['GRID_ID']])) {
    $action = $_POST['action_button_' . $arResult['GRID_ID']];
    if ($arResult['CAN_EDIT'] && $action === 'edit') {
        foreach ($_POST['FIELDS'] as $id => $arFields) {
            $DB->StartTransaction();
            $id = IntVal($id);
            $arFields["USER_TYPE"] = "";
            if (strpos($arFields["PROPERTY_TYPE"], ":")) {
                list($arFields["PROPERTY_TYPE"], $arFields["USER_TYPE"]) = explode(':', $arFields["PROPERTY_TYPE"], 2);
            }
            $allowedFields = array('ACTIVE', 'CODE', 'FILTRABLE', 'HINT', 'IS_REQUIRED', 'MULTIPLE', 'NAME', 'SEARCHABLE', 'SORT', 'WITH_DESCRIPTION', 'XML_ID');
            $freshFields = array();
Exemplo n.º 13
0
    ShowError(GetMessage('CRM_IBLOCK_MODULE_NOT_INSTALLED'));
    return;
}
global $USER, $APPLICATION;
$arParams['PATH_TO_PRODUCTPROPS_LIST'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_LIST', $arParams['PATH_TO_PRODUCTPROPS_LIST'], '');
$arParams['PATH_TO_PRODUCTPROPS_ADD'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_ADD', $arParams['PATH_TO_PRODUCTPROPS_ADD'], '?add');
$arParams['PATH_TO_PRODUCTPROPS_EDIT'] = CrmCheckPath('PATH_TO_PRODUCTPROPS_EDIT', $arParams['PATH_TO_PRODUCTPROPS_EDIT'], '?prop_id=#prop_id#&edit');
if (!isset($arParams['TYPE'])) {
    $arParams['TYPE'] = 'list';
}
$arResult['BUTTONS'] = array();
$propID = isset($arParams['PROP_ID']) ? intval($arParams['PROP_ID']) : 0;
$CrmPerms = new CCrmPerms($USER->GetID());
$propAdd = $CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE');
$arProp = null;
if ($propID > 0) {
    $iblockID = intval(CCrmCatalog::EnsureDefaultExists());
    $dbRes = CIBlockProperty::GetByID($propID, $iblockID);
    if (is_object($dbRes)) {
        $arProp = $dbRes->Fetch();
    }
    unset($dbRes);
}
$exists = intval($propID > 0) && is_array($arProp);
if ($arParams['TYPE'] !== 'list') {
    $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_PRODUCTPROP_LIST'), 'TITLE' => GetMessage('CRM_PRODUCTPROP_LIST_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCTPROPS_LIST'], array()), 'ICON' => 'btn-list');
}
if ($arParams['TYPE'] === 'list' && $propAdd) {
    $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_PRODUCTPROP_ADD'), 'TITLE' => GetMessage('CRM_PRODUCTPROP_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCTPROPS_ADD'], array()), 'ICON' => 'btn-new');
}
$this->IncludeComponentTemplate();
Exemplo n.º 14
0
    $basePriceId = CCatalogGroup::Add($arFields);
    if ($basePriceId <= 0) {
        $errMsg[] = Loc::getMessage('CRM_UPDATE_ERR_003');
        return;
    }
}
if ($basePriceId <= 0 && isset($basePrice['ID']) && $basePrice['ID'] > 0) {
    $basePriceId = $basePrice['ID'];
}
unset($basePrice, $dbRes);
$arCatalogId = array();
$dbCatalogList = CCrmCatalog::GetList();
while ($arCatalog = $dbCatalogList->Fetch()) {
    $arCatalogId[] = $arCatalog['ID'];
}
$defCatalogId = CCrmCatalog::EnsureDefaultExists();
if ($defCatalogId > 0) {
    if (!in_array($defCatalogId, $arCatalogId)) {
        $arCatalogId[] = $defCatalogId;
    }
} else {
    $errMsg[] = Loc::getMessage('CRM_UPDATE_ERR_001');
    return;
}
if (!empty($arCatalogId) && empty($errMsg)) {
    $CCatalog = new CCatalog();
    if ($CCatalog) {
        foreach ($arCatalogId as $catalogId) {
            $arFields = array('IBLOCK_ID' => $catalogId, 'CATALOG' => 'Y');
            if ($defCatVatId > 0) {
                $arFields['VAT_ID'] = $defCatVatId;
Exemplo n.º 15
0
 public static function CheckFieldId($catalogID, $fieldID)
 {
     if ($fieldID === "DETAIL_PICTURE") {
         return true;
     } elseif ($fieldID === "PREVIEW_PICTURE") {
         return true;
     } elseif ($fieldID === "PICTURE") {
         return true;
     } elseif ($catalogID <= 0 || $catalogID !== CCrmCatalog::EnsureDefaultExists()) {
         return false;
     } elseif (!preg_match("/^PROPERTY_(.+)\$/", $fieldID, $match)) {
         return false;
     } else {
         $db_prop = CIBlockProperty::GetPropertyArray($match[1], $catalogID);
         if (is_array($db_prop) && $db_prop["PROPERTY_TYPE"] === "F") {
             return true;
         }
     }
     return false;
 }
Exemplo n.º 16
0
 protected function innerDelete($id, &$errors)
 {
     /** @global CMain $APPLICATION */
     global $APPLICATION;
     if (!CModule::IncludeModule('iblock')) {
         throw new RestException('Could not load iblock module.');
     }
     /** @var CCrmPerms $userPerms */
     $userPerms = CCrmPerms::GetCurrentUserPermissions();
     if (!$userPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE')) {
         $errors[] = 'Access denied.';
         return false;
     }
     $iblockId = intval(CCrmCatalog::EnsureDefaultExists());
     $userTypes = CCrmProductPropsHelper::GetPropsTypesByOperations(false, 'rest');
     $res = CIBlockProperty::GetByID($id, $iblockId);
     $result = false;
     if (is_object($res)) {
         $result = $res->Fetch();
     }
     unset($res);
     if (!is_array($result) || isset($result['USER_TYPE']) && !empty($result['USER_TYPE']) && !array_key_exists($result['USER_TYPE'], $userTypes)) {
         $errors[] = 'Not found';
         return false;
     }
     if (!CIBlockProperty::Delete($id)) {
         if ($e = $APPLICATION->GetException()) {
             $errors[] = $e->GetString();
         } else {
             $errors[] = 'Error on deleting product property.';
         }
         return false;
     }
     return true;
 }