public function getFields()
{
if($this->fields === null)
{
$currencyId = $this->source['CURRENCY_ID'] ?? null;
$this->fields = [
'NAME' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_NAME_TITLE'),
],
'DESCRIPTION' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_DESCRIPTION_TITLE'),
'VALUE' => [$this, 'getIblockValue'],
],
'SECTION' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_SECTION_TITLE'),
'VALUE' => [$this, 'getIblockValue'],
],
'PREVIEW_PICTURE' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PREVIEW_PICTURE_TITLE'),
'TYPE' => static::FIELD_TYPE_IMAGE,
'VALUE' => [$this, 'getIblockValue'],
],
'DETAIL_PICTURE' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_DETAIL_PICTURE_TITLE'),
'TYPE' => static::FIELD_TYPE_IMAGE,
'VALUE' => [$this, 'getIblockValue'],
],
'PRODUCT_ID' => ['TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_ID_TITLE'),],
'TITLE' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_TITLE_TITLE'),
'VALUE' => [$this, 'getIblockValue'],
],
'TITLE_FULL' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_TITLE_FULL_TITLE'),
'VALUE' => [$this, 'getTitleFull'],
],
'SORT' => ['TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_SORT_TITLE'),],
'PRICE' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_TITLE'),
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'QUANTITY' => ['TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_QUANTITY_TITLE'),],
'QUANTITY_WORDS' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_QUANTITY_WORDS_TITLE'),
'TYPE' => Money::class,
'FORMAT' => [
'WORDS' => true,
'NO_SIGN' => true,
],
'VALUE' => 'QUANTITY',
],
'PRICE_EXCLUSIVE' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_EXCLUSIVE_TITLE'),
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_EXCLUSIVE_SUM' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_EXCLUSIVE_SUM_TITLE'),
'VALUE' => [$this, 'getSum'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_NETTO' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_NETTO_TITLE'),
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_NETTO_SUM' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_NETTO_SUM_TITLE'),
'VALUE' => [$this, 'getSum'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_BRUTTO' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_BRUTTO_TITLE'),
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_BRUTTO_SUM' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_BRUTTO_SUM_TITLE'),
'VALUE' => [$this, 'getSum'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'DISCOUNT_RATE' => ['TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_DISCOUNT_RATE_TITLE'),],
'DISCOUNT_SUM' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_DISCOUNT_SUM_TITLE'),
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'DISCOUNT_TOTAL' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_DISCOUNT_TOTAL_TITLE'),
'VALUE' => [$this, 'getSum'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'TAX_RATE' => ['TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_TAX_RATE_TITLE'),],
'TAX_RATE_NAME' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_TAX_RATE_NAME_TITLE'),
'VALUE' => [$this, 'getTaxRate'],
'TYPE' => TaxRate::class,
],
'TAX_INCLUDED' => ['TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_TAX_INCLUDED_TITLE'),],
'MEASURE_CODE' => ['TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_MEASURE_CODE_TITLE'),],
'MEASURE_NAME' => ['TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_MEASURE_NAME_TITLE'),],
'MEASURE_TITLE' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_MEASURE_TITLE_TITLE'),
'VALUE' => [$this, 'getMeasureTitle'],
],
'MEASURE_SYMBOL' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_MEASURE_SYMBOL_TITLE'),
'VALUE' => [$this, 'getMeasureSymbol'],
],
'MEASURE_SYMBOL_INTL' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_MEASURE_SYMBOL_INTL_TITLE'),
'VALUE' => [$this, 'getMeasureSymbolIntl'],
],
'PRICE_SUM' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_SUM_TITLE'),
'VALUE' => [$this, 'getSum'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'TAX_VALUE' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_TAX_VALUE_TITLE'),
'VALUE' => [$this, 'getTaxValue'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'TAX_VALUE_SUM' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_TAX_VALUE_SUM_TITLE'),
'VALUE' => [$this, 'getTaxValueSum'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_RAW' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_RAW_TITLE'),
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_RAW_SUM' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_RAW_SUM_TITLE'),
'VALUE' => [$this, 'getSum'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_RAW_NETTO' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_RAW_NETTO_TITLE'),
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'PRICE_RAW_NETTO_SUM' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_PRICE_RAW_NETTO_SUM_TITLE'),
'VALUE' => [$this, 'getSum'],
'TYPE' => Money::class,
'FORMAT' => ['CURRENCY_ID' => $currencyId, 'NO_SIGN' => true, 'WITH_ZEROS' => false],
],
'CUSTOMIZED' => [],
'DISCOUNT_TYPE_ID' => [],
'CURRENCY_ID' => [],
'DISCOUNT_TYPE' => [
'TITLE' => Loc::getMessage('CRM_DOCGEN_DATAPROVIDER_PRODUCT_DISCOUNT_TYPE_TITLE'),
'VALUE' => [$this, 'getDiscountType'],
],
];
$this->fields = array_merge(
$this->fields,
DocumentGeneratorManager::getInstance()->getProductLoader()->getFields($this)
);
}
return $this->fields;
}