| Advance / Loan |
The two salary-backed requests in Payroll. An advance is limited to half the net salary (up to all of it with a justification) and is deducted in that month's payroll; a loan is repaid in monthly instalments. Loans are paid out of the ordinary cash box; the emergency box covers the part of an emergency loan the ordinary box cannot. |
Payroll |
| Allocation / Allocator |
An allocation splits an employee's monthly salary across budget lines by LOE %. The Allocator signs the allocations — the first step of the payroll chain (Allocator → Finance Manager → Country Director) — and cannot sign until every shared employee is fully allocated. |
Payroll |
| Budget Holder |
The approver for spending against a project's budget; the code routes this step to the project's program manager (Project.ProgramManager). Signs Purchase Orders, Payment Orders and Jobs — but never a Purchase Request (R6-11). |
Procurement Cycle |
| Budget line |
A line of a project's grant budget that spending and salaries are charged to. |
Grant |
| ContextActions |
The single endpoint each document uses to move to its next status — sign, approve, refuse. |
Procurement Cycle |
| Core / Warehouse database |
The two SQL Server databases: core (NKO_DB, context NKO_DBEntities1) and warehouse (NKO_DB_Warehouse, context WarehouseDBContext). No foreign key joins them; the GRN hands goods over in application code. |
Context ERD |
| Data scope |
Which records a user sees in a list — All, Location, Custom (chosen branches) or Default — set per area in SharedPermissions. |
Permissions |
| Destruction |
The approval workflow for disposing of (writing off) warehouse assets. |
Logistics |
| Draft employee |
An employee record HR has created but not yet approved — Status becomes Approved only at the last onboarding step. Draft and deleted employees are hidden from every query that does not explicitly bypass the AppUser global query filter. |
HR Onboarding |
| E-signature |
A user's uploaded signature (AppUserSign). It starts as Pending and HR approves it; until then most workflow steps refuse the user with "Please upload your E-signature." Separate from the PIN. |
Security & Permissions |
| Exchange rate (global / donor) |
The global rate (ExchangeRates) values TL and EUR purchase requests in USD and so decides their SOD sign-offs; the application has no way to update it (R7-1). Donor rates (DonorExchangeRate), entered under Administration → Donors, convert salary allocations and purchase-order lines. |
External Services |
| Finding IDs (e.g. R1-9) |
Entries in the Recommendations register. Other pages cite the ID next to the problem it describes. |
Recommendations |
| General Settings |
The admin screen (/Admin/GeneralSettings) for system-wide settings stored as CommonSetting rows — the allocator, procurement manager, HR and director approvers, timesheet officers, cash boxes, whether e-mail is sent. On a new database it crashes until its 21 rows exist. |
First Run |
| Global query filter |
An EF Core filter applied automatically to every query on an entity. Only four have one — AppUser, AppUserSign, Project, BudgetLine — hiding deleted rows and, for AppUser, draft employees. |
Database |
| Justification |
A written reason the system asks for when a request leaves the normal path: a provider justification is the other way to create a Purchase Order besides the RFQ's winning provider, an advance above half the net salary needs one, and attendance has its own justification queue. |
Procurement |
Next user (NextUserId) |
The person whose turn it is to act on a document. Together with the integer StatusId it drives every approval workflow; anyone else's action is refused. |
Architecture |
| Permission key |
The name of a permission, such as HumanResourceFamilyManagement, checked on an action by [ClaimRequirement("Key")]. Keys are attached to groups and users get them through group membership; there are 219. |
Security & Permissions |
| Position |
An employee's job title. Several approvers are found by an exact position name — "Finance Manager", "General Manager" and others — so renaming a position can stall approvals (R6-10). |
Recommendations |
| Ungated |
An action with no authorization attribute at all — 44 of the 947. Some are public by design; see R3-2. The API pages give the count per controller. |
API |
| Waybill |
The shipping document that goes with released stock; each waybill belongs to a Stock Release Request (Good Delivery Order). |
Logistics |