public static function PreparePopupItems($currencyID = '', $count = 50, $enableRawPrices = false) { $currencyID = strval($currencyID); if (!isset($currencyID[0])) { $currencyID = CCrmCurrency::GetBaseCurrencyID(); } $count = intval($count); if ($count <= 0) { $count = 50; } $arSelect = array('ID', 'NAME', 'PRICE', 'CURRENCY_ID'); $arPricesSelect = $arVatsSelect = array(); $arSelect = CCrmProduct::DistributeProductSelect($arSelect, $arPricesSelect, $arVatsSelect); $rs = CCrmProduct::GetList(array('ID' => 'DESC'), array('ACTIVE' => 'Y', 'CATALOG_ID' => CCrmCatalog::EnsureDefaultExists()), $arSelect, $count); $arProducts = array(); $arProductId = array(); while ($product = $rs->Fetch()) { foreach ($arPricesSelect as $fieldName) { $product[$fieldName] = null; } foreach ($arVatsSelect as $fieldName) { $product[$fieldName] = null; } $arProductId[] = $product['ID']; $arProducts[$product['ID']] = $product; } CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect, $enableRawPrices); $measureInfos = \Bitrix\Crm\Measure::getProductMeasures($arProductId); $productVatInfos = CCrmProduct::PrepareCatalogProductFields($arProductId); unset($arProductId, $arPricesSelect, $arVatsSelect); $defaultMeasureInfo = \Bitrix\Crm\Measure::getDefaultMeasure(); $result = array(); foreach ($arProducts as $productID => &$product) { if ($currencyID != $product['CURRENCY_ID']) { $product['PRICE'] = CCrmCurrency::ConvertMoney($product['PRICE'], $product['CURRENCY_ID'], $currencyID); $product['CURRENCY_ID'] = $currencyID; } $customData = array('price' => $product['PRICE']); if (isset($measureInfos[$productID]) && !empty($measureInfos[$productID])) { $measureIfo = $measureInfos[$productID][0]; $customData['measure'] = array('code' => $measureIfo['CODE'], 'name' => $measureIfo['SYMBOL']); } elseif ($defaultMeasureInfo !== null) { $customData['measure'] = array('code' => $defaultMeasureInfo['CODE'], 'name' => $defaultMeasureInfo['SYMBOL']); } if (isset($productVatInfos[$productID])) { $productVatInfo = $productVatInfos[$productID]; $customData['tax'] = array('id' => $productVatInfo['TAX_ID'], 'included' => $enableRawPrices && $productVatInfo['TAX_INCLUDED']); } $result[] = array('title' => $product['NAME'], 'desc' => CCrmProduct::FormatPrice($product), 'id' => $product['ID'], 'url' => '', 'type' => 'product', 'selected' => false, 'customData' => &$customData); unset($customData); } unset($product, $arProducts); return $result; }
private static function ConvertMoney($sum, $srcCurrencyID, $dstCurrencyID) { if (CModule::IncludeModule('currency')) { return CCrmCurrency::ConvertMoney($sum, $srcCurrencyID, $dstCurrencyID); } $exchRate = 1.0; // Using hardcoded exchange rates for Rub if ($srcCurrencyID === 'RUB') { if ($dstCurrencyID === 'EUR') { $exchRate = 39.4; } elseif ($dstCurrencyID === 'USD') { $exchRate = 31.0; } elseif ($dstCurrencyID === 'UAH') { $exchRate = 3.9; } } return round($sum / $exchRate, 2); }
public static function PrepareAccountingData($arFields) { $accountCurrencyID = CCrmCurrency::GetAccountCurrencyID(); if (!isset($accountCurrencyID[0])) { return false; } $currencyID = isset($arFields['CURRENCY_ID']) ? strval($arFields['CURRENCY_ID']) : ''; if (!CCrmCurrency::GetByID($currencyID)) { // Currency is invalid or not assigned return false; } if ($currencyID === $accountCurrencyID) { // Avoid conversion to float since possible data lost return array('ACCOUNT_CURRENCY_ID' => $accountCurrencyID, 'ACCOUNT_SUM' => isset($arFields['SUM']) ? $arFields['SUM'] : 0.0); } $account = CCrmCurrency::ConvertMoney(isset($arFields['SUM']) ? doubleval($arFields['SUM']) : 0.0, $currencyID, $accountCurrencyID, isset($arFields['EXCH_RATE']) ? doubleval($arFields['EXCH_RATE']) : -1); return array('ACCOUNT_CURRENCY_ID' => $accountCurrencyID, 'ACCOUNT_SUM' => $account); }
$stageID = isset($data['STAGE_ID']) ? $data['STAGE_ID'] : ''; if ($stageID === '') { __CrmMobileDealEditEndResonse(array('ERROR' => GetMessage('CRM_DEAL_STAGE_NOT_FOUND'))); } //$DB->StartTransaction(); $fields = array('STAGE_ID' => $stageID); $entity = new CCrmDeal(false); $successed = $entity->Update($ID, $fields, true, true, array()); if ($successed) { //$DB->Commit(); $errors = array(); CCrmBizProcHelper::AutoStartWorkflows(CCrmOwnerType::Deal, $ID, CCrmBizProcEventType::Edit, $errors); $dbRes = CCrmDeal::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => 'N')); $currentItem = $dbRes->GetNext(); $formatParams = isset($_REQUEST['FORMAT_PARAMS']) ? $_REQUEST['FORMAT_PARAMS'] : array(); CCrmMobileHelper::PrepareDealItem($currentItem, $formatParams); __CrmMobileDealEditEndResonse(array('SAVED_ENTITY_ID' => $ID, 'SAVED_ENTITY_DATA' => CCrmMobileHelper::PrepareDealData($currentItem))); } else { //$DB->Rollback(); __CrmMobileDealEditEndResonse(array('ERROR' => $fields['RESULT_MESSAGE'])); } } elseif ($action === 'CONVERT_MONEY') { __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__)); $srcCurrencyID = isset($_REQUEST['SRC_CURRENCY_ID']) ? $_REQUEST['SRC_CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $dstCurrencyID = isset($_REQUEST['DST_CURRENCY_ID']) ? $_REQUEST['DST_CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $srcSum = isset($_REQUEST['SUM']) ? doubleval($_REQUEST['SUM']) : 0.0; $dstSum = CCrmCurrency::ConvertMoney($srcSum, $srcCurrencyID, $dstCurrencyID); __CrmMobileDealEditEndResonse(array('SUM' => $dstSum, 'CURRENCY_ID' => $dstCurrencyID, 'CURRENCY_NAME' => CCrmCurrency::GetCurrencyName($dstCurrencyID), 'FORMATTED_SUM' => CCrmCurrency::MoneyToString($dstSum, $dstCurrencyID))); } else { __CrmMobileDealEditEndResonse(array('ERROR' => 'Action is not supported in current context.')); }
} } if ($bAjax || $bAjaxSubmit) { $APPLICATION->RestartBuffer(); $ajaxResponse = array('err' => '', 'productId' => 0, 'productData' => array()); if (isset($err[0])) { $ajaxResponse['err'] = $err; } else { $ajaxResponse['productId'] = $productID; $dbRes = CCrmProduct::GetList(array(), array('ID' => $productID, '~REAL_PRICE' => true), array('ID', 'NAME', 'ACTIVE', 'PRICE', 'CURRENCY_ID', 'MEASURE', 'VAT_ID', 'VAT_INCLUDED'), array('nTopCount' => 1)); if ($row = $dbRes->Fetch()) { if ($row['ACTIVE'] === 'Y') { $currencyTo = isset($_POST['currencyTo']) ? $_POST['currencyTo'] : ''; $currencyFrom = isset($row['CURRENCY_ID']) ? $row['CURRENCY_ID'] : ''; if (strlen($currencyFrom) > 0 && strlen($currencyTo) > 0 && $currencyFrom !== $currencyTo) { $row['PRICE'] = CCrmCurrency::ConvertMoney(doubleval($row['PRICE']), $currencyFrom, $currencyTo); } $ajaxResponse['productData'] = $row; $measureInfo = array(); if (isset($row['MEASURE']) && intval($row['MEASURE']) > 0) { $measureInfo = \Bitrix\Crm\Measure::getProductMeasures(intval($row['ID'])); $measureInfo = $measureInfo[intval($row['ID'])][0]; } else { $measureInfo = \Bitrix\Crm\Measure::getDefaultMeasure(); } if (is_array($measureInfo) && isset($measureInfo['CODE']) && isset($measureInfo['SYMBOL'])) { $ajaxResponse['measureData'] = array('code' => $measureInfo['CODE'], 'name' => $measureInfo['SYMBOL']); } } } unset($dbRes, $row);
$arSort['NAME'][] = $nameUpper; $arSort['ID'][] = $arRes['ID']; } array_multisort($arSort['RANK1'], SORT_NUMERIC, SORT_ASC, $arSort['NAME'], SORT_STRING, SORT_ASC, $arSort['ID'], SORT_NUMERIC, SORT_ASC); unset($arSort['RANK1'], $arSort['NAME']); CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect, $enableRawPrices); $measureInfos = \Bitrix\Crm\Measure::getProductMeasures($arProductId); $productVatInfos = CCrmProduct::PrepareCatalogProductFields($arProductId); unset($arProductId); $defaultMeasureInfo = \Bitrix\Crm\Measure::getDefaultMeasure(); $i = 0; foreach ($arSort['ID'] as $id) { $arRes = $arProducts[$id]; $srcCurrencyID = isset($arRes['CURRENCY_ID']) ? $arRes['CURRENCY_ID'] : 0; if (strlen($dstCurrencyID) > 0 && strlen($srcCurrencyID) > 0 && $dstCurrencyID != $srcCurrencyID) { $arRes['PRICE'] = CCrmCurrency::ConvertMoney($arRes['PRICE'], $srcCurrencyID, $dstCurrencyID); $arRes['CURRENCY_ID'] = $dstCurrencyID; } $productID = $arRes['ID']; $customData = array('price' => $arRes['PRICE']); if (isset($measureInfos[$productID]) && !empty($measureInfos[$productID])) { $measureIfo = $measureInfos[$productID][0]; $customData['measure'] = array('code' => $measureIfo['CODE'], 'name' => $measureIfo['SYMBOL']); } elseif ($defaultMeasureInfo !== null) { $customData['measure'] = array('code' => $defaultMeasureInfo['CODE'], 'name' => $defaultMeasureInfo['SYMBOL']); } if (isset($productVatInfos[$productID])) { $productVatInfo = $productVatInfos[$productID]; $customData['tax'] = array('id' => $productVatInfo['TAX_ID'], 'included' => $enableRawPrices && $productVatInfo['TAX_INCLUDED']); } $arData[] = array('id' => $multi ? 'PROD_' . $arRes['ID'] : $arRes['ID'], 'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_product_show'), array('product_id' => $arRes['ID'])), 'title' => $arRes['NAME'], 'desc' => CCrmProduct::FormatPrice($arRes), 'type' => 'product', 'customData' => &$customData);
Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); echo CUtil::PhpToJsObject(array('CURRENCY_ID' => $dstCurrencyID, 'CURRENCY_FORMAT' => CCrmCurrency::GetCurrencyFormatString($dstCurrencyID), 'EXCH_RATE' => CCrmCurrency::GetExchangeRate($dstCurrencyID), 'PRODUCTS' => $arProducts, 'PRODUCT_POPUP_ITEMS' => CCrmProductHelper::PreparePopupItems($dstCurrencyID))); } elseif ($mode === 'CONVERT_MONEY') { if ($perms->HavePerm($ownerName, BX_CRM_PERM_NONE, 'READ')) { echo CUtil::PhpToJSObject(array('ERROR' => 'PERMISSION_DENIED')); die; } $data = isset($_POST['DATA']) && is_array($_POST['DATA']) ? $_POST['DATA'] : array(); if (count($data) == 0) { echo CUtil::PhpToJSObject(array('ERROR' => 'SOURCE_DATA_NOT_FOUND')); die; } $srcSum = isset($data['SRC_SUM']) ? doubleval($data['SRC_SUM']) : 0.0; $srcCurrencyID = isset($data['SRC_CURRENCY_ID']) && strlen(strval($data['SRC_CURRENCY_ID'])) > 0 ? strval($data['SRC_CURRENCY_ID']) : CCrmCurrency::GetBaseCurrencyID(); $dstCurrencyID = isset($data['DST_CURRENCY_ID']) && strlen(strval($data['DST_CURRENCY_ID'])) > 0 ? strval($data['DST_CURRENCY_ID']) : CCrmCurrency::GetBaseCurrencyID(); echo CUtil::PhpToJSObject(array('SUM' => CCrmCurrency::ConvertMoney($srcSum, $srcCurrencyID, $dstCurrencyID))); } elseif ($mode === 'ADD_PRODUCT') { // 'OWNER_TYPE':'D', 'OWNER_ID':7 'PRODUCT_ID':100, 'QTY':1, 'CURRENCY_ID':1 'PRICE':100.50 if ($perms->HavePerm($ownerName, BX_CRM_PERM_NONE, 'WRITE')) { echo CUtil::PhpToJSObject(array('ERROR' => 'PERMISSION_DENIED')); die; } if ($ownerID <= 0) { echo CUtil::PhpToJSObject(array('ERROR' => 'OWNER_ID_NOT_FOUND')); die; } // 'OWNER_TYPE':'D', 'OWNER_ID':7 'PRODUCT_ID':100, 'QTY':1, 'CURRENCY_ID':1 'PRICE':100.50 $fields = array('OWNER_TYPE' => $ownerType, 'OWNER_ID' => $ownerID); // Custom products are allowed (PRODUCT_ID === 0) $fields['PRODUCT_ID'] = isset($_POST['PRODUCT_ID']) ? intval($_POST['PRODUCT_ID']) : 0; if ($fields['PRODUCT_ID'] < 0) {
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); } $orderData = CCrmInvoice::QuickRecalculate($recalculateData); if (empty($orderData)) { $arResult['TAX_INFOS'] = array(); $arResult['SUM_BRUTTO'] = $arResult['SUM_NETTO'] = 0.0; } else {
public static function ProductRows2BasketItems($arProductRows, $srcCurrencyID = '', $dstCurrencyID = '') { $basketItems = array(); $srcCurrencyID = strval($srcCurrencyID); $dstCurrencyID = strval($dstCurrencyID); if (strlen($srcCurrencyID) <= 0 || strlen($dstCurrencyID) <= 0) { $srcCurrencyID = $dstCurrencyID = ''; } foreach ($arProductRows as $row) { $freshRow = array(); $freshRow['ID'] = isset($row['ID']) ? intval($row['ID']) : 0; $freshRow['PRODUCT_ID'] = isset($row['PRODUCT_ID']) ? intval($row['PRODUCT_ID']) : 0; $freshRow['PRODUCT_NAME'] = isset($row['PRODUCT_NAME']) ? strval($row['PRODUCT_NAME']) : ''; $freshRow['QUANTITY'] = isset($row['QUANTITY']) ? round(doubleval($row['QUANTITY']), 2) : 0.0; $freshRow['PRICE'] = isset($row['PRICE']) ? round(doubleval($row['PRICE']), 2) : 0.0; if ($dstCurrencyID != $srcCurrencyID) { $freshRow['PRICE'] = CCrmCurrency::ConvertMoney($freshRow['PRICE'], $srcCurrencyID, $dstCurrencyID); } $taxRate = isset($row['TAX_RATE']) ? round(doubleval($row['TAX_RATE']), 2) : 0.0; $freshRow['VAT_RATE'] = $taxRate / 100; $discountTypeID = isset($row['DISCOUNT_TYPE_ID']) ? intval($row['DISCOUNT_TYPE_ID']) : \Bitrix\Crm\Discount::UNDEFINED; if ($discountTypeID !== \Bitrix\Crm\Discount::PERCENTAGE && $discountTypeID !== \Bitrix\Crm\Discount::MONETARY) { $discountTypeID = \Bitrix\Crm\Discount::PERCENTAGE; } if ($discountTypeID === \Bitrix\Crm\Discount::PERCENTAGE) { $discountRate = isset($row['DISCOUNT_RATE']) ? round(doubleval($row['DISCOUNT_RATE']), 2) : 0.0; $exclusivePrice = CCrmProductRow::CalculateExclusivePrice($freshRow['PRICE'], $taxRate); $freshRow['DISCOUNT_PRICE'] = round(\Bitrix\Crm\Discount::calculateDiscountSum($exclusivePrice, $discountRate), 2); } else { $freshRow['DISCOUNT_PRICE'] = isset($row['DISCOUNT_SUM']) ? round(doubleval($row['DISCOUNT_SUM']), 2) : 0.0; if ($dstCurrencyID != $srcCurrencyID) { $freshRow['DISCOUNT_PRICE'] = CCrmCurrency::ConvertMoney($freshRow['DISCOUNT_PRICE'], $srcCurrencyID, $dstCurrencyID); } } $freshRow['MEASURE_CODE'] = isset($row['MEASURE_CODE']) ? intval($row['MEASURE_CODE']) : 0; $freshRow['MEASURE_NAME'] = isset($row['MEASURE_NAME']) ? strval($row['MEASURE_NAME']) : ''; $freshRow['CUSTOMIZED'] = isset($row['CUSTOMIZED']) ? $row['CUSTOMIZED'] === 'Y' ? 'Y' : 'N' : 'Y'; $basketItems[] = $freshRow; } return $basketItems; }
public static function PrepareProductItem(&$item, &$params) { $sectionID = $item['~SECTION_ID'] = isset($item['SECTION_ID']) ? intval($item['SECTION_ID']) : 0; if ($sectionID <= 0) { $item['~SECTION_NAME'] = $item['SECTION_NAME'] = ''; } else { $sections = isset($params['SECTIONS']) ? $params['SECTIONS'] : array(); $item['~SECTION_NAME'] = isset($sections[$sectionID]) ? $sections[$sectionID]['NAME'] : ''; $item['SECTION_NAME'] = htmlspecialcharsbx($item['~SECTION_NAME']); } $price = $item['~PRICE'] = isset($item['~PRICE']) ? doubleval($item['~PRICE']) : 0.0; $srcCurrencyID = $item['~CURRENCY_ID'] = isset($item['~CURRENCY_ID']) ? $item['~CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $dstCurrencyID = isset($params['CURRENCY_ID']) ? $params['CURRENCY_ID'] : ''; if ($dstCurrencyID === '') { $dstCurrencyID = $srcCurrencyID; } if ($dstCurrencyID !== $srcCurrencyID) { $item['~CURRENCY_ID'] = $dstCurrencyID; $item['CURRENCY_ID'] = htmlspecialcharsbx($dstCurrencyID); $price = CCrmCurrency::ConvertMoney($price, $srcCurrencyID, $dstCurrencyID); } $item['FORMATTED_PRICE'] = CCrmCurrency::MoneyToString($price, $dstCurrencyID); }
} else { $quantity = isset($_REQUEST['QUANTITY']) ? intval($_REQUEST['QUANTITY']) : 0; $price = isset($_REQUEST['PRICE']) ? doubleval($_REQUEST['PRICE']) : 0.0; __CrmMobileProductRowEditEndResonse(array('QUANTITY' => $quantity, 'PRICE' => $price, 'CURRENCY_ID' => $currencyID, 'FORMATTED_PRICE' => CCrmCurrency::MoneyToString($price, $currencyID), 'FORMATTED_SUM' => CCrmCurrency::MoneyToString($price * $quantity, $currencyID))); } } elseif ($action === 'CONVERT') { $ownerType = isset($_REQUEST['OWNER_TYPE']) ? $_REQUEST['OWNER_TYPE'] : ''; $ownerTypeName = CCrmOwnerTypeAbbr::ResolveName($ownerType); if (!CCrmAuthorizationHelper::CheckReadPermission($ownerTypeName, 0, $userPerms)) { die; } $srcCurrencyID = isset($_REQUEST['SRC_CURRENCY_ID']) ? $_REQUEST['SRC_CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $dstCurrencyID = isset($_REQUEST['DST_CURRENCY_ID']) ? $_REQUEST['DST_CURRENCY_ID'] : CCrmCurrency::GetBaseCurrencyID(); $items = isset($_REQUEST['ITEMS']) && is_array($_REQUEST['ITEMS']) ? $_REQUEST['ITEMS'] : array(); $result = array(); $sumTotal = 0.0; if (!empty($items)) { foreach ($items as &$item) { $quantity = isset($item['QUANTITY']) ? intval($item['QUANTITY']) : 1; $price = isset($item['PRICE']) ? doubleval($item['PRICE']) : 0.0; $price = $price > 0.0 ? CCrmCurrency::ConvertMoney($price, $srcCurrencyID, $dstCurrencyID) : 0.0; $sum = $price * $quantity; $sumTotal += $sum; $result[] = array('QUANTITY' => $quantity, 'PRICE' => $price, 'CURRENCY_ID' => $dstCurrencyID, 'FORMATTED_PRICE' => CCrmCurrency::MoneyToString($price, $dstCurrencyID), 'FORMATTED_SUM' => CCrmCurrency::MoneyToString($sum, $dstCurrencyID)); } unset($item); } __CrmMobileProductRowEditEndResonse(array('ITEMS' => $result, 'SUM_TOTAL' => $sumTotal, 'FORMATTED_SUM_TOTAL' => CCrmCurrency::MoneyToString($sumTotal, $dstCurrencyID))); } else { __CrmMobileProductRowEditEndResonse(array('ERROR' => 'Action is not supported in current context.')); }
$arInvoice['PATH_TO_INVOICE_DELETE'] = CHTTP::urlAddParams($bInternal ? $APPLICATION->GetCurPage() : $arParams['PATH_TO_INVOICE_LIST'], array('action_' . $arResult['GRID_ID'] => 'delete', 'ID' => $entityID, 'sessid' => bitrix_sessid())); if (empty($arInvoice['~CURRENCY'])) { $arInvoice['~CURRENCY'] = $currencyID; $arInvoice['CURRENCY'] = htmlspecialcharsbx($currencyID); } $arInvoice['FORMATTED_PRICE'] = "<nobr>" . CCrmCurrency::MoneyToString($arInvoice['~PRICE'], $arInvoice['~CURRENCY']) . '</nobr>'; $arInvoice['FORMATTED_TAX_VALUE'] = "<nobr>" . CCrmCurrency::MoneyToString($arInvoice['~TAX_VALUE'], $arInvoice['~CURRENCY']) . '</nobr>'; $isStatusNeutral = false; $isStatusSuccess = CCrmStatusInvoice::isStatusSuccess($arInvoice['~STATUS_ID']); if (!$isStatusSuccess) { $isStatusNeutral = CCrmStatusInvoice::isStatusNeutral($arInvoice['~STATUS_ID']); } // calculate paid sum if ($isStatusSuccess) { $totalPaidNumber++; $totalPaidSum += CCrmCurrency::ConvertMoney($arInvoice['~PRICE'], $arInvoice['~CURRENCY'], $totalPaidCurrencyId); } // color coding $arInvoice['INVOICE_EXPIRED_FLAG'] = false; $arInvoice['INVOICE_IN_COUNTER_FLAG'] = false; if ($isStatusNeutral && !empty($arInvoice['DATE_PAY_BEFORE'])) { $tsDatePayBefore = MakeTimeStamp($arInvoice['DATE_PAY_BEFORE']); $tsNow = time() + CTimeZone::GetOffset(); $tsMax = mktime(00, 00, 00, date('m', $tsNow), date('d', $tsNow), date('Y', $tsNow)); if ($tsDatePayBefore < $tsMax) { $arInvoice['INVOICE_EXPIRED_FLAG'] = true; } if ($currentUserID > 0 && $currentUserID === intval($arInvoice['RESPONSIBLE_ID'])) { if ($tsDatePayBefore <= $tsMax) { $arInvoice['INVOICE_IN_COUNTER_FLAG'] = true; }