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); }
$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();
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; }
"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">
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
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; }
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); }
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 }
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; }
// <-- 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(''); }
} // 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) {
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
/** * 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; }
} $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);
<?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";
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); }
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';
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; }
protected static function ensurePersonTypesLoaded() { if (is_null(self::$PERSON_TYPES)) { self::$PERSON_TYPES = array_flip(CCrmPaySystem::getPersonTypeIDs()); } }
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); }
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; }
$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();
$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'])) {
} $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();