Skip to content

Ֆինանսներ — սեփականատիրոջ հաշվեմատյան, բաժինների գրքեր, առաջադրանքների վճարումներ ​

Պարզ ասած՝ Աշխատակազմ-ի դրամական կողմը — գաղտնի հաշվեմատյան, որը վարում է հարթակի սեփականատերը, յուրաքանչյուր բաժնի ղեկավարի իր բաժնի համար վարած առանձին, անկախ հաշվեմատյան, յուրաքանչյուր առաջադրանքի համար կատարողի հետ վճարման բանակցություն, և համադրում, որը համեմատում է սեփականատիրոջ գրառումները ղեկավարների գրառումների հետ՝ երբեք դրանք չսինխրոնացնելով։

Գտնվում է Աշխատակազմ-ի 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. հին «Նշել որպես վճարված»-ը ստեղծում էր գրառումն անմիջապես, միայն մենեջերի հաշվետվության հիման վրա)։

  1. Հայտնել վճարման մասին (միայն workspace:finance:manage — ոչ բաժինների ղեկավարներ, տես իրավունքների աղյուսակը վերևում) — գումար/ամսաթիվ/նկարագրություն, չգերազանցող այս վճարման մնացորդը։ Ֆիքսում է միայն հայտարարությունը; FinanceEntry դեռ չի ստեղծվում։ Մեկ պահի մեկ վճարման դիմաց կարող է լինել միայն մեկ բաց հաշվետվություն։
  2. Կատարողը տեսնում է բաններ («Սեփականատերը հայտնում է X-ի ուղարկման մասին Y ամսաթվին — հասե՞լ է») և կամ Հաստատել ստացումը (ստեղծում է իրական EXPENSE գրառում՝ վերագրված նրան, ով հայտնել է փոխանցման մասին, ոչ նրան, ով հաստատել է), կամ Ես չեմ ստացել (վիճարկում է, գրառում չի ստեղծվում)։
  3. Առանց հաշվի կապալառուի համար. Արձանագրել որպես ստացված/չստացված (համաձայնվել են հարթակից դուրս) — նույն մենեջեր-միայն, առանց-հաշվի-կատարող-միայն բաժանումը, ինչ առաջարկի ընդունման ուղում։
  4. Հայտնող մենեջերը կարող է Չեղարկել վճարման հաշվետվությունը՝ հետ վերցնելու սեփական հայտարարությունը (օրինակ՝ գումարի վրիպակ), չսպասելով, մինչև ստացողը վիճարկի այն։
  5. Վճարման 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։