{
  "id": "payroll_model--payroll_model",
  "kind": "explainer",
  "title": "payroll_model",
  "jurisdiction": "UA",
  "language": "uk",
  "version": "0.8.0",
  "publication": "draft",
  "evidence": "unverified",
  "implementation": "not-assessed",
  "effective": {
    "from": null,
    "to": null,
    "checkedAt": null
  },
  "citations": [],
  "rights": {
    "status": "unknown",
    "note": "Original editorial reference material with source links; third-party artifact redistribution is not authorized by this release."
  },
  "content": {
    "legacyKind": "payroll_model",
    "reviewedAt": "2026-09-17",
    "scope": "Навчальний маршрут і модель для розробки; не розрахунок реальної зарплати",
    "stages": [
      {
        "id": "conditions",
        "name": "Умови й межі періоду",
        "owner": "Кадровик; бухгалтер перевіряє розрахункові налаштування",
        "inputs": [
          "Тип роботодавця й застосовна облікова основа",
          "Історія трудових відносин, посад, окладів і графіків",
          "Початкові залишки розрахунків"
        ],
        "action": "Розділити місяць на відрізки за датами прийняття, звільнення, зміни окладу, зайнятості або графіка. Визначити правила й редакції параметрів.",
        "output": "Перелік працівників, версії умов та параметри періоду.",
        "check": "Для кожного календарного відрізка відомі чинні умови; невідомий параметр не замінено нулем.",
        "exception": "Немає підстави зміни окладу, перетинаються епізоди зайнятості або не підтверджено початковий борг.",
        "conceptIds": [
          "employee",
          "employment",
          "salary",
          "schedule",
          "period",
          "parameter"
        ],
        "sourceIds": [
          "labor-code",
          "wage-law"
        ]
      },
      {
        "id": "time",
        "name": "Час і відсутності",
        "owner": "Відповідальний за табель; кадровик підтверджує підстави",
        "inputs": [
          "Затверджений графік",
          "Фактичний час",
          "Відпустки, непрацездатність, служба та інші підтверджені події"
        ],
        "action": "Зіставити норму та факт, перевірити пропуски й перетини. Визначити належний код і підставу кожної відсутності.",
        "output": "Підтверджений табель і список невирішених розбіжностей.",
        "check": "Ті самі години не обліковані одночасно як робота й відсутність. Немає необґрунтованих нульових годин.",
        "exception": "Документ про відсутність ще не надійшов або два джерела дають різні дати.",
        "conceptIds": [
          "timesheet",
          "schedule",
          "leave",
          "sick",
          "military-service",
          "service-release"
        ],
        "sourceIds": [
          "labor-code",
          "wartime",
          "service-labor-guarantees"
        ]
      },
      {
        "id": "events",
        "name": "Окремі виплати та розрахункові випадки",
        "owner": "Кадровик і бухгалтер за своїми частинами",
        "inputs": [
          "Накази й підстави виплат",
          "Історія доходу для середньої",
          "Відомості про право, стаж та періоди, коли вони потрібні"
        ],
        "action": "Виділити відпустку, лікарняний, премію, звільнення або інший випадок в окремий розрахунок. Для кожного визначити свою методику та період.",
        "output": "Реєстр випадків із перевіреними входами й підставами.",
        "check": "Середню для відпускних не перенесено автоматично на страхову виплату. Виплата під час служби має окрему підставу.",
        "exception": "Неповна історія доходу, спірний склад виплат або невизначений період виключення.",
        "conceptIds": [
          "average",
          "leave",
          "sick",
          "entitlement",
          "order",
          "rule",
          "military-service"
        ],
        "sourceIds": [
          "average-100",
          "average-1266",
          "leave-law",
          "service-labor-guarantees"
        ]
      },
      {
        "id": "calculate",
        "name": "Нарахування, утримання та внески",
        "owner": "Бухгалтер із зарплати",
        "inputs": [
          "Підтверджені умови, час і випадки",
          "Версії ставок, баз, пільг та обмежень",
          "Попередні розрахунки й виплати за період"
        ],
        "action": "Обчислити рядки нарахувань. Окремо визначити бази та суми ПДФО, військового збору, ЄСВ й інших застосовних утримань. Зберегти входи, формули та округлення.",
        "output": "Версія розрахунку з поясненням кожного рядка.",
        "check": "Внесок роботодавця не віднято від чистої суми працівника. Враховано сукупні показники, спеціальні категорії та вже обчислені суми.",
        "exception": "Пільга або ставка не підтверджена; повторний запуск може подвоїти нарахування.",
        "conceptIds": [
          "accrual",
          "deduction",
          "pdfo",
          "military-tax",
          "esv",
          "benefit",
          "parameter",
          "net"
        ],
        "sourceIds": [
          "wage-law",
          "tax-code",
          "esv-law"
        ]
      },
      {
        "id": "review",
        "name": "Перевірка й погодження",
        "owner": "Особа, що перевіряє розрахунок; власники непідтверджених даних",
        "inputs": [
          "Розрахунок і порівняння з попередньою версією",
          "Список винятків",
          "Документи-підстави"
        ],
        "action": "Перевірити різкі зміни, від’ємні суми, дублікати, неповний місяць та незакриті винятки. Повернути спірні входи їхньому відповідальному.",
        "output": "Погоджена версія або перелік конкретних питань.",
        "check": "Кожна суттєва різниця пояснена. Погодження належить конкретній версії розрахунку.",
        "exception": "Після погодження змінилися вхідні дані; потрібен новий перегляд.",
        "conceptIds": [
          "reconciliation",
          "correction",
          "payslip",
          "rule"
        ],
        "sourceIds": []
      },
      {
        "id": "ledger",
        "name": "Відображення в бухгалтерському обліку",
        "owner": "Бухгалтер",
        "inputs": [
          "Погоджений розрахунок",
          "Робочий план рахунків",
          "Аналітика витрат і облікова політика"
        ],
        "action": "Відобразити витрати, зобов’язання та інші потрібні записи. Зберегти зв’язок проводок із версією розрахунку й аналітикою.",
        "output": "Облікові записи з підтвердженою кореспонденцією.",
        "check": "Дебет дорівнює кредиту; підсумки за працівниками та видами зобов’язань узгоджені з розрахунком.",
        "exception": "Сума збігається загалом, але віднесена на неправильний рахунок або підрозділ.",
        "conceptIds": [
          "entry",
          "expense",
          "liability",
          "account",
          "analytics",
          "policy"
        ],
        "sourceIds": [
          "chart",
          "standard26",
          "accounting-law"
        ]
      },
      {
        "id": "payment",
        "name": "Пояснення працівнику й виконання виплат",
        "owner": "Бухгалтер готує; уповноважена особа виконує платіж",
        "inputs": [
          "Розрахунковий листок",
          "Підтверджені попередні виплати та залишки",
          "Реквізити й належні строки платежів"
        ],
        "action": "Пояснити склад розрахунку. Визначити залишок до виплати, підготувати інструкції й окремо підтвердити виконання. Податки та внески мають власні платіжні записи.",
        "output": "Листок, інструкції, результати банку та прив’язка до зобов’язань.",
        "check": "Створений файл не позначений виплатою. Відхилений або частковий платіж залишає непогашений залишок.",
        "exception": "Платіж відхилено, реквізити змінилися або попередня виплата помилково врахована двічі.",
        "conceptIds": [
          "payslip",
          "net",
          "advance",
          "payment-instruction",
          "payment",
          "bank-statement"
        ],
        "sourceIds": [
          "wage-law",
          "labor-code",
          "payment-law"
        ]
      },
      {
        "id": "reporting",
        "name": "Звітні показники, подання та результат",
        "owner": "Бухгалтер / уповноважений підписувач",
        "inputs": [
          "Тип податкового агента й звітний період",
          "Чинна форма та довідники полів",
          "Розрахункові, кадрові й платіжні дані"
        ],
        "action": "Сформувати потрібні додатки за чинною схемою. Перевірити контрольні співвідношення, підписати й подати через належний канал, зберегти всі результати обробки.",
        "output": "Версія звіту, подання та квитанції з їхнім фактичним змістом.",
        "check": "Помісячний розрахунок не визначає періодичності подання автоматично. Статус прийняття підтверджений належним результатом.",
        "exception": "Невірна версія форми, звіт відхилено або дані працівника не узгоджені.",
        "conceptIds": [
          "report",
          "receipt",
          "period",
          "employee",
          "accrual"
        ],
        "sourceIds": [
          "report-order",
          "payroll-reporting-2026",
          "payroll-report-form-2026"
        ]
      },
      {
        "id": "close",
        "name": "Звіряння й закриття місяця",
        "owner": "Бухгалтер; відповідальні за невирішені залишки",
        "inputs": [
          "Проводки, виписки та звітні результати",
          "Початкові залишки",
          "Перелік невиконаних платежів і виправлень"
        ],
        "action": "Зіставити розрахунок, облік, фактичні платежі та звітність. Пояснити залишки й зафіксувати завершену версію періоду.",
        "output": "Протокол звірки, залишки та статус закриття.",
        "check": "Кожна різниця має причину й відповідального. Заблокований звіт або платіж видно окремо від готового розрахунку.",
        "exception": "Підсумок банку збігається, але виплати неправильно розподілені між працівниками.",
        "conceptIds": [
          "reconciliation",
          "balance",
          "bank-statement",
          "receipt",
          "period"
        ],
        "sourceIds": [
          "accounting-law",
          "report-order"
        ]
      },
      {
        "id": "correction",
        "name": "Виправлення після закриття",
        "owner": "Власник помилкових даних і бухгалтер",
        "inputs": [
          "Причина та підтвердження зміни",
          "Попередня версія розрахунку",
          "Перелік залежних проводок, платежів і звітів"
        ],
        "action": "Створити окремий випадок виправлення. Перерахувати потрібний період, визначити різницю й належний спосіб коригування обліку та звітності.",
        "output": "Пов’язана нова версія, різниця та підтверджені коригування.",
        "check": "Історичний результат доступний. Зміна розрахунку не переписала фактичну банківську операцію.",
        "exception": "Пізній лікарняний або документ про службу змінює вже закритий місяць.",
        "conceptIds": [
          "correction",
          "period",
          "entry",
          "report",
          "receipt",
          "payment"
        ],
        "sourceIds": [
          "standard6",
          "report-order",
          "labor-code"
        ]
      }
    ],
    "cases": [
      {
        "id": "ordinary",
        "name": "Звичайний місяць",
        "summary": "Умови не змінювались, усі документи надійшли вчасно. Перевіряємо повний цикл і залишок після попередніх виплат.",
        "attention": [
          "calculate",
          "payment",
          "close"
        ],
        "question": "Як пов’язані нарахована сума, сума після утримань і залишок до виплати?",
        "militaryScenarioId": null
      },
      {
        "id": "service",
        "name": "Початок служби",
        "summary": "Підтверджена подія служби виникла посеред місяця. Потрібні її дата, кадрове оформлення та окремі підстави виплат.",
        "attention": [
          "conditions",
          "time",
          "events",
          "calculate",
          "reporting"
        ],
        "question": "Які відрізки місяця підтверджені та що саме є підставою кожного нарахування?",
        "militaryScenarioId": "military-service-start"
      },
      {
        "id": "return",
        "name": "Повернення після служби",
        "summary": "Підтверджуємо завершення служби, вихід на роботу та чинні умови. Окремо перевіряємо проміжок між подіями.",
        "attention": [
          "conditions",
          "time",
          "events",
          "calculate"
        ],
        "question": "Чи розрізняються дата завершення служби та дата фактичного виходу?",
        "militaryScenarioId": "military-service-return"
      },
      {
        "id": "late-sick",
        "name": "Пізній лікарняний",
        "summary": "Документ про непрацездатність надійшов після закриття місяця. Потрібна окрема версія виправлення з впливом на час, суми та звітність.",
        "attention": [
          "time",
          "events",
          "reporting",
          "correction"
        ],
        "question": "Які вже створені документи залежать від зміненого періоду?",
        "militaryScenarioId": null
      },
      {
        "id": "salary-change",
        "name": "Зміна окладу й неповний місяць",
        "summary": "Наказ змінює умови всередині місяця. Розрахунок використовує кілька відрізків умов і фактичний час кожного.",
        "attention": [
          "conditions",
          "time",
          "calculate",
          "review"
        ],
        "question": "Чи не застосували поточний оклад до всього місяця?",
        "militaryScenarioId": null
      }
    ],
    "states": [
      {
        "object": "Розрахунок",
        "states": [
          "Чернетка",
          "Перевірено",
          "Погоджено",
          "Замінено новою версією"
        ],
        "evidence": "Версія вхідних даних, формул та погодження"
      },
      {
        "object": "Облікові записи",
        "states": [
          "Підготовлено",
          "Проведено",
          "Виправлено"
        ],
        "evidence": "Записи й зв’язок із версією розрахунку"
      },
      {
        "object": "Платіж",
        "states": [
          "Підготовлено",
          "Передано",
          "Виконано частково",
          "Виконано",
          "Відхилено"
        ],
        "evidence": "Банківське підтвердження й сума фактичного виконання"
      },
      {
        "object": "Звіт",
        "states": [
          "Підготовлено",
          "Подано",
          "Прийнято",
          "Відхилено",
          "Скориговано"
        ],
        "evidence": "Зміст квитанцій та зв’язок із поданням"
      },
      {
        "object": "Період",
        "states": [
          "Відкрито",
          "На перевірці",
          "Закрито",
          "Виправлення в роботі"
        ],
        "evidence": "Протокол звірки й перелік відкритих питань"
      }
    ],
    "dataModel": {
      "kind": "Редакційна модель даних для розробки; не нормативна форма",
      "entities": [
        {
          "id": "employment-version",
          "fields": [
            "employeeId",
            "employerId",
            "effectiveFrom",
            "effectiveTo",
            "salary",
            "scheduleId",
            "orderRef"
          ]
        },
        {
          "id": "time-record",
          "fields": [
            "employmentId",
            "date",
            "hours",
            "absenceType",
            "sourceRef",
            "verificationState"
          ]
        },
        {
          "id": "payroll-run",
          "fields": [
            "employerId",
            "period",
            "version",
            "inputSnapshotId",
            "ruleVersionIds",
            "state"
          ]
        },
        {
          "id": "payroll-line",
          "fields": [
            "runId",
            "employeeId",
            "earningPeriod",
            "paymentType",
            "base",
            "amount",
            "ruleRef",
            "sourceRefs"
          ]
        },
        {
          "id": "payment-allocation",
          "fields": [
            "paymentId",
            "employeeId",
            "liabilityId",
            "executedAmount",
            "bankEvidenceRef"
          ]
        },
        {
          "id": "report-submission",
          "fields": [
            "formVersion",
            "reportingPeriod",
            "submissionId",
            "state",
            "receiptRefs"
          ]
        },
        {
          "id": "correction-case",
          "fields": [
            "reason",
            "sourceRef",
            "previousRunId",
            "newRunId",
            "delta",
            "affectedDocumentRefs"
          ]
        }
      ],
      "principles": [
        "Дата події, період нарахування, дата виплати й звітний період зберігаються окремо.",
        "Повторна обробка того самого підтвердження не створює нового платежу або нарахування.",
        "Погодження прив’язане до версії; зміна входів потребує повторної перевірки.",
        "Суми зберігаються з визначеною точністю та правилами округлення.",
        "Персональні документи й розрахунки не входять до публічного API Ладу."
      ]
    },
    "reportingProfiles": {
      "legal": {
        "year": 2026,
        "sourceId": "payroll-reporting-2026",
        "sourceIds": [
          "payroll-reporting-2026"
        ],
        "period": "Місяць",
        "note": "За роз’ясненням ДПС від 2026-02-20. Версію форми, строк конкретного подання, перенесення й спеціальні випадки перевіряють окремо."
      },
      "selfEmployed": {
        "year": 2026,
        "sourceId": "payroll-reporting-2026",
        "sourceIds": [
          "payroll-reporting-2026",
          "payroll-report-form-2026"
        ],
        "period": "Квартал із помісячними показниками",
        "note": "За роз’ясненням ДПС від 2026-02-20. Версію форми, строк конкретного подання, перенесення й спеціальні випадки перевіряють окремо. ДПС від 2026-08-03 описує застосування квартальної форми з 2026-08-01. Для перехідного періоду перевірте вже подані місячні розрахунки, щоб не продублювати відомості."
      },
      "unknown": {
        "year": 2026,
        "sourceId": "payroll-reporting-2026",
        "sourceIds": [
          "payroll-reporting-2026"
        ],
        "period": "Потрібно визначити тип податкового агента",
        "note": "За роз’ясненням ДПС від 2026-02-20. Версію форми, строк конкретного подання, перенесення й спеціальні випадки перевіряють окремо."
      }
    }
  },
  "relationships": [],
  "history": [],
  "provenance": {
    "project": "oblik-map",
    "endpoint": "/api/export",
    "originalId": null,
    "sourceHash": "574f5fe271a2e46dc970ff161ddec48e2870ba1f74df2d619bcb77980fc1bf51",
    "edition": {
      "version": "0.8.0",
      "updated": "2026-09-17",
      "jurisdiction": "UA",
      "language": "uk",
      "origin": "Codex",
      "review": "Редакційна версія. Фахову перевірку правил ще не завершено."
    }
  },
  "uncertainty": "AI-assisted editorial snapshot. Human review is not recorded; source links and legacy reviewedAt do not certify current law or applicability."
}
