示例#1
2
 if (isset($arDeal['EXCH_RATE'])) {
     $arFields['~EXCH_RATE'] = $arFields['EXCH_RATE'] = doubleval($arDeal['EXCH_RATE']);
 }
 if (isset($arDeal['CURRENCY_ID'])) {
     $arFields['~CURRENCY_ID'] = $arDeal['CURRENCY_ID'];
     $arFields['CURRENCY_ID'] = htmlspecialcharsbx($arFields['~CURRENCY_ID']);
 }
 if (isset($arDeal['ACCOUNT_CURRENCY_ID'])) {
     $arFields['~ACCOUNT_CURRENCY_ID'] = $arDeal['ACCOUNT_CURRENCY_ID'];
     $arFields['ACCOUNT_CURRENCY_ID'] = htmlspecialcharsbx($arFields['~ACCOUNT_CURRENCY_ID']);
 }
 if (isset($arDeal['COMMENTS'])) {
     $arFields['~COMMENTS'] = $arDeal['COMMENTS'];
     $arFields['COMMENTS'] = htmlspecialcharsbx($arFields['~COMMENTS']);
 }
 $arDealProducts = CCrmDeal::LoadProductRows($dealId);
 if (is_array($arDealProducts) && count($arDealProducts) > 0) {
     foreach ($arDealProducts as $dealProduct) {
         $dealProduct['ID'] = 0;
     }
     unset($dealProduct);
     $arFields['PRODUCT_ROWS'] = $arResult['PRODUCT_ROWS'] = $arDealProducts;
 }
 unset($arDealProducts);
 // read product row settings
 $productRowSettings = array();
 $arDealProductRowSettings = CCrmProductRow::LoadSettings('D', $dealId);
 if (is_array($arDealProductRowSettings)) {
     $productRowSettings['ENABLE_DISCOUNT'] = isset($arDealProductRowSettings['ENABLE_DISCOUNT']) ? $arDealProductRowSettings['ENABLE_DISCOUNT'] : false;
     $productRowSettings['ENABLE_TAX'] = isset($arDealProductRowSettings['ENABLE_TAX']) ? $arDealProductRowSettings['ENABLE_TAX'] : false;
 }
示例#2
1
         $baseCurrencyID = "EUR";
     }
 }
 $arProducts = CCrmStatus::GetStatusList('PRODUCT', true);
 foreach ($arProducts as $prodCode => $prodName) {
     CCrmProduct::Add(array('NAME' => $prodName, 'ACTIVE' => 'Y', 'CURRENCY_ID' => $baseCurrencyID, 'PRICE' => 1, 'ORIGIN_ID' => 'CRM_PROD_' . $prodCode, 'ORIGINATOR_ID' => 'CRM_PRODUCT_REFERENCE'));
 }
 $rsDeals = CCrmDeal::GetListEx(array('ID' => 'ASC'), array("CHECK_PERMISSIONS" => "N"), false, false, array('ID', 'PRODUCT_ID', 'OPPORTUNITY', 'CURRENCY_ID'));
 while ($arDeal = $rsDeals->Fetch()) {
     $ID = isset($arDeal['ID']) ? intval($arDeal['ID']) : 0;
     if ($ID <= 0) {
         continue;
     }
     $productID = isset($arDeal['PRODUCT_ID']) ? $arDeal['PRODUCT_ID'] : '';
     if (isset($productID[0])) {
         $arProductRows = CCrmDeal::LoadProductRows($ID);
         if (count($arProductRows) > 0) {
             // Already converted
             continue;
         }
         $arProduct = CCrmProduct::GetByOriginID('CRM_PROD_' . $productID);
         if (!is_array($arProduct)) {
             continue;
         }
         $productID = isset($arProduct['ID']) ? $arProduct['ID'] : 0;
         if ($productID <= 0) {
             continue;
         }
         $arProductRows = array(array('PRODUCT_ID' => $productID, 'PRICE' => isset($arDeal['OPPORTUNITY']) ? doubleval($arDeal['OPPORTUNITY']) : 0.0, 'QUANTITY' => 1));
         CCrmDeal::SaveProductRows($ID, $arProductRows);
     }
示例#3
1
    $arDeal['PATH_TO_DEAL_EDIT'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DEAL_EDIT'], array('deal_id' => $iDealId));
    $arDeal['PATH_TO_CONTACT_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CONTACT_SHOW'], array('contact_id' => $arDeal['CONTACT_ID']));
    $arDeal['PATH_TO_COMPANY_SHOW'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_COMPANY_SHOW'], array('company_id' => $arDeal['COMPANY_ID']));
    $arDeal['CONTACT_NAME'] = CUser::FormatName(\Bitrix\Crm\Format\PersonNameFormatter::getFormat(), array('NAME' => $arDeal['NAME'], 'LAST_NAME' => $arDeal['LAST_NAME'], 'SECOND_NAME' => $arDeal['SECOND_NAME']), true, false);
    $strCard = '
<div class="bx-user-info-data-cont-video bx-user-info-fields" id="bx_user_info_data_cont_1">
	<div class="bx-user-info-data-name">
		<a href="' . $arDeal['PATH_TO_DEAL_SHOW'] . '">' . htmlspecialcharsbx($arDeal['TITLE']) . '</a>
	</div>
	<div class="bx-user-info-data-info">';
    if (!empty($arDeal['STAGE_ID'])) {
        $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_STAGE_ID') . '</span>:
		<span class="fields enumeration">' . $arResult['STAGE_LIST'][$arDeal['STAGE_ID']] . '</span>
		<br />';
    }
    $arProductRows = CCrmDeal::LoadProductRows($arDeal['ID']);
    if (count($arProductRows) > 0) {
        $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_PRODUCTS') . '</span>:<span class="fields enumeration">' . htmlspecialcharsbx(CCrmProductRow::RowsToString($arProductRows)) . '</span><br />';
    }
    if (!empty($arDeal['OPPORTUNITY'])) {
        $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_OPPORTUNITY') . '</span>:
		<span class="fields enumeration"><nobr>' . number_format($arDeal['OPPORTUNITY'], 2, ',', ' ') . ' ' . htmlspecialcharsbx(CCrmCurrency::GetCurrencyName($arDeal['CURRENCY_ID'])) . '</nobr></span>
		<br />';
    }
    if (!empty($arDeal['PROBABILITY'])) {
        $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_PROBABILITY') . '</span>:
		<span class="fields enumeration">' . intval($arDeal['PROBABILITY']) . '%</span>
		<br />';
    }
    $strCard .= '<span class="field-name">' . GetMessage('CRM_COLUMN_DATE_MODIFY') . '</span>:
		<span class="fields enumeration">' . FormatDate('x', MakeTimeStamp($arDeal['DATE_MODIFY']), time() + CTimeZone::GetOffset()) . '</span>
 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;
 }
示例#5
0
    if ($bInternal && isset($arParams['INTERNAL_CONTEXT']) && is_array($arParams['INTERNAL_CONTEXT'])) {
        $internalContext = $arParams['INTERNAL_CONTEXT'];
        if (isset($internalContext['CONTACT_ID'])) {
            $addParams['contact_id'] = $internalContext['CONTACT_ID'];
        }
        if (isset($internalContext['COMPANY_ID'])) {
            $addParams['company_id'] = $internalContext['COMPANY_ID'];
        }
    }
    if (!empty($addParams)) {
        $arResult['PATH_TO_DEAL_ADD'] = CHTTP::urlAddParams($arResult['PATH_TO_DEAL_ADD'], $addParams);
    }
}
if (isset($arResult['DEAL_ID']) && !empty($arResult['DEAL_ID'])) {
    // try to load product rows
    $arProductRows = CCrmDeal::LoadProductRows(array_keys($arResult['DEAL_ID']));
    foreach ($arProductRows as $arProductRow) {
        $ownerID = $arProductRow['OWNER_ID'];
        if (!isset($arResult['DEAL'][$ownerID])) {
            continue;
        }
        $arEntity =& $arResult['DEAL'][$ownerID];
        if (!isset($arEntity['PRODUCT_ROWS'])) {
            $arEntity['PRODUCT_ROWS'] = array();
        }
        $arEntity['PRODUCT_ROWS'][] = $arProductRow;
    }
    // checkig access for operation
    $arDealAttr = CCrmPerms::GetEntityAttr('DEAL', $arResult['DEAL_ID']);
    foreach ($arResult['DEAL_ID'] as $iDealId) {
        $arResult['DEAL'][$iDealId]['EDIT'] = $CCrmPerms->CheckEnityAccess('DEAL', 'WRITE', $arDealAttr[$iDealId]);
示例#6
0
    $arResult['TAX_INFOS'] = $taxInfo['ITEMS'];
    $sum = $arFields['~PRICE'];
    $arResult['SUM_BRUTTO'] = $sum;
    $arResult['SUM_NETTO'] = $sum - $taxInfo['SUM_EXCLUDED_FROM_PRICE'];
} elseif ($dealID > 0) {
    $recalculateData = array('ID' => 0, 'PAY_SYSTEM_ID' => $paySystemID, 'PERSON_TYPE_ID' => $personTypeID, 'INVOICE_PROPERTIES' => array(), 'PRODUCT_ROWS' => array());
    foreach ($properties as $propertyKey => &$propertyData) {
        $propertyFields = isset($propertyData['FIELDS']) ? $propertyData['FIELDS'] : null;
        $propertyID = is_array($propertyFields) && isset($propertyFields['ID']) ? $propertyFields['ID'] : '';
        if ($propertyID === '') {
            continue;
        }
        $recalculateData['INVOICE_PROPERTIES'][$propertyID] = isset($propertyData['VALUE']) ? $propertyData['VALUE'] : '';
    }
    unset($propertyData);
    $rows = CCrmDeal::LoadProductRows($dealID);
    $rowQty = count($rows);
    for ($i = 0; $i < $rowQty; $i++) {
        $row = $rows[$i];
        $price = isset($row['PRICE']) ? round(doubleval($row['PRICE']), 2) : 0.0;
        if ($dealCurrencyID !== $currencyID) {
            $price = CCrmCurrency::ConvertMoney($price, $dealCurrencyID, $currencyID);
        }
        $qty = isset($row['QUANTITY']) ? intval($row['QUANTITY']) : 0;
        $sum = $item['SUM'] = $price * $qty;
        $item = array('ID' => 0, 'PRODUCT_ID' => isset($row['PRODUCT_ID']) ? intval($row['PRODUCT_ID']) : 0, 'PRODUCT_NAME' => isset($row['PRODUCT_NAME']) ? $row['PRODUCT_NAME'] : '', 'PRICE' => $price, 'QUANTITY' => $qty, 'SUM' => $sum, 'IDX' => $i);
        $item['FORMATTED_PRICE'] = CCrmCurrency::MoneyToString($price, $currencyID);
        $item['FORMATTED_SUM'] = CCrmCurrency::MoneyToString($sum, $currencyID);
        $item['CURRENCY_ID'] = $currencyID;
        $recalculateData['PRODUCT_ROWS'][] =& $item;
        unset($item);
示例#7
0
 public function getProductRows($ID)
 {
     $ID = intval($ID);
     if ($ID <= 0) {
         throw new RestException('The parameter id is invalid or not defined.');
     }
     if (!CCrmDeal::CheckReadPermission($ID)) {
         throw new RestException('Access denied.');
     }
     return CCrmDeal::LoadProductRows($ID);
 }