function CCrmProductResult($res, $arFields = array(), $arAdditionalFilter = array(), $arAdditionalSelect = array(), $arOptions = array()) { parent::CDBResult($res); $fields = $arFields; foreach ($fields as $k => $v) { $str = strval($v); if (trim($str) === '') { unset($fields[$k]); } } $this->arFieldAssoc = array_flip($fields); $this->arAdditionalFilter = $arAdditionalFilter; $this->arAdditionalSelect = $arAdditionalSelect; $this->bRealPrice = false; if (is_array($arOptions) && count($arOptions) > 0) { if (isset($arOptions['REAL_PRICE']) && $arOptions['REAL_PRICE'] === true) { $this->bRealPrice = true; } } self::$bVatMode = CCrmTax::isVatMode(); if (self::$bVatMode) { self::$arVatRates = CCrmVat::GetAll(); } }
$arResult['TITLE'] = ''; $arResult['CURRENCY_ID'] = CCrmCurrency::GetBaseCurrencyID(); $arResult['SUM'] = 0.0; $arResult['TAX_SUM'] = 0.0; } $rows = CCrmInvoice::GetProductRows($entityID); foreach ($rows as &$row) { $item = array('PRODUCT_NAME' => isset($row['PRODUCT_NAME']) ? $row['PRODUCT_NAME'] : '', 'PRICE' => isset($row['PRICE']) ? round(doubleval($row['PRICE']), 2) : 0.0, 'VAT_RATE' => isset($row['VAT_RATE']) ? round(doubleval($row['VAT_RATE']) * 100, 2) : 0.0, 'QUANTITY' => isset($row['QUANTITY']) ? intval($row['QUANTITY']) : 0); $item['FORMATTED_PRICE'] = CCrmCurrency::MoneyToString($item['PRICE'], $arResult['CURRENCY_ID']); $arResult['ITEMS'][] =& $item; unset($item); } unset($row); // VAT - VAT ONLY // EXT - EXTENDED MODE WITH CUSTOM TAXES $arResult['TAX_MODE'] = CCrmTax::isVatMode() ? 'VAT' : 'EXT'; if ($arResult['TAX_MODE'] === 'VAT') { $arResult['VAT_SUM'] = isset($arResult['TAX_SUM']) ? $arResult['TAX_SUM'] : 0.0; $arResult['FORMATTED_VAT_SUM'] = CCrmCurrency::MoneyToString($arResult['VAT_SUM'], $arResult['CURRENCY_ID']); $arResult['FORMATTED_SUM_BRUTTO'] = CCrmCurrency::MoneyToString($arResult['SUM'], $arResult['CURRENCY_ID']); } else { $arResult['TAX_LIST'] = CCrmInvoice::getTaxList($entityID); foreach ($arResult['TAX_LIST'] as &$taxInfo) { $taxInfo['FORMATTED_SUM'] = CCrmCurrency::MoneyToString($taxInfo['VALUE_MONEY'], $arResult['CURRENCY_ID']); } unset($taxInfo); $arResult['TAX_LIST_PERCENT_PRECISION'] = SALE_VALUE_PRECISION; } $arResult['FORMATTED_SUM_BRUTTO'] = CCrmCurrency::MoneyToString($arResult['SUM'], $arResult['CURRENCY_ID']); $arResult['FORMATTED_SUM_NETTO'] = CCrmCurrency::MoneyToString($arResult['SUM'] - $arResult['TAX_SUM'], $arResult['CURRENCY_ID']); } else {
die; } if (!CModule::IncludeModule('crm')) { ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED')); return; } global $USER, $APPLICATION; $CrmPerms = new CCrmPerms($USER->GetID()); if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ')) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } $arParams['PATH_TO_PRODUCT_LIST'] = CrmCheckPath('PATH_TO_PRODUCT_LIST', $arParams['PATH_TO_PRODUCT_LIST'], ''); $arParams['PATH_TO_PRODUCT_FILE'] = CrmCheckPath('PATH_TO_PRODUCT_FILE', $arParams['PATH_TO_PRODUCT_FILE'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&field_id=#field_id#&file_id=#file_id#&file'); //CUtil::InitJSCore(array('ajax', 'tooltip')); $bVatMode = CCrmTax::isVatMode(); $vatRateListItems = array(); if ($bVatMode) { $vatRateListItems = CCrmVat::GetVatRatesListItems(); } // measure list items $measureListItems = array('' => GetMessage('CRM_MEASURE_NOT_SELECTED')); $measures = \Bitrix\Crm\Measure::getMeasures(100); if (is_array($measures)) { foreach ($measures as $measure) { $measureListItems[$measure['ID']] = $measure['SYMBOL']; } unset($measure); } unset($measures); $productID = isset($arParams['PRODUCT_ID']) ? intval($arParams['PRODUCT_ID']) : 0;
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die; } if (!CModule::IncludeModule('crm')) { return; } if (!CModule::IncludeModule('sale')) { return; } global $USER; $CCrmPerms = new CCrmPerms($USER->GetID()); if ($CCrmPerms->HavePerm('CONFIG', BX_CRM_PERM_NONE, 'WRITE')) { return; } CUtil::InitJSCore(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (check_bitrix_sessid()) { $arResult['BACK_URL'] = isset($_POST['BACK_URL']) ? $_POST['BACK_URL'] : ''; $arResult['TAX_TYPE'] = isset($_POST['TAX_TYPE']) ? $_POST['TAX_TYPE'] : ''; if (strlen($arResult['TAX_TYPE']) > 0) { if ($arResult['TAX_TYPE'] == 'tax') { CCrmTax::unSetVatMode(); } elseif ($arResult['TAX_TYPE'] == 'vat') { CCrmTax::setVatMode(); } } } } else { $arResult['IS_VAT_MODE'] = CCrmTax::isVatMode(); } $this->IncludeComponentTemplate();
public static function RecalculatePriceVat($price, $bVatIncluded, $vatId) { $result = $price; if (self::$bVatMode === null) { self::$bVatMode = CCrmTax::isVatMode(); if (self::$bVatMode) { self::$arVatRates = CCrmVat::GetAll(); } } if (self::$bVatMode) { if ($bVatIncluded !== 'Y') { if (isset(self::$arVatRates[$vatId])) { $vatRate = self::$arVatRates[$vatId]['RATE']; $result = (doubleval($vatRate) / 100 + 1) * doubleval($price); } } } return $result; }
// Check permissions (READ by default) $permissionType = isset($arParams['PERMISSION_TYPE']) ? (string) $arParams['PERMISSION_TYPE'] : 'READ'; $perms = new CCrmPerms($USER->GetID()); if ($perms->HavePerm($ownerName, BX_CRM_PERM_NONE, $permissionType)) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } /** @var \CBitrixComponent $this */ $arResult['COMPONENT_ID'] = $this->randString(); $arResult['OWNER_TYPE'] = $ownerType; $arResult['OWNER_ID'] = $ownerID; $arResult['READ_ONLY'] = $permissionType == 'READ'; $arResult['INIT_EDITABLE'] = isset($arParams['INIT_EDITABLE']) ? $arParams['INIT_EDITABLE'] === 'Y' : false; $arResult['HIDE_MODE_BUTTON'] = isset($arParams['HIDE_MODE_BUTTON']) ? $arParams['HIDE_MODE_BUTTON'] === 'Y' : false; $arResult['HIDE_ALL_TAXES'] = isset($arParams['HIDE_ALL_TAXES']) ? $arParams['HIDE_ALL_TAXES'] === 'Y' : false; $arResult['ALLOW_TAX'] = isset($arParams['ALLOW_TAX']) ? $arParams['ALLOW_TAX'] === 'Y' : CCrmTax::isVatMode(); $arResult['ALLOW_TAX'] = $arResult['ALLOW_TAX'] && !$arResult['HIDE_ALL_TAXES']; $arResult['ALLOW_LD_TAX'] = isset($arParams['ALLOW_LD_TAX']) ? $arParams['ALLOW_LD_TAX'] === 'Y' : CCrmTax::isTaxMode(); $arResult['ALLOW_LD_TAX'] = $arResult['ALLOW_LD_TAX'] || $arResult['HIDE_ALL_TAXES']; $arResult['LOCATION_ID'] = isset($arParams['LOCATION_ID']) ? $arParams['LOCATION_ID'] : ''; $arResult['PRODUCT_ROW_TAX_UNIFORM'] = COption::GetOptionString('crm', 'product_row_tax_uniform', 'Y') === 'Y'; $arResult['INVOICE_MODE'] = $ownerType === 'I'; $arResult['HIDE_TAX_INCLUDED_COLUMN'] = $arResult['INVOICE_MODE']; $arResult['CATALOG_TYPE_ID'] = CCrmCatalog::GetCatalogTypeID(); // copy flag $bCopy = $arParams['COPY_FLAG'] === 'Y' ? true : false; // Check currency (national currency by default) $currencyID = $arResult['CURRENCY_ID'] = isset($arParams['CURRENCY_ID']) ? (string) $arParams['CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $currency = CCrmCurrency::GetByID($currencyID); if (!$currency) { ShowError(GetMessage('CRM_CURRENCY_IS_NOT_FOUND', array('#CURRENCY_ID#' => $currencyID)));
// CONTEXT_ID --> $contextID = isset($arParams['CONTEXT_ID']) ? $arParams['CONTEXT_ID'] : ''; if ($contextID === '' && isset($_REQUEST['context_id'])) { $contextID = $_REQUEST['context_id']; } if ($contextID === '') { $contextID = "{$uid}_{$entityID}"; } $arResult['CONTEXT_ID'] = $arParams['CONTEXT_ID'] = $contextID; //<-- CONTEXT_ID $arResult['STATUS_LIST'] = CCrmStatus::GetStatus('INVOICE_STATUS'); $personTypes = $arResult['PERSON_TYPES'] = CCrmPaySystem::getPersonTypeIDs(); // '' - NO TAXES // 'VAT' - VAT ONLY // 'EXT' - EXTENDED MODE WITH CUSTOM TAXES $taxMode = $arResult['TAX_MODE'] = CCrmTax::isVatMode() ? 'VAT' : (CCrmTax::isTaxMode() ? 'EXT' : ''); $companyID = 0; $contactID = 0; $dealID = 0; $dealCurrencyID = ''; $personTypeID = 0; $paySystemID = 0; $properties = array(); $currencyID = CCrmInvoice::GetCurrencyID(); $arFields = null; if ($entityID === 0) { $arResult['MODE'] = 'CREATE'; $now = time() + CTimeZone::GetOffset(); $nowDate = ConvertTimeStamp($now, 'SHORT', SITE_ID); $arFields = array('~CURRENCY' => $currencyID, 'CURRENCY' => htmlspecialcharsbx($currencyID)); $arFields['~STATUS_ID'] = !empty($arResult['STATUS_LIST']) ? array_shift(array_keys($arResult['STATUS_LIST'])) : '';
public static function LoadTotalInfo($ownerType, $ownerID) { $result = array(); $settings = CCrmProductRow::LoadSettings($ownerType, $ownerID); $taxMode = isset($settings['TAX_MODE']) ? intval($settings['TAX_MODE']) : 0; if ($taxMode !== self::TAX_MODE && $taxMode !== self::LD_TAX_MODE) { $taxMode = CCrmTax::isVatMode() ? self::TAX_MODE : self::LD_TAX_MODE; } $result['TAX_MODE'] = $taxMode; if (is_array($settings['TAX_LIST'])) { $result['TAX_LIST'] = $settings['TAX_LIST']; } return $result; }
$arParams['PATH_TO_PRODUCT_LIST'] = CrmCheckPath('PATH_TO_PRODUCT_LIST', $arParams['PATH_TO_PRODUCT_LIST'], $APPLICATION->GetCurPage() . '?section_id=#section_id#'); $arParams['PATH_TO_PRODUCT_SHOW'] = CrmCheckPath('PATH_TO_PRODUCT_SHOW', $arParams['PATH_TO_PRODUCT_SHOW'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&show'); $arParams['PATH_TO_PRODUCT_EDIT'] = CrmCheckPath('PATH_TO_PRODUCT_EDIT', $arParams['PATH_TO_PRODUCT_EDIT'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&edit'); $arParams['PATH_TO_PRODUCT_FILE'] = CrmCheckPath('PATH_TO_PRODUCT_FILE', $arParams['PATH_TO_PRODUCT_FILE'], $APPLICATION->GetCurPage() . '?product_id=#product_id#&field_id=#field_id#&file_id=#file_id#&file'); // prepare URI template $curParam = $APPLICATION->GetCurParam(); $curParam = preg_replace('/(^|[^\\w])bxajaxid=[\\d\\w]*([^\\d\\w]|$)/', '', $curParam); $curParam = preg_replace('/(?<!\\w)list_section_id=\\d*(?=([^\\d]|$))/', 'list_section_id=#section_id#', $curParam); $curParam = preg_replace('/(^|&)tree=\\w*(?=(&|$))/', '', $curParam); $arResult['PAGE_URI_TEMPLATE'] = $arParams['PATH_TO_PRODUCT_LIST'] . (strlen($curParam) > 0 ? '?' . $curParam . '&tree=Y' : '?tree=Y'); unset($curParam); $arFilter = $arSort = array(); $bInternal = false; $arResult['FORM_ID'] = isset($arParams['FORM_ID']) ? $arParams['FORM_ID'] : ''; $arResult['TAB_ID'] = isset($arParams['TAB_ID']) ? $arParams['TAB_ID'] : ''; $bVatMode = $arResult['VAT_MODE'] = CCrmTax::isVatMode(); $arResult['VAT_RATE_LIST_ITEMS'] = array(); if ($bVatMode) { $arResult['VAT_RATE_LIST_ITEMS'] = CCrmVat::GetVatRatesListItems(); } // measure list items $arResult['MEASURE_LIST_ITEMS'] = array('' => GetMessage('CRM_MEASURE_NOT_SELECTED')); $measures = \Bitrix\Crm\Measure::getMeasures(100); if (is_array($measures)) { foreach ($measures as $measure) { $arResult['MEASURE_LIST_ITEMS'][$measure['ID']] = $measure['SYMBOL']; } unset($measure); } unset($measures); if (isset($arResult['PRODUCT_ID'])) {
//<-- COMMENTS & USER_DESCRIPTION $responsibleID = max(isset($data['RESPONSIBLE_ID']) ? intval($data['RESPONSIBLE_ID']) : 0, 0); if ($responsibleID == 0) { $responsibleID = CCrmSecurityHelper::GetCurrentUserID(); } $arFields = array('ID' => $ID, 'ORDER_TOPIC' => $topic, 'STATUS_ID' => $statusID, 'CURRENCY' => $currencyID, 'PAY_SYSTEM_ID' => $resolvedPaySystemID, 'PERSON_TYPE_ID' => $resolvedPersonTypeID, 'RESPONSIBLE_ID' => $responsibleID, 'UF_DEAL_ID' => $dealID, 'UF_COMPANY_ID' => $companyID, 'UF_CONTACT_ID' => $contactID, 'COMMENTS' => $comments, 'USER_DESCRIPTION' => $userDescription, 'PRODUCT_ROWS' => $productRows); // DATE_INSERT & DATE_BILL & DATE_PAY_BEFORE --> $arFields['DATE_INSERT'] = ConvertTimeStamp($now, 'SHORT', SITE_ID); $ts = isset($data['DATE_BILL']) ? intval($data['DATE_BILL']) : 0; $arFields['DATE_BILL'] = ConvertTimeStamp($ts > 0 ? $ts : $now, 'SHORT', SITE_ID); $ts = isset($data['DATE_PAY_BEFORE']) ? intval($data['DATE_PAY_BEFORE']) : 0; if ($ts > 0) { $arFields['DATE_PAY_BEFORE'] = ConvertTimeStamp($ts, 'SHORT', SITE_ID); } //<-- DATE_INSERT & DATE_BILL & DATE_PAY_BEFORE $taxMode = CCrmTax::isVatMode() ? 'VAT' : (CCrmTax::isTaxMode() ? 'EXT' : ''); if ($taxMode === 'EXT') { $arFields['PR_LOCATION'] = isset($data['LOCATION_ID']) ? intval($data['LOCATION_ID']) : 0; } $isSuccessfull = CCrmStatusInvoice::isStatusSuccess($statusID); $isFailed = !$isSuccessfull && CCrmStatusInvoice::isStatusFailed($statusID); if ($isSuccessfull) { $timestamp = isset($data['PAYMENT_TIME_STAMP']) ? max(intval($data['PAYMENT_TIME_STAMP']), 0) : 0; $arFields['PAY_VOUCHER_DATE'] = $timestamp > 0 ? ConvertTimeStamp($timestamp, 'SHORT', SITE_ID) : null; $arFields['PAY_VOUCHER_NUM'] = isset($data['PAYMENT_DOC']) ? substr(trim($data['PAYMENT_DOC']), 0, 20) : ''; $arFields['REASON_MARKED'] = isset($data['PAYMENT_COMMENT']) ? substr(trim($data['PAYMENT_COMMENT']), 0, 255) : ''; } elseif ($isFailed) { $timestamp = isset($data['CANCEL_TIME_STAMP']) ? max(intval($data['CANCEL_TIME_STAMP']), 0) : 0; $arFields['DATE_MARKED'] = $timestamp > 0 ? ConvertTimeStamp($timestamp, 'SHORT', SITE_ID) : null; $arFields['REASON_MARKED'] = isset($data['CANCEL_REASON']) ? substr(trim($data['CANCEL_REASON']), 0, 255) : ''; }