Skip to content

Database — Core: Payroll

The monthly pay run and its inputs: salary and allowance history, advances and loans with their cash boxes, overtime, and timesheets.

Payroll reads from HR (AppUserContract, AppUserAllowance, AppUserDeduction) and from Attendance, and writes allocations against Finance budget lines. See the Payroll module and the Payroll flow.

17 entities in NKO_DB, context NKO_DBEntities1.

How to read this page

Generated from the EF Core model in NKO.Lib/NKO.DataAccess/DbModel/ — class names, property types, nullability, data annotations and the relationships configured in NKO_DBEntities1.OnModelCreating.

Each heading is the table name. Where the C# class is named differently — it is often singular where the table is plural (StockDetail the class, StockDetails the table) — the class name is stated under the heading. The file name is not authoritative: StockDetails.cs declares public class StockDetail.

A ✓ in Null means the column is nullable: a nullable value type, or a reference type with no [Required] — so a [Required] string is shown as not-null. Foreign keys are shown where the fluent configuration or the <Entity>Id naming convention identifies a target.

Entities

AppUserAdvance

[Table("AppUserAdvance")] · DbSet AppUserAdvances · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserAdvance.cs

erDiagram
    AppUserAdvance {
        int Id PK
        int CreatedBy FK
        int ManagerId FK
        int DeptId FK
        int FinanceId FK
        int HRId FK
        int _1GuarantorId FK
        int _2GuarantorId FK
        int CountryId FK
        int AccountingBranchId FK
        int RefuseId FK
        int CancelId FK
        int NextUserId FK
    }
    AppUser {
        int UserId PK
    }
    AppUserAdvanceDetails {
        int Id PK
        int AdvanceId FK
    }
    CashBoxTransaction {
        int CashBoxTransactionsId PK
        int AppUserAdvanceId FK
    }
    AppUser ||--o{ AppUserAdvance : "CreatedBy"
    AppUser |o--o{ AppUserAdvance : "ManagerId, DeptId, FinanceId +8 more"
    AppUserAdvance ||--o{ AppUserAdvanceDetails : "AdvanceId"
    AppUserAdvance ||--o{ CashBoxTransaction : "AppUserAdvanceId"
Column Type Null Notes
Id int PK
AdvanceGuid Guid
Amount decimal [Required]
FinDisclosure decimal? ✓
IsAdvance bool [Required]
ReasonDescription string ✓
ReasonTypeId int? ✓
Description string ✓
ReqSign bool
ReqNote string ✓ [StringLength(300)]
ReqSignDate DateTime? ✓
ManagerId int? ✓ FK → AppUser
ManagerSign bool
ManagerNote string ✓ [StringLength(300)]
ManagerSignDate DateTime? ✓
DeptId int? ✓ FK → AppUser
DeptSign bool
DeptNote string ✓ [StringLength(300)]
DeptSignDate DateTime? ✓
FinanceId int? ✓ FK → AppUser
FinanceSign bool
FinanceSignDate DateTime? ✓
FinanceNote string ✓ [StringLength(300)]
AccountingBranchId int? ✓ FK → AppUser
AccountingBranchSign bool
AccountingBranchNote string ✓ [StringLength(300)]
AccountingBranchSignDate DateTime? ✓
HRId int? ✓ FK → AppUser
HRSign bool
HRSignDate DateTime? ✓
HRNote string ✓ [StringLength(300)]
_1GuarantorId int? ✓ FK → AppUser
_1GuarantorSign bool
_1GuarantorSignDate DateTime? ✓
_1GuarantorNote string ✓ [StringLength(300)]
_2GuarantorId int? ✓ FK → AppUser
_2GuarantorSign bool
_2GuarantorSignDate DateTime? ✓
_2GuarantorNote string ✓ [StringLength(300)]
CountryId int? ✓ FK → AppUser
CountrySign bool
CountryNote string ✓ [StringLength(300)]
CountrySignDate DateTime? ✓
RefuseId int? ✓ FK → AppUser
IsRefused bool
RefuseDate DateTime? ✓
RefuseNote string ✓ [StringLength(300)]
CancelId int? ✓ FK → AppUser
IsCancelled bool
CancelDate DateTime? ✓
CancelNote string ✓ [StringLength(300)]
Months int? ✓
StatusId int
IsPaid bool
IsPaidBack bool
IsEmergent bool
DepartmentId int? ✓
BranchId int
SubBranchId int
CreatedBy int FK → AppUser
NextUserId int? ✓ FK → AppUser
CreatedOn DateTime

Navigation: AppUserCreatedBy → AppUser, AppUserManager → AppUser, AppUserDept → AppUser, AppUserFinance → AppUser, AppUserHR → AppUser, AppUser_1Guarantor → AppUser, AppUser_2Guarantor → AppUser, AppUserCountry → AppUser, AppUserAccountingBranch → AppUser, AppUserRefuse → AppUser, AppUserCancel → AppUser, AppUserNext → AppUser, AppUserAdvanceDetails → List<AppUserAdvanceDetails>, CashBoxTransactions → ICollection<CashBoxTransaction>

AppUserAdvanceDetails

class AppUserAdvanceDetail · DbSet AppUserAdvanceDetails · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserAdvanceDetails.cs

erDiagram
    AppUserAdvanceDetails {
        int Id PK
        int AdvanceId FK
    }
    AppUserAdvance {
        int Id PK
    }
    AppUserAdvance ||--o{ AppUserAdvanceDetails : "AdvanceId"
Column Type Null Notes
Id int PK
AdvanceId int FK → AppUserAdvance
Month int
Year int
Amount decimal
IsPaidBack bool
PaidBackDate DateTime? ✓

Navigation: AppUserAdvance → AppUserAdvance

AppUserAllocation

DbSet AppUserAllocations
NKO.Lib/NKO.DataAccess/DbModel/AppUserAllocation.cs

erDiagram
    AppUserAllocation {
        int Id PK
        int UserId FK
        int BudgetLineId FK
        int PayrollInfoId FK
    }
    AppUser {
        int UserId PK
    }
    BudgetLine {
        int Id PK
    }
    PayrollInfo {
        int PayrollInfoId PK
    }
    AppUser ||--o{ AppUserAllocation : "UserId"
    BudgetLine ||--o{ AppUserAllocation : "BudgetLineId"
    PayrollInfo ||--o{ AppUserAllocation : "PayrollInfoId"
Column Type Null Notes
Id int PK
SalaryRatio decimal
BenefitRatio decimal
SalaryAmountUSD decimal
SalaryAmountEURO decimal
SalaryAmountTL decimal
ExchangeRateUSD decimal
ExchangeRateEuro decimal
Month int
Year int
PayrollInfoId int FK → PayrollInfo
BudgetLineId int FK → BudgetLine
UserId int FK → AppUser

Navigation: AppUser → AppUser, BudgetLine → BudgetLine, PayrollInfo → PayrollInfo

AppUserAllowance

[Table("AppUserAllowance")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserAllowance.cs

erDiagram
    AppUserAllowance {
        int AppUserAllowanceId PK
        int UserId FK
    }
    AppUser {
        int UserId PK
    }
    AppUser ||--o{ AppUserAllowance : "UserId"
Column Type Null Notes
AppUserAllowanceId int PK
AllowanceGuid Guid
UserId int FK → AppUser
StartDate DateTime [Column(TypeName = "date")]
EndDate DateTime? ✓ [Column(TypeName = "date")]
Responsibility int
Residence int
Feeding int
Transportation int
Risk int
IsEnable bool
CreatedBy int
CreatedOn DateTime

Navigation: AppUser → AppUser

AppUserBankPayment

[Table("AppUserBankPayment")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserBankPayment.cs

erDiagram
    AppUserBankPayment {
        int BankPaymentId PK
        int UserId FK
    }
    AppUser {
        int UserId PK
    }
    AppUser ||--o{ AppUserBankPayment : "UserId"
Column Type Null Notes
BankPaymentId int PK
UserId int FK → AppUser
PaymentUSD decimal
PaymentTL decimal? ✓
PaymentEuro decimal? ✓
Month int
Year int
Reference string ✓ [StringLength(50)]
CreatedBy int
CreatedOn DateTime

Navigation: AppUser → AppUser

AppUserCharge

[Table("AppUserCharge")] · DbSet AppUserCharges · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserCharge.cs

erDiagram
    AppUserCharge {
        int Id PK
        int PositionId FK
        int UserId FK
    }
    AppUserPosition {
        int PositionId PK
    }
    AppUser {
        int UserId PK
    }
    AppUserPosition ||--o{ AppUserCharge : "PositionId"
    AppUser ||--o{ AppUserCharge : "UserId"
Column Type Null Notes
Id int PK
Description string ✓
PositionId int FK → AppUserPosition · [Required]
UserId int FK → AppUser · [Required]
FilePath string ✓
FileName string ✓

Navigation: AppUserPosition → AppUserPosition, ApppUser → AppUser

AppUserDeduction

DbSet AppUserDeductions · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserDeduction.cs

erDiagram
    AppUserDeduction {
        int Id PK
        int UserId FK
    }
    AppUser {
        int UserId PK
    }
    AppUser ||--o{ AppUserDeduction : "UserId"
Column Type Null Notes
Id int PK
DeductionGuid Guid
UserId int FK → AppUser
Amount double
Currency int
Year int
Month int
Description string ✓ [Column(TypeName = "ntext")]
FilePath string ✓
FileName string ✓
CreatedBy int
CreatedOn DateTime

Navigation: AppUser → AppUser

AppUserOvertime

[Table("AppUserOvertime")] · DbSet AppUserOvertimes · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserOvertime.cs

erDiagram
    direction LR
    AppUserOvertime {
        int OverTimeId PK
        int CreatedBy FK
        int EmployeeId FK
        int ManagerId FK
        int DeptId FK
        int HRId FK
        int GMId FK
        int FinanceId FK
        int RefusedBy FK
        int CancelId FK
        int NextUserId FK
        int ContractId FK
    }
    AppUser {
        int UserId PK
    }
    AppUserContract {
        int ContractId PK
    }
    AppUserOvertimeDates {
        int Id PK
        int AppUserOvertimeId FK
    }
    AppUserOvertimeConsumption {
        int Id PK
        int AppUserOvertimeId FK
    }
    AppUser ||--o{ AppUserOvertime : "CreatedBy"
    AppUser |o--o{ AppUserOvertime : "EmployeeId, ManagerId, DeptId +6 more"
    AppUserContract ||--o{ AppUserOvertime : "ContractId"
    AppUserOvertime ||--o{ AppUserOvertimeDates : "AppUserOvertimeId"
    AppUserOvertime ||--o{ AppUserOvertimeConsumption : "AppUserOvertimeId"
Column Type Null Notes
OverTimeId int PK
OverTimeGuid Guid? ✓
StartDate DateTime [Column(TypeName = "date")]
EndDate DateTime [Column(TypeName = "date")]
Amount double
TotalDays int
Tasks string [Required] · [Column(TypeName = "ntext")]
Description string [Required] · [Column(TypeName = "ntext")]
ReqSign bool
ReqNote string ✓ [StringLength(200)]
ReqSignDate DateTime? ✓
EmployeeId int? ✓ FK → AppUser
EmployeeSign bool
EmployeeNote string ✓ [StringLength(200)]
EmployeeSignDate DateTime? ✓
ManagerId int? ✓ FK → AppUser
ManagerSign bool
ManagerNote string ✓ [StringLength(200)]
ManagerSignDate DateTime? ✓
DeptId int? ✓ FK → AppUser
DeptSign bool
DeptNote string ✓ [StringLength(200)]
DeptSignDate DateTime? ✓
HRId int? ✓ FK → AppUser
HRSign bool
HRNote string ✓ [StringLength(200)]
HRSignDate DateTime? ✓
GMId int? ✓ FK → AppUser
GMSign bool
GMNote string ✓ [StringLength(200)]
GMSignDate DateTime? ✓
FinanceId int? ✓ FK → AppUser
FinanceSign bool
FinanceNote string ✓ [StringLength(200)]
FinanceSignDate DateTime? ✓
RefusedBy int? ✓ FK → AppUser
RefuseSign bool
RefuseNote string ✓ [Column(TypeName = "ntext")]
RefuseDate DateTime? ✓
CancelId int? ✓ FK → AppUser
IsCancelled bool
CancelDate DateTime? ✓
CancelNote string ✓ [StringLength(200)]
ManagerConditionApproved bool? ✓
ManagerConditionsNote string ✓
DepartmentId int
StatusId int
ContractId int FK → AppUserContract
BranchId int
SubBranchId int
Type int
CreatedBy int FK → AppUser
NextUserId int? ✓ FK → AppUser
CreatedOn DateTime

Navigation: AppUserReq → AppUser, AppUserEmployee → AppUser, AppUserManager → AppUser, AppUserDept → AppUser, AppUserHR → AppUser, AppUserGM → AppUser, AppUserFinance → AppUser, AppUserRefuse → AppUser, AppUserCancel → AppUser, AppUserNextUser → AppUser, AppUserContract → AppUserContract, AppUserOvertimeDates → ICollection<AppUserOvertimeDates>, AppUserOvertimeConsumptions → ICollection<AppUserOvertimeConsumption>

AppUserOvertimeConsumption

DbSet AppUserOvertimeConsumptions
NKO.Lib/NKO.DataAccess/DbModel/AppUserOvertimeConsumption.cs

erDiagram
    AppUserOvertimeConsumption {
        int Id PK
        int LeaveId FK
        int AppUserOvertimeId FK
    }
    Leave {
        int LeaveId PK
    }
    AppUserOvertime {
        int OverTimeId PK
    }
    Leave ||--o{ AppUserOvertimeConsumption : "LeaveId"
    AppUserOvertime ||--o{ AppUserOvertimeConsumption : "AppUserOvertimeId"
Column Type Null Notes
Id int PK
AppUserOvertimeId int FK → AppUserOvertime
LeaveId int FK → Leave
Amount double

Navigation: Leave → Leave, AppUserOvertime → AppUserOvertime

AppUserOvertimeDates

class AppUserOvertimeDate · DbSet AppUserOvertimeDates
NKO.Lib/NKO.DataAccess/DbModel/AppUserOvertimeDates.cs

erDiagram
    AppUserOvertimeDates {
        int Id PK
        int AppUserOvertimeId FK
    }
    AppUserOvertime {
        int OverTimeId PK
    }
    AppUserOvertime ||--o{ AppUserOvertimeDates : "AppUserOvertimeId"
Column Type Null Notes
Id int PK
AppUserOvertimeId int FK → AppUserOvertime
Date DateTime
StartTime string ✓
EndTime string ✓
DailyHours double
IsTrue bool

Navigation: AppUserOvertime → AppUserOvertime

AppUserReward

[Table("AppUserReward")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserReward.cs

erDiagram
    AppUserReward {
        int RewardId PK
        int UserId FK
    }
    AppUser {
        int UserId PK
    }
    AppUser ||--o{ AppUserReward : "UserId"
Column Type Null Notes
RewardId int PK
UserId int FK → AppUser
Amount double
Year int
Month int
Description string ✓ [Column(TypeName = "ntext")]
CreatedBy int
CreatedOn DateTime
Currency int
FilePath string ✓
FileName string ✓

Navigation: AppUser → AppUser

AppUserSalary

DbSet AppUserSalaries · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserSalary.cs

erDiagram
    AppUserSalary {
        int AppUserSalaryId PK
        int UserId FK
    }
    AppUser {
        int UserId PK
    }
    AppUser ||--o{ AppUserSalary : "UserId"
Column Type Null Notes
AppUserSalaryId int PK
UserId int FK → AppUser
Amount decimal
StartDate DateTime
EndDate DateTime
CreatedBy int
CreatedOn DateTime

Navigation: AppUser → AppUser

Bank

DbSet Banks · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/Bank.cs

erDiagram
    Bank {
        int Id PK
    }
    AppUserExtend {
        int UserId PK
        int BankId FK
    }
    Bank |o--o{ AppUserExtend : "BankId"
Column Type Null Notes
Id int PK
Name string ✓
IsEnable bool

Navigation: AppUserExtends → List<AppUserExtend>

CashBoxTransaction

DbSet CashBoxTransactions · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CashBoxTransaction.cs

erDiagram
    CashBoxTransaction {
        int CashBoxTransactionsId PK
        int AppUserAdvanceId FK
    }
    AppUserAdvance {
        int Id PK
    }
    AppUserAdvance ||--o{ CashBoxTransaction : "AppUserAdvanceId"
Column Type Null Notes
CashBoxTransactionsId int PK
Date DateTime
AppUserAdvanceId int FK → AppUserAdvance
Amount decimal
IsEmergent bool
StatusId int
IsIn bool
CreatedBy int
CreatedOn DateTime

Navigation: AppUserAdvance → AppUserAdvance

Payroll

[Table("Payroll")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/Payroll.cs

erDiagram
    Payroll {
        int PayrollId PK
        int CreatedBy FK
        int AllocatorId FK
        int FManagerId FK
        int CountryId FK
        int NextUserId FK
        int RefuseId FK
    }
    AppUser {
        int UserId PK
    }
    PayrollInfo {
        int PayrollInfoId PK
        int PayrollId FK
    }
    AppUser ||--o{ Payroll : "CreatedBy"
    AppUser |o--o{ Payroll : "AllocatorId, FManagerId, CountryId +2 more"
    Payroll ||--o{ PayrollInfo : "PayrollId"
Column Type Null Notes
PayrollId int PK
PayrollGuid Guid
Year int
Month int
ReqSign bool
ReqNote string ✓
ReqSignDate DateTime? ✓
AllocatorId int? ✓ FK → AppUser
AllocatorSign bool
AllocatorSignDate DateTime? ✓
AllocatorNote string ✓
FManagerId int? ✓ FK → AppUser
FManagerSign bool
FManagerNote string ✓
FManagerSignDate DateTime? ✓
CountryId int? ✓ FK → AppUser
CountrySign bool
CountryNote string ✓
CountrySignDate DateTime? ✓
RefuseId int? ✓ FK → AppUser
IsRefused bool
RefuseDate DateTime? ✓
RefuseNote string ✓
NextUserId int? ✓ FK → AppUser
StatusId int
ExchangeRate decimal
CreatedOn DateTime
CreatedBy int FK → AppUser

Navigation: AppUserCreatedBy → AppUser, AppUserAllocator → AppUser, AppUserFManager → AppUser, AppUserCountry → AppUser, AppUserNext → AppUser, AppUserRefuse → AppUser, PayrollInfo → ICollection<PayrollInfo>

PayrollInfo

[Table("PayrollInfo")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/PayrollInfo.cs

erDiagram
    direction LR
    PayrollInfo {
        int PayrollInfoId PK
        int UserId FK
        int PositionId FK
        int ProjectId FK
        int BranchId FK
        int SubBranchId FK
        int DepartmentId FK
        int PayrollId FK
    }
    AppUser {
        int UserId PK
    }
    AppUserPosition {
        int PositionId PK
    }
    Project {
        int ProjectId PK
    }
    CommonBranch {
        int BranchId PK
    }
    CommonSubBranch {
        int SubBranchId PK
    }
    CommonDepartment {
        int DepartmentId PK
    }
    Payroll {
        int PayrollId PK
    }
    AppUserAllocation {
        int Id PK
        int PayrollInfoId FK
    }
    AppUser ||--o{ PayrollInfo : "UserId"
    AppUserPosition |o--o{ PayrollInfo : "PositionId"
    Project |o--o{ PayrollInfo : "ProjectId"
    CommonBranch ||--o{ PayrollInfo : "BranchId"
    CommonSubBranch |o--o{ PayrollInfo : "SubBranchId"
    CommonDepartment |o--o{ PayrollInfo : "DepartmentId"
    Payroll ||--o{ PayrollInfo : "PayrollId"
    PayrollInfo ||--o{ AppUserAllocation : "PayrollInfoId"
Column Type Null Notes
PayrollInfoId int PK
PayrollInfoGuid Guid
PayrollId int FK → Payroll
UserId int FK → AppUser
BranchId int FK → CommonBranch
SubBranchId int? ✓ FK → CommonSubBranch
DepartmentId int? ✓ FK → CommonDepartment
ProjectId int? ✓ FK → Project
IsDirect bool
PositionId int? ✓ FK → AppUserPosition
BasicSalary decimal? ✓
Rewards decimal? ✓
UnpaidLeaves double? ✓
TotalDeductions decimal? ✓
OvertimeHours double? ✓
Overtime decimal? ✓
TransferredToBank decimal? ✓
Advance decimal? ✓
AdvanceIds string ✓
Loan decimal? ✓
SocialInsurance decimal? ✓
TLSalary decimal? ✓
Currency int
CreatedOn DateTime
CreatedBy int

Navigation: AppUser → AppUser, AppUserPosition → AppUserPosition, Project → Project, CommonBranch → CommonBranch, CommonSubBranch → CommonSubBranch, CommonDepartment → CommonDepartment, Payroll → Payroll

Timesheet

[Table("Timesheet")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/Timesheet.cs

erDiagram
    Timesheet {
        int TimesheetId PK
        int CreatedBy FK
        int ManagerId FK
        int HRId FK
        int PayerId FK
        int CashReceivedById FK
        int NextUserId FK
        int BranchId FK
    }
    AppUser {
        int UserId PK
    }
    CommonBranch {
        int BranchId PK
    }
    AppUser ||--o{ Timesheet : "CreatedBy"
    AppUser |o--o{ Timesheet : "ManagerId, HRId, PayerId +2 more"
    CommonBranch ||--o{ Timesheet : "BranchId"
Column Type Null Notes
TimesheetId int PK
TimesheetGuid Guid
ReqSign bool
ReqNote string ✓ [StringLength(50)]
ReqSignDate DateTime? ✓
ManagerId int? ✓ FK → AppUser
ManagerSign bool
ManagerNote string ✓ [StringLength(50)]
ManagerSignDate DateTime? ✓
HRId int? ✓ FK → AppUser
HRSign bool
HRNote string ✓ [StringLength(50)]
HRSignDate DateTime? ✓
PayerId int? ✓ FK → AppUser
PaidOn DateTime? ✓
PayerNote string ✓
IsPaidSign bool
CashReceivedById int? ✓ FK → AppUser
CashReceivedBySign bool
CashReceivedBySignDate DateTime? ✓
CashReceivedByNote string ✓ [StringLength(50)]
Month int
Year int
StatusId int
PayMethod int? ✓
BranchId int FK → CommonBranch
Deleted bool
CreatedBy int FK → AppUser
NextUserId int? ✓ FK → AppUser
CreatedOn DateTime

Navigation: AppUserCreatedBy → AppUser, AppUserManager → AppUser, AppUserHR → AppUser, AppUserPayer → AppUser, AppUserCash → AppUser, AppUserNextUser → AppUser, CommonBranch → CommonBranch