Задача и границы#
Читателю нужно сравнить расходы с бюджетом с начала финансового года до промежуточной даты, когда текущий месяц ещё не завершён. Полный месячный план и накопленный факт покрывают разные интервалы. Здесь задан проектный контракт управленческой витрины для денежных потоков расходов, без прогнозирования и реализации бюджетного движка. Месячный план-факт определяет версии, знаки и сопоставимость измерений; эта страница добавляет временную границу сравнения. Остатки требуют отдельных правил агрегации.
IAS 34 регулирует промежуточную финансовую отчётность, заявляющую соответствие IFRS, а не распределение управленческого бюджета по дням. Предложенные ниже критерии не являются требованиями этого стандарта и не подтверждают соответствие отчётности IFRS.
Зерно, календарь и два cutoff#
Одна строка результата относится к юридическому лицу, регистру, центру затрат, статье расходов и валюте в фиксированном периметре. Ключ также включает финансовый год, calendar_version, начало интервала, его исключённую правую границу business_end, scenario_id, budget_version, profile_version при наличии, actual_release_id и версию определения сравнения. Входной факт - выбранная версия строки проводки; месячный план - одна утверждённая сумма на тот же бизнес-ключ и финансовый месяц.
Календарь явно задаёт начало финансового года и границы месяцев: 1 января и календарные месяцы не подразумеваются. Интервал факта полуоткрытый: year_start <= business_date < business_end. Для включения всего 10 октября правая граница - 11 октября по согласованному бизнес-календарю. При внутридневном срезе нужны время события, часовой пояс и правило включения границы; одна дата проводки этого не обеспечивает.
Cutoff известности observed_at закрепляется отдельно в манифесте выпуска. Это ограничение на доступную информацию, а не конец бизнес-интервала. Поздняя проводка внутри интервала может войти в новый выпуск, но не переписывает старое сравнение. Версии плана и профиля выбирают с учётом их утверждения и доступности на согласованный момент; исправленный задним числом профиль не должен незаметно менять прежний результат. Закрытие периода определяет состояние выпуска: законченный по календарю месяц может оставаться неполным по доставке.
В примере суммы - целые копейки RUB, масштаб 2, расходы положительные, возвраты отрицательные. План и факт имеют одинаковый валютный basis и классификацию; валюты не складываются между собой. В накопительном сравнении сохраняются исходные суммы A и P, их состояния и денежное отклонение A - P.
Завершённые месяцы и неполный месяц#
Разбейте выбранный интервал на неперекрывающиеся финансовые месяцы и текущую часть месяца. Для завершённых месяцев берётся полный план выбранной версии и факт того же интервала при общей версии выпуска. Текущий месяц обрабатывается по явно выбранному режиму:
| Режим |
План текущего месяца |
Смысл результата |
| Только завершённые месяцы |
Не включается, как и текущий факт |
Отклонение на конец последнего полного месяца |
| Сопоставимый промежуточный план |
Часть плана по утверждённому профилю до business_end |
Отклонение на одинаковом временном интервале |
| Полный месячный ориентир |
Включается весь месячный план |
Использование бюджета к дате; не отклонение от плана к дате |
Для последнего режима храните разные интервалы A и P и явную метку ориентирного сравнения. Его нельзя объединять с сопоставимыми отклонениями или выдавать за отставание от календарного графика. Если профиль отсутствует, допустим полный ориентир либо сравнение только завершённых месяцев; сопоставимое отклонение для текущего месяца остаётся недоступным.
Контракт внутримесячного профиля#
Профиль задаёт долю месячного плана для каждого неперекрывающегося дня или другого утверждённого интервала. Его ключ включает бизнес-ключ плана, месяц, версию бюджета и версию профиля. Доли неотрицательны и в сумме равны 1 для всего месяца; частичный план равен сумме назначенных сумм только внутри выбранной части. Отдельно проверяется сохранение месячной денежной суммы после округления по согласованному правилу остатка. Само умножение на долю не меняет знак отрицательного плана.
Равномерное распределение по календарным или рабочим дням - возможная утверждённая гипотеза, а не доказательство реального графика затрат. Сезонные расходы, платежи в определённые даты и неодинаковые рабочие календари могут требовать другого профиля. Не выводите плановый профиль из наблюдённого факта: такое правило делает контроль зависимым от проверяемой величины. Метод распределения затрат между получателями здесь не рассматривается.
Синтетический пример: завершённый месяц имеет P = 100000 и A = 90000 копеек; текущий месячный P = 200000, факт к cutoff = 60000. Утверждённый профиль относит к прошедшей части 25% текущего плана, то есть 50000. Сопоставимый накопительный P = 150000, A = 150000, отклонение равно 0. Полный ориентир P = 300000 даёт разность -150000, которая не доказывает экономию или отставание. Без утверждённого профиля значение 25% использовать нельзя. Числа иллюстративные, не данные автора.
Неперекрывающиеся итоги и критерии допуска#
Накопленные значения за январь и январь-февраль перекрываются: складывать их нельзя. Для дальнейшего накопления используют исходные движения или неперекрывающиеся месячные приращения. Разность двух накопительных итогов даёт приращение только при одинаковых версиях, периметре, basis и общей истории: при пересмотре ранних месяцев она включает также исправления. Каждый новый cutoff создаёт отдельный срез, а не дополнительное слагаемое.
Критерии приёмки задаются для каждой ожидаемой группы:
- Календарь покрывает интервал без пропусков и пересечений; обе меры имеют согласованные бизнес-границы либо явно обозначенный режим полного ориентира.
- Закреплены версии входа, бюджета, профиля и cutoff известности. Все требуемые месяцы плана присутствуют; явный ноль отличается от отсутствующей строки.
- Доставка факта полна до выбранной границы, обязательные суммы известны. Дата последней полученной проводки сама по себе полноту не доказывает.
- Для сопоставимого промежуточного плана профиль утверждён, однозначен и покрывает месяц; сумма его денежных частей совпадает с месячным планом.
- Итоги построены из неперекрывающихся частей; A и P сверены с входами по периметру и валюте. Неполная группа не исчезает из общего покрытия.
При нарушении сохраняют причину и исходные меры, но не допускают окончательное сопоставимое отклонение. Положительное A - P означает превышение расходов относительно выбранного плана, а не автоматическую оценку эффективности. Проценты требуют отдельного определения знаменателя, описанного в статье о SQL.
Алгоритм и границы инструмента#
Ниже только псевдокод; исполняемые SQL/Python/DAX не представлены и не запускались.
Закрепить календарь, год, business_end, cutoff известности и версии.
Выбрать режим сравнения и ожидаемые бизнес-группы.
Разбить бизнес-интервал на неперекрывающиеся части.
Собрать факт выбранного выпуска на этом интервале.
Собрать полные планы завершённых месяцев.
Для текущего месяца применить утверждённый профиль или режим ориентира.
Проверить покрытие, полноту, сохранение сумм и совместимость basis.
При допуске сохранить A, P, A - P, интервалы, режим и версии.
При отказе сохранить состояние без окончательного отклонения.
Microsoft TOTALYTD вычисляет накопление в текущем контексте DAX и позволяет указать конец финансового года. Это поведение инструмента, не проверка профиля бюджета, полноты доставки или согласованности выпусков. Здесь не заявлена проверка DAX, PostgreSQL либо другой СУБД. Для нестандартного календаря сначала определяют явное соответствие дат финансовым периодам.
Для сравнения двух фактических лет используйте межгодовое сравнение расходов: оно задаёт календарные пары и сопоставимый периметр.
Связанные материалы и вопросы#
Для базовой сопоставимости используйте месячный план-факт, для границы известности и версий - закрытие периода, для отличия потока от остатка - остатки и обороты.
- Почему полный месячный бюджет не доказывает отставание расходов на десятый день месяца?
- Какие версии должны совпадать, чтобы разность двух YTD-срезов представляла только движение нового месяца?
- Чем конец бизнес-интервала отличается от cutoff известности и подтверждённой полноты доставки?
Task and scope#
The reader needs to compare expenses with budget from the start of the financial year to an interim date while the current month is still unfinished. The full monthly plan and actuals to date cover different intervals. This page proposes a management mart contract for monetary expense flows, without forecasting or a budgeting engine. Monthly plan versus actual defines versions, signs, and dimensional comparability; this page adds the comparison's time boundary. Balances require separate aggregation rules.
IAS 34 governs interim financial reports that assert compliance with IFRS, rather than daily phasing of a management budget. The criteria below are not requirements of that standard and do not establish IFRS compliance.
Grain, calendar, and two cutoffs#
One result row belongs to a legal entity, ledger, cost center, expense line, and currency within a pinned scope. Its key also includes financial year, calendar_version, interval start, exclusive upper boundary business_end, scenario_id, budget_version, profile_version where applicable, actual_release_id, and comparison definition version. The input fact is a selected journal-line version; the monthly plan is one approved amount per matching business key and financial month.
The calendar explicitly defines the financial year start and month boundaries: January 1 and calendar months are not assumed. The actual interval is half-open: year_start <= business_date < business_end. To include all of October 10, the upper boundary is October 11 under the agreed business calendar. An intraday snapshot requires event time, time zone, and a boundary inclusion rule; a posting date alone cannot provide this.
The knowledge cutoff observed_at is pinned separately in the release manifest. It limits available information rather than defining the end of the business interval. A late posting inside the interval may enter a new release but cannot rewrite the old comparison. Budget and profile versions are selected according to approval and availability at the agreed time; a retrospectively corrected profile must not silently change the previous result. Period close defines release state: a month that has ended on the calendar may still have incomplete delivery.
The example uses integer RUB kopecks, scale 2, positive expenses, and negative refunds. Plan and actual use the same currency basis and classification; different currencies are not summed together. The cumulative comparison preserves original amounts A and P, their states, and monetary variance A - P.
Completed months and the partial month#
Split the selected interval into non-overlapping financial months and the current partial month. For completed months, use the full plan of the selected version and actuals for the same interval within a common release version. Handle the current month using an explicitly selected mode:
| Mode |
Current month's plan |
Meaning of the result |
| Completed months only |
Excluded, along with current-month actuals |
Variance at the end of the last complete month |
| Comparable interim plan |
Plan portion under an approved profile up to business_end |
Variance over the same time interval |
| Full monthly reference |
Entire monthly plan included |
Budget usage to date; not variance against the plan to date |
For the last mode, retain different A and P intervals and an explicit reference-comparison label. Do not combine it with comparable variances or describe it as falling behind the calendar schedule. Without a profile, a full reference or completed-month comparison is acceptable; comparable variance for the current month remains unavailable.
Contract for the within-month profile#
The profile assigns a share of the monthly plan to each non-overlapping day or other approved interval. Its key includes the plan's business key, month, budget version, and profile version. Shares are nonnegative and sum to 1 over the full month; the partial plan is the sum of assigned amounts inside the selected portion only. Separately check preservation of the monthly monetary amount after rounding under the agreed residual rule. Multiplying by a share does not change the sign of a negative plan.
Uniform phasing over calendar or working days is a possible approved assumption, not evidence of the actual expense schedule. Seasonal expenses, payments on particular dates, and different working calendars may require another profile. Do not infer the plan profile from observed actuals: that makes the control depend on the quantity being checked. Allocation of costs among recipients is outside this page's scope.
Synthetic example: a completed month has P = 100000 and A = 90000 kopecks; the current monthly P is 200000 and actuals to the cutoff are 60000. An approved profile assigns 25% of the current plan, or 50000, to the elapsed portion. Comparable cumulative P = 150000 and A = 150000, giving zero variance. The full reference P = 300000 yields a difference of -150000, which does not establish savings or schedule delay. Without an approved profile, the 25% value cannot be used. These are illustrative numbers, not the author's data.
Non-overlapping totals and admission criteria#
Totals for January and January-February overlap and must not be added. Further accumulation uses original movements or non-overlapping monthly increments. Subtracting two cumulative totals yields an increment only with matching versions, scope, basis, and common history: if earlier months were revised, the difference also contains corrections. Each new cutoff produces a separate snapshot, not another summand.
Acceptance criteria apply to each expected group:
- The calendar covers the interval without gaps or overlaps; both measures have aligned business boundaries or an explicitly identified full-reference mode.
- Input, budget, and profile versions and the knowledge cutoff are pinned. Every required plan month is present; an explicit zero differs from a missing row.
- Actual delivery is complete up to the selected boundary and mandatory amounts are known. The date of the latest received posting alone does not establish completeness.
- For a comparable interim plan, the profile is approved, unambiguous, and covers the month; its monetary parts sum to the monthly plan.
- Totals use non-overlapping parts; A and P reconcile to inputs by scope and currency. An incomplete group remains visible in overall coverage.
On a violation, retain the reason and original measures but do not admit a final comparable variance. Positive A - P means expenses exceed the selected plan, not an automatic assessment of performance. Percentages require a separate denominator definition, covered on the SQL page.
Algorithm and tool boundaries#
The following is pseudocode only; no executable SQL/Python/DAX is provided or was run.
Pin the calendar, year, business_end, knowledge cutoff, and versions.
Select comparison mode and expected business groups.
Split the business interval into non-overlapping parts.
Collect actuals from the selected release over that interval.
Collect full plans for completed months.
For the current month, apply an approved profile or reference mode.
Check coverage, completeness, amount preservation, and compatible bases.
On admission, retain A, P, A - P, intervals, mode, and versions.
On rejection, retain the state without a final variance.
Microsoft TOTALYTD evaluates a running total in the current DAX context and allows a financial year-end date. This is tool behavior, not a check of budget profiles, delivery completeness, or release consistency. No DAX, PostgreSQL, or other DBMS validation is claimed here. For a nonstandard calendar, first define an explicit mapping of dates to financial periods.
For a comparison of two actual fiscal years, use prior-year expense comparison: it defines calendar pairs and a comparable perimeter.
Related material and questions#
For basic comparability, use monthly plan versus actual; for knowledge boundaries and versions, use period close; for the distinction between flows and stocks, use balances and movements.
- Why does a full monthly budget not establish that expenses are behind schedule on the tenth day?
- Which versions must match for the difference between two YTD snapshots to represent only the new month's movements?
- How does the business interval end differ from the knowledge cutoff and confirmed delivery completeness?