Ֆինանսներ — սեփականատիրոջ հաշվեմատյան, բաժինների գրքեր, առաջադրանքների վճարումներ
Պարզ ասած՝ Աշխատակազմ-ի դրամական կողմը — գաղտնի հաշվեմատյան, որը վարում է հարթակի սեփականատերը, յուրաքանչյուր բաժնի ղեկավարի իր բաժնի համար վարած առանձին, անկախ հաշվեմատյան, յուրաքանչյուր առաջադրանքի համար կատարողի հետ վճարման բանակցություն, և համադրում, որը համեմատում է սեփականատիրոջ գրառումները ղեկավարների գրառումների հետ՝ երբեք դրանք չսինխրոնացնելով։
Գտնվում է Աշխատակազմ-ի backend մոդուլի ներսում (apps/core-api/src/modules/staffing/finance.service.ts, task-payouts.service.ts), բայց դա իր առանձին իրավունքների տիրույթն է, միտումնավոր ոչworkspace:staffing:*-ի մաս — տես 2026-07-28-ի գրառումը docs/iam/PERMISSIONS_CATALOG.md-ում։ Փողը գաղտնի է. յուրաքանչյուր փոփոխություն գրվում է աուդիտի մատյանում, բայց երբեք TeamEvent-ում, /team/activity հոսքում, որը տեսանելի է workspace:staffing:read ունեցող ցանկացած մեկին — շատ ավելի լայն շրջանակ, քան նրանք, ովքեր ունեն ֆինանսների հասանելիություն։
Ինչպես անել...
Խմբավորված է նույն կերպ, ինչ տեխնիկական բաժինները ստորև — յուրաքանչյուր էջի օգնության պատկերակը տանում է հենց իր խումբը, ոչ թե այս ամբողջ ցանկը։
Սեփականատիրոջ հաշվեմատյան
Գրանցել բյուջեի հատկացում կամ ծախս — ձախ մենյուում բացիր «Ֆինանսներ» → Ավելացնել գրառում (վերևում աջից) → ընտրիր Տեսակ (Եկամուտ/Բյուջե/Ծախս), Գումար, Արժույթ, Ամսաթիվ, Նկարագրություն, ցանկության դեպքում կապակցիր Նախագծին/Բաժնին → Ստեղծել։ Տես դաշտերի ուղեցույցը։
Խմբագրել կամ ջնջել հաշվեմատյանի գրառումը — գրառման տողը → ⋯ → Խմբագրել գրառումը կամ Ջնջել գրառումը։
Համեմատել սեփական գրառումները բաժնի ղեկավարի գրքի հետ — «Ֆինանսներ» → Համադրում ներդիր։ Լռելյայն ցուցադրվում են միայն անհամապատասխանությունները; միացրու Ցույց տալ համընկնողները՝ ամեն ինչ տեսնելու համար, ներառյալ համընկնող տողերը։
Գրանցել/խմբագրել հաշվեմատյանի գրառում — դաշտերի ուղեցույց
Նույն երկխոսությունն ու նույն դաշտերն օգտագործվում են սեփականատիրոջ հաշվեմատյանում, բաժնի սեփական գրքում և նախագծի «Ֆինանսներ» ներդիրում — փոխվում է միայն այն, թե որ ոչ պարտադիր կապակցման դաշտն է ցուցադրվում (Նախագիծ, Բաժին կամ ոչ մեկը)՝ կախված նրանից, թե որտեղից է բացվել։
- Տեսակ — պարտադիր. Եկամուտ (իրապես ստացված գումար), Բյուջե (հատկացված, բայց դեռ չծախսված գումար) կամ Ծախս (իրապես ծախսված գումար)։ Այս երեքը երբեք չեն միախառնվում մեկ ընդհանուր գումարի մեջ։
- Գումար — պարտադիր, դրական թիվ։ Գումարվում է թե՞ հանվում ընդհանուրից՝ ամբողջությամբ որոշում է Տեսակը, ոչ թե թվի նշանը։
- Արժույթ — պարտադիր. AMD / USD / EUR / RUB։ Յուրաքանչյուր ընդհանուր հաշվարկվում է առանձին ըստ արժույթի, առանց փոխարկման — նույն ծախսը երկու արժույթով գրանցելը տալիս է երկու առանձին ընդհանուր։
- Ամսաթիվ — պարտադիր, լռելյայն այսօրվա ամսաթիվն է։ Հենց այս ամսաթիվն է, ոչ թե փաստացի պահպանման պահը, որ որոշում է, թե որ ամսում է գրառումը խմբավորված, և ինչ ժամանակահատվածի ֆիլտրեր են այն բռնում։
- Նկարագրություն — պարտադիր, 1–2000 նիշ։
- Նախագիծ — ոչ պարտադիր (թաքցված է նախագծի սեփական «Ֆինանսներ» ներդիրում, որտեղ արդեն ինքնաբերաբար հասկացվում է)։ Կապակցում է գրառումը նախագծին «Հաշվետվություններ» ներդիրի բաշխման համար; թող մնա «Առանց նախագծի» մնացածի համար։
- Բաժին — ոչ պարտադիր (թաքցված կամ նախապես լրացված այնտեղ, որտեղ գիրքն ինքն արդեն մեկ կոնկրետ բաժին է)։ Նույն նպատակը, ինչ Նախագծինը, բայց «Համադրում» ներդիրի համար։
Բաժնի սեփական գիրքը
Գրանցել իր բաժնի սեփական գրքում (միայն բաժինների ղեկավարներ) — բացիր քո բաժինը → Ֆինանսներ ներդիրը → Ավելացնել գրառում։ Սա վերևի սեփականատիրոջ հաշվեմատյանից առանձին գիրք է — տես Բաժնի սեփական գիրքը։ Նույն դաշտերը, ինչ սեփականատիրոջ հաշվեմատյանի դաշտերի ուղեցույցում, մինուս Բաժին։
Խմբագրել կամ ջնջել բաժնի գրքի գրառումը — գրառման տողը → ⋯ → Խմբագրել գրառումը կամ Ջնջել գրառումը (միայն ղեկավարի համար)։
Նախագծի «Ֆինանսներ» ներդիրը
Տեսնել, ինչպես են երևում սեփական նախագծի ծախսերը — բացիր նախագիծը → դրա Ֆինանսներ ներդիրը։ Սա նույն սեփականատիրոջ հաշվեմատյանն է, պարզապես նախապես զտված այս նախագծով։
Գրանցել, խմբագրել կամ ջնջել գրառում նախագծի տեսքից — նույն Ավելացնել գրառում / ⋯ → Խմբագրել գրառումը / Ջնջել գրառումը, ինչ սեփականատիրոջ հաշվեմատյանում, պարզապես նախապես զտված այս նախագծով։ Նույն դաշտերի ուղեցույցը։
Առաջադրանքների վճարումներ
Առաջարկել վճարում առաջադրանքի կատարողին — բացիր առաջադրանքը → Task payout քարտը → Ավելացնել վճարում → ընտրիր Կատարողին, Գումարը, Արժույթը → Ստեղծել (սա նախագիծ է, կատարողը դեռ չի տեսնում) → ⋯ այս տողի վրա → Ուղարկել կատարողին։ Տես դաշտերի ուղեցույցը։
Պատասխանել քեզ առաջարկված վճարմանը — բացիր առաջադրանքը; եթե դու ես կատարողը, Ընդունել/ Մերժել կոճակները տեսանելի են ուղղակիորեն քո վճարման վրա, առանց մենյուի։
Գրանցել առանց հաշվի կատարողի պատասխանը — նույն ⋯ մենյուում, նրա սեփական սեղմումին սպասելու փոխարեն — «Արձանագրել որպես ընդունված/մերժված (համաձայնվել են հարթակից դուրս)» կետերը։
Խմբագրել կամ ջնջել վճարումը — վճարման ⋯ → Խմբագրել գրառումը կամ Ջնջել գրառումը։ Արդեն ուղարկված օֆերի գումարի/արժույթի փոփոխությունը այն նորից դարձնում է սևագիր — պետք է ուղարկվի կրկին։ Ջնջումն արգելափակված է, եթե վճարման դիմաց արդեն կա իրական վճարում կամ սպասող հաշվետվություն։
Ավելացնել/խմբագրել վճարում — դաշտերի ուղեցույց
- Կատարող — պարտադիր, սահմանվում է միայն ստեղծելիս։ Ցանկում երևում են միայն այս առաջադրանքին արդեն նշանակված մարդիկ, ովքեր դեռ վճարում չունեն; հենց բոլորն ունենան, «Ավելացնել վճարում» կոճակն անհետանում է քարտից։
- Գումար — պարտադիր, դրական թիվ։
- Արժույթ — պարտադիր. AMD / USD / EUR / RUB, նույն ցանկը, ինչ հաշվեմատյանում։
- «Նկարագրություն» կամ «Ամսաթիվ» դաշտեր չկան — վճարումը դեռ պարզապես ինչ-որ մեկին պարտք գումար է, ոչ դեռ հաշվեմատյանի տող; դրանք հայտնվում են ավելի ուշ, վճարման հաշվետվության մեջ։
- Նոր վճարումը միշտ սկսվում է որպես Սևագիր, անտեսանելի կատարողի համար, մինչև հստակ սեղմես Ուղարկել։ Արդեն ուղարկված օֆերի Գումարի/Արժույթի փոփոխությունը վերադարձնում է այն Սևագիր-ի — պետք է կրկին ուղարկվի, նախքան կատարողը տեսնի փոփոխությունը։
- Ջնջել-ը արգելափակված է, եթե դրա դիմաց արդեն գրանցված է իրական վճարում, կամ քանի դեռ վճարման հաշվետվությունը սպասում է հաստատման — նախ չեղարկիր հաշվետվությունը (տես Վճարման հաստատում ստորև)։
- Այս ցանկից վերևում հայտնվում է առաջադրանքի գնահատականին անհամապատասխանության զգուշացում, եթե բոլոր ընդունված վճարումների գումարը գերազանցում է առաջադրանքի «Արժեք» դաշտը — սա միայն մեղմ զգուշացում է, ոչինչ դրանով չի արգելափակվում։ Առաջադրանքի արժույթից տարբեր արժույթով վճարումները նշվում են առանձին զգուշացումով, քանի որ դրանք ուղղակիորեն համեմատել հնարավոր չէ։
Վճարման հաստատում
Գրանցել, որ ուղարկել ես ինչ-որ մեկին վճարումը — ընդունված վճարման վրա. ⋯ → Հայտնել վճարման մասին → գումար/ամսաթիվ/նկարագրություն արդեն լրացված են → ուղարկել։ Սա դեռ չի դիպչում հաշվեմատյանին — ստացողը պետք է ինքը հաստատի, որ փողը հասել է։ Տես դաշտերի ուղեցույցը։
Հաստատել, որ վճարումը ստացվել է — առաջադրանքի վրա հայտնվում է բաններ («Սեփականատերը հայտնում է X-ի ուղարկման մասին Y ամսաթվին — հասե՞լ է») Հաստատել ստացումը / Ես չեմ ստացել կոճակներով։
Գրանցել վճարման արդյունքը առանց հաշվի կապալառուի համար — նույն ⋯ մենյուում — «Արձանագրել որպես ստացված/չստացված (համաձայնվել են հարթակից դուրս)» կետերը մենեջերի համար։
Չեղարկել սպասող վճարման հաշվետվությունը — վճարման ⋯ → Չեղարկել փոխանցման հաղորդագրությունը (օրինակ՝ գումարի վրիպակը ուղղելու համար, չսպասելով, մինչև ստացողը վիճարկի)։
Հայտնել վճարման մասին — դաշտերի ուղեցույց
- Գումար — պարտադիր, նախապես լրացված է այն գումարով, որը դեռ պարտք է (ոչ ամբողջ գումարով) — մասնակի վճարումը ձեռքով նվազեցնելու կարիք չկա ընդհանուրից։ Իրապես պարտք եղածից ավելի մուտքագրելն անհնար է։
- Ամսաթիվ — պարտադիր, նախապես լրացված է այսօրվա ամսաթվով։
- Նկարագրություն — պարտադիր, նախապես լրացված է ինքնաստեղծ տողով, ամբողջովին խմբագրելի, մինչև 2000 նիշ։
- Մեկ վճարման դիմաց միաժամանակ կարող է սպասել միայն մեկ հաշվետվություն — «Հայտնել վճարման մասին»-ն անհետանում է ⋯ մենյուից, մինչև ընթացիկը հաստատվի, վիճարկվի կամ չեղարկվի։
- Ոչինչ հաշվեմատյանում չի գրվում, մինչև հաշվետվությունը հաստատվի — հենց հաստատումն է, որ ստեղծում է ծախսի իրական գրառումը։
Վահանակի բաններ
Տեսնել, թե ինչն է սպասում քո պատասխանին, բոլոր առաջադրանքների վրայով — /team/dashboard → «Իմ վճարումները» բաններ, երբ ունես առաջարկված օֆեր կամ ընթացքի մեջ գտնվող վճարման հաշվետվություն։ Կարգավորելու բան չկա — այն հայտնվում է միայն երբ իրապես կա ինչ-որ բան լուծելու։
Ծանուցումներ
Փողը միակ ոլորտն է, որտեղ յուրաքանչյուր իրադարձություն պահանջում է ինչ-որ մեկի պատասխանը, ուստի դրանք բոլորը Կարևոր են. և՛ զանգակին, և՛ էլ. փոստով։ Ամբողջական բացատրությունը՝ Ծանուցումներ։
Վճարումներ
Արվեց առաջարկ — կատարողին ծանուցում է գալիս գումարով։ Քանի դեռ նա չի պատասխանել, այս գործընթացում այլ ոչինչ չի կարող առաջ շարժվել։
Առաջարկն ընդունվեց կամ մերժվեց — նրան, ով այն արել է, մեկնաբանության հետ միասին, եթե այդպիսին եղել է։ Հաջորդ քայլն այժմ նրանն է։
Նշվեց վճարում — ստացողին խնդրանք է գալիս հաստատել ստացումը։ Քանի դեռ նա չի հաստատել, հաշվապահության մեջ գրառում չի հայտնվում, ուստի հենց այս ծանուցումն է սկսում այդ քայլը։
Ստացումը հաստատվեց կամ վիճարկվեց — նրան, ով նշել է վճարումը, և առաջարկի հեղինակին։ Վեճը ամեն դեպքում լուծելու են նրանք։
Բուն հաշվապահությունը — եկամուտների, բյուջեների և ծախսերի գրառումները — ոչ մեկին չի ծանուցում։ Սրանք ձեր սեփական գրառումներն են, և ոչ ոք դրանք չի սպասում։
Իրավունքների մոդելը
Երկու կատալոգային իրավունք գումարած մեկ տվյալահենք կանոն, շերտավորված.
| Ով | Ինչ կարող է անել |
|---|---|
workspace:finance:read | Կարդալ սեփականատիրոջ հաշվեմատյանը և ցանկացած բաժնի գիրքը (վերջինը՝ միայն կարդալու համար) |
workspace:finance:manage | Գրել սեփականատիրոջ հաշվեմատյանում և հայտնել/հաստատել իրական վճարում — միակ իրավունքը, որը շարժում է հաշվեմատյանի փողը |
workspace:finance:payouts:read | Տեսնել թիմի առաջադրանքների բոլոր վճարումները, ներառյալ սևագրերը, և ոչինչ չառաջարկել |
workspace:finance:payouts:manage | Առաջարկել, փոփոխել, ուղարկել և չեղարկել թիմի առաջադրանքների վճարումները |
Բաժնի ընթացիկ ղեկավարը (Department.leaderId, առանց իրավունքի տողի) | Կարդալ և գրել միայն իր բաժնի գիրքը; կառավարել իր բաժնի առաջադրանքների վճարումները — բայց չի կարող հայտնել/հաստատել իրական վճարումներ (տես ներքևում) |
Ղեկավարի ստուգումը նույն տվյալահենք օրինաչափությունն է, որն օգտագործվում է ամբողջ Աշխատակազմ-ում (բաժնի «Ֆինանսներ»/«Դերեր» ներդիրները) — ոչ մի կատալոգային իրավունք, պարզապես «արդյոք այս բաժնի leaderId-ը ընթացիկ օգտատերն է»։ workspace:finance:manage-ը միտումնավոր բացառված է P4P Internal-ի Team Admin մակարդակի իրավունքներից — ֆինանսները հասանելի են միայն Team Manager մակարդակին (docs/staffing/ADR-002-org-rbac-migration.md; հարթակային SUPER_ADMIN/P4P Owner/P4P Admin դերերը 2026-08-18-ից այս ստուգման հետ ուղղակիորեն կապված չեն — տես Աշխատակազմ՝ ինչպես հարթակային դերը կարող է այնուամենայնիվ հասնել Team Manager մակարդակին linkedOrgRoleId-ի միջոցով, բայց դա հարմարություն է վերևից, ոչ թե բուն ստուգումը)։
Վճարումների երկու իրավունքն էլ առանձնացվել են workspace:finance:manage-ից 09.09.2026-ին, որովհետև մինչ այդ «տեսնել, թե որքան է վճարվում թիմին» և «փոխել դա» նույն բանն էին — այսինքն վերահսկողություն տալ հնարավոր էր միայն ուրիշների վճարումների վրա վերահսկողություն հանձնելով։ Հիմա դրանք առանձին անջատիչներ են Team դերերի վրա, և payouts:manage-ը ենթադրում է payouts:read (իրավունք առաջարկելու վճարում, որին չես կարող նայել, ոչ ոքի պետք չէր լինի)։ Իրական վճարման հայտնելը և հաստատելը մնացել են workspace:finance:manage-ի վրա. դա գրառում է հաշվեմատյանում։
Բաժանման պահին ոչ ոքի մոտ ոչինչ չփոխվեց — Team Manager-ը ստացավ երկու բանալին էլ, իսկ բոլոր հատուկ դերերին, որոնք արդեն ունեին workspace:finance:manage, դրանք ավելացրեց միգրացիան։
Բաժնի ղեկավարի ստուգումը վճարումների միակ ճանապարհն է, որը ոչ մի իրավունքով չի փակվում. ղեկավարը տեսնում և վարում է իր բաժնի առաջադրանքների բոլոր վճարումները, և դա դադարեցնելու միակ ձևը բաժնի ղեկավար լինելը դադարեցնելն է։
Ավելի նեղ բացառություն առաջադրանքների վճարումների ներսում (ֆինանսների 5-րդ փուլ, 2026-07-30). վճարման նախագծի ստեղծումը, դրա ուղարկումը և կատարողի պատասխանը (ընդունել/մերժել) հասանելի են սեփականատիրոջ մակարդակում կամ առաջադրանքի բաժնի ղեկավարին (TaskPayoutsService.canManage)։ Բայց իրական վճարման փաստացի հայտնումը կամ հաստատումը (reportPayment/confirmPayment-որպես-մենեջեր/markPayment/cancelPaymentReport) պահանջում է հատուկ workspace:finance:manage (hasFinanceManage/assertCanRecordPayment) — բաժնի ղեկավարը, ով կարող է առաջարկել և կառավարել օֆերը, դեռ չի կարող դիպչել դրա հետևում կանգնած իրական հաշվեմատյանի փողին։ Հայտնաբերվել է 2026-07-30 աուդիտում. հին «Նշել որպես վճարված» գործողությունն ընդհանրապես նման ստուգում չուներ։
Սեփականատիրոջ հաշվեմատյան (/team/finances)
Պարզ ասած՝ միակ տեղը, որտեղ սեփականատերն հետևում է փողի շարժմանը ողջ ընկերությունում — երեք ներդիր մեկ էջում, մեկ ընդհանուր ժամանակահատվածի կառավարիչ բոլորի վրա։
- Records tab («Գրառումներ») — հենց գրառումների հոսքը. արժույթների ամփոփ շերտ (եկամուտ/ծախսված/նախորդի համեմատ), ապա ամսերով խմբավորված մատյան։ «Ավելացնել գրառում» (
:manage) բացում է երկխոսություն. տեսակ (INCOME/BUDGET/EXPENSE— երեք տարբեր տնտեսական իրադարձություն, երբեք չշփոթված; գումարները միշտ դրական են, ուղղությունը որոշվում էtype-ով), գումար, արժույթ (AMD/USD/EUR/RUB, կուրացված ցանկ — նոր արժույթ ավելացնելը կոդի փոփոխություն է, քանի որ գումարներն հաշվարկվում են յուրաքանչյուր արժույթի համար առանձին, առանց փոխարկման)։ Խմբագրում/ջնջում տողի մակարդակով (:manage)։ - Reports tab («Հաշվետվություններ») — սեփական տվյալներ չունի, նույն զտված հավաքածուն, ինչ Records-ը. բյուջե-ընդդեմ-ծախսերի միտում ըստ ամսվա/եռամսյակի/տարվա (մասշտաբավորելի) և «ուր է գնում փողը» բաշխում ըստ նախագծի և ըստ բաժնի, յուրաքանչյուր տող կտտացվող է — տեղափոխում է Records՝ պատրաստի զտիչով։ Եկամուտը միտումնավոր բացառված է երկուսից էլ — այն կա միայն Records-ի ամփոփ շերտում։
- Reconciliation tab («Համադրում», ինտերֆեյսում՝ «Reconciliation», կոդի ներսում՝
comparison) — մեկ տող յուրաքանչյուր բաժին × արժույթ զույգի համար, սեփականատիրոջ սեփական՝ բաժնին կապակցված գրառումները կողք կողքի այդ բաժնի սեփական գրքի հետ, բյուջեն և ծախսը համեմատվում են անկախ։ Ոչ զրոյական տարբերությունը տեղեկատվություն է, ոչ սխալ. երկու գրքերը երբեք կապված կամ սինխրոնացված չեն։ Համընկնող տողերը լռելյայն թաքցված են («Ցույց տալ համընկնողները (N)» անջատիչը բացում է դրանք), այնպես որ աղյուսակը ցույց է տալիս միայն այն, ինչը իրականում ուշադրություն է պահանջում; ինքը ներդիրը բեջ է ստանում միայն երբ կա ինչ-որ բան նայելու։ - Ժամանակահատվածի կառավարիչը (Այս ամիս/Անցյալ ամիս/Այս եռամսյակ/.../Հատուկ միջակայք) ընդհանուր է բոլոր երեք ներդիրների համար և պահվում է URL-ում (
?view=&period=) — «Համադրում անցյալ եռամսյակի համար» հղումը գոյատևում է թարմացումից հետո։ Միտումնավոր ՉԻ պահվում այցելությունների միջև՝ էջը մի քանի շաբաթ անց հին պատուհանով բացելը հին թվերը ընթացիկ ներկայացնելու ռիսկ կունենար։
Բաժնի սեփական գիրքը (/team/departments/[id]/finances)
Պարզ ասած՝ բաժնի ղեկավարի անձնական հաշվեմատյանը իր բաժնի համար — անկախ սեփականատիրոջից, միտումնավոր, որպեսզի վերևի «Համադրում» ներդիրն ունենա իրապես անկախ երկու գրառում համեմատելու համար։
- Տեսանելի է միայն այդ բաժնի ընթացիկ ղեկավարին (կարդալ և գրել) և
workspace:finance:readունեցողներին (միայն կարդալ, սեփականատիրոջ մակարդակի ցուցակի միջոցով — միայն-ղեկավարի երթուղին նրանց կվերադարձնի 403)։ Նրանց, ովքեր ունեն միայնworkspace:staffing:read՝ առանց ֆինանսների որևէ հասանելիության, «Finances» ներդիրն ընդհանրապես չի երևում ներդիրների ցանկում. URL-ին ուղղակիորեն անցնելիս գրքի փոխարեն ցուցադրվում է «անհասանելի է» հաղորդագրություն (էջի սեփական պաշտպանիչ ստուգումը, նույն տրամաբանությամբ, ինչ ստորև՝ նախագծի Finance ներդիրում)։ - Նույն գրառման ձևը, ինչ սեփականատիրոջ հաշվեմատյանում (տեսակ/գումար/արժույթ/ամսաթիվ/նկարագրություն, ընտրովի կապակցում նախագծին — բաժինը ինքնաբերաբար հասկացվում է)։ Յուրաքանչյուր արժույթի համար առանձին սալիկներ (Եկամուտ/Բյուջե/Ծախսված/Մնացորդ) աղյուսակի վերևում։
- Սեփականատերը կարդում է այս գիրքը վերևի «Համադրում» ներդիրում, բայց երբեք չի կարող գրել այնտեղ — երկու անկախ գրքերի ողջ իմաստը դրանք համեմատելն է; սեփականատիրոջ խմբագրումներն այստեղ կփչացնեին դա։
Նախագծի «Ֆինանսներ» ներդիրը (/team/projects/[id]/finances)
Պարզ ասած՝ սեփականատիրոջ հաշվեմատյանը՝ զտված մեկ նախագծի համար — ընկերության ընդհանուր ֆինանսների կտրվածքն այս նախագծի համար, ոչ առանձին հաշվեմատյան։
- Ցուցադրվում և հասանելի է միայն
workspace:finance:readունեցողներին — ներդիրի կոճակը թաքցված է առանց այս իրավունքի, և ինքը էջը լրացուցիչ ստուգում է URL-ով ուղիղ մուտքի դեպքում։ - Նույն Records-ի ձևը, ինչ
/team/finances-ում (ամփոփ շերտ, մատյան, ժամանակահատվածի կառավարիչ, զտիչներ ըստ բաժնի/արժույթի/տեսակի՝ առանց «Նախագիծ»-ի, որն այստեղ ինքնաբերաբար հասկացվում է) — գրառումները դեռ անցնում են սեփականատիրոջ հաշվեմատյանի էնդփոինթներով (:manage), պարզապես նախապես զտված այս նախագծով։
Դրույքներ և հաշիվներ (/team/invoices)
Պարզ ասած՝ նշեք նախագծի հաճախորդին և դրույքը, գրանցված ժամերից ստեղծեք հաշիվ, դուրս գրեք այն, նշեք վճարումը — և տեսեք՝ արդյոք նախագիծը իրեն արդարացնում է։
- Հաճախորդ և դրույք — նախագծի «Ֆինանսներ» ներդիրում (փոխել՝
workspace:finance:manage)։ Մեկ ժամային դրույք նախագծի համար. նոր դրույքն ազդում է միայն նոր հաշիվների վրա։ - Հաշիվ ժամերից — նույն տեղում. ընտրեք ժամանակահատված և մեկ տող յուրաքանչյուր անձի կամ առաջադրանքի համար։ Վերցվում են նախագծի այն ժամերը, որոնք դեռ ոչ մի հաշվում չկան, × դրույքը — ստացվում է սևագիր։ Այդ ժամերը զբաղված են. դրանք չեն կարող կրկին դուրս գրվել, և դրանց տևողությունն ու օրը չեն կարող փոխվել, մինչև սևագիրը չջնջվի կամ հաշիվը չչեղարկվի։
- Սևագիր → դուրս գրված → վճարված, կամ չեղարկված — սևագիրը կարելի է փոխել և ջնջել։ Դուրս գրելիս հաշիվը ստանում է հաջորդ համարը (
2026-0001) և այլևս չի փոխվում. դրա համար պետք են ընկերության տվյալները Հաշիվների կարգավորումներում (/team/invoices-ի ընտրացանկ)։ Դուրս գրված հաշիվը նշվում է վճարված (մատյանում հայտնվում է նախագծի եկամուտ) կամ չեղարկվում պատճառով — այն մնում է ցուցակում, իսկ համարն այլևս չի օգտագործվում։ «Ժամկետանց»՝ դուրս գրված, չվճարված, և ժամկետն անցել է։ - Տպել / PDF — «Տպել / PDF» կոճակը բացում է մաքուր էջ. տպելու պատուհանում ընտրեք «Պահպանել որպես PDF»։
- Շահութաբերություն — նախագծի «Ֆինանսներ» ներդիրում. դուրս գրված, վճարված, սպասում է վճարման, արժեքը (ժամեր × յուրաքանչյուրի ժամի ինքնարժեք, գումարած համաձայնեցված վճարումներ առաջադրանքների համար) և մարժան՝ ըստ արժույթների։
- Ժամի ինքնարժեք — որքան է ընկերությանն արժենում յուրաքանչյուրի ժամը.
/team/finances-ի «…» ընտրացանկ → «Ժամի ինքնարժեք»։ Միայն ֆինանսների համար. ում համար այն նշված չէ, նախագիծը նշում է անունով — նրանց ժամերը հաշվվում են զրո արժեքով։
Առաջադրանքների վճարումներ (առաջադրանքի էջի «Task payout» քարտը)
Պարզ ասած՝ կոնկրետ առաջադրանքի կոնկրետ կատարողի փոխհատուցման առաջարկ, որը այդ կատարողը պետք է բացահայտորեն ընդունի կամ մերժի — ոչ առաջադրանքին նշանակվելու ինքնաբերական հետևանք։
Կենսացիկլ. DRAFT (ստեղծված, կատարողին անտեսանելի) → Ուղարկել կատարողին → PROPOSED → կատարող Ընդունել/Մերժել → ACCEPTED/DECLINED։ Արդեն ուղարկված առաջարկի գումարի/արժույթի խմբագրումը այն նորից դարձնում է DRAFT — փոփոխված առաջարկը պետք է բացահայտորեն կրկին ուղարկվի, երբեք լուռ չփոխարինվի արդեն տրված պատասխանի տակ։ Մերժված (DECLINED) առաջարկը կարող է կրկին առաջարկվել։
- Ցուցադրվում է միայն վճարումները կառավարողներին (սեփականատիրոջ մակարդակ կամ առաջադրանքի բաժնի ղեկավար) և կատարողին, ով այս առաջադրանքի վրա ունի առնվազն մեկ ոչ-
DRAFTվճարում։ - Առանց հաշվի կապալառուներ (կադրերի ռեզերվի գրառում, չկապակցված
User-ի հետ). չեն կարող ինտերֆեյսում պատասխանել, ուստի մենեջերն արձանագրում է արդյունքը հարթակից դուրս — «Արձանագրել որպես ընդունված/մերժված (համաձայնվել են հարթակից դուրս)»։ Ամբողջովին անհասանելի ցանկացած կատարողի համար, ով ունի հաշիվ — մենեջերը երբեք չի կարող խոսել իրական հաշվի փոխարեն (taskPayout.assigneeCanRespond)։assigneeHasAccount/isMine-ը սերվերում հաշվարկվում են հատուկ այնպես, որ կադրերի ռեզերվի միջոցով կապակցված հաշիվը (որիuserId-ը այլապես ոչ մի տեղ բացահայտված չէ) դեռ տեսնի իր «Ընդունել»/«Մերժել» կոճակները (ուղղվել է 2026-07-30 — նախկինում այս դեպքը տեսանելի էր միայն վահանակի բաններով)։ - Վճարման ջնջումը արգելափակված է, եթե դրա դիմաց արդեն կա արձանագրված իրական վճարում կամ սպասող վճարման հաշվետվություն — երկուսն էլ այլապես լուռ կթողնեին առանց կապի իրական գործարքը կամ ստացողի հետ բաց հարցը։
Վճարման հաստատում (ֆինանսների 5-րդ փուլ)
Մենեջերի «Ես ուղարկեցի փողը» ասելը և այն իրականում հասնելը երկու տարբեր փաստ են — իրական EXPENSE գրառումը հաշվեմատյանում ստեղծվում է միայն երբ ստացողն ինքն է հաստատում ստացումը, երբեք միայն մենեջերի խոսքով (ուղղվել է 2026-07-30. հին «Նշել որպես վճարված»-ը ստեղծում էր գրառումն անմիջապես, միայն մենեջերի հաշվետվության հիման վրա)։
- Հայտնել վճարման մասին (միայն
workspace:finance:manage— ոչ բաժինների ղեկավարներ, տես իրավունքների աղյուսակը վերևում) — գումար/ամսաթիվ/նկարագրություն, չգերազանցող այս վճարման մնացորդը։ Ֆիքսում է միայն հայտարարությունը;FinanceEntryդեռ չի ստեղծվում։ Մեկ պահի մեկ վճարման դիմաց կարող է լինել միայն մեկ բաց հաշվետվություն։ - Կատարողը տեսնում է բաններ («Սեփականատերը հայտնում է X-ի ուղարկման մասին Y ամսաթվին — հասե՞լ է») և կամ Հաստատել ստացումը (ստեղծում է իրական
EXPENSEգրառում՝ վերագրված նրան, ով հայտնել է փոխանցման մասին, ոչ նրան, ով հաստատել է), կամ Ես չեմ ստացել (վիճարկում է, գրառում չի ստեղծվում)։ - Առանց հաշվի կապալառուի համար. Արձանագրել որպես ստացված/չստացված (համաձայնվել են հարթակից դուրս) — նույն մենեջեր-միայն, առանց-հաշվի-կատարող-միայն բաժանումը, ինչ առաջարկի ընդունման ուղում։
- Հայտնող մենեջերը կարող է Չեղարկել վճարման հաշվետվությունը՝ հետ վերցնելու սեփական հայտարարությունը (օրինակ՝ գումարի վրիպակ), չսպասելով, մինչև ստացողը վիճարկի այն։
- Վճարման
paidAmount/lastPaymentConfirmedAt-ը ածանցվում են դրա հաստատվածFinanceEntryտողերից — վճարումը կարող է վճարվել մի քանի մասնակի հաստատված վճարումներով, երբեք ենթադրված չի որպես ամբողջովին վճարված միայն այն պատճառով, որ այնACCEPTEDէ։
Վահանակի բաններ (/team/dashboard)
«Իմ վճարումները» — ցուցադրվում է միայն երբ ընթացիկ օգտատերն ունի ինչ-որ բան, որը սպասում է հենց իր պատասխանին, բոլոր առաջադրանքների վրայով միանգամից. առաջարկված (PROPOSED) օֆեր (ընդունել/մերժել պայմանները) կամ ընդունված (ACCEPTED) վճարում՝ սպասող վճարման հաշվետվությամբ (հաստատել/վիճարկել ստացումը)։ Փակում է դեպքը, երբ մարդն դեռ չգիտի, թե որ առաջադրանքը բացել (ուղղվել է 2026-07-30 — նախկինում տեսանելի էր միայն կոնկրետ առաջադրանքը բացելիս)։
Սեփականատիրոջ հաշվեմատյան, բաժինների գրքեր, նախագծի ֆինանսներ
Հաշվապահությունը ոչ մեկին չի ծանուցում։ Եկամտի, բյուջեի կամ ծախսի գրառումը ձեր սեփական հաշվառումն է. ոչ ոք այն չի սպասում, իսկ փողը միտումնավոր պահվում է ընդհանուր ակտիվության հոսքից դուրս։
Բացառություն են վճարումները, և դրանք այս էջում չեն. դրանք ապրում են հենց առաջադրանքի քարտում, որտեղ յուրաքանչյուր առաջարկ ու պատասխան հայտնում է մյուս կողմին։ Տես Վճարումներ։
Այս մոդուլի թեստավորում
Բաժնի գրքի ղեկավար-միայն սահմանափակումը (ներառյալ բացասական դեպքը՝ «ոչ ղեկավար») ծածկված է կենդանի կերպով scripts/e2e/menu/finance.mjs մշտական հավաքածուով (4/4, կարելի է վերագործարկել ցանկացած պահի — տես scripts/e2e/README.md)։
Սեփականատիրոջ հաշվեմատյանի CRUD-ը, «Համադրում»-ը, նախագծի ֆինանսական կտրվածքը և առաջադրանքի վճարման ամբողջ կենսացիկլը փաստագրված բացակայող կենդանի ծածկույթ են 2026-08-21 դրությամբ — իրականում չեն ստուգվում այս գործարկման ընթացքում, թեև գրված են. 2026-08-18/19-ի RBAC միգրացիան workspace:finance:read/:manage-ը դարձրեց հասանելի միայն P4P Internal-ի Owner մակարդակին, առանց շրջանցման SUPER_ADMIN-ի համար (միտումնավոր որոշում — տես docs/staffing/IMPLEMENTATION_PLAN.md), իսկ e2e-test-admin-ը (հատուկ հաշիվը, որի անունից աշխատում է այս ողջ հավաքածուն) ունի միայն «Team Admin» մակարդակ, երբեք «Team Manager»/Owner։ finance.mjs-ն ինքն է սա ստուգում գործարկման սկզբում (hasFinanceAccess()) և մաքուր կերպով բաց է թողնում փակված ստուգումները մեկ հստակ գրառումով, այլ ոչ թե լուռ ձևացնում, թե ծածկում է դրանք։ Թեստային հաշվին Owner մակարդակ տալը դիտարկվել և մերժվել է — տես ստուգման սեփական մեկնաբանությունը (հարթակային «P4P Owner» դերի երկրորդ կրողը վտանգում է կոտրել PlatformRolesService.transferOwnership()-ի անկարգ որոնումը «ընթացիկ սեփականատիրոջ» համար, ով իրապես ունի այն, իրական տեղական dev միջավայրում)։ Կոմպոնենտի մակարդակի ընթերցման ուղու ճյուղավորումը (ղեկավար vs workspace:finance:read), որը այս հոսքերը ստուգում են, դեռ ծածկված է ստորև բերված unit-թեստերով՝ անկախ այս կենդանի ծածկույթի բացից։ Հաշվեմատյանի սեփական Records, «Հաշվետվություններ»/վերլուծություն ԵՎ «Համադրում» ներդիրները (/team/finances, այս 991-տողանոց էջի 3-բլոկանոց փուլային բաժանման բոլոր երեք բլոկներն այժմ պատրաստ են), բաժնի սեփական գիրքն ու նախագծի կտրվածքն ունեն նաև իրենց սեփական միավոր-թեստի ֆայլերը (apps/portal/pages/team/finances/index.test.ts, apps/portal/pages/team/departments/[id]/finances.test.ts, apps/portal/pages/team/projects/[id]/finances.test.ts), որոնք մանրամասն ծածկում են ընթերցման երթուղու ճյուղավորումը ըստ դերի (ղեկավար ընդդեմ workspace:finance:read), բաժնային բյուջեի հանրագումարը (BUDGET/EXPENSE-ը գումարվում է ըստ արժույթի, INCOME-ը բացառված է), արժույթային ամփոփագրի «նախորդ ժամանակահատվածի նկատմամբ» տարբերությունը, տաբ+ժամանակահատվածի համաժամացումը URL-ի հետ, ստեղծում/խմբագրում/ջնջում, միտումի գրաֆիկի սեփական տվյալները (որ արժույթն է լռելյայն ընտրվում, զումի սահմանները, INCOME-ը բացառված է այստեղ էլ), նախագծի/բաժնի բաշխման աղյուսակները (INCOME-ը բացառված է, չկապակցված գրառումը հայտնվում է «մնացորդային» բաքետում, ոչ թե լուռ անհետանում ընդհանուր գումարից), բաշխումից Records անցումը (տողի կտտոցը փոխարկում է ներդիրը և կիրառում ֆիլտրը՝ զրոյացնելով մյուս չափման ֆիլտրը, ոչ թե թողնելով այն հնացած), և «Համադրում»-ի սեփական տվյալների տրամաբանությունը (comparisonRows-ը խմբավորում է սեփականատիրոջ ու բաժնի գրառումները ըստ բաժին × արժույթ, INCOME-ը բացառելով երկու կողմից էլ. departmentCount/currencyCount/ matchCount/diffCount ամփոփագիրը. «ցույց տալ համընկնումները» անջատիչը, որը լռելյայն թաքցնում է համընկած տողերը. ներդիրի բեջը, որը հետևում է անհամապատասխանությունների թվին և անհետանում է, երբ ամեն ինչ համընկնում է. և այն, որ «Համադրում»-ը մնում է ընդհանուր ժամանակահատվածի սահմաններում, բայց անտեսում է Records-ի ֆիլտրերը՝ որոնում/արժույթ/տեսակ/նախագիծ/բաժին)։ Հենց գրաֆիկի տեսողական արտապատկերումը (սյուների երկրաչափությունը, hover-ի հուշումները, զումը այնպես, ինչպես իրականում քաշվում/սեղմվում է բրաուզերում), բազմարժույթ ցուցադրումը, մերժման/վիճարկման ուղիները և առանց հաշվի կապալառուի ձեռքով հաստատման ուղիները բավականաչափ տեսողական կամ ճյուղավորված են, որպեսզի փոխարենը հաշվառվեն որպես ձեռքով անցում — տես docs/MANUAL_TESTING.md։