{"id":27091413,"url":"https://github.com/protw/finplan","last_synced_at":"2025-04-06T07:38:16.122Z","repository":{"id":167666186,"uuid":"615829117","full_name":"protw/finplan","owner":"protw","description":"Generation of the financial plan for the grant project - apps and description","archived":false,"fork":false,"pushed_at":"2024-12-18T09:58:53.000Z","size":1825,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-18T10:41:44.892Z","etag":null,"topics":["finance","planning","project","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/protw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-18T19:51:14.000Z","updated_at":"2024-12-18T09:58:57.000Z","dependencies_parsed_at":"2023-08-01T14:01:07.062Z","dependency_job_id":"9ecf3b43-0db4-48c5-be35-ed2a794c9164","html_url":"https://github.com/protw/finplan","commit_stats":{"total_commits":13,"total_committers":1,"mean_commits":13.0,"dds":0.0,"last_synced_commit":"8cec4c7e17e2f5ebb5cbd6d395a18b2e3fd1c687"},"previous_names":["protw/finplan"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protw%2Ffinplan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protw%2Ffinplan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protw%2Ffinplan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protw%2Ffinplan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/protw","download_url":"https://codeload.github.com/protw/finplan/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247451552,"owners_count":20940946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finance","planning","project","python"],"created_at":"2025-04-06T07:38:15.601Z","updated_at":"2025-04-06T07:38:16.106Z","avatar_url":"https://github.com/protw.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Фінансовий план грантового проєкту\r\n\r\nБезболісне управління грантовим проєктом вимагає чіткого фінансового помісячного планування індивідуальних виплат і витрат за кожною окремою статтею бюджету.\r\n\r\n![img](img/piscart.com.png)\r\n\r\n*Зображення згенеровано з допомогою веб-сервіса* [*piscart.com*](https://picsart.com/)\r\n\r\n# Зміст\r\n\r\n- Призначення застосунку\r\n- Опис вхідних даних\r\n  - `Task schedule` - календарний план\r\n  - `Task types` - тип завдань\r\n  - `Team` - список виконавців\r\n  - `Budget` - бюджет проєкту\r\n  - `Parameters` - важливі параметри проєкту\r\n- Опис результатів\r\n- Бонус: Гугл Календар проєктних подій\r\n- Запуск застосунку\r\n- Посилання\r\n\r\n# Призначення застосунку\r\n\r\nВласне цю роботу зі створення фінансового помісячного плану індивідуальних виплат і витрат за кожною окремою статтею бюджету виконує цей застосунок. А саме, з календарного плану робіт з розподілом участі виконавців та з врахуванням індивідуальних ставок застосунок розраховує і генерує:\r\n\r\n- Загальний сумарний розподіл індивідуальних трудовитрат і виплат\r\n- Щомісячні індивідуальні виплати виконавцям впродовж всього проєкту\r\n- Щомісячні індивідуальні трудові витрати виконавців у люд*днях впродовж всього проєкту\r\n- Щомісячні витрати за окремими основними статтями бюджету впродовж всього проєкту\r\n- У якості бонусу застосунок генерує таблицю дат подій для імпорту до Гугл Календаря\r\n\r\n# Опис вхідних даних\r\n\r\nВхідні дані формуються у вигляді Ексель-файлу і описані на прикладі уявного проєкту. Приклад файлу вхідних даних `Task schedule (template).xlsx` розташований у субфолдері `./data/`.\r\n\r\nФайл вхідних даних містить п’ять таблиць (аркушів):\r\n\r\n- `Task schedule` - календарний план завдань з розподілом участі виконавців\r\n- `Task types` - тип завдань за характером нарахування витрат: пропорційне (`prop`) і готівка (`cache`)\r\n- `Team` - список виконавців із встановленими ставками у проєкті\r\n- `Budget` - постатейний бюджет проєкту\r\n- `Parameters` - важливі параметри проєкту\r\n\r\n## `Task schedule` - календарний план\r\n\r\nТаблиця календарного плану складається з таких груп полів:\r\n\r\n**Група індексації** включає такі колонки:\r\n\r\n- `Tsk idx` - внутрішній індекс завдання,\r\n- `WP` - робочий пакет, до якого відноситься завдання,\r\n- `Cat` - категорія завдання (див. таблицю `Task types`),\r\n- `Level` - рівень завдання в ієрархії,\r\n- `Task/Deliv #` - номер завдання в проєкті\r\n\r\nЗначення у стовпчику `Cat` вводяться через спадний список (що прив'язаний до однойменного стовпчика з таблиці `Task types`) для уникнення введення помилкових значень. Також необхідно уважно слідкувати за відповідністю значень у стовпчику `Cat` типу завдання, що вводите (`prop` або `cache`).\r\n\r\n**Група стовпчиків (часового) графіку робіт** включає:\r\n\r\n- `DateStart` - дата початку завдання\r\n- `DateEnd` - дата завершення завдання\r\n- `Duration` - кількість роб днів (тут закладена формула в таблиці, отже нічого поправляти не потрібно, тим більше, що застосунок не бере це поле до уваги і обчислює кількість робочих днів самостійно)\r\n\r\n\u003e ⚠️ *Під час введення нових завдань залишайте (або копіюйте) формулу в стовпчику `Duration`. Це важливо для контролю правильності введених дат, а також уникнення помилок (дати можуть бути введені з помилкою і застосунок обов'язково спотикнеться об них).*\r\n\r\n**Стовпчик** `Cache` зазначає конкретну суму коштів на виконання завдання (типу `cache`) (див. таблицю `Task types`).\r\n\r\n**Група індивідуальних внесків** складається зі стовпчиків з короткими іменами (`Nick`) виконавців. Кожному з виконавців конкретного завдання призначається участь у виконанні цього завдання у відносних величинах від 0 до 100, що означає пропорційну частку робочих днів (зв стовпчика `Duration`) на це завдання, яку витрачає цей виконавець.\r\n\r\n\u003e ⚠️*Застосунок враховує всю сукупність внесків від всіх виконавців для всіх завдань і перенормовує їх таким чином, щоб сума нарахувань на оплату праці складала в точності статті бюджету `Personnel costs` (див. таблицю `Budget`)*\r\n\u003e\r\n\u003e ℹ️ *В цій групі кількість колонок користувачів можна зменшувати / збільшувати за умов, що: 1) короткі імена користувачів і їхня кількість точно збігаються з їхніми іменами зі стовпчика `Nick` в таблиці `Team`, 2) короткі імена мають бути унікальними між собою, а також з назвами інших стовпчиків всіх інших таблиць файлу вхідних даних.*\r\n\r\n**Стовпчик** `Description of task` містить назву завдання.\r\n\r\n## `Task types` - тип завдань\r\n\r\nЦя таблиця містить формалізований опис типів завдань за характером нарахування витрат: пропорційне (`prop`) і готівкою (`cache`). Значення зі стовпчика `Cat` ви використовуєте у для позначення типу завдання у календарному плані (`Task schedule`) у відповідному полі `Cat`.\r\n\r\nВи можете експериментувати і вводити нові унікальні типи завдань з єдиною умовою — у колонці `Type` можна вписувати лише одне з двох значень: `prop` або `cache`.\r\n\r\n## `Team` - список виконавців\r\n\r\nСписок виконавців не потребує багато пояснень. Всі поля самоочевидні.\r\n\r\nЛише деякі коментарі:\r\n\r\n- стовпчик `Nick` використовується також у таблиці `Task schedule`, отже потрібна повна відповідність цих імен там і тут;\r\n- серед ставок за годину, за роб. день і за місяць основою є перша — решта пов’язані простими формулами; окрім того, краще не базуватись на місячну ставку через відмінність кількості робочих днів у кожному місяці; натомість варто будувати власні розрахунки на погодинній або денній ставці;\r\n- у таблиці можна збільшувати зменшувати кількість рядків.\r\n\r\n## `Budget` - бюджет проєкту\r\n\r\nВ таблиці бюджету фіксовано використовується `Personnel costs` і його значення. Таблиця важлива ще для збалансування ваших планових витрат, тобто фінансові щомісячні (щоквартальні, щорічні) показники витрат сумарно мають збігтися з повним бюджетом. Але це ваша ручна робота. І це правильно - не довіряйте будь-кому (або будь-чому) розподіляти ваші кошти за вас, інакше вас немає.\r\n\r\n## `Parameters` - важливі параметри проєкту\r\n\r\nТаблиця важливих параметрів проєкту не потребує пояснень, наприклад:\r\n\r\n- `Working hour / day` – 8 (*кількість робочих годин у дні*)\r\n- `Working day / month` – 22 (*номінальна кількість робочих днів у місяці*)\r\n- `Start date` – 01.01.2023 (*дата початку проєкту*)\r\n- `End date` – 01.01.2027 (*дата завершення проєкту*)\r\n- `Overhead` – 25% (*відсоток накладних від суми всіх прямих витрат*)\r\n- `Project acronym `— ZSUV (*акронім проєкту*)\r\n\r\nВ таблиці можна правити лише значення у правій колонці `Value`.\r\n\r\n## `WP-PM` - розподіл трудовитрат по робочих пакетах\r\n\r\nУ європейських проєктах зазвичай контролюються трудовитрати у робочих пакетах як в цілому за проєкт, так і для кожного партнера-учасника:\r\n\r\n- `wp` – скорочене позначення робочого пакету, мають відповідати позначенням з таблиці `Task schedule` в колонці `WP`\r\n- `pm` – загальні трудовитрати у робочому пекеті в люд*міс\r\n\r\n# Опис результатів\r\n\r\nРезультат роботи застосунку зберігається у новому ексель-файлі, в імені якого до імені вхідного файлу додається суфікс `_finplan`. Тобто вихідний файл розташований біля вхідного, де б останній не був. В якості тестового прикладу у субфолдері `./data/` репозитарію є приклад файлу вхідних даних `Task schedule (template).xlsx` і поруч з ним фінплан, згенерований цим застосунком, `Task schedule (template)_finplan.xlsx`.\r\n\r\n\u003e ℹ️ *Приклад файлу вхідних даних `Task schedule (template).xlsx` можна використовувати в якості шаблону.*\r\n\r\nВихідний файл містить п’ять таблиць:\r\n\r\n- `Personal contribution` – загальний сумарний розподіл індивідуальних трудовитрат і виплат;\r\n- `Monthly pers payment, Euro` – щомісячні індивідуальні виплати виконавцям впродовж всього проєкту;\r\n- `Tabel, pers-day` – щомісячні індивідуальні трудові витрати виконавців у людино*днях впродовж всього проєкту;\r\n- `All monthly payments` – щомісячні витрати за окремими основними статтями бюджету впродовж всього проєкту;\r\n- `Google calendar` - календар початку і завершення завдань для імпорту до Гугл Календаря.\r\n\r\n\u003e ℹ️ *Документ згенерований застосунком і, тому, охайно не сформатований. Отже форматування треба зробити власноруч. Особливо важливо згрупувати стовпчики по кварталах і роках (в Екселі це робиться з допомогою `Дані / Групувати`) - таким чином ви зможете зручно переглядати квартальні та річні зведення. В якості прикладу в субфолдері `./data/` репозитарію розміщений належним чином сформатований вручну фінансовий план `Task schedule (template)_finplan_formatted.xlsx`.*\r\n\r\n# Бонус: Гугл Календар проєктних подій\r\n\r\nОкремий Гугл Календар проєктних подій дуже корисна штука, особливо якщо цей календар поширити на членів команди. Назва кожної календарної події містить скорочену назву (акронім) проєкту, номер завдання і зазначення, що то є початок або завершення завдання. В описі розміщена повна назва завдання і перелік скорочених імен виконавців.\r\n\r\nПеред імпортом до Гугл Календаря потрібно експортувати таблицю `Google calendar` з результуючого фінплану у вигляді CSV-файлу. Потім цей CSV-файл можна імпортувати до Гугл Календаря. Ця процедура простою мовою і докладно описана у [відео](https://www.youtube.com/watch?v=Yd1bQ3JDDLY).\r\n\r\nПриклад такого календаря, готового до імпорту, представлений тут же у репозитарії `./data/Task schedule (template)_calendar.csv`.\r\n\r\nІмпортований гугл календар має сенс поширити на членів команди через налаштування на доступ у самому календарі.\r\n\r\n# Запуск застосунку\r\n\r\nЗастосунок, що генерує всі ці корисні штуки, розроблений на базі *Python*. Основна програма для запуску застосунку — `fin_plan.py`.\r\n\r\nДля запуску застосунку необхідно мати встановлений на комп’ютері *Python*.\r\n\r\nПотрібно також скачати репозитарій застосунку з *github* і розгорнути його в окремому фолдері.\r\n\r\nЗапуск здійснюється з командного рядка наступним чином:\r\n\r\n```\r\n\u003e python \u003cpath/\u003efin_plan.py \u003cpath/data_file\u003e.xlsx\r\n```\r\n\r\nРезультат роботи застосунку зберігається у новому ексель-файлі, в імені якого до імені вхідного файлу додається суфікс `_finplan`:\r\n\r\n```\r\n\u003cpath/data_file\u003e_finplan.xlsx\r\n```\r\n\r\n\u003e ℹ️ *Лайф-гак (life-hack) як зручніше запустити застосунок у Віндовс.*\r\n\u003e\r\n\u003e *Відкрийте три наступних вікна:*\r\n\u003e\r\n\u003e 1) *термінал командного рядка `cmd`;*\r\n\u003e 2) *файловий провідник з відкритим фолдером застосунку `finplan`;*\r\n\u003e 3) *файловий провідник з відкритим фолдером, де розташований Ексель-файл вхідних даних вашого проєкту.*\r\n\u003e\r\n\u003e *У вікні (1) набираєте `python` і пробіл. З вікна (2) застосунку тягнете файл `fin_plan.py` у вікно (1), додаєте пробіл в останньому. Потім тягнете з вікна (3) ексель-файл вхідних даних до того ж вікна (1). Нарешті натискаєте \u003cEnter\u003e.Чекаєте безпомилкового завершення виконання застосунку. Дивитесь на результат у вікні (3).*\r\n\r\n# Посилання\r\n\r\nКод застосунку з прикладом вхідних даних і результатів розташований у [репозитарії github](https://github.com/protw/finplan).\r\n\r\nКлючові слова: `Finance`, `Project Management`, `Planning`, `Python`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotw%2Ffinplan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprotw%2Ffinplan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotw%2Ffinplan/lists"}