hrms-api-org/src/entities/ProfileSalary.ts
2024-03-14 14:18:36 +07:00

453 lines
8.3 KiB
TypeScript

import {
Entity,
Column,
OneToMany,
OneToOne,
JoinColumn,
ManyToMany,
ManyToOne,
Double,
} from "typeorm";
import { EntityBase } from "./base/Base";
import { Profile } from "./Profile";
import { ProfileSalaryHistory } from "./ProfileSalaryHistory";
@Entity("profileSalary")
export class ProfileSalary extends EntityBase {
@Column({
comment: "วันที่",
type: "datetime",
nullable: true,
})
date: Date;
@Column({
comment: "เงินเดือนฐาน",
default: 0,
nullable: true,
type: "double",
})
amount: Double;
@Column({
comment: "เงินประจำตำแหน่ง",
default: 0,
nullable: true,
type: "double",
})
positionSalaryAmount: Double;
@Column({
comment: "เงินค่าตอบแทนรายเดือน",
default: 0,
nullable: true,
type: "double",
})
mouthSalaryAmount: Double;
@Column({
length: 40,
comment: "คีย์นอก(FK)ของตาราง profile",
type: "uuid",
})
profileId: string;
@Column({
comment: "สถานะการใช้งาน",
default: false,
})
isActive: boolean;
@Column({
nullable: true,
comment: "ตำแหน่ง (รายละเอียด)",
type: "text",
default: null,
})
salaryClass: string;
@Column({
nullable: true,
comment: "เอกสารอ้างอิง",
type: "text",
default: null,
})
salaryRef: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่ง",
type: "uuid",
default: null,
})
posNoId: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่ง",
type: "uuid",
default: null,
})
positionId: string;
@Column({
nullable: true,
length: 40,
comment: "Id สังกัด",
type: "uuid",
default: null,
})
ocId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ตำแหน่งทางการบริหาร",
type: "uuid",
default: null,
})
positionExecutiveId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้านทางการบริหาร",
type: "uuid",
default: null,
})
positionExecutiveSideId: string;
@Column({
nullable: true,
length: 40,
comment: "",
type: "uuid",
default: null,
})
positionLevelId: string;
@Column({
nullable: true,
length: 40,
comment: "Id สายงาน",
type: "uuid",
default: null,
})
positionLineId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้าน/สาขา",
type: "uuid",
default: null,
})
positionPathSideId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ประเภทตำแหน่ง",
type: "uuid",
default: null,
})
positionTypeId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ชื่อย่อหน่วยงาน",
type: "uuid",
default: null,
})
organizationShortNameId: string;
@Column({
nullable: true,
length: 40,
comment: "Id กลุ่มงาน",
type: "uuid",
default: null,
})
positionEmployeeGroupId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ระดับชั้นงาน",
type: "uuid",
default: null,
})
positionEmployeeLevelId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ตำแหน่ง",
type: "uuid",
default: null,
})
positionEmployeePositionId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้านของตำแหน่ง",
type: "uuid",
default: null,
})
positionEmployeePositionSideId: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่งลูกจ้าง",
default: null,
})
posNoEmployee: string;
@Column({
nullable: true,
type: "datetime",
comment: "เอกสารอ้างอิง (ลงวันที่)",
default: null,
})
refCommandDate: Date;
@Column({
nullable: true,
comment: "เอกสารอ้างอิง (เลขที่คำสั่ง)",
type: "text",
default: null,
})
refCommandNo: string;
@Column({
nullable: true,
comment: "ลำดับ",
default: null,
})
order: number;
@Column({
comment: "เลขที่คำสั่ง",
type: "text",
})
commandNo: string;
@Column({
comment: "ประเภทคำสั่ง",
type: "text",
})
commandTypeName: string;
@Column({
nullable: true,
comment: "ประเภทตำแหน่งกรณีพิเศษ",
type: "text",
default: null,
})
salaryStatus: string;
@OneToMany(() => ProfileSalaryHistory, (profileSalaryHistory) => profileSalaryHistory.histories)
profileSalaryHistories: ProfileSalaryHistory[];
@ManyToOne(() => Profile, (profile) => profile.profileSalary)
@JoinColumn({ name: "profileId" })
profile: Profile;
}
export class CreateProfileSalary {
@Column({
type: "datetime",
})
date: Date;
@Column({
type: "double",
})
amount: Double;
@Column({
type: "double",
})
positionSalaryAmount: Double;
@Column({
type: "double",
})
mouthSalaryAmount: Double;
@Column({
type: "uuid",
})
profileId: string;
// @Column()
// isActive: boolean;
// @Column()
// salaryClass: string | null;
// @Column()
// salaryRef: string | null;
// @Column("uuid")
// posNoId: string | null;
// @Column("uuid")
// positionId: string | null;
// @Column("uuid")
// ocId: string | null;
// @Column("uuid")
// positionExecutiveId : string | null;
// @Column("uuid")
// positionExecutiveSideId : string | null;
// @Column("uuid")
// positionLevelId : string | null;
// @Column("uuid")
// positionLineId : string | null;
// @Column("uuid")
// positionPathSideId : string | null;
// @Column("uuid")
// positionTypeId : string | null;
// @Column("uuid")
// organizationShortNameId : string | null;
// @Column("uuid")
// positionEmployeeGroupId : string | null;
// @Column("uuid")
// positionEmployeeLevelId : string | null;
// @Column("uuid")
// positionEmployeePositionId : string | null;
// @Column("uuid")
// positionEmployeePositionSideId : string | null;
// @Column()
// posNoEmployee : string | null;
// @Column()
// refCommandDate: Date | null;
// @Column()
// refCommandNo: string | null;
// @Column()
// order: number | null;
// @Column()
// commandNo: string;
// @Column()
// commandTypeName: string;
// @Column()
// salaryStatus: string | null;
}
export class UpdateProfileSalary {
@Column({
type: "datetime",
})
date: Date;
@Column({
type: "double",
})
amount: Double;
@Column({
type: "double",
})
positionSalaryAmount: Double;
@Column({
type: "double",
})
mouthSalaryAmount: Double;
// @Column()
// isActive: boolean;
// @Column()
// salaryClass: string;
// @Column()
// salaryRef: string;
// @Column("uuid")
// posNoId: string;
// @Column("uuid")
// positionId: string;
// @Column("uuid")
// ocId: string;
// @Column("uuid")
// positionExecutiveId : string;
// @Column("uuid")
// positionExecutiveSideId : string;
// @Column("uuid")
// positionLevelId : string;
// @Column("uuid")
// positionLineId : string;
// @Column("uuid")
// positionPathSideId : string;
// @Column("uuid")
// positionTypeId : string;
// @Column("uuid")
// organizationShortNameId : string;
// @Column("uuid")
// positionEmployeeGroupId : string;
// @Column("uuid")
// positionEmployeeLevelId : string;
// @Column("uuid")
// positionEmployeePositionId : string;
// @Column("uuid")
// positionEmployeePositionSideId : string;
// @Column()
// posNoEmployee : string;
// @Column()
// refCommandDate: Date;
// @Column()
// refCommandNo: string;
// @Column()
// order: number;
// @Column()
// commandNo: string;
// @Column()
// commandTypeName: string;
// @Column()
// salaryStatus: string;
}