// Pay system does not changed $resolvedPaySystemID = $paySystemID; } elseif (!empty($paySystems)) { // Take first pay system $resolvedPaySystemID = array_shift(array_keys($paySystems)); } $arFields = array('ID' => $ID, 'PRODUCT_ROWS' => $productRows, 'PAY_SYSTEM_ID' => $resolvedPaySystemID, 'PERSON_TYPE_ID' => $resolvedPersonTypeID); $properties = CCrmInvoice::GetProperties($ID, $resolvedPersonTypeID); if (!is_array($properties)) { $properties = array(); } if (isset($data['LOCATION_ID']) && !isset($data['LOC_CITY'])) { //HACK: see CCrmInvoice::ParsePropertiesValuesFromPost $data['LOC_CITY'] = $data['LOCATION_ID']; } $propertyValues = CCrmInvoice::ParsePropertiesValuesFromPost($resolvedPersonTypeID, $data, $properties); if (isset($propertyValues['PROPS_VALUES']) && isset($propertyValues['PROPS_INDEXES'])) { $arFields['INVOICE_PROPERTIES'] = $propertyValues['PROPS_VALUES']; foreach ($propertyValues['PROPS_INDEXES'] as $name => $index) { if (!isset($arFields[$name])) { $arFields[$name] = $propertyValues['PROPS_VALUES'][$index]; } } } $payerInfo = ''; $payerRequisites = array(); if ($enablePayerInfo) { CCrmInvoice::__RewritePayerInfo($companyID, $contactID, $properties); $payerInfo = CCrmInvoice::__MakePayerInfoString($properties); if ($resolvedPersonTypeID > 0) { $payerRequisites = CCrmMobileHelper::PrepareInvoiceClientRequisites($resolvedPersonTypeID, $properties);
$productRowSettingsFieldName = $productDataFieldName . '_SETTINGS'; if (array_key_exists($productRowSettingsFieldName, $_POST)) { $settingsJson = isset($_POST[$productRowSettingsFieldName]) ? strval($_POST[$productRowSettingsFieldName]) : ''; $arSettings = strlen($settingsJson) > 0 ? CUtil::JsObjectToPhp($settingsJson) : array(); if (is_array($arSettings)) { $productRowSettings['ENABLE_DISCOUNT'] = isset($arSettings['ENABLE_DISCOUNT']) ? $arSettings['ENABLE_DISCOUNT'] === 'Y' : false; $productRowSettings['ENABLE_TAX'] = isset($arSettings['ENABLE_TAX']) ? $arSettings['ENABLE_TAX'] === 'Y' : false; } } unset($productRowSettingsFieldName, $settingsJson, $arSettings); // set person type field $arFields['PERSON_TYPE_ID'] = $personTypeId; // set pay system field $arFields['PAY_SYSTEM_ID'] = intval($_POST['PAY_SYSTEM_ID']); // <editor-fold defaultstate="collapsed" desc="Process invoice properties ..."> $tmpArInvoicePropertiesValues = $CCrmInvoice->ParsePropertiesValuesFromPost($personTypeId, $_POST, $arInvoiceProperties); if (isset($tmpArInvoicePropertiesValues['PROPS_VALUES']) && isset($tmpArInvoicePropertiesValues['PROPS_INDEXES'])) { $arFields['INVOICE_PROPERTIES'] = $tmpArInvoicePropertiesValues['PROPS_VALUES']; foreach ($tmpArInvoicePropertiesValues['PROPS_INDEXES'] as $propertyName => $propertyIndex) { if (!isset($arFields[$propertyName])) { $arFields[$propertyName] = $tmpArInvoicePropertiesValues['PROPS_VALUES'][$propertyIndex]; } } } unset($tmpArInvoicePropertiesValues); // </editor-fold> $USER_FIELD_MANAGER->EditFormAddFields(CCrmInvoice::GetUserFieldEntityID(), $arFields); if (!$CCrmInvoice->CheckFields($arFields, $bEdit ? $arResult['ELEMENT']['ID'] : false, $bStatusSuccess, $bStatusFailed)) { if (!empty($CCrmInvoice->LAST_ERROR)) { $arResult['ERROR_MESSAGE'] .= $CCrmInvoice->LAST_ERROR; } else {