public static function PrepareInvoiceData(&$fields)
 {
     $statusID = $fields['~STATUS_ID'];
     $success = CCrmStatusInvoice::isStatusSuccess($statusID);
     $failed = CCrmStatusInvoice::isStatusFailed($statusID);
     $paymentTimeStamp = 0;
     $paymentDate = '';
     $paymentDoc = '';
     $paymentComment = '';
     $cancelTimeStamp = 0;
     $cancelDate = '';
     $cancelReason = '';
     if ($success) {
         $paymentTimeStamp = MakeTimeStamp($fields['~PAY_VOUCHER_DATE']);
         $paymentDate = isset($fields['~PAY_VOUCHER_DATE']) ? ConvertTimeStamp($paymentTimeStamp, 'SHORT', SITE_ID) : '';
         $paymentDoc = isset($fields['~PAY_VOUCHER_NUM']) ? $fields['~PAY_VOUCHER_NUM'] : '';
         $paymentComment = isset($fields['~REASON_MARKED']) ? $fields['~REASON_MARKED'] : '';
     } else {
         $cancelTimeStamp = MakeTimeStamp($fields['~DATE_MARKED']);
         $cancelDate = isset($fields['~DATE_MARKED']) ? ConvertTimeStamp($cancelTimeStamp, 'SHORT', SITE_ID) : '';
         $cancelReason = isset($fields['~REASON_MARKED']) ? $fields['~REASON_MARKED'] : '';
     }
     return array('ID' => $fields['~ID'], 'SHOW_URL' => $fields['SHOW_URL'], 'EDIT_URL' => isset($fields['EDIT_URL']) ? $fields['EDIT_URL'] : '', 'ACCOUNT_NUMBER' => $fields['~ACCOUNT_NUMBER'], 'ORDER_TOPIC' => $fields['~ORDER_TOPIC'], 'STATUS_ID' => $statusID, 'STATUS_TEXT' => $fields['~STATUS_TEXT'], 'PRICE' => $fields['~PRICE'], 'CURRENCY' => $fields['~CURRENCY'], 'FORMATTED_PRICE' => $fields['~FORMATTED_PRICE'], 'DEAL_ID' => $fields['~DEAL_ID'], 'DEAL_TITLE' => $fields['~DEAL_TITLE'], 'CONTACT_ID' => $fields['~CONTACT_ID'], 'CONTACT_FULL_NAME' => $fields['~CONTACT_FULL_NAME'], 'COMPANY_ID' => $fields['~COMPANY_ID'], 'COMPANY_TITLE' => $fields['~COMPANY_TITLE'], 'PAYMENT_TIME_STAMP' => $paymentTimeStamp, 'PAYMENT_DATE' => $paymentDate, 'PAYMENT_DOC' => $paymentDoc, 'PAYMENT_COMMENT' => $paymentComment, 'CANCEL_TIME_STAMP' => $cancelTimeStamp, 'CANCEL_DATE' => $cancelDate, 'CANCEL_REASON' => $cancelReason, 'IS_FINISHED' => $success || $failed, 'IS_SUCCESSED' => $success);
 }
Exemple #2
0
    $arFields['STATUS_TEXT'] = isset($arFields['STATUS_ID']) && isset($arResult['STATUS_LIST'][$arFields['STATUS_ID']]) ? $arResult['STATUS_LIST'][$arFields['STATUS_ID']] : '';
}
$arResult['ELEMENT'] = $arFields;
unset($arFields);
if (empty($arResult['ELEMENT']['ID'])) {
    LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_INVOICE_LIST'], array()));
}
$bTaxMode = CCrmTax::isTaxMode();
$bStatusSuccess = false;
$bStatusFailed = false;
if (isset($arResult['ELEMENT']['STATUS_ID']) && $arResult['ELEMENT']['STATUS_ID'] !== '') {
    $bStatusSuccess = CCrmStatusInvoice::isStatusSuccess($arResult['ELEMENT']['STATUS_ID']);
    if ($bStatusSuccess) {
        $bStatusFailed = false;
    } else {
        $bStatusFailed = CCrmStatusInvoice::isStatusFailed($arResult['ELEMENT']['STATUS_ID']);
    }
}
$arResult['STATUS_SUCCESS'] = $arResult['ELEMENT']['STATUS_SUCCESS'] = $bStatusSuccess ? 'Y' : 'N';
$arResult['STATUS_FAILED'] = $arResult['ELEMENT']['STATUS_FAILED'] = $bStatusFailed ? 'Y' : 'N';
$arResult['ELEMENT']['REASON_MARKED_SUCCESS'] = $bStatusSuccess ? $arResult['ELEMENT']['REASON_MARKED'] : '';
if (!$bStatusFailed) {
    $arResult['ELEMENT']['REASON_MARKED'] = '';
}
$currencyID = isset($arResult['ELEMENT']['CURRENCY']) ? $arResult['ELEMENT']['CURRENCY'] : CCrmInvoice::GetCurrencyID();
$dealID = isset($arResult['ELEMENT']['UF_DEAL_ID']) ? $arResult['ELEMENT']['UF_DEAL_ID'] : 0;
$arResult['PATH_TO_DEAL_SHOW'] = $arResult['ELEMENT']['UF_DEAL_SHOW_URL'] = $dealID > 0 ? CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_DEAL_SHOW'], array('deal_id' => $dealID)) : '';
if ($dealID > 0) {
    $arResult['ELEMENT']['UF_DEAL_TITLE'] = CCrmOwnerType::GetCaption(CCrmOwnerType::Deal, $dealID, false);
}
$quoteID = isset($arResult['ELEMENT']['UF_QUOTE_ID']) ? $arResult['ELEMENT']['UF_QUOTE_ID'] : 0;
Exemple #3
0
$arResult['FIELDS']['tab_1'][] = array('id' => 'section_invoice_info', 'name' => GetMessage('CRM_SECTION_INVOICE_INFO'), 'type' => 'section');
$arResult['FIELDS']['tab_1'][] = array('id' => 'ACCOUNT_NUMBER', 'name' => GetMessage('CRM_FIELD_ACCOUNT_NUMBER'), 'params' => array('size' => 100), 'value' => isset($arResult['ELEMENT']['~ACCOUNT_NUMBER']) ? $arResult['ELEMENT']['~ACCOUNT_NUMBER'] : '', 'type' => 'text', 'required' => $bEdit, 'visible' => $bEdit);
$arResult['FIELDS']['tab_1'][] = array('id' => 'ORDER_TOPIC', 'name' => GetMessage('CRM_FIELD_ORDER_TOPIC'), 'params' => array('size' => 255), 'value' => isset($arResult['ELEMENT']['~ORDER_TOPIC']) ? $arResult['ELEMENT']['~ORDER_TOPIC'] : '', 'type' => 'text', 'required' => true);
$arResult['FIELDS']['tab_1'][] = array('id' => 'STATUS_ID', 'name' => GetMessage('CRM_FIELD_STATUS_ID'), 'items' => $arResult['STATUS_LIST'], 'params' => array('sale_order_marker' => 'Y'), 'type' => 'list', 'value' => isset($arResult['ELEMENT']['STATUS_ID']) ? $arResult['ELEMENT']['STATUS_ID'] : '', 'required' => true);
// status dependent fields
// <editor-fold defaultstate="collapsed" desc="status dependent fields ...">
$arResult['FIELDS']['tab_1'][] = array('id' => 'PAY_VOUCHER_DATE', 'name' => GetMessage('CRM_FIELD_PAY_VOUCHER_DATE'), 'params' => array('class' => 'bx-crm-dialog-input bx-crm-dialog-input-date', 'sale_order_marker' => 'Y'), 'type' => 'date_short', 'value' => !empty($arResult['ELEMENT']['PAY_VOUCHER_DATE']) ? ConvertTimeStamp(MakeTimeStamp($arResult['ELEMENT']['PAY_VOUCHER_DATE']), 'SHORT', SITE_ID) : '');
$arResult['FIELDS']['tab_1'][] = array('id' => 'PAY_VOUCHER_NUM', 'name' => GetMessage('CRM_FIELD_PAY_VOUCHER_NUM'), 'params' => array('size' => 20), 'value' => isset($arResult['ELEMENT']['~PAY_VOUCHER_NUM']) ? $arResult['ELEMENT']['~PAY_VOUCHER_NUM'] : '', 'type' => 'text');
$arResult['ELEMENT']['REASON_MARKED_SUCCESS'] = $arResult['ELEMENT']['~REASON_MARKED_SUCCESS'] = '';
if ($arResult['ELEMENT']['~STATUS_ID'] != '' && CCrmStatusInvoice::isStatusSuccess($arResult['ELEMENT']['~STATUS_ID'])) {
    $arResult['ELEMENT']['~REASON_MARKED_SUCCESS'] = $arResult['ELEMENT']['~REASON_MARKED'];
    $arResult['ELEMENT']['REASON_MARKED_SUCCESS'] = htmlspecialcharsbx($arResult['ELEMENT']['~REASON_MARKED']);
}
$arResult['FIELDS']['tab_1'][] = array('id' => 'REASON_MARKED_SUCCESS', 'name' => GetMessage('CRM_FIELD_REASON_MARKED_SUCCESS'), 'value' => isset($arResult['ELEMENT']['~REASON_MARKED_SUCCESS']) ? $arResult['ELEMENT']['~REASON_MARKED_SUCCESS'] : '', 'type' => 'textarea');
$arResult['FIELDS']['tab_1'][] = array('id' => 'DATE_MARKED', 'name' => GetMessage('CRM_FIELD_DATE_MARKED'), 'params' => array('class' => 'bx-crm-dialog-input bx-crm-dialog-input-date', 'sale_order_marker' => 'Y'), 'type' => 'date_short', 'value' => !empty($arResult['ELEMENT']['DATE_MARKED']) ? ConvertTimeStamp(MakeTimeStamp($arResult['ELEMENT']['DATE_MARKED']), 'SHORT', SITE_ID) : '');
if ($arResult['ELEMENT']['~STATUS_ID'] != '' && !CCrmStatusInvoice::isStatusFailed($arResult['ELEMENT']['~STATUS_ID'])) {
    $arResult['ELEMENT']['REASON_MARKED'] = $arResult['ELEMENT']['~REASON_MARKED'] = '';
}
$arResult['FIELDS']['tab_1'][] = array('id' => 'REASON_MARKED', 'name' => GetMessage('CRM_FIELD_REASON_MARKED'), 'value' => isset($arResult['ELEMENT']['~REASON_MARKED']) ? $arResult['ELEMENT']['~REASON_MARKED'] : '', 'type' => 'textarea');
// </editor-fold>
//	if ($bEdit)
//	{
//		$arResult['FIELDS']['tab_1'][] = array(
//			'id' => 'PAYED',
//			'name' => GetMessage('CRM_FIELD_PAYED'),
//			'type' => 'checkbox',
//			'value' => ((isset($arResult['ELEMENT']['PAYED']) && $arResult['ELEMENT']['PAYED'] === 'Y') ? 'Y' : 'N')
//		);
//	}
$arResult['FIELDS']['tab_1'][] = array('id' => 'DATE_BILL', 'name' => GetMessage('CRM_FIELD_DATE_BILL'), 'params' => array('sale_order_marker' => 'Y'), 'type' => 'date_link', 'value' => !empty($arResult['ELEMENT']['DATE_BILL']) ? ConvertTimeStamp(MakeTimeStamp($arResult['ELEMENT']['DATE_BILL']), 'SHORT', SITE_ID) : ConvertTimeStamp(time() + CTimeZone::GetOffset(), 'SHORT', SITE_ID));
$arResult['FIELDS']['tab_1'][] = array('id' => 'DATE_PAY_BEFORE', 'name' => GetMessage('CRM_FIELD_DATE_PAY_BEFORE'), 'params' => array('class' => 'bx-crm-dialog-input bx-crm-dialog-input-date', 'sale_order_marker' => 'Y'), 'type' => 'date_short', 'value' => !empty($arResult['ELEMENT']['DATE_PAY_BEFORE']) ? ConvertTimeStamp(MakeTimeStamp($arResult['ELEMENT']['DATE_PAY_BEFORE']), 'SHORT', SITE_ID) : '');
Exemple #4
0
     __CrmMobileInvoiceEditEndResonse(array('ERROR' => GetMessage('CRM_ENTITY_DATA_NOT_FOUND')));
 }
 $ID = isset($data['ID']) ? intval($data['ID']) : 0;
 if ($ID <= 0) {
     __CrmMobileInvoiceEditEndResonse(array('ERROR' => GetMessage('CRM_ENTITY_ID_NOT_FOUND')));
 }
 if (!CCrmAuthorizationHelper::CheckUpdatePermission(CCrmOwnerType::InvoiceName, $ID, $curUserPrems)) {
     __CrmMobileInvoiceEditEndResonse(array('ERROR' => GetMessage('CRM_ACCESS_DENIED')));
 }
 $statusID = isset($data['STATUS_ID']) ? $data['STATUS_ID'] : '';
 if ($statusID === '') {
     __CrmMobileInvoiceEditEndResonse(array('ERROR' => GetMessage('CRM_INVOICE_STATUS_NOT_FOUND')));
 }
 $additionalData = isset($data['ADDITIONAL_DATA']) && is_array($data['ADDITIONAL_DATA']) ? $data['ADDITIONAL_DATA'] : null;
 $isSuccess = CCrmStatusInvoice::isStatusSuccess($statusID);
 $isFail = CCrmStatusInvoice::isStatusFailed($statusID);
 $statusParams = array('STATE_SUCCESS' => $isSuccess, 'STATE_FAILED' => $isFail);
 if ($isSuccess) {
     $timestamp = isset($additionalData['PAYMENT_TIME_STAMP']) ? max(intval($additionalData['PAYMENT_TIME_STAMP']), 0) : 0;
     $statusParams['PAY_VOUCHER_DATE'] = $timestamp > 0 ? ConvertTimeStamp($timestamp, 'SHORT', SITE_ID) : null;
     $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) {
 public static function update($params)
 {
     global $DB;
     $ID = CCrmInvoiceRestUtil::getParamScalar($params, 'id', 0);
     if ($ID <= 0) {
         throw new RestException('Invalid identifier.');
     }
     $invoice = new CCrmInvoice();
     if (!CCrmInvoice::CheckUpdatePermission($ID)) {
         throw new RestException('Access denied.');
     }
     $fields = CCrmInvoiceRestUtil::getParamArray($params, 'fields');
     $fields = self::filterFields($fields, 'update');
     // sanitize
     $updateComments = isset($fields['COMMENTS']);
     $updateUserDescription = isset($fields['USER_DESCRIPTION']);
     $comments = $updateComments ? trim($fields['COMMENTS']) : '';
     $userDescription = $updateUserDescription ? trim($fields['USER_DESCRIPTION']) : '';
     $bSanitizeComments = $comments !== '' && strpos($comments, '<');
     $bSanitizeUserDescription = $userDescription !== '' && strpos($userDescription, '<');
     if ($bSanitizeComments || $bSanitizeUserDescription) {
         $sanitizer = new CBXSanitizer();
         $sanitizer->ApplyDoubleEncode(false);
         $sanitizer->SetLevel(CBXSanitizer::SECURE_LEVEL_MIDDLE);
         //Crutch for for Chrome line break behaviour in HTML editor.
         $sanitizer->AddTags(array('div' => array()));
         if ($bSanitizeComments) {
             $fields['COMMENTS'] = $sanitizer->SanitizeHtml($fields['COMMENTS']);
         }
         if ($bSanitizeUserDescription) {
             $fields['USER_DESCRIPTION'] = $sanitizer->SanitizeHtml($fields['USER_DESCRIPTION']);
         }
         unset($sanitizer);
     }
     unset($bSanitizeComments, $bSanitizeUserDescription);
     if ($updateComments) {
         $fields['COMMENTS'] = $comments;
     }
     if ($updateUserDescription) {
         $fields['USER_DESCRIPTION'] = $userDescription;
     }
     unset($updateComments, $updateUserDescription, $comments, $userDescription);
     if (!is_array($fields) || count($fields) === 0) {
         throw new RestException('Invalid parameters.');
     }
     $origFields = self::getInvoiceDataByID($ID);
     $origFields = self::filterFields($origFields, 'update');
     foreach ($origFields as $fName => $fValue) {
         if (!array_key_exists($fName, $fields)) {
             $fields[$fName] = $fValue;
         }
     }
     $bStatusSuccess = CCrmStatusInvoice::isStatusSuccess($fields['STATUS_ID']);
     if ($bStatusSuccess) {
         $bStatusFailed = false;
     } else {
         $bStatusFailed = CCrmStatusInvoice::isStatusFailed($fields['STATUS_ID']);
     }
     if (!$invoice->CheckFields($fields, false, $bStatusSuccess, $bStatusFailed)) {
         if (!empty($invoice->LAST_ERROR)) {
             throw new RestException($invoice->LAST_ERROR);
         } else {
             throw new RestException('Error on check fields.');
         }
     }
     $propsInfo = CCrmInvoice::GetPropertiesInfo($fields['PERSON_TYPE_ID']);
     $propsInfo = is_array($propsInfo[$fields['PERSON_TYPE_ID']]) ? $propsInfo[$fields['PERSON_TYPE_ID']] : array();
     $invoiceProperties = array();
     foreach ($propsInfo as $propCode => $arProp) {
         if (array_key_exists($propCode, $fields['INVOICE_PROPERTIES'])) {
             $invoiceProperties[$arProp['ID']] = $fields['INVOICE_PROPERTIES'][$propCode];
         } else {
             if ($propCode === 'COMPANY_NAME' && array_key_exists('COMPANY', $fields['INVOICE_PROPERTIES'])) {
                 $invoiceProperties[$arProp['ID']] = $fields['INVOICE_PROPERTIES']['COMPANY'];
             } else {
                 if (is_array($origFields['INVOICE_PROPERTIES'])) {
                     if (array_key_exists($propCode, $origFields['INVOICE_PROPERTIES'])) {
                         $invoiceProperties[$arProp['ID']] = $origFields['INVOICE_PROPERTIES'][$propCode];
                     } else {
                         if ($propCode === 'COMPANY_NAME' && array_key_exists('COMPANY', $fields['INVOICE_PROPERTIES'])) {
                             $invoiceProperties[$arProp['ID']] = $origFields['INVOICE_PROPERTIES']['COMPANY'];
                         }
                     }
                 }
             }
         }
     }
     $fields['INVOICE_PROPERTIES'] = $invoiceProperties;
     unset($propsInfo, $invoiceProperties, $propCode, $arProp);
     $DB->StartTransaction();
     $ID = $invoice->Update($ID, $fields, array('UPDATE_SEARCH' => true));
     if (!is_int($ID) || $ID <= 0) {
         $DB->Rollback();
         if (!empty($invoice->LAST_ERROR)) {
             throw new RestException($invoice->LAST_ERROR);
         } else {
             throw new RestException('Error on updating invoice.');
         }
     } else {
         $DB->Commit();
     }
     return $ID;
 }