if ($contextID === '' && isset($_REQUEST['context_id'])) { $contextID = $_REQUEST['context_id']; } if ($contextID === '') { $contextID = "{$uid}_{$entityID}"; } $arResult['CONTEXT_ID'] = $arParams['CONTEXT_ID'] = $contextID; //<-- CONTEXT_ID $dbFields = CCrmInvoice::GetList(array(), array('ID' => $entityID)); $arFields = $dbFields->GetNext(); if (!$arFields) { ShowError(GetMessage('CRM_INVOICE_VIEW_NOT_FOUND', array('#ID#' => $arParams['ENTITY_ID']))); return; } $arResult['PERMISSIONS'] = array('EDIT' => !$userPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'WRITE'), 'DELETE' => !$userPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'DELETE')); CCrmMobileHelper::PrepareInvoiceItem($arFields, $arParams, array(), array('ENABLE_MULTI_FIELDS' => true, 'ENABLE_PAYER_INFO' => true)); $accountNumber = isset($arFields['~ACCOUNT_NUMBER']) ? $arFields['~ACCOUNT_NUMBER'] : ''; if ($accountNumber === '') { $accountNumber = $arFields['~ID']; } $arResult['EMAIL_SUBJECT'] = GetMessage('CRM_INVOICE_VIEW_EMAIL_SUBJECT', array('#NUMBER#' => $accountNumber)); $dealID = $arFields['~DEAL_ID']; $contactID = $arFields['~CONTACT_ID']; $companyID = $arFields['~COMPANY_ID']; if ($contactID <= 0) { $arResult['CONTACT_CALLTO'] = $arFields['CONTACT_SHOW_URL'] = $arFields['CONTACT_EMAIL_EDIT_URL'] = ''; } else { $arResult['CONTACT_CALLTO'] = CCrmMobileHelper::PrepareCalltoParams(array('COMMUNICATION_LIST_URL_TEMPLATE' => $arParams['COMMUNICATION_LIST_URL_TEMPLATE'], 'ENTITY_TYPE_ID' => CCrmOwnerType::Contact, 'ENTITY_ID' => $contactID, 'FM' => $arFields['CONTACT_FM'])); $arFields['CONTACT_SHOW_URL'] = CComponentEngine::makePathFromTemplate($arParams['CONTACT_SHOW_URL_TEMPLATE'], array('contact_id' => $contactID)); $emailOwnerTypeName = CCrmOwnerType::ContactName; $emailOwnerID = $contactID;
$dbRes = CCrmInvoice::GetList($sort, $filter, false, $navParams, $select, array()); if (!is_object($dbRes)) { $arResult['NEXT_PAGE_URL'] = ''; } else { $dbRes->NavStart($navParams['nPageSize'], false); $arResult['PAGE_NAVNUM'] = intval($dbRes->NavNum); // pager index $arResult['PAGE_NUMBER'] = intval($dbRes->NavPageNomer); // current page index $arResult['PAGE_NAVCOUNT'] = intval($dbRes->NavPageCount); // page count $arResult['PAGER_PARAM'] = "PAGEN_{$arResult['PAGE_NAVNUM']}"; $arResult['PAGE_NEXT_NUMBER'] = $arResult['PAGE_NUMBER'] + 1; $enums = array(); while ($item = $dbRes->GetNext()) { CCrmMobileHelper::PrepareInvoiceItem($item, $arParams, $enums); $arResult['ITEMS'][] =& $item; unset($item); } //NEXT_PAGE_URL, SEARCH_PAGE_URL, SERVICE_URL --> if ($arResult['PAGE_NEXT_NUMBER'] > $arResult['PAGE_NAVCOUNT']) { $arResult['NEXT_PAGE_URL'] = ''; } else { $arResult['NEXT_PAGE_URL'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&PAGING=Y&FORMAT=json&SEARCH=' . ($enableSearch ? 'Y' : 'N') . '&' . $arResult['PAGER_PARAM'] . '=' . $arResult['PAGE_NEXT_NUMBER'], array('AJAX_CALL', 'PAGING', 'FORMAT', 'SEARCH', $arResult['PAGER_PARAM'])); } } $arResult['SEARCH_PAGE_URL'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&SEARCH=Y&FORMAT=json&apply_filter=Y&save=Y', array('AJAX_CALL', 'SEARCH', 'FORMAT', 'save', 'apply_filter', 'clear_filter')); $arResult['SERVICE_URL'] = $arParams["SERVICE_URL"] ? $arParams["SERVICE_URL"] : SITE_DIR . 'bitrix/components/bitrix/mobile.crm.invoice.edit/ajax.php?siteID=' . SITE_ID . '&' . bitrix_sessid_get(); //<-- NEXT_PAGE_URL, SEARCH_PAGE_URL, SERVICE_URL $arResult['PERMISSIONS'] = array('CREATE' => !$userPerms->HavePerm('INVOICE', BX_CRM_PERM_NONE, 'ADD')); $arResult['CREATE_URL'] = $arParams['INVOICE_EDIT_URL_TEMPLATE'] !== '' ? CComponentEngine::makePathFromTemplate($arParams['INVOICE_EDIT_URL_TEMPLATE'], array('invoice_id' => 0)) : '';
$paySystemID = $arFields['~PAY_SYSTEM_ID'] = $arFields['PAY_SYSTEM_ID'] = array_shift(array_keys($arResult['PAY_SYSTEMS'])); } //<-- PAY_SYSTEM // INVOICE_PROPERTIES --> $arFields['INVOICE_PROPERTIES'] = array(); $properties = CCrmInvoice::GetProperties($entityID, $personTypeID); if (!is_array($properties)) { $properties = array(); } if ($entityID === 0) { CCrmInvoice::__RewritePayerInfo($companyID, $contactID, $properties); } $arFields['INVOICE_PROPERTIES'] = $properties; $arResult['PAYER_REQUISITES'] = $personTypeID > 0 ? CCrmMobileHelper::PrepareInvoiceClientRequisites($personTypeID, $properties) : array(); //<-- INVOICE_PROPERTIES CCrmMobileHelper::PrepareInvoiceItem($arFields, $arParams, array('PAY_SYSTEMS' => $arResult['PAY_SYSTEMS'], 'INVOICE_PROPERTIES' => $properties), array('ENABLE_MULTI_FIELDS' => true, 'ENABLE_PAYER_INFO' => true, 'ENABLE_LOCATION' => true)); $arResult['ENABLE_LOCATION'] = $taxMode === 'EXT'; // PRODUCT_ROWS, TAX_INFOS, SUM_BRUTTO, SUM_NETTO --> $arResult['PRODUCT_ROWS'] = array(); if ($entityID > 0) { $rows = CCrmInvoice::GetProductRows($entityID); foreach ($rows as &$row) { $price = isset($row['PRICE']) ? round(doubleval($row['PRICE']), 2) : 0.0; $qty = isset($row['QUANTITY']) ? intval($row['QUANTITY']) : 0; $sum = $item['SUM'] = $price * $qty; $item = array('ID' => isset($row['ID']) ? intval($row['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, 'VAT_RATE' => isset($row['VAT_RATE']) ? round(doubleval($row['VAT_RATE']) * 100, 2) : 0.0); $item['FORMATTED_PRICE'] = CCrmCurrency::MoneyToString($price, $currencyID); $item['FORMATTED_SUM'] = CCrmCurrency::MoneyToString($sum, $currencyID); $item['CURRENCY_ID'] = $currencyID; $arResult['PRODUCT_ROWS'][] =& $item; unset($item);
$statusParams['PAY_VOUCHER_NUM'] = isset($additionalData['PAYMENT_DOC']) ? substr(trim($additionalData['PAYMENT_DOC']), 0, 20) : ''; $statusParams['REASON_MARKED'] = isset($additionalData['PAYMENT_COMMENT']) ? substr(trim($additionalData['PAYMENT_COMMENT']), 0, 255) : ''; } elseif ($isFail) { $timestamp = isset($additionalData['CANCEL_TIME_STAMP']) ? max(intval($additionalData['CANCEL_TIME_STAMP']), 0) : 0; $statusParams['DATE_MARKED'] = $timestamp > 0 ? ConvertTimeStamp($timestamp, 'SHORT', SITE_ID) : null; $statusParams['REASON_MARKED'] = isset($additionalData['CANCEL_REASON']) ? substr(trim($additionalData['CANCEL_REASON']), 0, 255) : ''; } //$DB->StartTransaction(); $CCrmInvoice = new CCrmInvoice(false); $successed = $CCrmInvoice->SetStatus($ID, $statusID, $statusParams); if ($successed) { //$DB->Commit(); $dbRes = CCrmInvoice::GetList(array(), array('ID' => $ID)); $currentItem = $dbRes->GetNext(); $formatParams = isset($_REQUEST['FORMAT_PARAMS']) ? $_REQUEST['FORMAT_PARAMS'] : array(); CCrmMobileHelper::PrepareInvoiceItem($currentItem, $formatParams, array(), array('ENABLE_MULTI_FIELDS' => true, 'ENABLE_PAYER_INFO' => true)); __CrmMobileInvoiceEditEndResonse(array('SAVED_ENTITY_ID' => $ID, 'SAVED_ENTITY_DATA' => CCrmMobileHelper::PrepareInvoiceData($currentItem))); } else { //$DB->Rollback(); __CrmMobileInvoiceEditEndResonse(array('ERROR' => GetMessage('CRM_INVOICE_COULD_NOT_SAVE_STATUS'))); } } elseif ($action === 'RECALCULATE') { // Refresh invoice data according to client settings __IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__)); $data = isset($_REQUEST['SOURCE_DATA']) && is_array($_REQUEST['SOURCE_DATA']) ? $_REQUEST['SOURCE_DATA'] : array(); if (count($data) == 0) { __CrmMobileInvoiceEditEndResonse(array('ERROR' => GetMessage('CRM_ENTITY_DATA_NOT_FOUND'))); } $enablePayerInfo = isset($data['ENABLE_PAYER_INFO']) ? strtoupper($data['ENABLE_PAYER_INFO']) === "Y" : false; $enableProductRows = isset($data['ENABLE_PRODUCT_ROWS']) ? strtoupper($data['ENABLE_PRODUCT_ROWS']) === "Y" : false; $productRows = $enableProductRows && isset($data['PRODUCT_ROWS']) && is_array($data['PRODUCT_ROWS']) ? $data['PRODUCT_ROWS'] : array();