ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED')); return; } global $USER, $APPLICATION; $CrmPerms = new CCrmPerms($USER->GetID()); if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ')) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } $arParams['PATH_TO_PRODUCT_LIST'] = CrmCheckPath('PATH_TO_PRODUCT_LIST', $arParams['PATH_TO_PRODUCT_LIST'], ''); $arParams['PATH_TO_PRODUCT_FILE'] = CrmCheckPath('PATH_TO_PRODUCT_FILE', $arParams['PATH_TO_PRODUCT_FILE'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&field_id=#field_id#&file_id=#file_id#&file'); //CUtil::InitJSCore(array('ajax', 'tooltip')); $bVatMode = CCrmTax::isVatMode(); $vatRateListItems = array(); if ($bVatMode) { $vatRateListItems = CCrmVat::GetVatRatesListItems(); } // measure list items $measureListItems = array('' => GetMessage('CRM_MEASURE_NOT_SELECTED')); $measures = \Bitrix\Crm\Measure::getMeasures(100); if (is_array($measures)) { foreach ($measures as $measure) { $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) {
} 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();
if ($arField['id'] === 'SECTION_ID') { for ($j = 1; $j <= $catalogImportLevels; $j++) { echo isset($arDemo[$i][$arField['id'] . '_' . $j]) ? '"' . str_replace('"', '""', $arDemo[$i][$arField['id'] . '_' . $j]) . '";' : '"";'; } } else { echo isset($arDemo[$i][$arField['id']]) ? '"' . str_replace('"', '""', $arDemo[$i][$arField['id']]) . '";' : '"";'; } } echo "\n"; } die; } else { if (isset($_REQUEST['import']) && isset($_SESSION['CRM_IMPORT_FILE'])) { $APPLICATION->RestartBuffer(); require_once $_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/main/classes/general/csv_data.php'; $arVatRates = CCrmVat::GetVatRatesListItems(); // measure list items $arMeasures = array('' => GetMessage('CRM_MEASURE_NOT_SELECTED')); $measures = \Bitrix\Crm\Measure::getMeasures(100); if (is_array($measures)) { foreach ($measures as $measure) { $arMeasures[$measure['ID']] = $measure['SYMBOL']; } unset($measure); } unset($measures); $csvFile = new CCSVData(); $csvFile->LoadFile($_SESSION['CRM_IMPORT_FILE']); $csvFile->SetFieldsType('R'); $csvFile->SetPos($_SESSION['CRM_IMPORT_FILE_POS']); $csvFile->SetFirstHeader($_SESSION['CRM_IMPORT_FILE_FIRST_HEADER']);
// 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();
$arParams['PATH_TO_PRODUCT_FILE'] = CrmCheckPath('PATH_TO_PRODUCT_FILE', $arParams['PATH_TO_PRODUCT_FILE'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&field_id=#field_id#&file_id=#file_id#&file'); // prepare URI template $curParam = $APPLICATION->GetCurParam(); $curParam = preg_replace('/(^|[^\\w])bxajaxid=[\\d\\w]*([^\\d\\w]|$)/', '', $curParam); $curParam = preg_replace('/(?<!\\w)list_section_id=\\d*(?=([^\\d]|$))/', 'list_section_id=#section_id#', $curParam); $curParam = preg_replace('/(^|&)tree=\\w*(?=(&|$))/', '', $curParam); $arResult['PAGE_URI_TEMPLATE'] = $arParams['PATH_TO_PRODUCT_LIST'] . (strlen($curParam) > 0 ? '?' . $curParam . '&tree=Y' : '?tree=Y'); unset($curParam); $arFilter = $arSort = array(); $bInternal = false; $arResult['FORM_ID'] = isset($arParams['FORM_ID']) ? $arParams['FORM_ID'] : ''; $arResult['TAB_ID'] = isset($arParams['TAB_ID']) ? $arParams['TAB_ID'] : ''; $bVatMode = $arResult['VAT_MODE'] = CCrmTax::isVatMode(); $arResult['VAT_RATE_LIST_ITEMS'] = array(); if ($bVatMode) { $arResult['VAT_RATE_LIST_ITEMS'] = CCrmVat::GetVatRatesListItems(); } // measure list items $arResult['MEASURE_LIST_ITEMS'] = array('' => GetMessage('CRM_MEASURE_NOT_SELECTED')); $measures = \Bitrix\Crm\Measure::getMeasures(100); if (is_array($measures)) { foreach ($measures as $measure) { $arResult['MEASURE_LIST_ITEMS'][$measure['ID']] = $measure['SYMBOL']; } unset($measure); } unset($measures); if (isset($arResult['PRODUCT_ID'])) { unset($arResult['PRODUCT_ID']); } if (!empty($arParams['INTERNAL_FILTER']) || $arResult['GADGET'] == 'Y') {