$arProductRows = null; if (isset($arParams['PRODUCT_ROWS'])) { $arProductRows = $arParams['PRODUCT_ROWS']; unset($arParams['PRODUCT_ROWS']); } $arParams['CURRENCY_ID'] = $currencyID; $leadID = $CCrmLead->Add($arParams); $arLeads[$ID]['ID'] = $leadID; if (is_array($arProductRows)) { foreach ($arProductRows as &$arProductRow) { $originID = $arProductRow['ORIGIN_ID']; $arProduct = CCrmProduct::GetByOriginID($originID, $catalogID); if (!is_array($arProduct)) { continue; } CCrmLead::SaveProductRows($leadID, array(array('PRODUCT_ID' => intval($arProduct['ID']), 'PRICE' => doubleval($arProduct['PRICE']), 'QUANTITY' => 1))); } } } // Add Contact require_once "contact.demo.php"; $CCrmContact = new CCrmContact(); foreach ($arContacts as $ID => $arParams) { $arContacts[$ID]['ID'] = $CCrmContact->Add($arParams); } // Add Company require_once "company.demo.php"; $CCrmCompany = new CCrmCompany(); foreach ($arCompany as $ID => $arParams) { $arCompany[$ID]['ID'] = $CCrmCompany->Add($arParams); }
if (isset($productID[0])) { $arProductRows = CCrmLead::LoadProductRows($ID); if (count($arProductRows) > 0) { // already converted continue; } $arProduct = CCrmProduct::GetByOriginID('CRM_PROD_' . $productID); if (!is_array($arProduct)) { continue; } $productID = isset($arProduct['ID']) ? $arProduct['ID'] : 0; if ($productID <= 0) { continue; } $arProductRows = array(array('PRODUCT_ID' => $productID, 'PRICE' => isset($arLead['OPPORTUNITY']) ? doubleval($arLead['OPPORTUNITY']) : 0.0, 'QUANTITY' => 1)); CCrmLead::SaveProductRows($ID, $arProductRows); } } COption::SetOptionString('crm', '~crm_11_0_6_convertion', 'Y'); } // <-- Convert LEAD CURRENCY and PRODUCT // Convert DEAL EVENTS --> if (COption::GetOptionString('crm', '~CRM_DEAL_EVENT_CONVERT_11_5_7', 'N') !== 'Y') { $dbDeals = CCrmDeal::GetListEx(array(), array('@EVENT_ID' => array('PHONE', 'INFO')), false, false, array()); while ($arDeal = $dbDeals->Fetch()) { CCrmActivity::CreateFromDealEvent($arDeal); } COption::SetOptionString('crm', '~CRM_DEAL_EVENT_CONVERT_11_5_7', 'Y'); } // <-- Convert DEAL EVENTS // SETUP DEFAULT RESPONSIBLE FOR COMPANIES-->
} if ($isDuplicate) { $arResult['duplicate']++; if ($enableDupFile) { __CrmImportWriteDataToFile($duplicateFilePath, isset($_SESSION['CRM_IMPORT_FILE_HEADERS']) ? $_SESSION['CRM_IMPORT_FILE_HEADERS'] : null, $arLead['__CSV_DATA__']); } } else { $arLead['PERMISSION'] = 'IMPORT'; if (!$CCrmLead->Add($arLead)) { $arResult['error']++; $arResult['error_data'][] = array('message' => $arLead['RESULT_MESSAGE'], 'data' => $arLead['__CSV_DATA__']); __CrmImportWriteDataToFile($errataFilePath, isset($_SESSION['CRM_IMPORT_FILE_HEADERS']) ? $_SESSION['CRM_IMPORT_FILE_HEADERS'] : null, $arLead['__CSV_DATA__']); } else { if (!empty($arLead)) { if (isset($arLead['PRODUCT_ROWS']) && count($arLead['PRODUCT_ROWS']) > 0) { if (!CCrmLead::SaveProductRows($arLead['ID'], $arLead['PRODUCT_ROWS'])) { $arResult['error']++; $arResult['error_data'][] = array('message' => CCrmProductRow::GetLastError(), 'data' => $arLead['__CSV_DATA__']); __CrmImportWriteDataToFile($errataFilePath, isset($_SESSION['CRM_IMPORT_FILE_HEADERS']) ? $_SESSION['CRM_IMPORT_FILE_HEADERS'] : null, $arLead['__CSV_DATA__']); } } $arResult['import']++; } } } } $_SESSION['CRM_IMPORT_FILE_POS'] = $filePos; $_SESSION['CRM_IMPORT_FILE_FIRST_HEADER'] = false; if ($arResult['error'] > 0) { $arResult['errata_url'] = SITE_DIR . 'bitrix/components/bitrix/crm.lead.import/show_file.php?name=errata'; }
$fields['FM'] = $data['FM']; } $entity = new CCrmLead(false); if (!$entity->CheckFields($fields, !$isNew ? $ID : false, array('DISABLE_USER_FIELD_CHECK' => true))) { __CrmMobileLeadEditEndResonse(array('ERROR' => strip_tags(preg_replace("/<br[^>]*>/", "\n", $entity->LAST_ERROR)))); } else { //$DB->StartTransaction(); $successed = false; if ($isNew) { $ID = $entity->Add($fields, true, array('DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true)); $successed = $ID !== false; } else { $successed = $entity->Update($ID, $fields, true, true, array('DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true)); } if ($successed && $processProductRows && (!$isNew || !empty($productRows))) { $successed = CCrmLead::SaveProductRows($ID, $productRows, false, true, false); if (!$successed) { $fields['RESULT_MESSAGE'] = 'Could not save product rows.'; } } if ($successed) { //$DB->Commit(); $errors = array(); CCrmBizProcHelper::AutoStartWorkflows(CCrmOwnerType::Lead, $ID, $isNew ? CCrmBizProcEventType::Create : CCrmBizProcEventType::Edit, $errors); $dbRes = CCrmLead::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => 'N')); $currentItem = $dbRes->GetNext(); $formatParams = isset($_REQUEST['FORMAT_PARAMS']) ? $_REQUEST['FORMAT_PARAMS'] : array(); CCrmMobileHelper::PrepareLeadItem($currentItem, $formatParams); __CrmMobileLeadEditEndResonse(array('SAVED_ENTITY_ID' => $ID, 'SAVED_ENTITY_DATA' => CCrmMobileHelper::PrepareLeadData($currentItem))); } else { //$DB->Rollback();
} } if ($bSuccess) { // Save settings if (is_array($productRowSettings) && count($productRowSettings) > 0) { $arSettings = CCrmProductRow::LoadSettings('L', $arResult['ELEMENT']['ID']); foreach ($productRowSettings as $k => $v) { $arSettings[$k] = $v; } CCrmProductRow::SaveSettings('L', $arResult['ELEMENT']['ID'], $arSettings); } unset($arSettings); } if ($bSuccess && $processProductRows && ($bEdit || !empty($arProd))) { // Suppress owner synchronization $bSuccess = CCrmLead::SaveProductRows($arResult['ELEMENT']['ID'], $arProd, true, true, false); if (!$bSuccess) { $arResult['ERROR_MESSAGE'] = GetMessage('PRODUCT_ROWS_SAVING_ERROR'); } } if ($bSuccess) { $DB->Commit(); } else { $DB->Rollback(); $arResult['ERROR_MESSAGE'] = !empty($arFields['RESULT_MESSAGE']) ? $arFields['RESULT_MESSAGE'] : GetMessage('UNKNOWN_ERROR'); } } if (empty($arResult['ERROR_MESSAGE'])) { if (!$CCrmBizProc->StartWorkflow($arResult['ELEMENT']['ID'], $arBizProcParametersValues)) { $arResult['ERROR_MESSAGE'] = $CCrmBizProc->LAST_ERROR; }
public function setProductRows($ID, $rows) { $ID = intval($ID); if ($ID <= 0) { throw new RestException('The parameter id is invalid or not defined.'); } if (!is_array($rows)) { throw new RestException('The parameter rows must be array.'); } if (!CCrmLead::CheckUpdatePermission($ID)) { throw new RestException('Access denied.'); } if (!CCrmLead::Exists($ID)) { throw new RestException('Not found.'); } $proxy = new CCrmProductRowRestProxy(); $actualRows = array(); $qty = count($rows); for ($i = 0; $i < $qty; $i++) { $row = $rows[$i]; if (!is_array($row)) { continue; } $proxy->prepareForSave($row); if (isset($row['OWNER_TYPE'])) { unset($row['OWNER_TYPE']); } if (isset($row['OWNER_ID'])) { unset($row['OWNER_ID']); } $actualRows[] = $row; } return CCrmLead::SaveProductRows($ID, $actualRows, true, true, true); }