Страницы: 1
RSS
PowerQuery Ежегодная индексация платежа, Составить график платежей с учетом ежегодной индексации на определённый % или рассчитать Индекс по историческим данным
 
Прошу помощи у знатоков.

Есть задача составить график платежей по договору, с шагом в месяц (оплата в последний день месяца), но с ежегодной индексацией суммы платежа. И здесь есть 2 типа данных.
1) Новый договор, подразделяемый на вид услуг, где есть срок действия договора, % ежегодной индексации и сумма ежемесячного/ ежеквартального платежа в первый год работы. Соответственно, начиная со второго года нужно сумму платежа индексировать на указанный % и так каждый год нарастающим итогом, т.е. процент индексации третьего года, будет применятся к сумме второго года.
2) Существующий договор с имеющейся историей платежей, который хотим продлить на определённый срок. И здесь нужно добавить строки до конца действия договора и рассчитать сумму платежа. Где платеж рассчитывается, как сумма платежа равнозначного месяца прошлого года ( май к маю), умноженная на % разницы между суммой платежа прошлого года и суммой позапрошлого года, а если такие данные отсутствуют, то платеж равен предыдущему месяцу текущего года.
Всем заранее большое спасибо за любую помощь и любые ответы!

З.ы. Первый запрос решила самостоятельно. А вот со вторым пока очень надеюсь на помощь гуру.
Изменено: Светлана - 02.04.2024 18:24:55
 
Нашла на форуме что-то более-менее похожее для решения первого варианта запроса https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=144825&a... но адаптировать под свой запрос не хватает знаний и понимания  :(  
 
Цитата
Светлана написал:
Первый запрос решила
что-то не похоже на решение. Сделан List.Generate с ежемесячными платежами. Намека на то, что договор подразумевает квартальные платежи - нет (точнее, намек есть, но он сидит в названии). Графика таких платежей нет. Расчета платежей с периодической индексацией нет. Может вы, конечно, решение не показываете, но то, что я вижу - это и близко не оно.
Выскажу свое мнение: на вашем месте я в первую очередь сосредоточился бы на базе списке договоров. Один договор - одна строка со всеми реквизитами: начало, окончание, частота платежей, % индексации и пр. И уж от этого можно отталкиваться и строить график платежей - ежемесячный или ежеквартальный, при этом % индексации можно учесть, имея порядковый номер платежа (Number.IntegerDivide его на 12 или 4 и возведение в эту степень 1 + % индексации).
2-й вопрос можно свести к 1-му, рассчитав все параметры договора. % индексации можно посчитать, взяв уникальные величины платежей (первые 2 значения дадут индексацию, если она уже случалась). После вычисления параметров договора можно строить график аналогично пункту 1.
Изменено: AlienSx - 02.04.2024 19:30:28
Пришелец-прораб.
 
Решение первого запроса не выкладывала. Т.к. там всё достаточно просто и имеется нужная информация, и нужно было только проиндексировать сумму начиная со второго года. Как вы и написали - Просто добавила индекс года начиная с 0 к каждой группе, а к последующим годам - сумму умножила на процент индексации возведенный в степень, соответствующий индексу года. Может не очень красиво,но работает,просто не сразу сообразила что можно сделать именно так.😊 А вот со вторым этапом боюсь будет намного сложнее, т.к. пользуюсь только самыми простыми,встроенными инструментами PQ, но в любом случае буду пробовать ...
 
Цитата
Светлана написал:
А вот со вторым этапом боюсь будет намного сложнее
вот вам договоры (или их составные части) второго этапа. Если у вас не возникло сложностей сделать график платежей по 1-му этапу, то здесь тоже справитесь.
pq
Пришелец-прораб.
 
Спасибо вам большое за помощь, но реальность оказалась суровее  :oops:  
Помимо того что Номенклатура не всегда заполнена (т.е. остаётся пустой и PQ преобразовывает её в Null) и эта часть кода
Код
 {{"Частота", (x) => if Text.EndsWith(x[График платежей.Номенклатура]{0}, "кварт.") then 4 else 12},
выдаёт ошибку, но это не важно, можно предварительно заменить эти значения.
Поняла что в существующих договорах нужно посчитать индексацию по календарному году, т.к. не всегда совпадает начало платежей по постоянной и переменной части договора ( т.е. например переменную часть могут начать платить с 01.11.23, а постоянную начать с 01.01.24) и в этом случае происходит временное смещение по номенклатуре одного договора. При этом нельзя брать вычисленную индексацию последнего года, т.к. он обычно не полный и результат не корректный.

Попробовала скорректировать ваш код, предварительно заменив Дату платежа на Год и добавив его в группировку и заменив Частоту просто на 1.
Получила расчёт ежегодной индексации, но почему-то считает не все позиции. А разобраться не получилось :( , увы.
 
Цитата
Светлана написал:
Поняла что в существующих договорах нужно посчитать индексацию по календарному году,
у меня расчет % индексации строится на том факте, что есть суммы платежей. Если взять минимальный и следующий за ним по величине, то получим индексацию. Я не понял вашей проблемы - у вас сумма первого платежа может не совпадать с суммой договора с поправкой на частоту платежей? В вашем файле есть такие случаи? Укажите конкретный договор, пожалуйста, где это произошло.
Пришелец-прораб.
 
Цитата
написал:
у меня расчет % индексации строится на том факте, что есть суммы платежей. Если взять минимальный и следующий за ним по величине, то получим индексацию. Я не понял вашей проблемы - у вас сумма первого платежа может не совпадать с суммой договора с поправкой на частоту платежей? В вашем файле есть такие случаи? Укажите конкретный договор, пожалуйста, где это произошло.Да в
Да, в расчёте берётся с интервалом 12 (или 4), но дело в том, что это выгрузка из базы и бывают случаи, когда арендную плату начинают платить не с первого месяца, а со второго, третьего или четвертого, при этом по этому же договору Эксплуатационные платят с первого дня. И если брать просто 12 месяцем по одному и тому же договору, но по разным видам платежа  - происходит смещение сроков, при этом индексация по всем видам платежа будет происходить в один месяц. (Пример1).
Или как в Примере 2, сначала вносили общий платеж, без разбития на виды, а потом скорректировали и появилась квартальная оплата.
В Примере 3 первый месяц платили Эксплуатационные, а потом только Аренду.
Поменяла пример в файле, т.к. в прошлом таких нюансов отражено не было.
Спасибо огромное за помощь.
 
Светлана, да уж. Если нет "системы" (сами признаетесь, что платежи могут идти как Бог на душу положит), то едва ли здесь что-то можно сделать вот так, с наскока, и без ручного вмешательства. Ну разве что индексацию можно попробовать посчитать, взяв не 2 наименьших, а 2 наибольших по сумме платежа. Можно посчитать все уникальные суммы и кол-во их появлений в списке всех платежей - может быть отсюда можно что-то "вытянуть". Но где гарантия, что мы при этом не попадаем на "волюнтаризм" в платежах? Так что, извините, я в этом не помощник ((
Пришелец-прораб.
 
AlienSx, Конечно я понимаю что глубокий и правильный анализ в таком не системном процессе вряд ли возможен. Если бы вы мог ли помочь скорректировать вашу прошлую формулу , чтобы она считала разницу между календарными годами. и далее оставлять только максимально поздний год -1.
В пример я её добавила, но на последнем этапе где рассчитывается сама индексация, я видимо что-то сломала, поэтому считает не все строки.
Изменено: Светлана - 08.04.2024 15:55:45
 
Цитата
Светлана написал:
чтобы она считала разницу между календарными годами. и далее оставлять только максимально поздний год -1.
непонятно. Разницу между чем и для чего ее считать? Между суммами платежей за год? В этом мой код не поможет.
Пришелец-прораб.
Страницы: 1
Наверх