предыдущую строку тоже было бы не плохо указать
Код:
local properties_iterator = ukm.map.int.string.iterator(discount.properties);
if properties_iterator:at(ukm.core.field_discount_modificator) ~= "" then
local modif = "возможное значение ";
--выполнение парсинга значения модификатора, и преобразование сохранённых в базе значений в строковый вид для печати
local modificator = properties_iterator:at(ukm.core.field_discount_modificator);
local human_modificator = modificator_to_human(modificator);
Вся конструкция для текущей обрабатываемой скидки в цикле по скидкам в подитоге чека берет свойства этой скидки
Эти свойства можно посмотреть в trm_out_receipt_discount_properties.value (возможно это не всё, что выдается в discount.properties)
В указанном поле бывает довольно разнообразная информация в зависимости от алгоритма скидки
В properties_iterator эта информация сохраняется в таком виде, по которому можно организовывать итерации(для циклов, например)
Скорее всего это что-то типа именованного массива или, как почти все в lua, таблица, т.е. там есть набор пар "ключ-значение"
метод :at обращается к элементу с ключом ukm.core.field_discount_modificator и выдает значение этого элемента
если это значение не пусто, а оно не пусто далеко не для всех скидок, то оно обрабатывается и из него складывается строка типа:
"Возможная скидка 5,00%"
указанное "значение", кстати, тоже разбирается на префикс-значение-суффикс, но скорее всего это строка типа "-5%"
упд: функции, начинающиеся с "ukm." "зашиты" в сам укм и в луа только экспортированы, так что точно узнать, как они работают нельзя