Ejemplo n.º 1
0
 public static function ensureQuotePaySystemsCreated()
 {
     if (!Loader::includeModule('sale')) {
         return;
     }
     $siteID = '';
     $languageID = '';
     $dbSites = \CSite::GetList($by = 'sort', $order = 'desc', array('DEFAULT' => 'Y', 'ACTIVE' => 'Y'));
     $defaultSite = is_object($dbSites) ? $dbSites->Fetch() : null;
     if (is_array($defaultSite)) {
         $siteID = $defaultSite['LID'];
         $languageID = $defaultSite['LANGUAGE_ID'];
     }
     if ($siteID === '') {
         $siteID = 's1';
     }
     if ($languageID === '') {
         $languageID = 'ru';
     }
     $paySysName = "quote_{$languageID}";
     $paySystems = array();
     $customPaySystemPath = \COption::GetOptionString('sale', 'path2user_ps_files', '');
     if ($customPaySystemPath === '') {
         $customPaySystemPath = BX_ROOT . '/php_interface/include/sale_payment/';
     }
     $personTypeIDs = \CCrmPaySystem::getPersonTypeIDs();
     if (isset($personTypeIDs['COMPANY'])) {
         $paySystems[] = array('NAME' => Loc::getMessage('CRM_PS_QUOTE_COMPANY', null, $languageID), 'SORT' => 200, 'DESCRIPTION' => '', 'CODE_TEMP' => $paySysName, 'ACTION' => array(array('PERSON_TYPE_ID' => $personTypeIDs['COMPANY'], 'NAME' => Loc::getMessage('CRM_PS_QUOTE_COMPANY', null, $languageID), 'ACTION_FILE' => "{$customPaySystemPath}{$paySysName}", 'RESULT_FILE' => '', 'NEW_WINDOW' => 'Y', 'PARAMS' => serialize(array('DATE_INSERT' => array('TYPE' => 'ORDER', 'VALUE' => 'DATE_BILL_DATE'), 'DATE_PAY_BEFORE' => array('TYPE' => 'ORDER', 'VALUE' => 'DATE_PAY_BEFORE'), 'BUYER_NAME' => array('TYPE' => 'PROPERTY', 'VALUE' => 'COMPANY'), 'BUYER_INN' => array('TYPE' => 'PROPERTY', 'VALUE' => 'INN'), 'BUYER_ADDRESS' => array('TYPE' => 'PROPERTY', 'VALUE' => 'COMPANY_ADR'), 'BUYER_PHONE' => array('TYPE' => 'PROPERTY', 'VALUE' => 'PHONE'), 'BUYER_FAX' => array('TYPE' => 'PROPERTY', 'VALUE' => 'FAX'), 'BUYER_PAYER_NAME' => array('TYPE' => 'PROPERTY', 'VALUE' => 'CONTACT_PERSON'), 'COMMENT1' => array('TYPE' => 'ORDER', 'VALUE' => 'USER_DESCRIPTION'))), 'HAVE_PAYMENT' => 'Y', 'HAVE_ACTION' => 'N', 'HAVE_RESULT' => 'N', 'HAVE_PREPAY' => 'N', 'HAVE_RESULT_RECEIVE' => 'N')));
     }
     if (isset($personTypeIDs['CONTACT'])) {
         $paySystems[] = array('NAME' => Loc::getMessage('CRM_PS_QUOTE_CONTACT', null, $languageID), 'SORT' => 300, 'DESCRIPTION' => '', 'CODE_TEMP' => $paySysName, 'ACTION' => array(array('PERSON_TYPE_ID' => $personTypeIDs['CONTACT'], 'NAME' => Loc::getMessage('CRM_PS_QUOTE_CONTACT', null, $languageID), 'ACTION_FILE' => "{$customPaySystemPath}{$paySysName}", 'RESULT_FILE' => '', 'NEW_WINDOW' => 'Y', 'PARAMS' => serialize(array('DATE_INSERT' => array('TYPE' => 'ORDER', 'VALUE' => 'DATE_BILL_DATE'), 'DATE_PAY_BEFORE' => array('TYPE' => 'ORDER', 'VALUE' => 'DATE_PAY_BEFORE'), 'BUYER_NAME' => array('TYPE' => 'PROPERTY', 'VALUE' => 'FIO'), 'BUYER_INN' => array('TYPE' => 'PROPERTY', 'VALUE' => 'INN'), 'BUYER_ADDRESS' => array('TYPE' => 'PROPERTY', 'VALUE' => 'ADDRESS'), 'BUYER_PHONE' => array('TYPE' => 'PROPERTY', 'VALUE' => 'PHONE'), 'BUYER_FAX' => array('TYPE' => '', 'VALUE' => ''), 'BUYER_PAYER_NAME' => array('TYPE' => 'PROPERTY', 'VALUE' => 'FIO'), 'COMMENT1' => array('TYPE' => 'ORDER', 'VALUE' => 'USER_DESCRIPTION'))), 'HAVE_PAYMENT' => 'Y', 'HAVE_ACTION' => 'N', 'HAVE_RESULT' => 'N', 'HAVE_PREPAY' => 'N', 'HAVE_RESULT_RECEIVE' => 'N')));
     }
     $currencyID = \CCrmCurrency::GetBaseCurrencyID();
     foreach ($paySystems as $paySystem) {
         $dbSalePaySystem = \CSalePaySystem::GetList(array(), array('LID' => $siteID, 'NAME' => $paySystem['NAME']), false, false, array('ID'));
         if (!$dbSalePaySystem->Fetch()) {
             $paySystemID = \CSalePaySystem::Add(array('NAME' => $paySystem['NAME'], 'DESCRIPTION' => $paySystem['DESCRIPTION'], 'SORT' => $paySystem['SORT'], 'LID' => $siteID, 'CURRENCY' => $currencyID, 'ACTIVE' => 'Y'));
             if ($paySystemID > 0) {
                 foreach ($paySystem['ACTION'] as &$action) {
                     $action['PAY_SYSTEM_ID'] = $paySystemID;
                     \CSalePaySystemAction::Add($action);
                 }
                 unset($action);
             }
         }
     }
     unset($paySystem);
 }
Ejemplo n.º 2
0
$arResult['ACTION_FILE'] = $arPaySys['ACTION']['ACTION_FILE'];
$arResult['PS_ACT_FIELDS'] = CCrmPaySystem::getPSCorrespondence($arPaySys['ACTION']['ACTION_FILE']);
$arResult['ACTION_FIELDS_LIST'] = implode(',', array_keys($arResult['PS_ACT_FIELDS']));
$arResult['SIMPLE_MODE'] = CCrmPaySystem::isFormSimple();
$arResult['USER_FIELDS'] = array();
$quoteUserFields = $GLOBALS['USER_FIELD_MANAGER']->GetUserFields(CCrmQuote::$sUFEntityID, 0, LANGUAGE_ID);
foreach ($quoteUserFields as $quoteUserFieldName => &$quoteUserField) {
    $arResult['USER_FIELDS']['quote'][$quoteUserFieldName] = $quoteUserField['EDIT_FORM_LABEL'];
}
unset($quoteUserField);
$arPaySys['ACTION']['PARAMS'] = unserialize($arPaySys['ACTION']['PARAMS']);
foreach ($arResult['PS_ACT_FIELDS'] as $idCorr => $arCorr) {
    if ($arCorr['TYPE'] == 'SELECT') {
        $arCorr['OPTIONS'] = $arCorr['VALUE'];
    }
    if (isset($arPaySys['ACTION']['PARAMS'][$idCorr]) && isset($arPaySys['ACTION']['PARAMS'][$idCorr]['TYPE']) && isset($arPaySys['ACTION']['PARAMS'][$idCorr]['VALUE'])) {
        if ($arCorr['TYPE'] == 'FILE') {
            $arCorr['VALUE'] = CFile::ShowImage($arPaySys['ACTION']['PARAMS'][$idCorr]['VALUE'], 150, 150, 'id="' . $idCorr . '_preview_img"');
        } elseif ($arCorr['TYPE'] == 'SELECT') {
            $arCorr['VALUE'] = $arPaySys['ACTION']['PARAMS'][$idCorr]['VALUE'];
        } else {
            $arCorr['TYPE'] = $arPaySys['ACTION']['PARAMS'][$idCorr]['TYPE'];
            $arCorr['VALUE'] = $arPaySys['ACTION']['PARAMS'][$idCorr]['VALUE'];
        }
    }
    $res = ' ' . CCrmPaySystem::getActionSelector($idCorr, $arCorr);
    $res .= ' ' . CCrmPaySystem::getActionValueSelector($idCorr, $arCorr, $ptID, $arResult['ACTION_FILE'], $arResult['USER_FIELDS']);
    $arResult['FIELDS']['tab_props'][] = array('id' => $idCorr, 'name' => $arCorr['NAME'], 'title' => $arCorr['DESCR'], 'type' => 'custom', 'value' => $res);
}
$arResult['FIELDS']['tab_props'][] = array('id' => 'SIMPLE_MODE', 'colspan' => true, 'type' => 'custom', 'value' => "<a onclick='BX.crmPaySys.switchMode();'" . " class='crm-ps-mode-switcher'" . " href='javascript:void(0);'" . " id='MODE_SWITCHER'>" . ($arResult['SIMPLE_MODE'] ? GetMessage("CRM_PS_SHOW_FIELDS") : GetMessage("CRM_PS_HIDE_FIELDS")) . "</a>");
$this->IncludeComponentTemplate();
Ejemplo n.º 3
0
 public function executePhase()
 {
     if ($this->currentPhase === DealConversionPhase::INVOICE_CREATION || $this->currentPhase === DealConversionPhase::QUOTE_CREATION) {
         if ($this->currentPhase === DealConversionPhase::INVOICE_CREATION) {
             $entityTypeID = \CCrmOwnerType::Invoice;
         } else {
             $entityTypeID = \CCrmOwnerType::Quote;
         }
         $entityTypeName = \CCrmOwnerType::ResolveName($entityTypeID);
         $config = $this->config->getItem($entityTypeID);
         if (!$config->isActive()) {
             return false;
         }
         /** @var \CCrmPerms $permissions */
         $permissions = $this->getUserPermissions();
         $entityID = isset($this->contextData[$entityTypeName]) ? $this->contextData[$entityTypeName] : 0;
         if ($entityID > 0) {
             if ($entityTypeID === \CCrmOwnerType::Invoice) {
                 if (!\CCrmInvoice::Exists($entityID)) {
                     throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND);
                 }
                 if (!\CCrmInvoice::CheckUpdatePermission($entityID, $permissions)) {
                     throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::UPDATE_DENIED);
                 }
                 $entity = new \CCrmInvoice(false);
                 $fields = array('UF_DEAL_ID' => $this->entityID);
                 try {
                     $entity->Update($entityID, $fields);
                 } catch (Main\DB\SqlQueryException $e) {
                 }
                 $this->resultData[$entityTypeName] = $entityID;
             } else {
                 if (!\CCrmQuote::Exists($entityID)) {
                     throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND);
                 }
                 if (!\CCrmQuote::CheckUpdatePermission($entityID, $permissions)) {
                     throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::UPDATE_DENIED);
                 }
                 $entity = new \CCrmQuote(false);
                 $fields = array('DEAL_ID' => $this->entityID);
                 $entity->Update($entityID, $fields);
                 $this->resultData[$entityTypeName] = $entityID;
             }
             return true;
         }
         if (!\CCrmAuthorizationHelper::CheckCreatePermission($entityTypeName, $permissions)) {
             throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::CREATE_DENIED);
         }
         if (UserFieldSynchronizer::needForSynchronization(\CCrmOwnerType::Deal, $entityTypeID)) {
             throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::NOT_SYNCHRONIZED);
         }
         if (!ConversionSettings::getCurrent()->isAutocreationEnabled()) {
             throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::AUTOCREATION_DISABLED);
         }
         /** @var DealConversionMapper $mapper */
         $mapper = $this->getMapper();
         $map = self::prepareMap($entityTypeID);
         $fields = $mapper->map($map);
         if (empty($fields)) {
             throw new EntityConversionException(\CCrmOwnerType::Deal, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::EMPTY_FIELDS);
         }
         if ($entityTypeID === \CCrmOwnerType::Invoice) {
             $entity = new \CCrmInvoice(false);
             if (!$entity->CheckFields($fields)) {
                 throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR);
             }
             $entityID = $entity->Add($fields);
             if ($entityID <= 0) {
                 throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Invoice, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR);
             }
             $this->resultData[\CCrmOwnerType::InvoiceName] = $entityID;
         } else {
             $entity = new \CCrmQuote(false);
             if (!$entity->CheckFields($fields)) {
                 throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR);
             }
             $productRows = isset($fields['PRODUCT_ROWS']) && is_array($fields['PRODUCT_ROWS']) ? $fields['PRODUCT_ROWS'] : array();
             if (!empty($productRows)) {
                 $currencyID = isset($fields['CURRENCY_ID']) ? $fields['CURRENCY_ID'] : '';
                 $personTypes = \CCrmPaySystem::getPersonTypeIDs();
                 $personTypeID = 0;
                 if (isset($personTypes['COMPANY']) && isset($personTypes['CONTACT'])) {
                     if (isset($fields['COMPANY_ID']) && $fields['COMPANY_ID'] > 0) {
                         $personTypeID = $personTypes['COMPANY'];
                     } elseif (isset($fields['CONTACT_ID']) && $fields['CONTACT_ID'] > 0) {
                         $personTypeID = $personTypes['CONTACT'];
                     }
                 }
                 if ($currencyID !== '' && $personTypeID > 0) {
                     $calculationOptions = array();
                     if (\CCrmTax::isTaxMode() && isset($fields['LOCATION_ID'])) {
                         $calculationOptions['LOCATION_ID'] = $fields['LOCATION_ID'];
                     }
                     $result = \CCrmSaleHelper::Calculate($productRows, $currencyID, $personTypeID, false, SITE_ID, $calculationOptions);
                     $arFields['OPPORTUNITY'] = isset($result['PRICE']) ? round(doubleval($result['PRICE']), 2) : 1.0;
                     $arFields['TAX_VALUE'] = isset($result['TAX_VALUE']) ? round(doubleval($result['TAX_VALUE']), 2) : 0.0;
                 }
             }
             $entityID = $entity->Add($fields);
             if ($entityID <= 0) {
                 throw new EntityConversionException(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR);
             }
             $this->resultData[\CCrmOwnerType::QuoteName] = $entityID;
         }
         return true;
     } elseif ($this->currentPhase === DealConversionPhase::FINALIZATION) {
         return true;
     }
     return false;
 }
Ejemplo n.º 4
0
						"action": function()
						{
							window.location.href = "/crm/configs/ps/";
							BX.WindowManager.Get().Close();
						}
					},

					BX.CDialog.btnCancel
				];
				d.ClearButtons();
				d.SetButtons(_BTN);
				d.Show();
			})();

			<?php 
    CCrmPaySystem::markPSFillPropsDialogAsViewed();
}
?>

	});

	<?php 
if (isset($arResult['PRODUCT_ROWS']) && count($arResult['PRODUCT_ROWS']) > 0) {
    echo PHP_EOL . "\t" . 'BX.ready(function () {' . PHP_EOL . "\t\t" . 'BX.onCustomEvent(\'InitiateInvoiceSumTotalChange\');' . PHP_EOL . "\t" . '})';
}
?>

</script><?php 
// ---------------------- processing of status change ---------------------->
?>
<script type="text/javascript">
Ejemplo n.º 5
0
 for ($i = 0; $i < $productRowQty; $i++) {
     $productRows[$i]['IDX'] = $i;
 }
 $ID = isset($data['ID']) ? intval($data['ID']) : 0;
 $companyID = isset($data['COMPANY_ID']) ? intval($data['COMPANY_ID']) : 0;
 if ($companyID > 0 && !CCrmCompany::CheckReadPermission($companyID, $curUserPrems)) {
     $companyID = 0;
 }
 $contactID = isset($data['CONTACT_ID']) ? intval($data['CONTACT_ID']) : 0;
 if ($contactID > 0 && !CCrmContact::CheckReadPermission($contactID, $curUserPrems)) {
     $contactID = 0;
 }
 $personTypeID = isset($data['PERSON_TYPE_ID']) ? intval($data['PERSON_TYPE_ID']) : 0;
 $resolvedPersonTypeID = $companyID > 0 || $contactID > 0 ? CCrmInvoice::ResolvePersonTypeID($companyID, $contactID) : 0;
 $paySystemID = isset($data['PAY_SYSTEM_ID']) ? intval($data['PAY_SYSTEM_ID']) : 0;
 $paySystems = CCrmPaySystem::GetPaySystemsListItems($resolvedPersonTypeID);
 $resolvedPaySystemID = 0;
 if ($personTypeID === $resolvedPersonTypeID && $paySystemID > 0 && array_key_exists($paySystemID, $paySystems)) {
     // Pay system does not changed
     $resolvedPaySystemID = $paySystemID;
 } elseif (!empty($paySystems)) {
     // Take first pay system
     $resolvedPaySystemID = array_shift(array_keys($paySystems));
 }
 $arFields = array('ID' => $ID, 'PRODUCT_ROWS' => $productRows, 'PAY_SYSTEM_ID' => $resolvedPaySystemID, 'PERSON_TYPE_ID' => $resolvedPersonTypeID);
 $properties = CCrmInvoice::GetProperties($ID, $resolvedPersonTypeID);
 if (!is_array($properties)) {
     $properties = array();
 }
 if (isset($data['LOCATION_ID']) && !isset($data['LOC_CITY'])) {
     //HACK: see CCrmInvoice::ParsePropertiesValuesFromPost
Ejemplo n.º 6
0
    CModule::IncludeModule("sale");
    $personTypes = CCrmPaySystem::getPersonTypeIDs();
    $arFields = array("ORDER_TOPIC" => GetMessage("CRM_DEMO_INVOCIE_1_SUBJ"), "STATUS_ID" => "P", "DATE_INSERT" => ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'FULL'), "DATE_BILL" => ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'SHORT'), "PAY_VOUCHER_DATE" => ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'FULL'), "DATE_PAY_BEFORE" => ConvertTimeStamp(time() + 8000009 + CTimeZone::GetOffset(), 'SHORT'), "RESPONSIBLE_ID" => 1, "UF_CONTACT_ID" => $arContacts["45"]['ID'], "PAY_VOUCHER_NUM" => 456, "DATE_MARKED" => ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'FULL'), "PRODUCT_ROWS" => array(array("ID" => 0, "PRODUCT_ID" => $arProduct["ID"], "PRODUCT_NAME" => $arProduct["NAME"], "QUANTITY" => 1, "PRICE" => $arProduct["PRICE"])), "PERSON_TYPE_ID" => $personTypes["CONTACT"], "INVOICE_PROPERTIES" => array());
    $paySystems = CCrmPaySystem::GetPaySystems($personTypes["CONTACT"]);
    foreach ($paySystems as $id => $paySystem) {
        $arFields["PAY_SYSTEM_ID"] = $id;
    }
    $arAllProps = CCrmInvoice::GetPropertiesInfo($personTypes["CONTACT"]);
    foreach ($arAllProps as $arProps) {
        foreach ($arProps as $key => $prop) {
            if ($key == "FIO") {
                $arFields["INVOICE_PROPERTIES"][$prop["ID"]] = $arContacts["45"]["LAST_NAME"];
            }
        }
    }
    $arInvoices[] = $arFields;
    $arFields = array("ORDER_TOPIC" => GetMessage("CRM_DEMO_INVOCIE_2_SUBJ"), "STATUS_ID" => "N", "DATE_INSERT" => ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'FULL'), "DATE_BILL" => ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'SHORT'), "PAY_VOUCHER_DATE" => ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'FULL'), "DATE_PAY_BEFORE" => ConvertTimeStamp(time() + 8000009 + CTimeZone::GetOffset(), 'SHORT'), "RESPONSIBLE_ID" => 1, "UF_COMPANY_ID" => $arCompany["38"]['ID'], "PRODUCT_ROWS" => array(array("ID" => 0, "PRODUCT_ID" => $arProduct["ID"], "PRODUCT_NAME" => $arProduct["NAME"], "QUANTITY" => 1, "PRICE" => $arProduct["PRICE"])), "PERSON_TYPE_ID" => $personTypes["COMPANY"], "INVOICE_PROPERTIES" => array());
    $paySystems = CCrmPaySystem::GetPaySystems($personTypes["COMPANY"]);
    foreach ($paySystems as $id => $paySystem) {
        $arFields["PAY_SYSTEM_ID"] = $id;
    }
    $arAllProps = CCrmInvoice::GetPropertiesInfo($personTypes["COMPANY"]);
    foreach ($arAllProps as $arProps) {
        foreach ($arProps as $key => $prop) {
            if ($key == "COMPANY") {
                $arFields["INVOICE_PROPERTIES"][$prop["ID"]] = $arCompany["38"]["TITLE"];
            }
        }
    }
    $arInvoices[] = $arFields;
}
Ejemplo n.º 7
0
 public static function PrepareSalePaymentData(array &$arQuote)
 {
     $ID = isset($arQuote['ID']) ? intval($arQuote['ID']) : 0;
     if ($ID <= 0) {
         return null;
     }
     $fieldMap = self::GetSaleOrderMap();
     $order = array();
     foreach ($fieldMap as $orderFileldID => $fileldID) {
         if (!is_array($fileldID)) {
             $order[$orderFileldID] = isset($arQuote[$fileldID]) ? $arQuote[$fileldID] : '';
         } else {
             $v = '';
             foreach ($fileldID as $item) {
                 $s = isset($arQuote[$item]) ? trim($arQuote[$item]) : '';
                 if ($s === '') {
                     continue;
                 }
                 if (preg_match('/<br(\\/)?>$/i', $v) !== 1) {
                     $v .= '<br/>';
                 }
                 $v .= $s;
             }
             $order[$orderFileldID] = $v;
         }
     }
     $personTypeIDs = CCrmPaySystem::getPersonTypeIDs();
     $personTypeID = isset($arQuote['PERSON_TYPE_ID']) ? intval($arQuote['PERSON_TYPE_ID']) : 0;
     $propertyMap = isset($personTypeIDs['COMPANY']) && intval($personTypeIDs['COMPANY']) === $personTypeID ? self::GetCompanyPersonTypeMap() : self::GetContactPersonTypeMap();
     $properties = array();
     foreach ($propertyMap as $propertyFileldID => $fileldID) {
         $properties[$propertyFileldID] = isset($arQuote[$fileldID]) ? $arQuote[$fileldID] : '';
     }
     $userFields = $GLOBALS['USER_FIELD_MANAGER']->GetUserFields(self::$sUFEntityID, 0, LANGUAGE_ID);
     $supportedUserTypeIDs = array('string', 'double', 'integer', 'boolean', 'datetime');
     foreach ($userFields as $name => &$userField) {
         $fieldType = $userField['USER_TYPE_ID'];
         if (!isset($arQuote[$name]) || !in_array($fieldType, $supportedUserTypeIDs, true)) {
             continue;
         }
         $fieldValue = $arQuote[$name];
         if ($fieldType === 'boolean') {
             $fieldValue = GetMessage(intval($fieldValue) > 0 ? 'MAIN_YES' : 'MAIN_NO');
         }
         $properties[$name] = $userField['EDIT_FORM_LABEL'] . ': ' . $fieldValue;
     }
     unset($userField);
     $productRows = self::LoadProductRows($ID);
     $currencyID = isset($arQuote['CURRENCY_ID']) ? $arQuote['CURRENCY_ID'] : '';
     $calculatedOrder = CCrmSaleHelper::Calculate($productRows, $currencyID, $personTypeID, false, SITE_ID, array('LOCATION_ID' => isset($arQuote['LOCATION_ID']) ? $arQuote['LOCATION_ID'] : ''));
     $taxList = isset($calculatedOrder['TAX_LIST']) ? $calculatedOrder['TAX_LIST'] : array();
     foreach ($taxList as &$taxInfo) {
         $taxInfo['TAX_NAME'] = isset($taxInfo['NAME']) ? $taxInfo['NAME'] : '';
     }
     unset($taxInfo);
     return array('ORDER' => $order, 'PROPERTIES' => $properties, 'CART_ITEMS' => $calculatedOrder['BASKET_ITEMS'], 'TAX_LIST' => $taxList);
 }
Ejemplo n.º 8
0
 public static function PrepareInvoiceItem(&$item, &$params, $enums = array(), $options = array())
 {
     $itemID = intval($item['~ID']);
     if (isset($params['INVOICE_SHOW_URL_TEMPLATE'])) {
         $item['SHOW_URL'] = CComponentEngine::makePathFromTemplate($params['INVOICE_SHOW_URL_TEMPLATE'], array('invoice_id' => $itemID));
     }
     if (isset($params['INVOICE_EDIT_URL_TEMPLATE'])) {
         $item['EDIT_URL'] = CComponentEngine::makePathFromTemplate($params['INVOICE_EDIT_URL_TEMPLATE'], array('invoice_id' => $itemID));
     }
     if (!isset($item['~ACCOUNT_NUMBER'])) {
         $item['~ACCOUNT_NUMBER'] = $item['ACCOUNT_NUMBER'] = '';
     }
     if (!isset($item['~DATE_BILL'])) {
         $item['~DATE_BILL'] = $item['DATE_BILL'] = '';
     } else {
         $item['~DATE_BILL'] = ConvertTimeStamp(MakeTimeStamp($item['~DATE_BILL']), 'SHORT', SITE_ID);
         $item['DATE_BILL'] = htmlspecialcharsbx($item['~DATE_BILL']);
     }
     if (!isset($item['~DATE_PAY_BEFORE'])) {
         $item['~DATE_PAY_BEFORE'] = $item['DATE_PAY_BEFORE'] = '';
         $item['DATE_PAY_BEFORE_STAMP'] = 0;
     }
     if ($item['~DATE_PAY_BEFORE'] !== '') {
         $item['~DATE_PAY_BEFORE'] = ConvertTimeStamp(MakeTimeStamp($item['~DATE_PAY_BEFORE']), 'SHORT', SITE_ID);
         $item['DATE_PAY_BEFORE'] = htmlspecialcharsbx($item['~DATE_PAY_BEFORE']);
     }
     if (!isset($item['~ORDER_TOPIC'])) {
         $item['~ORDER_TOPIC'] = $item['ORDER_TOPIC'] = '';
     }
     // COMMENTS -->
     if (!isset($item['~COMMENTS'])) {
         $item['~COMMENTS'] = $item['COMMENTS'] = '';
     }
     if (!isset($item['~USER_DESCRIPTION'])) {
         $item['~USER_DESCRIPTION'] = $item['USER_DESCRIPTION'] = '';
     }
     //<-- COMMENTS
     // STATUS -->
     if (!isset($item['~STATUS_ID'])) {
         $item['~STATUS_ID'] = $item['STATUS_ID'] = '';
     }
     $statusID = $item['~STATUS_ID'];
     if ($statusID !== '') {
         $statuses = self::GetStatusList('INVOICE_STATUS');
         if (!isset($statuses[$statusID])) {
             $item['~STATUS_TEXT'] = $item['STATUS_TEXT'];
         } else {
             $item['~STATUS_TEXT'] = $statuses[$statusID];
             $item['STATUS_TEXT'] = htmlspecialcharsbx($item['~STATUS_TEXT']);
         }
     }
     //<-- STATUS
     //PRICE, CURRENCY -->
     $price = isset($item['~PRICE']) ? doubleval($item['~PRICE']) : 0.0;
     $item['~PRICE'] = $item['PRICE'] = $price;
     $currencyID = isset($item['~CURRENCY']) ? $item['~CURRENCY'] : '';
     if ($currencyID === '') {
         $currencyID = $item['~CURRENCY'] = CCrmCurrency::GetBaseCurrencyID();
         $item['CURRENCY'] = htmlspecialcharsbx($currencyID);
     }
     $item['~CURRENCY_NAME'] = CCrmCurrency::GetCurrencyName($currencyID);
     $item['CURRENCY_NAME'] = htmlspecialcharsbx($item['~CURRENCY_NAME']);
     $item['~FORMATTED_PRICE'] = CCrmCurrency::MoneyToString($price, $currencyID);
     $item['FORMATTED_PRICE'] = strip_tags($item['~FORMATTED_PRICE']);
     //<-- PRICE, CURRENCY
     //DEAL -->
     $dealID = isset($item['~UF_DEAL_ID']) ? intval($item['~UF_DEAL_ID']) : 0;
     $item['~DEAL_ID'] = $item['DEAL_ID'] = $dealID;
     if ($dealID <= 0) {
         $item['~DEAL_TITLE'] = $item['DEAL_TITLE'] = '';
     } else {
         $item['~DEAL_TITLE'] = CCrmOwnerType::GetCaption(CCrmOwnerType::Deal, $dealID);
         $item['DEAL_TITLE'] = htmlspecialcharsbx($item['~DEAL_TITLE']);
     }
     //<-- DEAL
     // LOCATION -->
     if (is_array($options) && isset($options['ENABLE_LOCATION']) && $options['ENABLE_LOCATION']) {
         $properties = is_array($enums) && isset($enums['INVOICE_PROPERTIES']) && is_array($enums['INVOICE_PROPERTIES']) ? $enums['INVOICE_PROPERTIES'] : null;
         $locationID = is_array($properties) && isset($properties['PR_LOCATION']) ? intval($properties['PR_LOCATION']['VALUE']) : 0;
         $item['~LOCATION_ID'] = $item['LOCATION_ID'] = $locationID;
         $item['~LOCATION_NAME'] = $locationID > 0 ? CCrmInvoice::ResolveLocationName($locationID) : '';
         $item['LOCATION_NAME'] = htmlspecialcharsbx($item['~LOCATION_NAME']);
     }
     //<-- LOCATION
     $enableMultiFields = is_array($options) && isset($options['ENABLE_MULTI_FIELDS']) && $options['ENABLE_MULTI_FIELDS'];
     //CONTACT -->
     $contactID = isset($item['UF_CONTACT_ID']) ? intval($item['UF_CONTACT_ID']) : 0;
     $item['~CONTACT_ID'] = $item['CONTACT_ID'] = $contactID;
     $contact = null;
     if ($contactID > 0) {
         $dbContact = CCrmContact::GetListEx(array(), array('=ID' => $contactID), false, false, array('NAME', 'SECOND_NAME', 'LAST_NAME', 'POST', 'PHOTO'));
         $contact = $dbContact ? $dbContact->Fetch() : null;
     }
     if (!$contact) {
         $item['~CONTACT_FULL_NAME'] = $item['CONTACT_FULL_NAME'] = $item['~CONTACT_POST'] = $item['CONTACT_POST'] = '';
         $item['~CONTACT_PHOTO'] = $item['CONTACT_PHOTO'] = 0;
         if ($enableMultiFields) {
             $item['CONTACT_FM'] = array();
         }
     } else {
         $item['~CONTACT_FULL_NAME'] = CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('LOGIN' => '', 'NAME' => isset($contact['NAME']) ? $contact['NAME'] : '', 'SECOND_NAME' => isset($contact['SECOND_NAME']) ? $contact['SECOND_NAME'] : '', 'LAST_NAME' => isset($contact['LAST_NAME']) ? $contact['LAST_NAME'] : ''), false, false);
         $item['CONTACT_FULL_NAME'] = htmlspecialcharsbx($item['~CONTACT_FULL_NAME']);
         $item['~CONTACT_POST'] = isset($contact['POST']) ? $contact['POST'] : '';
         $item['CONTACT_POST'] = htmlspecialcharsbx($item['~CONTACT_POST']);
         $item['~CONTACT_PHOTO'] = $item['CONTACT_PHOTO'] = isset($contact['PHOTO']) ? intval($contact['PHOTO']) : 0;
         if ($enableMultiFields) {
             $item['CONTACT_FM'] = array();
             $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $contactID));
             if ($dbMultiFields) {
                 while ($multiFields = $dbMultiFields->Fetch()) {
                     $item['CONTACT_FM'][$multiFields['TYPE_ID']][] = array('VALUE' => $multiFields['VALUE'], 'VALUE_TYPE' => $multiFields['VALUE_TYPE']);
                 }
             }
         }
     }
     //<-- CONTACT
     //COMPANY -->
     $companyID = isset($item['UF_COMPANY_ID']) ? intval($item['UF_COMPANY_ID']) : 0;
     $item['~COMPANY_ID'] = $item['COMPANY_ID'] = $companyID;
     $company = null;
     if ($companyID > 0) {
         $dbCompany = CCrmCompany::GetListEx(array(), array('=ID' => $companyID), false, false, array('TITLE', 'LOGO'));
         $company = $dbCompany ? $dbCompany->Fetch() : null;
     }
     if (!$company) {
         $item['~COMPANY_TITLE'] = $item['COMPANY_TITLE'] = '';
         $item['~COMPANY_LOGO'] = $item['COMPANY_LOGO'] = 0;
     } else {
         $item['~COMPANY_TITLE'] = isset($company['TITLE']) ? $company['TITLE'] : '';
         $item['COMPANY_TITLE'] = htmlspecialcharsbx($item['~COMPANY_TITLE']);
         $item['~COMPANY_LOGO'] = $item['COMPANY_LOGO'] = isset($company['LOGO']) ? intval($company['LOGO']) : 0;
         if ($enableMultiFields) {
             $item['COMPANY_FM'] = array();
             $dbMultiFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $companyID));
             if ($dbMultiFields) {
                 while ($multiFields = $dbMultiFields->Fetch()) {
                     $item['COMPANY_FM'][$multiFields['TYPE_ID']][] = array('VALUE' => $multiFields['VALUE'], 'VALUE_TYPE' => $multiFields['VALUE_TYPE']);
                 }
             }
         }
     }
     //<-- COMPANY
     $personTypeID = CCrmInvoice::ResolvePersonTypeID($companyID, $contactID);
     // PAYER_INFO -->
     if (is_array($options) && isset($options['ENABLE_PAYER_INFO']) && $options['ENABLE_PAYER_INFO']) {
         if ($companyID <= 0 && $contactID <= 0) {
             $item['~PAYER_INFO'] = $item['PAYER_INFO'] = '';
         } else {
             // Get invoice properties
             $properties = isset($item['INVOICE_PROPERTIES']) ? $item['INVOICE_PROPERTIES'] : null;
             if (!is_array($properties) && $personTypeID > 0) {
                 $properties = CCrmInvoice::GetProperties($itemID, $personTypeID);
                 if ($itemID <= 0) {
                     CCrmInvoice::__RewritePayerInfo($companyID, $contactID, $properties);
                 }
             }
             $item['~PAYER_INFO'] = is_array($properties) ? CCrmInvoice::__MakePayerInfoString($properties) : '';
             $item['PAYER_INFO'] = htmlspecialcharsbx($item['~PAYER_INFO']);
         }
     }
     //<-- PAYER_INFO
     // PAY_SYSTEM -->
     if (!isset($item['~PAY_SYSTEM_ID'])) {
         $item['~PAY_SYSTEM_ID'] = $item['PAY_SYSTEM_ID'] = '';
     }
     $paySystemID = $item['~PAY_SYSTEM_ID'];
     $paySystems = is_array($enums) && isset($enums['PAY_SYSTEMS']) && is_array($enums['PAY_SYSTEMS']) ? $enums['PAY_SYSTEMS'] : ($personTypeID > 0 ? CCrmPaySystem::GetPaySystemsListItems($personTypeID) : array());
     if (isset($paySystems[$paySystemID])) {
         $item['~PAY_SYSTEM_NAME'] = $paySystems[$paySystemID];
         $item['PAY_SYSTEM_NAME'] = htmlspecialcharsbx($item['~PAY_SYSTEM_NAME']);
     } else {
         $item['~PAY_SYSTEM_NAME'] = $item['PAY_SYSTEM_NAME'] = '';
     }
     //<-- PAY_SYSTEM
     // RESPONSIBLE -->
     $responsibleID = isset($item['~RESPONSIBLE_ID']) ? intval($item['~RESPONSIBLE_ID']) : 0;
     $item['RESPONSIBLE_SHOW_URL'] = '';
     $item['~RESPONSIBLE_FORMATTED_NAME'] = '';
     if ($responsibleID > 0) {
         $item['RESPONSIBLE_SHOW_URL'] = $params['USER_PROFILE_URL_TEMPLATE'] !== '' ? CComponentEngine::makePathFromTemplate($params['USER_PROFILE_URL_TEMPLATE'], array('user_id' => $responsibleID)) : '';
         $item['~RESPONSIBLE_FORMATTED_NAME'] = CUser::FormatName($params['NAME_TEMPLATE'], array('LOGIN' => isset($item['~RESPONSIBLE_LOGIN']) ? $item['~RESPONSIBLE_LOGIN'] : '', 'NAME' => isset($item['~RESPONSIBLE_NAME']) ? $item['~RESPONSIBLE_NAME'] : '', 'LAST_NAME' => isset($item['~RESPONSIBLE_LAST_NAME']) ? $item['~RESPONSIBLE_LAST_NAME'] : '', 'SECOND_NAME' => isset($item['~RESPONSIBLE_SECOND_NAME']) ? $item['~RESPONSIBLE_SECOND_NAME'] : ''), true, false);
     }
     $item['RESPONSIBLE_FORMATTED_NAME'] = htmlspecialcharsbx($item['~RESPONSIBLE_FORMATTED_NAME']);
     //<-- RESPONSIBLE
 }
Ejemplo n.º 9
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;
 }
Ejemplo n.º 10
0
// <-- PRODUCT ROW SECTION
$formTabKey = $arResult['FORM_ID'] . '_active_tab';
$currentFormTabID = $_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET[$formTabKey]) ? $_GET[$formTabKey] : '';
if (!$CCrmQuote->cPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'READ')) {
    $arResult['FIELDS']['tab_invoice'][] = array('id' => 'QUOTE_INVOICE', 'name' => GetMessage('CRM_QUOTE_FIELD_QUOTE_INVOICE'), 'colspan' => true, 'type' => 'crm_invoice_list', 'componentData' => array('template' => '', 'enableLazyLoad' => true, 'params' => array('INVOICE_COUNT' => '20', 'PATH_TO_COMPANY_SHOW' => $arParams['PATH_TO_COMPANY_SHOW'], 'PATH_TO_COMPANY_EDIT' => $arParams['PATH_TO_COMPANY_EDIT'], 'PATH_TO_CONTACT_EDIT' => $arParams['PATH_TO_CONTACT_EDIT'], 'PATH_TO_QUOTE_EDIT' => $arParams['PATH_TO_QUOTE_EDIT'], 'PATH_TO_INVOICE_EDIT' => $arParams['PATH_TO_INVOICE_EDIT'], 'PATH_TO_INVOICE_PAYMENT' => $arParams['PATH_TO_INVOICE_PAYMENT'], 'INTERNAL_FILTER' => array('UF_QUOTE_ID' => $arResult['ELEMENT']['ID']), 'SUM_PAID_CURRENCY' => $currencyID, 'GRID_ID_SUFFIX' => 'QUOTE_SHOW', 'FORM_ID' => $arResult['FORM_ID'], 'TAB_ID' => 'tab_invoice', 'NAME_TEMPLATE' => $arParams['NAME_TEMPLATE'], 'ENABLE_TOOLBAR' => 'Y', 'INTERNAL_ADD_BTN_TITLE' => GetMessage('CRM_QUOTE_ADD_INVOICE_TITLE'))));
}
$arResult['FIELDS']['tab_event'][] = array('id' => 'section_event_grid', 'name' => GetMessage('CRM_SECTION_EVENT_MAIN'), 'type' => 'section');
ob_start();
$arResult['EVENT_COUNT'] = $APPLICATION->IncludeComponent('bitrix:crm.event.view', '', array('ENTITY_TYPE' => 'QUOTE', 'ENTITY_ID' => $arResult['ELEMENT']['ID'], 'PATH_TO_USER_PROFILE' => $arParams['PATH_TO_USER_PROFILE'], 'FORM_ID' => $arResult['FORM_ID'], 'TAB_ID' => 'tab_event', 'INTERNAL' => 'Y', 'SHOW_INTERNAL_FILTER' => 'Y', 'NAME_TEMPLATE' => $arParams['NAME_TEMPLATE']), false);
$sVal = ob_get_contents();
ob_end_clean();
$arResult['FIELDS']['tab_event'][] = array('id' => 'QUOTE_EVENT', 'name' => GetMessage('CRM_QUOTE_FIELD_QUOTE_EVENT'), 'colspan' => true, 'type' => 'custom', 'value' => $sVal);
$arResult['PRINT_URL'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_PAYMENT'], array('quote_id' => $arParams['ELEMENT_ID'])), array('PRINT' => 'Y', 'ncc' => '1'));
$arResult['DOWNLOAD_PDF_URL'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_QUOTE_PAYMENT'], array('quote_id' => $arParams['ELEMENT_ID'])), array('pdf' => '1', 'DOWNLOAD' => 'Y', 'ncc' => '1'));
$arResult['CREATE_PDF_FILE_URL'] = "{$componentPath}/ajax.php";
$paySystems = CCrmPaySystem::GetPaySystems($arResult['ELEMENT']['PERSON_TYPE_ID']);
if (is_array($paySystems)) {
    $quotePaySystemInfos = array();
    foreach ($paySystems as &$paySystem) {
        $file = isset($paySystem['~PSA_ACTION_FILE']) ? $paySystem['~PSA_ACTION_FILE'] : '';
        if (strpos($file, '/quote') !== false) {
            $quotePaySystemInfos[] = array('ID' => intval($paySystem['~PSA_ID']), 'NAME' => $paySystem['~PSA_NAME']);
        }
    }
    unset($paySystem);
}
$arResult['PRINT_TEMPLATES'] = $quotePaySystemInfos;
// HACK: for to prevent title overwrite after AJAX call.
if (isset($_REQUEST['bxajaxid'])) {
    $APPLICATION->SetTitle('');
}
Ejemplo n.º 11
0
     }
     // Special logic for ENTITIES_LINKS headers: expand in 3 columns
     if ($headerID === 'ENTITIES_LINKS') {
         $showProductRows = true;
         echo '"' . GetMessage('CRM_COLUMN_DEAL') . '";';
         echo '"' . GetMessage('CRM_COLUMN_COMPANY') . '";';
         echo '"' . GetMessage('CRM_COLUMN_CONTACT') . '";';
     } else {
         echo '"' . $arHead['name'] . '";';
     }
 }
 echo "\n";
 $arPersonTypes = CCrmPaySystem::getPersonTypesList();
 $arPaySystems = array();
 foreach (array_keys($arPersonTypes) as $personTypeId) {
     $arPaySystems[$personTypeId] = CCrmPaySystem::GetPaySystemsListItems($personTypeId);
 }
 unset($personTypeId);
 foreach ($arResult['INVOICE'] as $i => &$arInvoice) {
     // Serialize each product row as invoice with single product
     $productRows = $showProductRows && isset($arInvoice['PRODUCT_ROWS']) ? $arInvoice['PRODUCT_ROWS'] : array();
     if (count($productRows) == 0) {
         // Invoice has no product rows (or they are not displayed) - we have to create dummy for next loop by product rows only
         $productRows[] = array();
     }
     $invoiceData = array();
     $personTypeId = $arInvoice['PERSON_TYPE_ID'];
     foreach ($productRows as $productRow) {
         foreach ($arResult['SELECTED_HEADERS'] as $headerID) {
             $arHead = isset($arHeaders[$headerID]) ? $arHeaders[$headerID] : null;
             if (!$arHead) {
Ejemplo n.º 12
0
echo GetMessage("CRM_PS_HIDE_FIELDS");
?>
"
	});

	BX.crmPaySys.init({
		orderProps: <?php 
echo CUtil::PhpToJsObject(CCrmPaySystem::getOrderPropsList());
?>
,
		orderFields: <?php 
echo CUtil::PhpToJsObject(CCrmPaySystem::getOrderFieldsList());
?>
,
		userProps: <?php 
echo CUtil::PhpToJsObject(CCrmPaySystem::getUserPropsList());
?>
,
		userFields: <?php 
echo CUtil::PhpToJsObject($arResult['USER_FIELDS']);
?>
,
		formId: "form_<?php 
echo $arResult['FORM_ID'];
?>
",
		simpleMode: <?php 
echo $arResult['SIMPLE_MODE'] ? true : false;
?>
,
		url: "<?php 
Ejemplo n.º 13
0
 /**
  * Checks if is filled company-name at least in one pay system
  */
 public static function isNameFilled()
 {
     if (!CModule::IncludeModule('sale')) {
         return false;
     }
     $result = false;
     $arCrmPtIDs = CCrmPaySystem::getPersonTypeIDs();
     $dbPaySystems = CSalePaySystem::GetList(array(), array("PERSON_TYPE_ID" => $arCrmPtIDs));
     while ($arPaySys = $dbPaySystems->Fetch()) {
         $params = $arPaySys['PSA_PARAMS'];
         $params = unserialize($arPaySys['PSA_PARAMS']);
         if (strlen(trim($params['SELLER_NAME']['VALUE'])) > 0) {
             $result = true;
             break;
         }
     }
     return $result;
 }
Ejemplo n.º 14
0
}
$arResult['PERSON_TYPE_ID'] = $personTypeID;
$mode = isset($arParams['MODE']) ? $arParams['MODE'] : '';
if ($mode === '' && isset($_REQUEST['mode'])) {
    $mode = $_REQUEST['mode'];
}
$mode = strtoupper(trim($mode));
$arResult['MODE'] = $arParams['MODE'] = $mode;
$contextID = isset($arParams['CONTEXT_ID']) ? $arParams['CONTEXT_ID'] : '';
if ($contextID === '' && isset($_REQUEST['context_id'])) {
    $contextID = $_REQUEST['context_id'];
}
$arResult['CONTEXT_ID'] = $arParams['CONTEXT_ID'] = $contextID;
$UID = isset($arParams['UID']) ? $arParams['UID'] : '';
$UID = $UID === '' ? 'mobile_crm_status_list_' . $personTypeID : str_replace('#PERSON_TYPE_ID#', $personTypeID, $UID);
$arResult['UID'] = $arParams['UID'] = $UID;
$arResult['ITEMS'] = array();
if ($personTypeID > 0) {
    $listItems = CCrmPaySystem::GetPaySystemsListItems($personTypeID);
    foreach ($listItems as $k => &$v) {
        $arResult['ITEMS'][] = array('ID' => $k, 'NAME' => $v);
    }
    unset($v);
}
$arResult['RELOAD_URL_TEMPLATE'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&FORMAT=json&person_type_id=#person_type_id#', array('AJAX_CALL', 'SEARCH', 'FORMAT', 'save', 'apply_filter', 'clear_filter', 'person_type_id'));
$format = isset($_REQUEST['FORMAT']) ? strtolower($_REQUEST['FORMAT']) : '';
// Only JSON format is supported
if ($format !== '' && $format !== 'json') {
    $format = '';
}
$this->IncludeComponentTemplate($format);
Ejemplo n.º 15
0
<?php

define("STOP_STATISTICS", true);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
$arReturn = array();
if (!CModule::IncludeModule('crm')) {
    $arReturn['ERROR'][] = GetMessage('CRM_PS_MODULE_NOT_INSTALLED');
}
if (!isset($arReturn['ERROR'])) {
    $CrmPerms = new CCrmPerms($USER->GetID());
    $bCrmWritePerm = $CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE');
    if ($USER->IsAuthorized() && check_bitrix_sessid() && $bCrmWritePerm) {
        $ID = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0;
        $personTypeId = isset($_REQUEST['person_type']) ? $_REQUEST['person_type'] : 0;
        $action = isset($_REQUEST['action']) ? trim($_REQUEST['action']) : '';
        switch ($action) {
            case 'get_fields':
                $arReturn['FIELDS'] = CCrmPaySystem::getPSCorrespondence($ID);
                $arReturn['FIELDS_LIST'] = implode(',', array_keys($arReturn['FIELDS']));
                break;
        }
    } else {
        $arReturn['ERROR'][] = GetMessage('CRM_PS_ACCESS_DENIED');
    }
}
$arReturn = $APPLICATION->ConvertCharsetArray($arReturn, SITE_CHARSET, 'utf-8');
echo json_encode($arReturn);
require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php";
Ejemplo n.º 16
0
 public static function Calculate($productRows, $currencyID, $personTypeID, $enableSaleDiscount = false, $siteId = SITE_ID, $arOptions = array())
 {
     if (!CModule::IncludeModule('sale')) {
         return array('err' => '1');
     }
     $saleUserId = intval(CSaleUser::GetAnonymousUserID());
     if ($saleUserId <= 0) {
         return array('err' => '2');
     }
     if (!is_array($productRows) && empty($productRows)) {
         return array('err' => '3');
     }
     $bTaxMode = CCrmTax::isTaxMode();
     if ($bTaxMode) {
         foreach ($productRows as &$productRow) {
             $productRow['TAX_RATE'] = 0.0;
             $productRow['TAX_INCLUDED'] = 'N';
         }
         unset($productRow);
     }
     $cartItems = self::PrepareShoppingCartItems($productRows, $currencyID, $siteId);
     foreach ($cartItems as &$item) {
         $item['ID_TMP'] = $item['ID'];
         unset($item['ID']);
     }
     unset($item);
     $errors = array();
     $cartItems = CSaleBasket::DoGetUserShoppingCart($siteId, $saleUserId, $cartItems, $errors, array(), 0, true);
     foreach ($cartItems as &$item) {
         $item['ID'] = $item['ID_TMP'];
         unset($item['ID_TMP']);
     }
     unset($item);
     $personTypeID = intval($personTypeID);
     if ($personTypeID <= 0) {
         $personTypes = CCrmPaySystem::getPersonTypeIDs();
         if (isset($personTypes['CONTACT'])) {
             $personTypeID = intval($personTypes['CONTACT']);
         }
     }
     if ($personTypeID <= 0) {
         return array('err' => '4');
     }
     $orderPropsValues = array();
     $paySystemId = 0;
     if (is_array($arOptions) && !empty($arOptions)) {
         if (isset($arOptions['LOCATION_ID']) && CCrmTax::isTaxMode()) {
             $locationPropertyID = self::getLocationPropertyId($personTypeID);
             if ($locationPropertyID !== false) {
                 $orderPropsValues[$locationPropertyID] = $arOptions['LOCATION_ID'];
             }
         }
         if (isset($arOptions['PAY_SYSTEM_ID'])) {
             $paySystemId = intval($arOptions['PAY_SYSTEM_ID']);
         }
     }
     $warnings = array();
     $options = array('CURRENCY' => $currencyID);
     if (!$enableSaleDiscount) {
         $options['CART_FIX'] = 'Y';
     }
     return CSaleOrder::DoCalculateOrder($siteId, $saleUserId, $cartItems, $personTypeID, $orderPropsValues, 0, $paySystemId, $options, $errors, $warnings);
 }
Ejemplo n.º 17
0
ob_end_clean();
$arResult['FIELDS']['tab_1'][] = array('id' => 'COMMENTS', 'name' => GetMessage('CRM_FIELD_COMMENTS'), 'params' => array(), 'type' => 'vertical_container', 'value' => $sVal);
// PRODUCT_ROWS
$arResult['FIELDS']['tab_1'][] = array('id' => 'section_product_rows', 'name' => GetMessage('CRM_SECTION_PRODUCT_ROWS'), 'type' => 'section');
$sProductsHtml = '';
if ($bEdit) {
    if (intval($arResult['ELEMENT']['ORIGINATOR_ID']) > 0 && intval($arResult['ELEMENT']['ORIGIN_ID']) > 0) {
        $sProductsHtml .= '<span class="webform-small-button webform-small-button-accept" onclick="ExtSaleGetRemoteForm(' . $arResult['ELEMENT']['ORIGINATOR_ID'] . ', \'EDIT\', ' . $arResult['ELEMENT']['ORIGIN_ID'] . ')">' . GetMessage("CRM_EXT_SALE_CD_EDIT") . '</span>' . '<span class="webform-small-button webform-small-button-accept" onclick="ExtSaleGetRemoteForm(' . $arResult['ELEMENT']['ORIGINATOR_ID'] . ', \'VIEW\', ' . $arResult['ELEMENT']['ORIGIN_ID'] . ')">' . GetMessage("CRM_EXT_SALE_CD_VIEW") . '</span>' . '<span class="webform-small-button webform-small-button-accept" onclick="ExtSaleGetRemoteForm(' . $arResult['ELEMENT']['ORIGINATOR_ID'] . ', \'PRINT\', ' . $arResult['ELEMENT']['ORIGIN_ID'] . ')">' . GetMessage("CRM_EXT_SALE_CD_PRINT") . '</span><br/><br/>';
    }
} else {
    if ($salesListCount > 0) {
        $sProductsHtml .= '<div id="ID_EXTERNAL_SALE_CREATE_BTN1" style="display:none;">' . $strCreateOrderHtmlSelect . '<span class="webform-small-button webform-small-button-accept" onclick="ExtSaleGetRemoteForm(' . $strCreateOrderHtmlAction . ', \'CREATE\')">' . GetMessage("CRM_EXT_SALE_CD_CREATE1") . '</span></div>';
    }
}
// Determine person type
$arPersonTypes = CCrmPaySystem::getPersonTypeIDs();
$personTypeId = 0;
if (isset($arPersonTypes['COMPANY']) && isset($arPersonTypes['CONTACT'])) {
    if (intval($arResult['ELEMENT']['COMPANY_ID']) > 0) {
        $personTypeId = $arPersonTypes['COMPANY'];
    } elseif (intval($arResult['ELEMENT']['CONTACT_ID']) > 0) {
        $personTypeId = $arPersonTypes['CONTACT'];
    }
}
$arResult['PRODUCT_ROW_EDITOR_ID'] = ($arParams['ELEMENT_ID'] > 0 ? 'deal_' . strval($arParams['ELEMENT_ID']) : 'new_deal') . '_product_editor';
$componentSettings = array('ID' => $arResult['PRODUCT_ROW_EDITOR_ID'], 'FORM_ID' => $arResult['FORM_ID'], 'OWNER_ID' => $arParams['ELEMENT_ID'], 'OWNER_TYPE' => 'D', 'PERMISSION_TYPE' => $isExternal ? 'READ' : 'WRITE', 'INIT_EDITABLE' => $isExternal ? 'N' : 'Y', 'HIDE_MODE_BUTTON' => 'Y', 'CURRENCY_ID' => $currencyID, 'PERSON_TYPE_ID' => $personTypeId, 'LOCATION_ID' => $bTaxMode && isset($arResult['ELEMENT']['LOCATION_ID']) ? $arResult['ELEMENT']['LOCATION_ID'] : '', 'PRODUCT_ROWS' => isset($arResult['PRODUCT_ROWS']) ? $arResult['PRODUCT_ROWS'] : null, 'TOTAL_SUM' => isset($arResult['ELEMENT']['OPPORTUNITY']) ? $arResult['ELEMENT']['OPPORTUNITY'] : null, 'TOTAL_TAX' => isset($arResult['ELEMENT']['TAX_VALUE']) ? $arResult['ELEMENT']['TAX_VALUE'] : null, 'PRODUCT_DATA_FIELD_NAME' => $productDataFieldName, 'PATH_TO_PRODUCT_EDIT' => $arParams['PATH_TO_PRODUCT_EDIT'], 'PATH_TO_PRODUCT_SHOW' => $arParams['PATH_TO_PRODUCT_SHOW']);
if (isset($arParams['ENABLE_DISCOUNT'])) {
    $componentSettings['ENABLE_DISCOUNT'] = $arParams['ENABLE_DISCOUNT'] === 'Y' ? 'Y' : 'N';
}
if (isset($arParams['ENABLE_TAX'])) {
    $componentSettings['ENABLE_TAX'] = $arParams['ENABLE_TAX'] === 'Y' ? 'Y' : 'N';
Ejemplo n.º 18
0
 public static function ResolvePersonTypeID($companyID, $contactID)
 {
     $companyID = intval($companyID);
     $contactID = intval($contactID);
     if (!self::$INVOICE_PAY_SYSTEM_TYPES) {
         self::$INVOICE_PAY_SYSTEM_TYPES = CCrmPaySystem::getPersonTypeIDs();
     }
     if ($companyID > 0 && isset(self::$INVOICE_PAY_SYSTEM_TYPES['COMPANY'])) {
         return self::$INVOICE_PAY_SYSTEM_TYPES['COMPANY'];
     } elseif ($contactID > 0 && isset(self::$INVOICE_PAY_SYSTEM_TYPES['CONTACT'])) {
         return self::$INVOICE_PAY_SYSTEM_TYPES['CONTACT'];
     }
     return 0;
 }
Ejemplo n.º 19
0
 protected static function ensurePersonTypesLoaded()
 {
     if (is_null(self::$PERSON_TYPES)) {
         self::$PERSON_TYPES = array_flip(CCrmPaySystem::getPersonTypeIDs());
     }
 }
Ejemplo n.º 20
0
    if (isset($arFields['UF_DEAL_ID'])) {
        $dealID = intval($arFields['UF_DEAL_ID']);
    }
}
$arResult['CURRENCY_ID'] = $currencyID;
// PERSON_TYPE_ID -->
if ($companyID > 0 && isset($personTypes['COMPANY'])) {
    $personTypeID = $personTypes['COMPANY'];
} elseif ($contactID > 0 && isset($personTypes['CONTACT'])) {
    $personTypeID = $personTypes['CONTACT'];
}
$arResult['PERSON_TYPE_ID'] = $personTypeID;
$arResult['PAYER_INFO_FORMAT'] = $personTypeID > 0 ? CCrmMobileHelper::PrepareInvoiceClientInfoFormat($personTypeID) : '';
//<-- PERSON_TYPE_ID
// PAY_SYSTEM -->
$arResult['PAY_SYSTEMS'] = CCrmPaySystem::GetPaySystemsListItems($personTypeID);
if ($entityID > 0) {
    $paySystemID = isset($arFields['~PAY_SYSTEM_ID']) ? intval($arFields['~PAY_SYSTEM_ID']) : 0;
} elseif (!empty($arResult['PAY_SYSTEMS'])) {
    $paySystemID = $arFields['~PAY_SYSTEM_ID'] = $arFields['PAY_SYSTEM_ID'] = array_shift(array_keys($arResult['PAY_SYSTEMS']));
}
//<-- PAY_SYSTEM
// INVOICE_PROPERTIES -->
$arFields['INVOICE_PROPERTIES'] = array();
$properties = CCrmInvoice::GetProperties($entityID, $personTypeID);
if (!is_array($properties)) {
    $properties = array();
}
if ($entityID === 0) {
    CCrmInvoice::__RewritePayerInfo($companyID, $contactID, $properties);
}
Ejemplo n.º 21
0
 public function map(EntityConversionMap $map, array $options = null)
 {
     $srcFields = $this->getSourceFields();
     if (empty($srcFields)) {
         return array();
     }
     $dstFields = array();
     $dstEntityTypeID = $map->getDestinationEntityTypeID();
     foreach ($map->getItems() as $item) {
         $dstFieldID = $item->getDestinationField();
         //Skip empty binding
         if ($dstFieldID === '-') {
             continue;
         }
         $srcFieldID = $item->getSourceField();
         if ((!isset($srcFields[$srcFieldID]) || $srcFields[$srcFieldID] === '') && $srcFieldID !== 'PRODUCT_ROWS') {
             $altSrcFieldID = '';
             foreach ($item->getAlternativeSourceFields() as $fieldID) {
                 if (isset($srcFields[$fieldID])) {
                     $altSrcFieldID = $fieldID;
                     break;
                 }
             }
             if ($altSrcFieldID !== '') {
                 $srcFieldID = $altSrcFieldID;
             }
         }
         if ($dstFieldID === '') {
             $dstFieldID = $srcFieldID;
         }
         if (strpos($srcFieldID, 'UF_') === 0 && strpos($dstFieldID, 'UF_') === 0) {
             self::mapUserField(\CCrmOwnerType::Deal, $srcFieldID, $srcFields, $dstEntityTypeID, $dstFieldID, $dstFields, $options);
         } elseif ($srcFieldID === 'PRODUCT_ROWS') {
             $productRows = \CCrmDeal::LoadProductRows($this->srcEntityID);
             if (count($productRows) > 0) {
                 if ($dstEntityTypeID === \CCrmOwnerType::Invoice) {
                     $currencyID = isset($srcFields['CURRENCY_ID']) ? $srcFields['CURRENCY_ID'] : '';
                     if ($currencyID === '' || !\CCrmCurrency::IsExists($currencyID)) {
                         $currencyID = \CCrmCurrency::GetBaseCurrencyID();
                     }
                     $actualRows = \CCrmInvoice::ProductRows2BasketItems($productRows, $currencyID, \CCrmInvoice::GetCurrencyID());
                     if (count($actualRows) > 0) {
                         foreach ($actualRows as &$productRow) {
                             unset($productRow['ID']);
                         }
                         unset($productRow);
                         $dstFields[$dstFieldID] = $actualRows;
                     }
                 } else {
                     foreach ($productRows as &$productRow) {
                         unset($productRow['ID']);
                     }
                     unset($productRow);
                     $dstFields[$dstFieldID] = $productRows;
                 }
             }
         } elseif (isset($srcFields[$srcFieldID])) {
             $dstFields[$dstFieldID] = $srcFields[$srcFieldID];
         }
     }
     if (!empty($dstFields)) {
         if ($dstEntityTypeID === \CCrmOwnerType::Invoice) {
             $dstFields['UF_DEAL_ID'] = $this->srcEntityID;
             //region Prepare Invoice Properties
             $dstFields['INVOICE_PROPERTIES'] = array();
             $invoiceEntity = new \CCrmInvoice(false);
             $companyID = isset($dstFields['UF_COMPANY_ID']) ? (int) $dstFields['UF_COMPANY_ID'] : 0;
             $contactID = isset($dstFields['UF_CONTACT_ID']) ? (int) $dstFields['UF_CONTACT_ID'] : 0;
             $personTypeID = 0;
             $personTypes = \CCrmPaySystem::getPersonTypeIDs();
             if ($companyID > 0 && isset($personTypes['COMPANY'])) {
                 $personTypeID = $personTypes['COMPANY'];
             } elseif (isset($personTypes['CONTACT'])) {
                 $personTypeID = $personTypes['CONTACT'];
             }
             $properties = $invoiceEntity->GetProperties(0, $personTypeID);
             if (is_array($properties)) {
                 \CCrmInvoice::__RewritePayerInfo($companyID, $contactID, $invoiceProperties);
                 foreach ($properties as $property) {
                     $dstFields['INVOICE_PROPERTIES'][$property['FIELDS']['ID']] = $property['VALUE'];
                 }
             }
             //endregion
         } elseif ($dstEntityTypeID === \CCrmOwnerType::Quote) {
             $dstFields['DEAL_ID'] = $this->srcEntityID;
         }
     }
     return $dstFields;
 }
Ejemplo n.º 22
0
    $arLOCATION2 = array();
    
    $db_location = CSaleTaxRate::GetLocationList(array("TAXRATE_ID" => $arResult['ID'], "LOCATION_TYPE" => "G"));
    
    while ($arLocation = $db_location->Fetch())
    {
    	$arLOCATION2[] = $arLocation["LOCATION_ID"];
    }
    
    if(!is_array($arLOCATION2))
    	$arLOCATION2 = array();
    
    $arResult['LOCATION2'] = $arLOCATION2;
    
    $dbLocGrList = CSaleLocationGroup::GetList(array("NAME"=>"ASC"), array(), LANGUAGE_ID);
    
    while ($arLocGr = $dbLocGrList->Fetch())
    {
    	$arLocGrList[$arLocGr['ID']] = $arLocGr;
    
    	if(in_array(intval($arLocGr['ID']), $arResult['LOCATION2']))
    		$arLocGrList[$arLocGr['ID']]['SELECTED'] = true;
    	else
    		$arLocGrList[$arLocGr['ID']]['SELECTED'] = false;
    }
    
    $arResult['LOCATION2_LIST'] = $arLocGrList;
    */
    $arResult['PERSON_TYPES_LIST'] = CCrmPaySystem::getPersonTypesList(true);
}
$this->IncludeComponentTemplate();
Ejemplo n.º 23
0
$arResult['INTERNAL'] = $bInternal;
global $USER_FIELD_MANAGER, $DB, $USER;
$CCrmUserType = new CCrmUserType($USER_FIELD_MANAGER, CCrmQuote::$sUFEntityID);
$bEdit = false;
$bCopy = false;
$bVarsFromForm = false;
$arParams['ELEMENT_ID'] = (int) $arParams['ELEMENT_ID'];
if (!empty($arParams['ELEMENT_ID'])) {
    $bEdit = true;
}
if (!empty($_REQUEST['copy'])) {
    $bCopy = true;
    $bEdit = false;
}
/*$bConvert = isset($arParams['CONVERT']) && $arParams['CONVERT'];*/
$arPersonTypes = $arResult['PERSON_TYPE_IDS'] = CCrmPaySystem::getPersonTypeIDs();
$bTaxMode = CCrmTax::isTaxMode();
$arResult['TAX_MODE'] = $bTaxMode ? 'Y' : 'N';
$arFields = null;
if ($bEdit || $bCopy) {
    $arFilter = array('ID' => $arParams['ELEMENT_ID'], 'PERMISSION' => 'WRITE');
    $obFields = CCrmQuote::GetList(array(), $arFilter);
    $arFields = $obFields->GetNext();
    if ($arFields === false) {
        $bEdit = false;
        $bCopy = false;
    } else {
        $arEntityAttr = $CCrmQuote->cPerms->GetEntityAttr('QUOTE', array($arParams['ELEMENT_ID']));
    }
    if ($bCopy) {
        if (isset($arFields['QUOTE_NUMBER'])) {
Ejemplo n.º 24
0
}
$dlgSettings['personTypes'] = $arPersonTypes;
$dlgSettings['FORM_ID'] = $arResult['FORM_ID'];
$dlgSettings['PAYER_INFO_EDIT_LINK_ID'] = $arResult['PAYER_INFO_EDIT_LINK_ID'];
$dlgSettings['INVOICE_PROPS_DIV_ID'] = $arResult['INVOICE_PROPS_DIV_ID'];
$dlgSettings['PAYER_INFO_FIELD_ID'] = $arResult['PAYER_INFO_FIELD_ID'];
$dlgSettings['messages'] = array('TITLE' => GetMessage('CRM_INVOICE_PROPS_DLG_TITLE'), 'SAVE' => GetMessage('CRM_INVOICE_PROPS_DLG_SAVE'), 'CANCEL' => GetMessage('CRM_INVOICE_PROPS_DLG_CANCEL'));
$arResult['INVOICE_PROPS_DLG_SETTINGS'] = $dlgSettings;
unset($arInvoicePropertiesInfo, $dlgSettings, $person, $props, $code, $v, $index);
// <----------- Payer info dialog settings -----------
$strPayerInfo = CCrmInvoice::__MakePayerInfoString($arInvoiceProperties);
$arResult['FIELDS']['tab_1'][] = array('id' => $payerInfoFieldId, 'name' => GetMessage('CRM_FIELD_PAYER_INFO'), 'type' => 'custom', 'value' => '<div id="' . $payerInfoFieldId . '" class="bx-crm-edit-crm-entity-field">' . htmlspecialcharsbx($strPayerInfo) . '</div>' . PHP_EOL . '<div id="' . $invoicePropsDivId . '" style="display: none;">' . $htmlInputs . '</div>' . PHP_EOL . '<div><span id="' . $arResult['PAYER_INFO_EDIT_LINK_ID'] . '" class="bx-crm-edit-content-payer-info-edit-link">' . GetMessage('CRM_INVOICE_EDIT_PAYER_INFO') . '</span></div>', 'persistent' => true);
$arResult['FIELDS']['tab_1'][] = array('id' => 'section_pay_system', 'name' => GetMessage('CRM_SECTION_PAY_SYSTEM'), 'type' => 'section');
// pay system
$arResult['PAY_SYSTEM_ID_TITLE'] = GetMessage('CRM_FIELD_PAY_SYSTEM_ID_TITLE');
$arResult['FIELDS']['tab_1'][] = array('id' => $paySystemFieldId, 'name' => GetMessage('CRM_FIELD_PAY_SYSTEM_ID'), 'params' => array('id' => 'PAY_SYSTEM_SELECT'), 'items' => CCrmPaySystem::GetPaySystemsListItems($personTypeId), 'type' => 'list', 'value' => isset($arResult['ELEMENT']['PAY_SYSTEM_ID']) ? $arResult['ELEMENT']['PAY_SYSTEM_ID'] : '', 'required' => true);
// COMMENTS
// <editor-fold defaultstate="collapsed" desc="COMMENTS ...">
$arResult['FIELDS']['tab_1'][] = array('id' => 'section_comments', 'name' => GetMessage('CRM_SECTION_COMMENTS'), 'type' => 'section');
//	$arResult['FIELDS']['tab_1'][] = array(
//		'id' => 'COMMENTS',
//		'name' => GetMessage('CRM_FIELD_COMMENTS'),
//		'params' => array('size' => 2000),
//		'value' => isset($arResult['ELEMENT']['COMMENTS']) ? $arResult['ELEMENT']['COMMENTS'] : '',
//		'type' => 'textarea'
//	);
ob_start();
$ar = array('inputName' => 'COMMENTS', 'inputId' => 'COMMENTS', 'height' => '80', 'content' => isset($arResult['ELEMENT']['~COMMENTS']) ? $arResult['ELEMENT']['~COMMENTS'] : '', 'bUseFileDialogs' => false, 'bFloatingToolbar' => false, 'bArisingToolbar' => false, 'bResizable' => true, 'bSaveOnBlur' => true, 'toolbarConfig' => array('Bold', 'Italic', 'Underline', 'Strike', 'BackColor', 'ForeColor', 'CreateLink', 'DeleteLink', 'InsertOrderedList', 'InsertUnorderedList', 'Outdent', 'Indent'));
$LHE = new CLightHTMLEditor();
$LHE->Show($ar);
$sVal = ob_get_contents();