Ejemplo n.º 1
0
 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();
     }
 }
Ejemplo n.º 2
0
 public static function GetVatRateInfos()
 {
     if (self::$VAT_RATES !== null) {
         return self::$VAT_RATES;
     }
     if (!CModule::IncludeModule('catalog')) {
         return array();
     }
     self::$VAT_RATES = array();
     $dbResult = CCatalogVat::GetListEx(array('C_SORT' => 'ASC'), array('ACTIVE' => 'Y'), false, false, array('ID', 'NAME', 'RATE'));
     if (is_object($dbResult)) {
         while ($fields = $dbResult->Fetch()) {
             $ID = intval($fields['ID']);
             self::$VAT_RATES[] = array('ID' => $ID, 'NAME' => isset($fields['NAME']) ? $fields['NAME'] : "[{$ID}]", 'VALUE' => isset($fields['RATE']) ? round(doubleval($fields['RATE']), 2) : 0.0);
         }
     }
     return self::$VAT_RATES;
 }
Ejemplo n.º 3
0
		<?php 
$defaultMeasure = \Bitrix\Crm\Measure::getDefaultMeasure();
$defaultTax = CCrmTax::GetDefaultVatRateInfo();
$measures = \Bitrix\Crm\Measure::getMeasures(100);
$productTotalContainerID = $arResult['PREFIX'] . '_product_sum_total_container';
$rowIdPrefix = $arResult['PREFIX'] . '_product_row_';
$productEditorCfg = array('sessid' => bitrix_sessid(), 'serviceUrl' => '/bitrix/components/bitrix/crm.product_row.list/ajax.php?' . bitrix_sessid_get(), 'productSearchUrl' => '/bitrix/components/bitrix/crm.product.list/list.ajax.php?' . bitrix_sessid_get(), 'pathToProductShow' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCT_SHOW']), 'pathToProductEdit' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_PRODUCT_EDIT']), 'ownerType' => $arResult['OWNER_TYPE'], 'invoiceMode' => $arResult['INVOICE_MODE'], 'ownerID' => $arResult['OWNER_ID'], 'currencyID' => $arResult['CURRENCY_ID'], 'locationID' => $arResult['LOCATION_ID'], 'currencyFormat' => $arResult['CURRENCY_FORMAT'], 'formID' => $arResult['FORM_ID'], 'productRowsTabID' => $arResult['TAB_ID'], 'containerID' => $containerID, 'productContainerID' => $productContainerID, 'productTotalContainerID' => $productTotalContainerID, 'choiceBtnID' => $choiceProductBtnID, 'addBtnID' => $addProductBtnID, 'productCreateDialogSettings' => isset($arResult['PRODUCT_CREATE_DLG_SETTINGS']) ? $arResult['PRODUCT_CREATE_DLG_SETTINGS'] : null, 'modeBtnID' => $modeBtnID, 'addRowBtnID' => $addRowBtnID, 'canAddProduct' => $bCanAddProduct, 'taxValueID' => $arResult['PREFIX'] . '_tax_value', 'hideModeButton' => $bHideModeButton, 'dataFieldName' => $arResult['PRODUCT_DATA_FIELD_NAME'], 'readOnly' => $readOnly, 'initEditable' => $bInitEditable, 'enableRawCatalogPricing' => $arResult['ENABLE_RAW_CATALOG_PRICING'], 'defaultMeasure' => $defaultMeasure, 'measures' => $measures, 'priceTitleId' => $priceTitleId, 'discountTypeText' => array(\Bitrix\Crm\Discount::UNDEFINED => '-', \Bitrix\Crm\Discount::PERCENTAGE => '%', \Bitrix\Crm\Discount::MONETARY => $currencyText), 'siteId' => $arResult['SITE_ID'], 'clientTypeName' => $arResult['CLIENT_TYPE_NAME'], 'productFields' => array('PRODUCT_NAME', 'PRICE', 'QUANTITY', 'MEASURE', 'DISCOUNT', 'DISCOUNT_SUBTOTAL', 'TAX_RATE', 'TAX_INCLUDED', 'TAX_SUM', 'SUM'), 'rowIdPrefix' => $rowIdPrefix, 'items' => array(), 'jsEventsManagerId' => $jsEventsManagerId);
$productEditorCfg['hideTaxIncludedColumn'] = $arResult['HIDE_TAX_INCLUDED_COLUMN'];
$productEditorCfg['hideAllTaxes'] = $arResult['HIDE_ALL_TAXES'];
$productEditorCfg['allowTax'] = $arResult['ALLOW_TAX'];
$productEditorCfg['taxUniform'] = $arResult['PRODUCT_ROW_TAX_UNIFORM'];
$productEditorCfg['defaultTax'] = $defaultTax;
$productEditorCfg['allowLDTax'] = $arResult['ALLOW_LD_TAX'];
$taxes = array();
if ($arResult['ALLOW_TAX']) {
    $productEditorCfg['taxes'] = $taxes = CCrmTax::GetVatRateInfos();
}
$taxRatesOrig = array();
foreach ($taxes as $tax) {
    $taxRatesOrig[] = $tax['VALUE'];
}
$productEditorCfg['enableTax'] = $arResult['ENABLE_TAX'];
$productEditorCfg['enableDiscount'] = $arResult['ENABLE_DISCOUNT'];
for ($i = 0; $i < $nProductRows; $i++) {
    $row = $arResult['PRODUCT_ROWS'][$i];
    $rowID = $rowIdPrefix . strval($i);
    $productID = intval($row['PRODUCT_ID']);
    $productName = isset($row['PRODUCT_NAME']) ? $row['PRODUCT_NAME'] : '';
    if ($productName === '') {
        $productName = $productID > 0 && isset($row['ORIGINAL_PRODUCT_NAME']) ? $row['ORIGINAL_PRODUCT_NAME'] : "[{$productID}]";
    }
Ejemplo n.º 4
0
unset($totalSum, $totalTax);
$arResult['FORM_ID'] = isset($arParams['FORM_ID']) ? $arParams['FORM_ID'] : '';
$arResult['TAB_ID'] = isset($arParams['TAB_ID']) ? $arParams['TAB_ID'] : '';
$arResult['PREFIX'] = isset($arParams['PREFIX']) ? $arParams['PREFIX'] : '';
if ($arResult['PREFIX'] === '') {
    $arResult['PREFIX'] = htmlspecialcharsbx($ownerID > 0 ? strtolower($ownerName) . '_' . strval($ownerID) : 'new_' . strtolower($ownerName));
}
$arResult['ID'] = isset($arParams['ID']) ? $arParams['ID'] : '';
if ($arResult['ID'] === '') {
    $arResult['ID'] = $arResult['PREFIX'] . '_product_editor';
}
//$arResult['CONTAINER_CLASS'] = htmlspecialcharsbx(strtolower($ownerName).'-product-rows');
$arResult['PRODUCT_DATA_FIELD_NAME'] = isset($arParams['PRODUCT_DATA_FIELD_NAME']) ? $arParams['PRODUCT_DATA_FIELD_NAME'] : 'PRODUCT_ROW_DATA';
$arResult['ENABLE_CUSTOM_PRODUCTS'] = isset($arParams['ENABLE_CUSTOM_PRODUCTS']) ? strtoupper($arParams['ENABLE_CUSTOM_PRODUCTS']) === 'Y' : true;
$arResult['ENABLE_RAW_CATALOG_PRICING'] = !isset($arParams['ENABLE_RAW_CATALOG_PRICING']) || strtoupper($arParams['ENABLE_RAW_CATALOG_PRICING']) === 'Y';
$arResult['TAX_INFOS'] = $arResult['ALLOW_TAX'] ? CCrmTax::GetVatRateInfos() : array();
$arResult['ENABLE_TAX'] = isset($arParams['ENABLE_TAX']) ? $arParams['ENABLE_TAX'] === 'Y' : false;
$arResult['ENABLE_DISCOUNT'] = isset($arParams['ENABLE_DISCOUNT']) ? $arParams['ENABLE_DISCOUNT'] === 'Y' : false;
$settings = array();
if ($ownerID > 0) {
    $settings = CCrmProductRow::LoadSettings($ownerType, $ownerID);
    if (isset($settings['ENABLE_TAX'])) {
        $arResult['ENABLE_TAX'] = (bool) $settings['ENABLE_TAX'];
    }
    if (isset($settings['ENABLE_DISCOUNT'])) {
        $arResult['ENABLE_DISCOUNT'] = (bool) $settings['ENABLE_DISCOUNT'];
    }
}
$arResult['SITE_ID'] = SITE_ID;
$arResult['CAN_ADD_PRODUCT'] = $perms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE');
// measure list items
Ejemplo n.º 5
0
 //<-- 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) : '';
 }
Ejemplo n.º 6
0
        $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 {
Ejemplo n.º 7
0
    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;
Ejemplo n.º 8
0
    }
    if (!isset($_GET['AJAX_CALL'])) {
        LocalRedirect($bInternal ? '?' . $arParams['FORM_ID'] . '_active_tab=tab_product' : '');
    }
}
$gridOptions = new CCrmGridOptions($arResult['GRID_ID']);
$gridSorting = $gridOptions->GetSorting(array('sort' => array('NAME' => 'asc'), 'vars' => array('by' => 'by', 'order' => 'order')));
$sort = $arResult['SORT'] = $gridSorting['sort'];
$arResult['SORT_VARS'] = $gridSorting['vars'];
$arLangs = array();
$dbLangsList = CSite::GetList($b = "sort", $o = "asc");
while ($arLang = $dbLangsList->Fetch()) {
    $arLangs[$arLang["LID"]] = "[" . $arLang["LID"] . "]&nbsp;" . $arLang["NAME"];
}
$taxies = array();
$allTaxies = CCrmTax::GetAll();
foreach ($allTaxies as $k => $v) {
    $tax = array();
    $tax['ID'] = $tax['~ID'] = $k;
    // Key is Currency ID
    $tax['TIMESTAMP_X'] = $tax['~TIMESTAMP_X'] = CCrmComponentHelper::TrimDateTimeString(FormatDate('FULL', MakeTimeStamp($v['TIMESTAMP_X'])));
    $tax['LID'] = $arLangs[$v['LID']];
    $tax['NAME'] = $v['NAME'];
    $tax['CODE'] = $v['CODE'];
    $tax['PATH_TO_TAX_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_SHOW'], array('tax_id' => $k));
    $tax['PATH_TO_TAX_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_EDIT'], array('tax_id' => $k));
    $tax['PATH_TO_TAX_SHOW_RATES'] = CHTTP::urlAddParams($tax['PATH_TO_TAX_EDIT'], array("FORM_ID" => $arResult['EDIT_FORM_ID'], $arResult['EDIT_FORM_ID'] . "_active_tab" => 'tab_rateslist'));
    $tax['PATH_TO_TAX_DELETE'] = CHTTP::urlAddParams(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_LIST'], array('tax_id' => $k)), array('action_' . $arResult['GRID_ID'] => 'delete', 'ID' => $k, 'sessid' => bitrix_sessid()));
    $rateNum = 0;
    $dbRes = CSaleTaxRate::GetList(array(), array("TAX_ID" => $tax['ID']));
    while ($dbRes->Fetch()) {
Ejemplo n.º 9
0
// 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'])) : '';
Ejemplo n.º 10
0
 public static function ParsePropertiesValuesFromPost($personTypeId, $post, &$arInvoiceProps)
 {
     if (!is_array($arInvoiceProps) || count($arInvoiceProps) <= 0) {
         return false;
     }
     $result = false;
     $bTaxMode = CCrmTax::isTaxMode();
     $arPropsValues = array();
     $arPropsIndexes = array();
     $error = 0;
     foreach ($arInvoiceProps as $propertyKey => $property) {
         if (!isset($property['VALUE']) && $property['VALUE'] !== null || !isset($property['FIELDS']) || !is_array($property['FIELDS']) || count($property['FIELDS']) <= 0) {
             $error = 1;
             break;
         }
         $arPropertyFields =& $property['FIELDS'];
         if ($arPropertyFields["CODE"] === "LOCATION" && isset($post['LOC_CITY']) && $bTaxMode) {
             // location
             $locationId = trim($post['LOC_CITY']);
             if ($locationId > 0) {
                 $arInvoiceProps['PR_LOCATION']['VALUE'] = $locationId;
             } elseif (isset($arInvoiceProps['PR_LOCATION'])) {
                 $locationId = $arInvoiceProps['PR_LOCATION']['VALUE'];
             }
             if ($locationId > 0 && ($personTypeId === 0 || $arPropertyFields["PERSON_TYPE_ID"] == $personTypeId)) {
                 $arPropsValues[$arPropertyFields["ID"]] = $locationId;
                 $arPropsIndexes['PR_LOCATION'] = $arPropertyFields["ID"];
                 //rewrite invoice property
                 $arInvoiceProps['PR_LOCATION']['VALUE'] = $locationId;
             }
             unset($locationId);
         }
         if (!is_array(${"PR_INVOICE_" . $arPropertyFields["ID"]})) {
             $curVal = trim($post["PR_INVOICE_" . $arPropertyFields["ID"]]);
         } else {
             $curVal = trim($post["PR_INVOICE_" . $arPropertyFields["ID"]]);
         }
         if ($arPropertyFields["TYPE"] == "MULTISELECT") {
             $curVal = "";
             $countOrderProp = count($post["PR_INVOICE_" . $arPropertyFields["ID"]]);
             for ($i = 0; $i < $countOrderProp; $i++) {
                 if ($i > 0) {
                     $curVal .= ",";
                 }
                 $curVal .= $post["PR_INVOICE_" . $arPropertyFields["ID"]][$i];
             }
         }
         if ($arPropertyFields["TYPE"] == "CHECKBOX" && strlen($curVal) <= 0 && $arPropertyFields["REQUIED"] != "Y") {
             $curVal = "N";
         }
         if (!isset($arPropsValues[$arPropertyFields["ID"]]) && ($personTypeId === 0 || $arPropertyFields["PERSON_TYPE_ID"] == $personTypeId)) {
             $arPropsValues[$arPropertyFields["ID"]] = $curVal;
             //rewrite invoice property
             $arInvoiceProps['PR_INVOICE_' . $arPropertyFields["ID"]]['VALUE'] = $curVal;
         }
         if (!isset($arPropsIndexes['PR_INVOICE_' . $arPropertyFields["ID"]])) {
             $arPropsIndexes['PR_INVOICE_' . $arPropertyFields["ID"]] = $arPropertyFields["ID"];
         }
     }
     if ($error > 0) {
         return false;
     }
     if (count($arPropsValues) > 0) {
         $result = array('PROPS_VALUES' => $arPropsValues, 'PROPS_INDEXES' => $arPropsIndexes);
     }
     return $result;
 }
Ejemplo n.º 11
0
 private static function PrepareShoppingCartItems(&$productRows, $currencyID, $siteId)
 {
     $items = array();
     foreach ($productRows as $k => &$v) {
         $item = array();
         $item['PRODUCT_ID'] = isset($v['PRODUCT_ID']) ? intval($v['PRODUCT_ID']) : 0;
         $isCustomized = isset($v['CUSTOMIZED']) && $v['CUSTOMIZED'] === 'Y';
         if ($item['PRODUCT_ID'] > 0 && !$isCustomized) {
             $item['MODULE'] = 'catalog';
             $item['PRODUCT_PROVIDER_CLASS'] = 'CCatalogProductProvider';
         } else {
             $item['MODULE'] = $item['PRODUCT_PROVIDER_CLASS'] = '';
         }
         if ($isCustomized) {
             $item['CUSTOM_PRICE'] = 'Y';
         }
         $item['TABLE_ROW_ID'] = $k;
         $item['QUANTITY'] = isset($v['QUANTITY']) ? doubleval($v['QUANTITY']) : 0;
         $item['QUANTITY_DEFAULT'] = $item['QUANTITY'];
         $item['PRICE'] = isset($v['PRICE']) ? doubleval($v['PRICE']) : 0.0;
         $item['PRICE_DEFAULT'] = $item['PRICE'];
         $item['CURRENCY'] = $currencyID;
         // discount info
         $item['CRM_PR_FIELDS'] = array();
         $item['CRM_PR_FIELDS']['DISCOUNT_TYPE_ID'] = isset($v['DISCOUNT_TYPE_ID']) ? intval($v['DISCOUNT_TYPE_ID']) : \Bitrix\Crm\Discount::PERCENTAGE;
         $item['CRM_PR_FIELDS']['DISCOUNT_RATE'] = isset($v['DISCOUNT_RATE']) ? round(doubleval($v['DISCOUNT_RATE']), 2) : 0.0;
         $item['CRM_PR_FIELDS']['DISCOUNT_SUM'] = isset($v['DISCOUNT_SUM']) ? round(doubleval($v['DISCOUNT_SUM']), 2) : 0.0;
         // tax info
         $taxRate = isset($v['TAX_RATE']) ? round(doubleval($v['TAX_RATE']), 2) : 0.0;
         $allowLDTax = CCrmTax::isTaxMode();
         if ($allowLDTax) {
             $item['CRM_PR_FIELDS']['TAX_RATE'] = 0.0;
             $item['CRM_PR_FIELDS']['TAX_INCLUDED'] = 'N';
         } else {
             $item['CRM_PR_FIELDS']['TAX_RATE'] = $taxRate;
             $item['CRM_PR_FIELDS']['TAX_INCLUDED'] = isset($v['TAX_INCLUDED']) && $v['TAX_INCLUDED'] === 'Y' ? 'Y' : 'N';
         }
         // price netto, price brutto
         $exclusivePrice = $taxRate !== 0.0 ? CCrmProductRow::CalculateExclusivePrice($item['PRICE'], $taxRate) : $item['PRICE'];
         if ($item['CRM_PR_FIELDS']['DISCOUNT_TYPE_ID'] === \Bitrix\Crm\Discount::MONETARY) {
             $priceNetto = $exclusivePrice + $item['CRM_PR_FIELDS']['DISCOUNT_SUM'];
             $item['CRM_PR_FIELDS']['PRICE_NETTO'] = round($priceNetto, 2);
         } else {
             $discoutRate = $item['CRM_PR_FIELDS']['DISCOUNT_RATE'];
             $discoutSum = $discoutRate < 100 ? \Bitrix\Crm\Discount::calculateDiscountByDiscountPrice($exclusivePrice, $discoutRate) : $item['CRM_PR_FIELDS']['DISCOUNT_SUM'];
             $priceNetto = $exclusivePrice + $discoutSum;
             $item['CRM_PR_FIELDS']['PRICE_NETTO'] = round($priceNetto, 2);
         }
         if ($item['CRM_PR_FIELDS']['DISCOUNT_SUM'] === 0.0) {
             $item['CRM_PR_FIELDS']['PRICE_BRUTTO'] = $item['PRICE'];
         } else {
             $item['CRM_PR_FIELDS']['PRICE_BRUTTO'] = round(CCrmProductRow::CalculateInclusivePrice($priceNetto, $item['CRM_PR_FIELDS']['TAX_RATE']), 2);
         }
         if (isset($v['VAT_RATE'])) {
             $item['VAT_RATE'] = $v['VAT_RATE'];
         } elseif (isset($v['TAX_RATE'])) {
             $item['VAT_RATE'] = $v['TAX_RATE'] / 100;
         }
         if (isset($v['MEASURE_CODE'])) {
             $item['MEASURE_CODE'] = $v['MEASURE_CODE'];
         }
         if (isset($v['MEASURE_NAME'])) {
             $item['MEASURE_NAME'] = $v['MEASURE_NAME'];
         }
         $item['NAME'] = isset($v['NAME']) ? $v['NAME'] : (isset($v['PRODUCT_NAME']) ? $v['PRODUCT_NAME'] : '');
         $item['LID'] = $siteId;
         $item['CAN_BUY'] = 'Y';
         $items[] =& $item;
         unset($item);
     }
     unset($v);
     return $items;
 }
Ejemplo n.º 12
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.º 13
0
        $tax = CCrmTax::GetByID($taxID);
        if (is_array($tax)) {
            if (!CSaleTax::Update($taxID, $fields)) {
                ShowError(GetMessage('CRM_TAX_UPDATE_UNKNOWN_ERROR'));
            }
        } else {
            $fields['TAX'] = $taxID;
            $taxID = CSaleTax::Add($fields);
            if (intval($taxID) <= 0) {
                ShowError(GetMessage('CRM_TAX_ADD_UNKNOWN_ERROR'));
            }
        }
        LocalRedirect(isset($_POST['apply']) ? CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_EDIT'], array('tax_id' => $taxID)) : CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_LIST'], array('tax_id' => $taxID)));
    } elseif ($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['delete'])) {
        $taxID = isset($arParams['TAX_ID']) ? intval($arParams['TAX_ID']) : 0;
        $tax = $taxID > 0 ? CCrmTax::GetByID($taxID) : null;
        if ($tax) {
            if (!CSaleTax::Delete($taxID)) {
                ShowError(GetMessage('CRM_TAX_DELETE_UNKNOWN_ERROR'));
            }
        }
        LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_LIST'], array()));
    }
}
$arResult['FIELDS'] = array();
/*
$arResult['FIELDS']['tab_props'][] = array(
	'id' => 'tax_info',
	'name' => GetMessage('CRM_TAX_SECTION_MAIN'),
	'type' => 'section'
);
Ejemplo n.º 14
0
$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'])) {
Ejemplo n.º 15
0
 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;
 }
Ejemplo n.º 16
0
    }
} else {
    $arResult['ID'] = isset($arParams['ID']) ? intval($arParams['ID']) : 0;
    $arResult['TAX_ID'] = isset($arParams['TAX_ID']) ? intval($arParams['TAX_ID']) : 0;
    $arResult['FORM_ID'] = isset($arParams['FORM_ID']) ? strval($arParams['FORM_ID']) : '';
    $arTaxRate = array();
    if ($arResult['ID'] > 0) {
        $dbTaxRate = CSaleTaxRate::GetList(array(), array("ID" => $arResult['ID']));
        $arTaxRate = $dbTaxRate->Fetch();
    }
    $arResult['ACTIVE'] = isset($arTaxRate['ACTIVE']) && $arTaxRate['ACTIVE'] == 'Y' || $arResult['ID'] <= 0 ? true : false;
    $arResult['PERSON_TYPE_ID'] = isset($arTaxRate['PERSON_TYPE_ID']) ? intval($arTaxRate['PERSON_TYPE_ID']) : 0;
    $arResult['VALUE'] = isset($arTaxRate['VALUE']) ? strval($arTaxRate['VALUE']) : '';
    $arResult['IS_IN_PRICE'] = isset($arTaxRate['IS_IN_PRICE']) && $arTaxRate['IS_IN_PRICE'] == 'Y' ? true : false;
    $arResult['APPLY_ORDER'] = isset($arTaxRate['APPLY_ORDER']) ? intval($arTaxRate['APPLY_ORDER']) : 100;
    $arTax = CCrmTax::GetById($arResult['TAX_ID']);
    $arResult['TAX_NAME'] = htmlspecialcharsbx($arTax['NAME']);
    $arLOCATION1 = array();
    if ($lpEnabled) {
        $arResult['LOCATION1'] = array();
        $arResult['LOCATION1_LIST'] = array();
        if (isset($_POST['LOCATION1']) || isset($_POST['LOCATION2'])) {
            $arResult['LOCATION_QUERY'] = array('L' => isset($LOCATION1) ? $LOCATION1 : array(), 'G' => isset($LOCATION2) ? $LOCATION2 : array());
        } else {
            $arResult['LOCATION_QUERY'] = false;
        }
    } else {
        $db_location = CSaleTaxRate::GetLocationList(array("TAX_RATE_ID" => $arResult['ID'], "LOCATION_TYPE" => "L"));
        while ($arLocation = $db_location->Fetch()) {
            $arLOCATION1[] = $arLocation["LOCATION_ID"];
        }
Ejemplo n.º 17
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();
Ejemplo n.º 18
0
 }
 unset($productRow);
 $currencyID = isset($_POST['CURRENCY_ID']) && $_POST['CURRENCY_ID'] !== '' ? $_POST['CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID();
 $clientTypeName = isset($_POST['CLIENT_TYPE_NAME']) && $_POST['CLIENT_TYPE_NAME'] !== '' ? strtoupper($_POST['CLIENT_TYPE_NAME']) : 'CONTACT';
 $personTypeIDs = CCrmPaySystem::getPersonTypeIDs();
 if (empty($personTypeIDs)) {
     echo CUtil::PhpToJSObject(array('ERROR' => 'PERSON_TYPES_NOT_DEFINED'));
 }
 $personTypeID = isset($personTypeIDs[$clientTypeName]) ? intval($personTypeIDs[$clientTypeName]) : 0;
 if ($personTypeID <= 0) {
     echo CUtil::PhpToJSObject(array('ERROR' => 'COULD_NOT_FIND_PERSON_TYPE'));
     die;
 }
 $enableSaleDiscount = isset($_POST['ENABLE_ADDITIONAL_DISCOUNT']) && strtoupper($_POST['ENABLE_ADDITIONAL_DISCOUNT']) === 'Y';
 $calculateOptions = array();
 $isLDTaxAllowed = isset($_POST['ALLOW_LD_TAX']) ? $_POST['ALLOW_LD_TAX'] === 'Y' : CCrmTax::isTaxMode();
 if ($isLDTaxAllowed && isset($_POST['LOCATION_ID'])) {
     $calculateOptions['LOCATION_ID'] = $_POST['LOCATION_ID'];
 }
 $result = CCrmSaleHelper::Calculate($productRows, $currencyID, $personTypeID, $enableSaleDiscount, $siteID, $calculateOptions);
 if (!is_array($result)) {
     $result = array();
 }
 $totalSum = isset($result['PRICE']) ? round(doubleval($result['PRICE']), 2) : 0.0;
 $totalTax = isset($result['TAX_VALUE']) ? round(doubleval($result['TAX_VALUE']), 2) : 0.0;
 $totalBeforeTax = round($totalSum - $totalTax, 2);
 $totalBeforeDiscount = round($totalBeforeTax + $totalDiscount, 2);
 $arResponse = array('TOTALS' => array('TOTAL_SUM' => $totalSum, 'TOTAL_TAX' => $totalTax, 'TOTAL_BEFORE_TAX' => $totalBeforeTax, 'TOTAL_DISCOUNT' => $totalDiscount, 'TOTAL_BEFORE_DISCOUNT' => $totalBeforeDiscount, 'TOTAL_SUM_FORMATTED' => CCrmCurrency::MoneyToString($totalSum, $currencyID), 'TOTAL_TAX_FORMATTED' => CCrmCurrency::MoneyToString($totalTax, $currencyID), 'TOTAL_BEFORE_TAX_FORMATTED' => CCrmCurrency::MoneyToString($totalBeforeTax, $currencyID), 'TOTAL_DISCOUNT_FORMATTED' => CCrmCurrency::MoneyToString($totalDiscount, $currencyID), 'TOTAL_BEFORE_DISCOUNT_FORMATTED' => CCrmCurrency::MoneyToString($totalBeforeDiscount, $currencyID)));
 if ($isLDTaxAllowed) {
     $taxes = is_array($result['TAX_LIST']) ? $result['TAX_LIST'] : null;
     if (!is_array($taxes) || count($taxes) === 0) {
Ejemplo n.º 19
0
    return;
}
global $USER, $APPLICATION;
$arParams['PATH_TO_TAX_LIST'] = CrmCheckPath('PATH_TO_TAX_LIST', $arParams['PATH_TO_TAX_LIST'], '');
$arParams['PATH_TO_TAX_SHOW'] = CrmCheckPath('PATH_TO_TAX_SHOW', $arParams['PATH_TO_TAX_SHOW'], '?tax_id=#tax_id#&show');
$arParams['PATH_TO_TAX_ADD'] = CrmCheckPath('PATH_TO_TAX_ADD', $arParams['PATH_TO_TAX_ADD'], '?add');
$arParams['PATH_TO_TAX_EDIT'] = CrmCheckPath('PATH_TO_TAX_EDIT', $arParams['PATH_TO_TAX_EDIT'], '?tax_id=#tax_id#&edit');
if (!isset($arParams['TYPE'])) {
    $arParams['TYPE'] = 'list';
}
$arResult['BUTTONS'] = array();
$taxID = isset($arParams['TAX_ID']) ? strval($arParams['TAX_ID']) : '';
$CrmPerms = new CCrmPerms($USER->GetID());
$taxAdd = $taxEdit = $taxDelete = $CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE');
$taxShow = $CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ');
$exists = intval($taxID > 0) && is_array(CCrmTax::GetByID($taxID));
if ($arParams['TYPE'] !== 'list') {
    $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_TAX_LIST'), 'TITLE' => GetMessage('CRM_TAX_LIST_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_LIST'], array()), 'ICON' => 'btn-list');
}
if ($taxAdd) {
    $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_TAX_ADD'), 'TITLE' => GetMessage('CRM_TAX_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_ADD'], array()), 'ICON' => 'btn-new');
}
if ($arParams['TYPE'] == 'list') {
    $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_TAX_SETTINGS'), 'TITLE' => GetMessage('CRM_TAX_SETTINGS_TITLE'), 'LINK' => "javascript:(new BX.CDialog({\n\t\t\t\t\t\t\t'content_url':'/bitrix/components/bitrix/crm.config.tax.settings/box.php',\n\t\t\t\t\t\t\t'width':'498',\n\t\t\t\t\t\t\t'height':'275',\n\t\t\t\t\t\t\t'resizable':false })).Show();", 'ICON' => 'btn-settings');
}
if ($taxEdit && $arParams['TYPE'] == 'show' && $exists) {
    $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_TAX_EDIT'), 'TITLE' => GetMessage('CRM_TAX_EDIT_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_EDIT'], array('tax_id' => $taxID)), 'ICON' => 'btn-edit');
}
/*
if ($taxShow && $arParams['TYPE'] == 'edit' && $exists)
{
Ejemplo n.º 20
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.º 21
0
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'])) {
            unset($arFields['QUOTE_NUMBER']);
Ejemplo n.º 22
0
        // otherwise the filter will work
    }
    if (!isset($_GET['AJAX_CALL'])) {
        LocalRedirect($bInternal ? '?' . $arParams['TAX_FORM_ID'] . '_active_tab=tab_props' : '');
    }
}
$gridOptions = new CCrmGridOptions($arResult['GRID_ID']);
$gridSorting = $gridOptions->GetSorting(array('sort' => array('ID' => 'asc'), 'vars' => array('by' => 'by', 'order' => 'order')));
$sort = $arResult['SORT'] = $gridSorting['sort'];
$arResult['SORT_VARS'] = $gridSorting['vars'];
$dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array());
while ($arPersonType = $dbPersonType->Fetch()) {
    $arPersonTypeList[$arPersonType["ID"]] = array("ID" => $arPersonType["ID"], "NAME" => htmlspecialcharsEx($arPersonType["NAME"]), "LID" => implode(", ", $arPersonType["LIDS"]));
}
$arRates = array();
$arRates = CCrmTax::GetRatesById($arResult['TAX_ID']);
foreach ($arRates as $k => $v) {
    $rate = array();
    $rate['ID'] = $rate['~ID'] = $k;
    $rate['ACTIVE'] = $rate['~ACTIVE'] = $v['ACTIVE'];
    $rate['TIMESTAMP_X'] = $rate['~TIMESTAMP_X'] = CCrmComponentHelper::TrimDateTimeString(FormatDate('FULL', MakeTimeStamp($v['TIMESTAMP_X'])));
    $rate['NAME'] = $v['NAME'];
    if (intval($v['PERSON_TYPE_ID']) > 0) {
        $arPerType = $arPersonTypeList[$v['PERSON_TYPE_ID']];
        $rate['PERSON_TYPE_ID'] = GetMessage($arPerType["NAME"] . '_PT');
    } else {
        $rate['PERSON_TYPE_ID'] = $rate['~PERSON_TYPE_ID'] = '&nbsp;';
    }
    $rate['VALUE'] = intval($v['VALUE']);
    $rate['IS_IN_PRICE'] = $rate['~IS_IN_PRICE'] = $v['IS_IN_PRICE'];
    $rate['APPLY_ORDER'] = intval($v['APPLY_ORDER']);
Ejemplo n.º 23
0
if ($taxID <= 0 || !($tax = CCrmTax::GetByID($taxID))) {
    ShowError(GetMessage('CRM_TAX_NOT_FOUND'));
    @define('ERROR_404', 'Y');
    if ($arParams['SET_STATUS_404'] === 'Y') {
        CHTTP::SetStatus("404 Not Found");
    }
    return;
}
$arResult['TAX_ID'] = $taxID;
$arResult['TAX'] = $tax;
$isEditMode = $taxID > 0;
$arResult['FORM_ID'] = isset($arParams['FORM_ID']) && strlen($arParams['FORM_ID']) > 0 ? $arParams['FORM_ID'] : 'CRM_TAX_EDIT_FORM';
$arResult['GRID_ID'] = 'CRM_TAX_EDIT_GRID';
$arResult['BACK_URL'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TAX_LIST'], array());
$arResult['FIELDS'] = array();
$arResult['FIELDS']['tab_props'][] = array('id' => 'tax_info', 'name' => GetMessage('CRM_TAX_SECTION_MAIN'), 'type' => 'section');
$arResult['FIELDS']['tab_props'][] = array('id' => 'ID', 'name' => GetMessage('CRM_TAX_FIELD_ID'), 'value' => $taxID, 'type' => 'label');
$arResult['FIELDS']['tab_props'][] = array('id' => 'TIMESTAMP_X', 'name' => GetMessage('CRM_TAX_FIELD_TIMESTAMP_X'), 'value' => $tax['TIMESTAMP_X'], 'type' => 'label');
$sitesList = CCrmTax::getSitesList();
$arResult['FIELDS']['tab_props'][] = array('id' => 'LID', 'name' => GetMessage('CRM_TAX_FIELD_LID'), 'value' => $sitesList[$tax['LID']], 'type' => 'label');
$arResult['FIELDS']['tab_props'][] = array('id' => 'NAME', 'name' => GetMessage('CRM_TAX_FIELD_NAME'), 'value' => $tax['NAME'], 'type' => 'label');
$arResult['FIELDS']['tab_props'][] = array('id' => 'CODE', 'name' => GetMessage('CRM_TAX_FIELD_CODE'), 'value' => $tax['CODE'], 'type' => 'label');
$arResult['FIELDS']['tab_props'][] = array('id' => 'DESCRIPTION', 'name' => GetMessage('CRM_TAX_FIELD_DESCRIPTION'), 'value' => $tax['DESCRIPTION'], 'type' => 'label');
$toolbarID = "CRM_TAX_RATE_TB";
ob_start();
$APPLICATION->IncludeComponent('bitrix:crm.config.tax.rate.list', '', array('PATH_TO_TAXRATE_LIST' => $arResult['PATH_TO_TAXRATE_LIST'], 'PATH_TO_TAXRATE_SHOW' => $arResult['PATH_TO_TAXRATE_SHOW'], 'PATH_TO_TAXRATE_ADD' => $arResult['PATH_TO_TAXRATE_ADD'], 'PATH_TO_TAXRATE_EDIT' => $arResult['PATH_TO_TAXRATE_EDIT'], 'TAX_FORM_ID' => $arResult['FORM_ID'], 'TAX_ID' => $arResult['TAX_ID'], 'EDIT_MODE' => 'N'), '');
$sVal = ob_get_contents();
ob_end_clean();
$arResult['FIELDS']['tab_rateslist'][] = array('id' => 'section_rates_grid', 'name' => GetMessage('CRM_TAX_RATE_LIST') . ' "' . $tax['NAME'] . '"', 'type' => 'section');
$arResult['FIELDS']['tab_rateslist'][] = array('id' => 'TAX_RATES', 'value' => $sVal, 'type' => 'custom', 'colspan' => true);
$this->IncludeComponentTemplate();
Ejemplo n.º 24
0
 private static function filterFields($fields, $method)
 {
     $result = array();
     if (!is_array($fields) || count($fields) === 0) {
         return $result;
     }
     if (!in_array($method, array('get', 'add', 'update', 'list'), true)) {
         return $result;
     }
     $bTaxMode = CCrmTax::isTaxMode();
     $fieldsInfo = self::getFieldsInfo();
     $allowedFields = array();
     foreach ($fieldsInfo as $fName => $fInfo) {
         if ($fInfo[$method] === true) {
             if ($fName !== 'PR_LOCATION') {
                 $allowedFields[] = $fName;
             } else {
                 if ($bTaxMode) {
                     $allowedFields[] = $fName;
                 }
             }
         }
     }
     unset($fName, $fInfo);
     foreach ($fields as $fName => $fValue) {
         if ($fName !== 'INVOICE_PROPERTIES' && $fName !== 'PRODUCT_ROWS' && in_array($fName, $allowedFields)) {
             $result[$fName] = CCrmInvoiceRestUtil::convertValue($method, $fieldsInfo[$fName]['type'], $fValue);
         }
     }
     if (isset($fields['INVOICE_PROPERTIES']) && is_array($fields['INVOICE_PROPERTIES']) && in_array('INVOICE_PROPERTIES', $allowedFields, true)) {
         $props = array();
         foreach ($fields['INVOICE_PROPERTIES'] as $k => $v) {
             if (!is_array($v)) {
                 $props[$k] = $v;
             }
         }
         if (count($props) > 0) {
             $result['INVOICE_PROPERTIES'] = $props;
         }
         unset($props, $k, $v);
     }
     if (isset($fields['PRODUCT_ROWS']) && is_array($fields['PRODUCT_ROWS']) && in_array('PRODUCT_ROWS', $allowedFields)) {
         $products = array();
         foreach ($fields['PRODUCT_ROWS'] as $productRow) {
             $row = array();
             foreach ($productRow as $k => $v) {
                 if (in_array('PRODUCT_ROWS.[].' . $k, $allowedFields, true)) {
                     $row[$k] = CCrmInvoiceRestUtil::convertValue($method, $fieldsInfo['PRODUCT_ROWS.[].' . $k]['type'], $v);
                 }
             }
             if (count($row) > 0) {
                 $row['CUSTOMIZED'] = 'Y';
                 // don't update price from catalog
                 $products[] = $row;
             }
         }
         if (count($products) > 0) {
             $result['PRODUCT_ROWS'] = $products;
         }
         unset($products, $productRow, $k, $v, $row);
     }
     unset($fieldsInfo);
     return $result;
 }